diff --git a/PROMS/DataLoader/App.config b/PROMS/DataLoader/App.config deleted file mode 100644 index 55bfd659..00000000 --- a/PROMS/DataLoader/App.config +++ /dev/null @@ -1,178 +0,0 @@ - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Checked - - - Unchecked - - - Checked - - - - - - - - - - - - - - - Data Source=.\SQLEXPRESS;Initial Catalog={DBName};Integrated Security=True - - - VEPROMS - - - - - - - - - Unchecked - - - 0 - - - 1 - - - Checked - - - Checked - - - 0 - - - Phase1 - - - Phase2 - - - Phase3 - - - c:\development\fmtall - - - c:\development\genmacall - - - False - - - Phase4 - - - - - - 0 - - - -1 - - - False - - - False - - - False - - - 0 - - - - diff --git a/PROMS/DataLoader/App.config.org b/PROMS/DataLoader/App.config.org deleted file mode 100644 index 2f3501bd..00000000 --- a/PROMS/DataLoader/App.config.org +++ /dev/null @@ -1,177 +0,0 @@ - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Checked - - - Unchecked - - - Checked - - - - - - - - - - - - - - - Data Source=.\SQLEXPRESS;Initial Catalog={DBName};Integrated Security=True - - - VEPROMS - - - - - - - - - Unchecked - - - 0 - - - 1 - - - Checked - - - Checked - - - 0 - - - Phase1 - - - Phase2 - - - Phase3 - - - c:\development\fmtall - - - c:\development\genmacall - - - False - - - Phase4 - - - - - - 0 - - - -1 - - - False - - - False - - - False - - - - diff --git a/PROMS/DataLoader/Applicability.cs b/PROMS/DataLoader/Applicability.cs deleted file mode 100644 index a035ca6e..00000000 --- a/PROMS/DataLoader/Applicability.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; - -namespace DataLoader -{ - public partial class Loader - { - public Dictionary MyProcAPL; - private static Dictionary GetApple(string proc) - { - Dictionary procAPL = new Dictionary(); - FileInfo myFile = new FileInfo(proc); - FileStream fs = myFile.OpenRead(); - BinaryReader br = new BinaryReader(fs); - byte[] myBuff = new byte[myFile.Length]; - br.Read(myBuff, 0, (int)myFile.Length); - br.Close(); - fs.Close(); - int offset = 0; - while (offset < myBuff.Length) - { - string recnum = Encoding.Default.GetString(myBuff, offset, 8); - int applicability = BitConverter.ToInt32(myBuff, offset + 8); - string applicabilityToStr = string.Format("{0:X8}", applicability); - //4294967296 - if (!procAPL.ContainsKey(recnum)) - procAPL.Add(recnum, applicabilityToStr); - else - if (procAPL[recnum] != applicabilityToStr) - procAPL[recnum] = applicabilityToStr; - offset += 12; - } - return procAPL; - } - } -} diff --git a/PROMS/DataLoader/Applicability.cs.bak b/PROMS/DataLoader/Applicability.cs.bak deleted file mode 100644 index f64e87fe..00000000 --- a/PROMS/DataLoader/Applicability.cs.bak +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; - -namespace DataLoader -{ - public partial class Loader - { - public Dictionary MyProcAPL; - private static Dictionary GetApple(string proc) - { - Dictionary procAPL = new Dictionary(); - FileInfo myFile = new FileInfo(proc); - FileStream fs = myFile.OpenRead(); - BinaryReader br = new BinaryReader(fs); - byte[] myBuff = new byte[myFile.Length]; - br.Read(myBuff, 0, (int)myFile.Length); - br.Close(); - fs.Close(); - int offset = 0; - while (offset < myBuff.Length) - { - string recnum = Encoding.Default.GetString(myBuff, offset, 8); - //if ((myFile.Name.ToUpper() == "PROC000.APL" && (recnum == "00002491"))) - // System.Threading.Thread.Sleep(1000); - int applicability = BitConverter.ToInt32(myBuff, offset + 8); - string applicabilityToStr = string.Format("{0:X8}", applicability); - //4294967296 - if (!procAPL.ContainsKey(recnum)) - procAPL.Add(recnum, applicabilityToStr); - else - if (procAPL[recnum] != applicabilityToStr) - procAPL[recnum] = applicabilityToStr; - offset += 12; - } - return procAPL; - } - } -} diff --git a/PROMS/DataLoader/Approve.cs b/PROMS/DataLoader/Approve.cs deleted file mode 100644 index e96f9943..00000000 --- a/PROMS/DataLoader/Approve.cs +++ /dev/null @@ -1,516 +0,0 @@ -//using System; -using System.Collections.Generic; -using System.Text; -using VEPROMS.CSLA.Library; -using System.IO; -using System.Data.OleDb; -using System.Data; - -namespace DataLoader -{ - public partial class Loader - { - public bool BuildApprovedRevision() - { - if(!frmMain.RunScript("PROMSApproveApprove.sql", frmMain.DBName)) return false; - bool rv = false; - using (Stage myStage = GetApprovedStage()) - { - if (myStage == null) - return rv; - DocVersionInfoList dvil = DocVersionInfoList.Get(); - foreach (DocVersionInfo dvi in dvil) - { - if (dvi.Procedures.Count > 0) - { - if (!frmMain.MySettings.OnlyThisSet || frmMain.ProcedureSetPath.ToUpper() == dvi.MyFolder.Title.ToUpper()) - { - string approvedFolder = dvi.MyFolder.Title + @"\APPROVED"; - //B2012-094 fix - if (!Directory.Exists(approvedFolder)) frmMain.MyWarning = "**** " + dvi.MyFolder.Title + " Approved folder does not exist"; - else if (!File.Exists(approvedFolder + @"\SET.DBF")) frmMain.MyWarning = "**** " + dvi.MyFolder.Title + " Approved Set.dbf does not exist"; - else if (!File.Exists(approvedFolder + @"\USAGERO.DBF")) frmMain.MyWarning = "**** " + dvi.MyFolder.Title + " Approved UsageRO.dbf does not exist"; - else if (!Directory.Exists(approvedFolder + @"\PDFS")) frmMain.MyWarning = "**** " + dvi.MyFolder.Title + " Approved Pdfs folder does not exist"; - else if (Directory.GetFiles(approvedFolder + @"\PDFS","*.PDF").Length == 0) frmMain.MyWarning = "**** " + dvi.MyFolder.Title + " Approved Pdfs folder does not contain any pdf files"; - else rv |= BuildApprovedRevision(myStage, approvedFolder, dvi); - } - } - } - } - return rv; - } - - private static Stage GetApprovedStage() - { - StageInfoList sil = StageInfoList.Get(); - foreach (StageInfo si in sil) - { - if (si.Name.ToUpper() == "APPROVED") - return si.Get(); - } - return null; - } - private bool BuildApprovedRevision(Stage myStage, string approvedFolder, DocVersionInfo dvi) - { - bool rv = false; - if (dvi.MultiUnitCount <= 1) - { - ApprovedFolder af = new ApprovedFolder(approvedFolder); - foreach (ProcedureInfo pi in dvi.Procedures) - { - rv |= BuildApprovedRevision(myStage, af, pi, 0); - } - } - else - { - ApprovedFolder af = new ApprovedFolder(approvedFolder, dvi); - foreach (ProcedureInfo pi in dvi.Procedures) - { - for (int i = 1; i <= dvi.MultiUnitCount; i++) - rv |= BuildApprovedRevision(myStage, af, pi, i); - } - } - return rv; - } - private bool BuildApprovedRevision(Stage myStage, ApprovedFolder af, ProcedureInfo pi, int selectedSlave) - { - bool rv = false; - if (selectedSlave > 0) - pi.MyDocVersion.DocVersionConfig.SelectedSlave = selectedSlave; - frmMain.MyInfo = string.Format("Loading approved data for Procedure: {0}", pi.DisplayNumber); - // if working draft procedure does not exist in approved folder, don't bother processing - if (!af.EntryFromProc.ContainsKey(pi.DisplayNumber)) return rv; - using (Revision revision = CreateRevision(af, pi)) - { - System.DateTime dts = pi.DTS; - string userID = af.EntryFromProc[pi.DisplayNumber].UserID; - using (Version version = Version.MakeVersion(revision, myStage, GetPDF(af,pi), GetSummaryPDF(), dts, userID)) - { - using (Check check = Check.MakeCheck(revision, myStage, af.BuildConsistencyChecks(pi))) - { - rv |= true; - } - } - } - if(!rv) - frmMain.MyInfo = string.Format("Loading Procedure: {0} FAILED MISERABLY", pi.DisplayNumber); - return rv; - } - private byte[] GetSummaryPDF() - { - return null; - } - private byte[] GetPDF(ApprovedFolder af, ProcedureInfo pi) - { - string pdf = string.Format(@"{0}\PDFS\{1}.pdf", af.Path, pi.DisplayNumber); - FileInfo pdfFile = new FileInfo(pdf); - if (pdfFile.Exists) - { - FileStream fs = pdfFile.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite); - byte[] pdfBuf = new byte[pdfFile.Length]; - fs.Read(pdfBuf, 0, pdfBuf.Length); - fs.Close(); - return pdfBuf; - } - return null; - } - private Revision CreateRevision(ApprovedFolder af, ProcedureInfo pi) - { - int typeID = 1; //revision not tempmod - ProcInfo pinf = af.EntryFromProc[pi.DisplayNumber]; - string revisionNumber = pinf.Rev; - System.DateTime revisionDate = System.DateTime.Parse(pinf.RevDate ?? "1/1/1980"); - string notes = "Migration Of Current Approved Revision"; - RevisionConfig cfg = new RevisionConfig(); - cfg.History_StartDate = pinf.StartDateTime; - if (pi.MyDocVersion.DocVersionConfig.SelectedSlave > 0) - cfg.Applicability_Index = pi.MyDocVersion.DocVersionConfig.SelectedSlave; - string config = cfg.ToString(); - System.DateTime dts = pi.DTS; - string userID = pinf.UserID; - return Revision.MakeRevision(pi.ItemID, typeID, revisionNumber, revisionDate, notes, config, dts, userID); - } - } - public partial class ApprovedFolder - { - private OleDbConnection _Connection; - public OleDbConnection Connection - { - get - { - if(_Connection == null) - _Connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _Path + ";Extended Properties=dBase III;Persist Security Info=False"); - return _Connection; - } - } - private string _Path; - public string Path - { - get { return _Path; } - set { _Path = value; } - } - private System.DateTime _ROFstDate = System.DateTime.MinValue; - public System.DateTime ROFstDate - { - get - { - if (_ROFstDate == System.DateTime.MinValue) - { - FileInfo fi = new FileInfo(string.Format(@"{0}\ro.fst",Path)); - if(fi.Exists) - _ROFstDate = fi.LastWriteTimeUtc; - } - return _ROFstDate; - } - } - - private Dictionary _ROValues = new Dictionary(); - private Dictionary _LibDocDates = new Dictionary(); - private Dictionary> _ProcROs = new Dictionary>(); - private Dictionary> _LibROs = new Dictionary>(); - private Dictionary> _LibDocs = new Dictionary>(); - - public string BuildConsistencyChecks(ProcedureInfo proc) - { - /* - - - - - - - - - */ - ConsistencyChecks cc = new ConsistencyChecks(); - cc.ItemID = proc.ItemID; - BuildROChecks(cc, proc); - BuildLibDocChecks(cc, proc); - return cc.ToString().Replace("OldDocDate=\"0001-01-01T00:00:00\"", ""); - } - - private void BuildLibDocChecks(ConsistencyChecks cc, ProcedureInfo proc) - { - if (_LibDocs.ContainsKey(proc.DisplayNumber)) - { - foreach (string libdoc in _LibDocs[proc.DisplayNumber]) - { - FileInfo fi = new FileInfo(string.Format(@"{0}\RTFFILES\{1}.LIB",Path,libdoc)); - if (fi.Exists) - { - //if (proc.MyDocVersion.VersionID > 1) - // System.Threading.Thread.Sleep(5000); - int docid = GetDocID(libdoc, proc.MyDocVersion.VersionID); - if (docid > 0) - cc.LibDocConsistency.AddLibDocCheck(docid, fi.LastWriteTimeUtc); - } - } - } - } - - private int GetDocID(string libdoc, int versionid) - { - DocumentInfo di = DocumentInfo.GetByLibDocName(libdoc, versionid); - return di.DocID; - } - - private void BuildROChecks(ConsistencyChecks cc, ProcedureInfo proc) - { - cc.ROConsistency.ROFstDate = ROFstDate; - if (_ProcROs.ContainsKey(proc.DisplayNumber)) - { - foreach (string roid in _ProcROs[proc.DisplayNumber]) - cc.ROConsistency.AddROCheck(FormatROID(roid), GetROValue(FormatROID(roid))); - } - //int cnt = cc.ROConsistency.MyROChecks.Length; - if (_LibDocs.ContainsKey(proc.DisplayNumber)) - { - foreach (string libdoc in _LibDocs[proc.DisplayNumber]) - { - if (_LibROs.ContainsKey(libdoc)) - { - foreach (string roid in _LibROs[libdoc]) - cc.ROConsistency.AddROCheck(FormatROID(roid), GetROValue(FormatROID(roid))); - } - } - } - } - - private string GetROValue(string roid) - { - if (!_ROValues.ContainsKey(roid)) - { - //if (roid.Contains("000128")) - // System.Console.WriteLine(); - //string ss = _Lookup.GetRoValue(roid); - //ss = ItemInfo.ConvertToDisplayText(ss); - //ss = ss.Replace('\n', ';'); - - _ROValues.Add(roid, PrepareForXML(ItemInfo.ConvertToDisplayText(_Lookup.GetRoValue(roid)))); - } - return _ROValues[roid]; - } - - private string PrepareForXML(string rovalue) - { - StringBuilder sb = new StringBuilder(); - foreach (char c in rovalue) - { - if (c < ' ') - sb.Append(string.Format(@"\x{0:X4}", (int)c)); - else - sb.Append(c); - } - return sb.ToString(); - } - private string FormatROID(string roid) - { - if (roid.Length == 16 && roid.EndsWith("0000")) - return roid.Substring(0, 12).ToUpper(); - return roid.ToUpper(); - } - - private Dictionary _EntryFromProc; - public Dictionary EntryFromProc - { - get - { - if (_EntryFromProc == null) - _EntryFromProc = FillEntryFromProc(); - return _EntryFromProc; - } - } - private Dictionary FillEntryFromProc() - { - Dictionary rv = new Dictionary(); - using (OleDbDataAdapter da = new OleDbDataAdapter("Select * from [set] where entry is not null", Connection)) - { - using (DataSet ds = new DataSet()) - { - da.Fill(ds); - foreach (DataRow dr in ds.Tables[0].Rows) - if (!rv.ContainsKey(dr["NUMBER"].ToString())) - rv.Add(dr["NUMBER"].ToString(), new ProcInfo(dr, Path)); - } - } - return rv; - } - private ROFSTLookup _Lookup; - public ApprovedFolder(string path) - { - _Path = path; - FillROs(); - FillLibDocs(); - _Lookup = new ROFSTLookup(string.Format(@"{0}\RO.FST", Path)); - } - public ApprovedFolder(string path, DocVersionInfo dvi) - { - _Path = path; - FillROs(); - FillLibDocs(); - _Lookup = new ROFSTLookup(string.Format(@"{0}\RO.FST", Path)); - _EntryFromProc = FillEntryFromProcMulti(dvi); - } - - private Dictionary FillEntryFromProcMulti(DocVersionInfo dvi) - { - Dictionary rv = new Dictionary(); - for (int i = 1; i <= dvi.MultiUnitCount; i++) - { - foreach (ProcedureInfo pi in dvi.Procedures) - { - pi.MyDocVersion.DocVersionConfig.SelectedSlave = i; - rv.Add(pi.DisplayNumber, new ProcInfo(pi, Path)); - } - } - return rv; - } - - private void FillLibDocs() - { - using (OleDbDataAdapter da = new OleDbDataAdapter("Select distinct FROMNUMBER, TONUMBER from [tran] where tonumber like 'DOC%'", Connection)) - { - using (DataSet ds = new DataSet()) - { - da.Fill(ds); - foreach (DataRow dr in ds.Tables[0].Rows) - { - string number = dr["FROMNUMBER"].ToString(); - string libdoc = dr["TONUMBER"].ToString(); - if (!_LibDocs.ContainsKey(number)) - _LibDocs.Add(number, new List()); - if (!_LibDocs[number].Contains(libdoc)) - _LibDocs[number].Add(libdoc); - } - } - } - } - - private void FillROs() - { - using (OleDbDataAdapter da = new OleDbDataAdapter("Select distinct NUMBER, ROID from [usagero]", Connection)) - { - using (DataSet ds = new DataSet()) - { - da.Fill(ds); - foreach (DataRow dr in ds.Tables[0].Rows) - { - string number = dr["NUMBER"].ToString(); - string roid = dr["ROID"].ToString(); - if (number.StartsWith("DOC")) - { - if (!_LibROs.ContainsKey(number)) - _LibROs.Add(number, new List()); - if (!_LibROs[number].Contains(roid)) - _LibROs[number].Add(roid); - } - else - { - if (!_ProcROs.ContainsKey(number)) - _ProcROs.Add(number, new List()); - if (!_ProcROs[number].Contains(roid)) - _ProcROs[number].Add(roid); - } - } - } - } - } - } - public partial class ProcInfo - { - private log4net.ILog log; - private string _Number; - public string Number - { - get { return _Number; } - set { _Number = value; } - } - private string _Entry; - public string Entry - { - get { return _Entry; } - set { _Entry = value; } - } - private string _UserID; - public string UserID - { - get { return _UserID; } - set { _UserID = value; } - } - private System.DateTime _StartDateTime; - public System.DateTime StartDateTime - { - get { return _StartDateTime; } - set { _StartDateTime = value; } - } - private string _Rev; - public string Rev - { - get { return _Rev; } - set { _Rev = value; } - } - private string _RevDate; - public string RevDate - { - get { return _RevDate; } - set { _RevDate = value; } - } - private string _ReviewDate; - public string ReviewDate - { - get { return _ReviewDate; } - set { _ReviewDate = value; } - } - public ProcInfo(ProcedureInfo pi, string afpath) - { - Number = pi.DisplayNumber; - Entry = pi.DisplayText; - UserID = pi.UserID; - StartDateTime = pi.DTS; - RevDate = pi.ProcedureConfig.Print_RevDate; - Rev = pi.ProcedureConfig.Print_Rev; - } - public ProcInfo(DataRow dr, string afpath) - { - Number = dr["NUMBER"].ToString(); - Entry = dr["ENTRY"].ToString(); - UserID = dr["INITIALS"].ToString(); - if (UserID == string.Empty) UserID = "UNKNOWN"; - //string date = GetDTS(dr["DATE"].ToString(), dr["TIME"].ToString()).ToString("MM/dd/yyyy HH:MM");//System.DateTime.Parse(dr["DATE"].ToString()).ToString("MM/dd/yyyy"); - //string time = dr["TIME"].ToString(); - //if (time.EndsWith(":")) - // date += " " + time.Substring(0, 2) + ":" + time.Substring(2, 2); - //else - // date += " " + time.Substring(0, 2) + ":" + time.Substring(3, 2); - //StartDateTime = System.DateTime.Parse(date); - StartDateTime = GetDTS(dr["DATE"].ToString(), dr["TIME"].ToString()); - RevDate = StartDateTime.ToString("MM/dd/yyyy"); - FixItems fis = new FixItems(new FileInfo(string.Format(@"{0}\{1}.fix", afpath, Entry))); - if (fis.Count > 0) - { - Rev = fis[0].Rev; - RevDate = fis[0].RevDate ?? GetDBFRevDate(afpath); - ReviewDate = fis[0].ReviewDate; - } - } - public System.DateTime GetDTS(string date, string time) - { - // Set the date/time stamp. If there is no 'date', set the date - // to 1/1/2000 (this can be changed!). If there is not 'time', - // set the time to 0:0:0 (midnight). - - System.DateTime dts = System.DateTime.Now; - string month = "01"; - string day = "01"; - string year = "2000"; - string hour = ""; - string minute = ""; - try - { - if (date != null && date != "") - { - int indx1 = date.IndexOf("/"); - month = date.Substring(0, indx1); - int indx2 = date.IndexOf("/", indx1 + 1); - day = date.Substring(indx1 + 1, indx2 - indx1 - 1); - year = date.Substring(indx2 + 1, 4); - } - if (time == null || time == "") - { - hour = "0"; - minute = "0"; - } - else - { - - hour = time.Substring(0, 2); - int indxc = time.IndexOfAny(":A-".ToCharArray()); - if (indxc == time.Length - 1) - minute = time.Substring(2, 2); - else - minute = time.Substring(indxc + 1, time.Length - indxc - 1); - } - dts = new System.DateTime(System.Convert.ToInt32(year), System.Convert.ToInt32(month), System.Convert.ToInt32(day), - System.Convert.ToInt32(hour), System.Convert.ToInt32(minute), 0); - } - catch (System.Exception ex) - { - log.ErrorFormat("Bad Date/Time {0} {1}. Set to NOW.", date, time); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - //frmMain.AddError(ex, "Bad Date/Time {0} {1}", date, time); - log.ErrorFormat(ex.StackTrace); - return dts; - } - return dts; - } - - private string GetDBFRevDate(string afpath) - { - FileInfo fi = new FileInfo(afpath + @"\" + Entry + ".dbf"); - if (fi.Exists) - return fi.LastWriteTime.ToShortDateString(); - return null; - } - } - -} diff --git a/PROMS/DataLoader/Approve.cs.bak b/PROMS/DataLoader/Approve.cs.bak deleted file mode 100644 index c12dee64..00000000 --- a/PROMS/DataLoader/Approve.cs.bak +++ /dev/null @@ -1,521 +0,0 @@ -//using System; -using System.Collections.Generic; -using System.Text; -using VEPROMS.CSLA.Library; -using System.IO; -using System.Data.OleDb; -using System.Data; - -namespace DataLoader -{ - public partial class Loader - { - public bool BuildApprovedRevision() - { - if(!frmMain.RunScript("PROMSApproveApprove.sql", frmMain.MySettings.DBName)) return false; - bool rv = false; - using (Stage myStage = GetApprovedStage()) - { - if (myStage == null) - return rv; - DocVersionInfoList dvil = DocVersionInfoList.Get(); - foreach (DocVersionInfo dvi in dvil) - { - if (dvi.Procedures.Count > 0) - { - if (!frmMain.MySettings.OnlyThisSet || frmMain.MySettings.ProcedureSetPath.ToUpper() == dvi.MyFolder.Title.ToUpper()) - { - string approvedFolder = dvi.MyFolder.Title + @"\APPROVED"; - //B2012-094 fix - if (!Directory.Exists(approvedFolder)) - frmMain.MyWarning = "**** " + dvi.MyFolder.Title + " Approved folder does not exist"; - else if (!File.Exists(approvedFolder + @"\SET.DBF")) - frmMain.MyWarning = "**** " + dvi.MyFolder.Title + " Approved Set.dbf does not exist"; - else if (!File.Exists(approvedFolder + @"\USAGERO.DBF")) - frmMain.MyWarning = "**** " + dvi.MyFolder.Title + " Approved UsageRO.dbf does not exist"; - else if (!Directory.Exists(approvedFolder + @"\PDFS")) - frmMain.MyWarning = "**** " + dvi.MyFolder.Title + " Approved Pdfs folder does not exist"; - else if (Directory.GetFiles(approvedFolder + @"\PDFS", "*.PDF").Length == 0) - frmMain.MyWarning = "**** " + dvi.MyFolder.Title + " Approved Pdfs folder does not contain any pdf files"; - else rv |= BuildApprovedRevision(myStage, approvedFolder, dvi); - } - } - } - } - return rv; - } - - private static Stage GetApprovedStage() - { - StageInfoList sil = StageInfoList.Get(); - foreach (StageInfo si in sil) - { - if (si.Name.ToUpper() == "APPROVED") - return si.Get(); - } - return null; - } - private bool BuildApprovedRevision(Stage myStage, string approvedFolder, DocVersionInfo dvi) - { - bool rv = false; - if (dvi.MultiUnitCount <= 1) - { - ApprovedFolder af = new ApprovedFolder(approvedFolder); - foreach (ProcedureInfo pi in dvi.Procedures) - { - rv |= BuildApprovedRevision(myStage, af, pi, 0); - } - } - else - { - ApprovedFolder af = new ApprovedFolder(approvedFolder, dvi); - foreach (ProcedureInfo pi in dvi.Procedures) - { - for (int i = 1; i <= dvi.MultiUnitCount; i++) - rv |= BuildApprovedRevision(myStage, af, pi, i); - } - } - return rv; - } - private bool BuildApprovedRevision(Stage myStage, ApprovedFolder af, ProcedureInfo pi, int selectedSlave) - { - bool rv = false; - if (selectedSlave > 0) - pi.MyDocVersion.DocVersionConfig.SelectedSlave = selectedSlave; - frmMain.MyInfo = string.Format("Loading approved data for Procedure: {0}", pi.DisplayNumber); - // if working draft procedure does not exist in approved folder, don't bother processing - if (!af.EntryFromProc.ContainsKey(pi.DisplayNumber)) return rv; - using (Revision revision = CreateRevision(af, pi)) - { - System.DateTime dts = pi.DTS; - string userID = af.EntryFromProc[pi.DisplayNumber].UserID; - using (Version version = Version.MakeVersion(revision, myStage, GetPDF(af,pi), GetSummaryPDF(), dts, userID)) - { - using (Check check = Check.MakeCheck(revision, myStage, af.BuildConsistencyChecks(pi))) - { - rv |= true; - } - } - } - if(!rv) - frmMain.MyInfo = string.Format("Loading Procedure: {0} FAILED MISERABLY", pi.DisplayNumber); - return rv; - } - private byte[] GetSummaryPDF() - { - return null; - } - private byte[] GetPDF(ApprovedFolder af, ProcedureInfo pi) - { - string pdf = string.Format(@"{0}\PDFS\{1}.pdf", af.Path, pi.DisplayNumber); - FileInfo pdfFile = new FileInfo(pdf); - if (pdfFile.Exists) - { - FileStream fs = pdfFile.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite); - byte[] pdfBuf = new byte[pdfFile.Length]; - fs.Read(pdfBuf, 0, pdfBuf.Length); - fs.Close(); - return pdfBuf; - } - return null; - } - private Revision CreateRevision(ApprovedFolder af, ProcedureInfo pi) - { - int typeID = 1; //revision not tempmod - ProcInfo pinf = af.EntryFromProc[pi.DisplayNumber]; - string revisionNumber = pinf.Rev; - System.DateTime revisionDate = System.DateTime.Parse(pinf.RevDate ?? "1/1/1980"); - string notes = "Migration Of Current Approved Revision"; - RevisionConfig cfg = new RevisionConfig(); - cfg.History_StartDate = pinf.StartDateTime; - if (pi.MyDocVersion.DocVersionConfig.SelectedSlave > 0) - cfg.Applicability_Index = pi.MyDocVersion.DocVersionConfig.SelectedSlave; - string config = cfg.ToString(); - System.DateTime dts = pi.DTS; - string userID = pinf.UserID; - return Revision.MakeRevision(pi.ItemID, typeID, revisionNumber, revisionDate, notes, config, dts, userID); - } - } - public partial class ApprovedFolder - { - private OleDbConnection _Connection; - public OleDbConnection Connection - { - get - { - if(_Connection == null) - _Connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + _Path + ";Extended Properties=dBase III;Persist Security Info=False"); - return _Connection; - } - } - private string _Path; - public string Path - { - get { return _Path; } - set { _Path = value; } - } - private System.DateTime _ROFstDate = System.DateTime.MinValue; - public System.DateTime ROFstDate - { - get - { - if (_ROFstDate == System.DateTime.MinValue) - { - FileInfo fi = new FileInfo(string.Format(@"{0}\ro.fst",Path)); - if(fi.Exists) - _ROFstDate = fi.LastWriteTimeUtc; - } - return _ROFstDate; - } - } - - private Dictionary _ROValues = new Dictionary(); - private Dictionary _LibDocDates = new Dictionary(); - private Dictionary> _ProcROs = new Dictionary>(); - private Dictionary> _LibROs = new Dictionary>(); - private Dictionary> _LibDocs = new Dictionary>(); - - public string BuildConsistencyChecks(ProcedureInfo proc) - { - /* - - - - - - - - - */ - ConsistencyChecks cc = new ConsistencyChecks(); - cc.ItemID = proc.ItemID; - BuildROChecks(cc, proc); - BuildLibDocChecks(cc, proc); - return cc.ToString().Replace("OldDocDate=\"0001-01-01T00:00:00\"", ""); - } - - private void BuildLibDocChecks(ConsistencyChecks cc, ProcedureInfo proc) - { - if (_LibDocs.ContainsKey(proc.DisplayNumber)) - { - foreach (string libdoc in _LibDocs[proc.DisplayNumber]) - { - FileInfo fi = new FileInfo(string.Format(@"{0}\RTFFILES\{1}.LIB",Path,libdoc)); - if (fi.Exists) - { - //if (proc.MyDocVersion.VersionID > 1) - // System.Threading.Thread.Sleep(5000); - int docid = GetDocID(libdoc, proc.MyDocVersion.VersionID); - if (docid > 0) - cc.LibDocConsistency.AddLibDocCheck(docid, fi.LastWriteTimeUtc); - } - } - } - } - - private int GetDocID(string libdoc, int versionid) - { - DocumentInfo di = DocumentInfo.GetByLibDocName(libdoc, versionid); - return di.DocID; - } - - private void BuildROChecks(ConsistencyChecks cc, ProcedureInfo proc) - { - cc.ROConsistency.ROFstDate = ROFstDate; - if (_ProcROs.ContainsKey(proc.DisplayNumber)) - { - foreach (string roid in _ProcROs[proc.DisplayNumber]) - cc.ROConsistency.AddROCheck(FormatROID(roid), GetROValue(FormatROID(roid))); - } - //int cnt = cc.ROConsistency.MyROChecks.Length; - if (_LibDocs.ContainsKey(proc.DisplayNumber)) - { - foreach (string libdoc in _LibDocs[proc.DisplayNumber]) - { - if (_LibROs.ContainsKey(libdoc)) - { - foreach (string roid in _LibROs[libdoc]) - cc.ROConsistency.AddROCheck(FormatROID(roid), GetROValue(FormatROID(roid))); - } - } - } - } - - private string GetROValue(string roid) - { - if (!_ROValues.ContainsKey(roid)) - { - //if (roid.Contains("000128")) - // System.Console.WriteLine(); - //string ss = _Lookup.GetRoValue(roid); - //ss = ItemInfo.ConvertToDisplayText(ss); - //ss = ss.Replace('\n', ';'); - - _ROValues.Add(roid, PrepareForXML(ItemInfo.ConvertToDisplayText(_Lookup.GetRoValue(roid)))); - } - return _ROValues[roid]; - } - - private string PrepareForXML(string rovalue) - { - StringBuilder sb = new StringBuilder(); - foreach (char c in rovalue) - { - if (c < ' ') - sb.Append(string.Format(@"\x{0:X4}", (int)c)); - else - sb.Append(c); - } - return sb.ToString(); - } - private string FormatROID(string roid) - { - if (roid.Length == 16 && roid.EndsWith("0000")) - return roid.Substring(0, 12).ToUpper(); - return roid.ToUpper(); - } - - private Dictionary _EntryFromProc; - public Dictionary EntryFromProc - { - get - { - if (_EntryFromProc == null) - _EntryFromProc = FillEntryFromProc(); - return _EntryFromProc; - } - } - private Dictionary FillEntryFromProc() - { - Dictionary rv = new Dictionary(); - using (OleDbDataAdapter da = new OleDbDataAdapter("Select * from [set] where entry is not null", Connection)) - { - using (DataSet ds = new DataSet()) - { - da.Fill(ds); - foreach (DataRow dr in ds.Tables[0].Rows) - if (!rv.ContainsKey(dr["NUMBER"].ToString())) - rv.Add(dr["NUMBER"].ToString(), new ProcInfo(dr, Path)); - } - } - return rv; - } - private ROFSTLookup _Lookup; - public ApprovedFolder(string path) - { - _Path = path; - FillROs(); - FillLibDocs(); - _Lookup = new ROFSTLookup(string.Format(@"{0}\RO.FST", Path)); - } - public ApprovedFolder(string path, DocVersionInfo dvi) - { - _Path = path; - FillROs(); - FillLibDocs(); - _Lookup = new ROFSTLookup(string.Format(@"{0}\RO.FST", Path)); - _EntryFromProc = FillEntryFromProcMulti(dvi); - } - - private Dictionary FillEntryFromProcMulti(DocVersionInfo dvi) - { - Dictionary rv = new Dictionary(); - for (int i = 1; i <= dvi.MultiUnitCount; i++) - { - foreach (ProcedureInfo pi in dvi.Procedures) - { - pi.MyDocVersion.DocVersionConfig.SelectedSlave = i; - rv.Add(pi.DisplayNumber, new ProcInfo(pi, Path)); - } - } - return rv; - } - - private void FillLibDocs() - { - using (OleDbDataAdapter da = new OleDbDataAdapter("Select distinct FROMNUMBER, TONUMBER from [tran] where tonumber like 'DOC%'", Connection)) - { - using (DataSet ds = new DataSet()) - { - da.Fill(ds); - foreach (DataRow dr in ds.Tables[0].Rows) - { - string number = dr["FROMNUMBER"].ToString(); - string libdoc = dr["TONUMBER"].ToString(); - if (!_LibDocs.ContainsKey(number)) - _LibDocs.Add(number, new List()); - if (!_LibDocs[number].Contains(libdoc)) - _LibDocs[number].Add(libdoc); - } - } - } - } - - private void FillROs() - { - using (OleDbDataAdapter da = new OleDbDataAdapter("Select distinct NUMBER, ROID from [usagero]", Connection)) - { - using (DataSet ds = new DataSet()) - { - da.Fill(ds); - foreach (DataRow dr in ds.Tables[0].Rows) - { - string number = dr["NUMBER"].ToString(); - string roid = dr["ROID"].ToString(); - if (number.StartsWith("DOC")) - { - if (!_LibROs.ContainsKey(number)) - _LibROs.Add(number, new List()); - if (!_LibROs[number].Contains(roid)) - _LibROs[number].Add(roid); - } - else - { - if (!_ProcROs.ContainsKey(number)) - _ProcROs.Add(number, new List()); - if (!_ProcROs[number].Contains(roid)) - _ProcROs[number].Add(roid); - } - } - } - } - } - } - public partial class ProcInfo - { - private log4net.ILog log; - private string _Number; - public string Number - { - get { return _Number; } - set { _Number = value; } - } - private string _Entry; - public string Entry - { - get { return _Entry; } - set { _Entry = value; } - } - private string _UserID; - public string UserID - { - get { return _UserID; } - set { _UserID = value; } - } - private System.DateTime _StartDateTime; - public System.DateTime StartDateTime - { - get { return _StartDateTime; } - set { _StartDateTime = value; } - } - private string _Rev; - public string Rev - { - get { return _Rev; } - set { _Rev = value; } - } - private string _RevDate; - public string RevDate - { - get { return _RevDate; } - set { _RevDate = value; } - } - private string _ReviewDate; - public string ReviewDate - { - get { return _ReviewDate; } - set { _ReviewDate = value; } - } - public ProcInfo(ProcedureInfo pi, string afpath) - { - Number = pi.DisplayNumber; - Entry = pi.DisplayText; - UserID = pi.UserID; - StartDateTime = pi.DTS; - RevDate = pi.ProcedureConfig.Print_RevDate; - Rev = pi.ProcedureConfig.Print_Rev; - } - public ProcInfo(DataRow dr, string afpath) - { - Number = dr["NUMBER"].ToString(); - Entry = dr["ENTRY"].ToString(); - UserID = dr["INITIALS"].ToString(); - if (UserID == string.Empty) UserID = "UNKNOWN"; - //string date = GetDTS(dr["DATE"].ToString(), dr["TIME"].ToString()).ToString("MM/dd/yyyy HH:MM");//System.DateTime.Parse(dr["DATE"].ToString()).ToString("MM/dd/yyyy"); - //string time = dr["TIME"].ToString(); - //if (time.EndsWith(":")) - // date += " " + time.Substring(0, 2) + ":" + time.Substring(2, 2); - //else - // date += " " + time.Substring(0, 2) + ":" + time.Substring(3, 2); - //StartDateTime = System.DateTime.Parse(date); - StartDateTime = GetDTS(dr["DATE"].ToString(), dr["TIME"].ToString()); - RevDate = StartDateTime.ToString("MM/dd/yyyy"); - FixItems fis = new FixItems(new FileInfo(string.Format(@"{0}\{1}.fix", afpath, Entry))); - if (fis.Count > 0) - { - Rev = fis[0].Rev; - RevDate = fis[0].RevDate ?? GetDBFRevDate(afpath); - ReviewDate = fis[0].ReviewDate; - } - } - public System.DateTime GetDTS(string date, string time) - { - // Set the date/time stamp. If there is no 'date', set the date - // to 1/1/2000 (this can be changed!). If there is not 'time', - // set the time to 0:0:0 (midnight). - - System.DateTime dts = System.DateTime.Now; - string month = "01"; - string day = "01"; - string year = "2000"; - string hour = ""; - string minute = ""; - try - { - if (date != null && date != "") - { - int indx1 = date.IndexOf("/"); - month = date.Substring(0, indx1); - int indx2 = date.IndexOf("/", indx1 + 1); - day = date.Substring(indx1 + 1, indx2 - indx1 - 1); - year = date.Substring(indx2 + 1, 4); - } - if (time == null || time == "") - { - hour = "0"; - minute = "0"; - } - else - { - - hour = time.Substring(0, 2); - int indxc = time.IndexOfAny(":A-".ToCharArray()); - if (indxc == time.Length - 1) - minute = time.Substring(2, 2); - else - minute = time.Substring(indxc + 1, time.Length - indxc - 1); - } - dts = new System.DateTime(System.Convert.ToInt32(year), System.Convert.ToInt32(month), System.Convert.ToInt32(day), - System.Convert.ToInt32(hour), System.Convert.ToInt32(minute), 0); - } - catch (System.Exception ex) - { - log.ErrorFormat("Bad Date/Time {0} {1}. Set to NOW.", date, time); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - //frmMain.AddError(ex, "Bad Date/Time {0} {1}", date, time); - log.ErrorFormat(ex.StackTrace); - return dts; - } - return dts; - } - - private string GetDBFRevDate(string afpath) - { - FileInfo fi = new FileInfo(afpath + @"\" + Entry + ".dbf"); - if (fi.Exists) - return fi.LastWriteTime.ToShortDateString(); - return null; - } - } - -} diff --git a/PROMS/DataLoader/BuildVEPROMS.Sql b/PROMS/DataLoader/BuildVEPROMS.Sql deleted file mode 100644 index f687d469..00000000 --- a/PROMS/DataLoader/BuildVEPROMS.Sql +++ /dev/null @@ -1,1508 +0,0 @@ -USE [master] -GO -/****** Object: Database [{DBName}] Script Date: 01/06/2012 15:49:32 ******/ -IF EXISTS (SELECT name FROM sys.databases WHERE name = N'{DBName}') -BEGIN - PRINT 'Dropping existing database {DBName}' - ALTER DATABASE [{DBName}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE - DROP DATABASE [{DBName}] -END -GO -/****** Object: Database [{DBName}] Script Date: 01/06/2012 15:02:52 ******/ -PRINT 'Creating Database {DBName} - {DBPath}\{DBName}.mdf' -GO -CREATE DATABASE [{DBName}] ON PRIMARY -( NAME = N'VEPROMS_Users', FILENAME = N'{DBPath}\{DBName}.mdf') - LOG ON -( NAME = N'VEPROMS_Users_log', FILENAME = N'{DBPath}\{DBName}_1.ldf') - COLLATE SQL_Latin1_General_CP1_CI_AS -GO -PRINT '{DBName} Created' -GO -EXEC dbo.sp_dbcmptlevel @dbname=N'{DBName}', @new_cmptlevel=90 -GO -PRINT '{sp_dbcmptlevel} Completed' -GO -IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled')) -begin -EXEC [{DBName}].[dbo].[sp_fulltext_database] @action = 'disable' -end -GO -ALTER DATABASE [{DBName}] SET ANSI_NULL_DEFAULT OFF -GO -ALTER DATABASE [{DBName}] SET ANSI_NULLS OFF -GO -ALTER DATABASE [{DBName}] SET ANSI_PADDING OFF -GO -ALTER DATABASE [{DBName}] SET ANSI_WARNINGS OFF -GO -ALTER DATABASE [{DBName}] SET ARITHABORT OFF -GO -ALTER DATABASE [{DBName}] SET AUTO_CLOSE OFF -GO -ALTER DATABASE [{DBName}] SET AUTO_CREATE_STATISTICS ON -GO -ALTER DATABASE [{DBName}] SET AUTO_SHRINK OFF -GO -ALTER DATABASE [{DBName}] SET AUTO_UPDATE_STATISTICS ON -GO -ALTER DATABASE [{DBName}] SET CURSOR_CLOSE_ON_COMMIT OFF -GO -ALTER DATABASE [{DBName}] SET CURSOR_DEFAULT GLOBAL -GO -ALTER DATABASE [{DBName}] SET CONCAT_NULL_YIELDS_NULL OFF -GO -ALTER DATABASE [{DBName}] SET NUMERIC_ROUNDABORT OFF -GO -ALTER DATABASE [{DBName}] SET QUOTED_IDENTIFIER OFF -GO -ALTER DATABASE [{DBName}] SET RECURSIVE_TRIGGERS OFF -GO -ALTER DATABASE [{DBName}] SET DISABLE_BROKER -GO -ALTER DATABASE [{DBName}] SET AUTO_UPDATE_STATISTICS_ASYNC OFF -GO -ALTER DATABASE [{DBName}] SET DATE_CORRELATION_OPTIMIZATION OFF -GO -ALTER DATABASE [{DBName}] SET TRUSTWORTHY OFF -GO -ALTER DATABASE [{DBName}] SET ALLOW_SNAPSHOT_ISOLATION OFF -GO -ALTER DATABASE [{DBName}] SET PARAMETERIZATION SIMPLE -GO -ALTER DATABASE [{DBName}] SET READ_WRITE -GO -ALTER DATABASE [{DBName}] SET RECOVERY SIMPLE -GO -ALTER DATABASE [{DBName}] SET MULTI_USER -GO -ALTER DATABASE [{DBName}] SET PAGE_VERIFY CHECKSUM -GO -ALTER DATABASE [{DBName}] SET DB_CHAINING OFF -GO -USE [{DBName}] -GO - - -/****** Object: Table [dbo].[Connections] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Connections]( - [DBID] [int] IDENTITY(1,1) NOT NULL, - [Name] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [Title] [nvarchar](510) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [ConnectionString] [nvarchar](510) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [ServerType] [int] NOT NULL CONSTRAINT [DF_Connections_ServerType] DEFAULT ((1)), - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Connections_DTS] DEFAULT (getdate()), - [UsrID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Connections_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Connections] PRIMARY KEY CLUSTERED -( - [DBID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE UNIQUE NONCLUSTERED INDEX [IX_Connections] ON [Connections] -( - [Name] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0 SQL Server' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Connections', @level2type=N'COLUMN',@level2name=N'ServerType' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Connections', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[RODbs] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [RODbs]( - [RODbID] [int] IDENTITY(1,1) NOT NULL, - [ROName] [nvarchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [FolderPath] [nvarchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [DBConnectionString] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_RODbs_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_RODbs_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_RODbs] PRIMARY KEY CLUSTERED -( - [RODbID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE UNIQUE NONCLUSTERED INDEX [IX_RODbs_FolderPath] ON [RODbs] -( - [FolderPath] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Hook for future - to allow the user to select multiple RO Databases assocaiated with on DocVersion' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'RODbs', @level2type=N'COLUMN',@level2name=N'ROName' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Path to the RO database' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'RODbs', @level2type=N'COLUMN',@level2name=N'FolderPath' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Connection String - Default could just be the full path and name of the database' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'RODbs', @level2type=N'COLUMN',@level2name=N'DBConnectionString' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'RODbs', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Locks] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Locks]( - [LockID] [int] IDENTITY(1,1) NOT NULL, - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Locks_UserID] DEFAULT (upper(suser_sname())), - [LockType] [tinyint] NOT NULL CONSTRAINT [DF_Locks_LockType] DEFAULT ((0)), - [LockItemID] [int] NOT NULL CONSTRAINT [DF_Locks_LockItemID] DEFAULT ((0)), - [Description] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Locks_DTS] DEFAULT (getdate()), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Locks] PRIMARY KEY CLUSTERED -( - [LockID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Locks', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Documents] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -SET ANSI_PADDING ON -GO -CREATE TABLE [Documents]( - [DocID] [int] IDENTITY(1,1) NOT NULL, - [LibTitle] [nvarchar](1024) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DocContent] [varbinary](max) NULL, - [DocAscii] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Documents_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Documents_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - [FileExtension] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Documents_FileExtension] DEFAULT (N'.Doc'), - CONSTRAINT [PK_Documents] PRIMARY KEY CLUSTERED -( - [DocID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -SET ANSI_PADDING OFF -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Actual content of a Word Document (RTF, DOC or XML Format)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Documents', @level2type=N'COLUMN',@level2name=N'DocContent' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Used for searching' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Documents', @level2type=N'COLUMN',@level2name=N'DocAscii' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Documents', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Groups] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Groups]( - [GID] [int] IDENTITY(1,1) NOT NULL, - [GroupName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [GroupType] [int] NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Groups_DTS] DEFAULT (getdate()), - [UsrID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Groups_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Groups] PRIMARY KEY CLUSTERED -( - [GID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE UNIQUE NONCLUSTERED INDEX [IX_Groups] ON [Groups] -( - [GroupName] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Groups', @level2type=N'COLUMN',@level2name=N'GID' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Groups', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Users] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Users]( - [UID] [int] IDENTITY(1,1) NOT NULL, - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Users_UserID] DEFAULT (upper(suser_sname())), - [FirstName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [MiddleName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [LastName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [Suffix] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [CourtesyTitle] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [PhoneNumber] [nvarchar](30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [CFGName] [nvarchar](8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [UserLogin] [nvarchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [UserName] [nvarchar](32) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Users_DTS] DEFAULT (getdate()), - [UsrID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Users_UserID1] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED -( - [UID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Users', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Formats] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Formats]( - [FormatID] [int] IDENTITY(1,1) NOT NULL, - [ParentID] [int] NOT NULL CONSTRAINT [DF_Formats_ParentID] DEFAULT ((1)), - [Name] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [Description] [nvarchar](250) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [Data] [xml] NOT NULL, - [GenMac] [xml] NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Formats_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Formats_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Formats] PRIMARY KEY CLUSTERED -( - [FormatID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE UNIQUE NONCLUSTERED INDEX [IX_Formats] ON [Formats] -( - [ParentID] ASC, - [Name] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_FormatsParentID] ON [Formats] -( - [ParentID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Formats', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Sessions] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Sessions]( - [SessionID] [int] IDENTITY(1,1) NOT NULL, - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Sessions_UserID] DEFAULT (upper(suser_sname())), - [DTSDtart] [datetime] NOT NULL CONSTRAINT [DF_Sessions_DTSDtart] DEFAULT (getdate()), - [DTSEnd] [datetime] NULL, - [DTSActivity] [datetime] NULL, - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Sessions] PRIMARY KEY CLUSTERED -( - [SessionID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Sessions', @level2type=N'COLUMN',@level2name=N'DTSDtart' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Sessions', @level2type=N'COLUMN',@level2name=N'DTSEnd' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Sessions', @level2type=N'COLUMN',@level2name=N'DTSActivity' -GO -/****** Object: Table [dbo].[Branches] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Branches]( - [BranchID] [int] IDENTITY(1,1) NOT NULL, - [VersionID] [int] NOT NULL CONSTRAINT [DF_Branches_VersionID] DEFAULT ((0)), - [DateLimit] [datetime] NOT NULL CONSTRAINT [DF_Branches_DateLimit] DEFAULT (getdate()), - [BeforeType] [tinyint] NOT NULL CONSTRAINT [DF_Branches_BeforeType] DEFAULT ((0)), - [BeforeID] [int] NOT NULL CONSTRAINT [DF_Branches_BeforeID] DEFAULT ((0)), - [AfterType] [tinyint] NOT NULL CONSTRAINT [DF_Branches_AfterType] DEFAULT ((0)), - [AfterID] [int] NOT NULL CONSTRAINT [DF_Branches_AfterID] DEFAULT ((0)), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Branches] PRIMARY KEY CLUSTERED -( - [BranchID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Branches', @level2type=N'COLUMN',@level2name=N'DateLimit' -GO -/****** Object: Table [dbo].[AnnotationTypes] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [AnnotationTypes]( - [TypeID] [int] IDENTITY(1,1) NOT NULL, - [Name] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_AnnotationTypes_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_AnnotationTypes_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_AnnotationTypes] PRIMARY KEY CLUSTERED -( - [TypeID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE UNIQUE NONCLUSTERED INDEX [IX_AnnotationTypes_Name] ON [AnnotationTypes] -( - [Name] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AnnotationTypes', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Owners] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Owners]( - [OwnerID] [int] IDENTITY(1,1) NOT NULL, - [SessionID] [int] NOT NULL CONSTRAINT [DF_Owners_SessionID] DEFAULT ((0)), - [OwnerType] [tinyint] NOT NULL CONSTRAINT [DF_Owners_OwnerType] DEFAULT ((0)), - [OwnerItemID] [int] NOT NULL CONSTRAINT [DF_Owners_OwnerItemID] DEFAULT ((0)), - [DTSStart] [datetime] NOT NULL CONSTRAINT [DF_Owners_DTSStart] DEFAULT (getdate()), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Owners] PRIMARY KEY CLUSTERED -( - [OwnerID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Owners', @level2type=N'COLUMN',@level2name=N'DTSStart' -GO -/****** Object: Table [dbo].[ApplicableStructures] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [ApplicableStructures]( - [StructureID] [int] NOT NULL, - [AppItems] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_ApplicableStructures_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_ApplicableStructures_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_ApplicableStructures] PRIMARY KEY CLUSTERED -( - [StructureID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'A series of characters - Y means Applicable, N means Not Applicable, Space means undecided' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ApplicableStructures', @level2type=N'COLUMN',@level2name=N'AppItems' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ApplicableStructures', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Roles] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Roles]( - [RID] [int] IDENTITY(1,1) NOT NULL, - [Name] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [Title] [nvarchar](250) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Roles_DTS] DEFAULT (getdate()), - [UsrID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Roles_UsrID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Roles] PRIMARY KEY CLUSTERED -( - [RID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE UNIQUE NONCLUSTERED INDEX [IX_Roles] ON [Roles] -( - [Name] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Roles', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Associations] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Associations]( - [AssociationID] [int] IDENTITY(1,1) NOT NULL, - [VersionID] [int] NOT NULL, - [ROFstID] [int] NOT NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Associations_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Associations_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Associations_1] PRIMARY KEY CLUSTERED -( - [AssociationID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE UNIQUE NONCLUSTERED INDEX [IX_Associations_VersionID_ROFstID] ON [Associations] -( - [VersionID] ASC, - [ROFstID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Associations', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Folders] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Folders]( - [FolderID] [int] IDENTITY(1,1) NOT NULL, - [ParentID] [int] NOT NULL CONSTRAINT [DF_Folders_ParentID] DEFAULT ((1)), - [DBID] [int] NOT NULL CONSTRAINT [DF_DataSets_DBID] DEFAULT ((1)), - [Name] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [Title] [nvarchar](510) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [ShortName] [nvarchar](20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [FormatID] [int] NULL, - [ManualOrder] [float] NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_DataSets_DTS] DEFAULT (getdate()), - [UsrID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_DataSets_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_DataSets] PRIMARY KEY CLUSTERED -( - [FolderID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_FoldersDBID] ON [Folders] -( - [DBID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_FoldersFormatID] ON [Folders] -( - [FormatID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_FoldersParentID] ON [Folders] -( - [ParentID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE UNIQUE NONCLUSTERED INDEX [IX_UniqueChildFolders] ON [Folders] -( - [ParentID] ASC, - [Name] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Folders', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[DROUsages] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [DROUsages]( - [DROUsageID] [int] IDENTITY(1,1) NOT NULL, - [DocID] [int] NOT NULL CONSTRAINT [DF_Table_1_ContentID] DEFAULT ((0)), - [ROID] [nvarchar](16) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_DROUsages_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_DROUsages_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - [RODbID] [int] NOT NULL, - CONSTRAINT [PK_DROUsages] PRIMARY KEY CLUSTERED -( - [DROUsageID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DROUsages', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[ROImages] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -SET ANSI_PADDING ON -GO -CREATE TABLE [ROImages]( - [ImageID] [int] IDENTITY(1,1) NOT NULL, - [RODbID] [int] NOT NULL, - [FileName] [nvarchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [Content] [varbinary](max) NOT NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_ROImages_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_ROImages_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_ROImages] PRIMARY KEY CLUSTERED -( - [ImageID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -SET ANSI_PADDING OFF -GO -CREATE UNIQUE NONCLUSTERED INDEX [IX_ROImages_RODbID_FileName_DTS] ON [ROImages] -( - [RODbID] ASC, - [FileName] ASC, - [DTS] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ROImages', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[ROFsts] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -SET ANSI_PADDING ON -GO -CREATE TABLE [ROFsts]( - [ROFstID] [int] IDENTITY(1,1) NOT NULL, - [RODbID] [int] NOT NULL, - [ROLookup] [varbinary](max) NOT NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Table_1_DTS1] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_ROFsts_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_ROFsts] PRIMARY KEY CLUSTERED -( - [ROFstID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -SET ANSI_PADDING OFF -GO -CREATE UNIQUE NONCLUSTERED INDEX [IX_ROFsts] ON [ROFsts] -( - [RODbID] ASC, - [DTS] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ROFsts', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[RoUsages] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [RoUsages]( - [ROUsageID] [int] IDENTITY(1,1) NOT NULL, - [ContentID] [int] NOT NULL CONSTRAINT [DF_RoUsages_StructureID] DEFAULT ((0)), - [ROID] [nvarchar](16) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_RoUsages_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_RoUsages_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - [RODbID] [int] NOT NULL, - CONSTRAINT [PK_RoUsages] PRIMARY KEY CLUSTERED -( - [ROUsageID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_RoUsagesContentID] ON [RoUsages] -( - [ContentID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'RoUsages', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Figures] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Figures]( - [FigureID] [int] IDENTITY(1,1) NOT NULL, - [ROFstID] [int] NOT NULL, - [ImageID] [int] NOT NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Figures_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Figures_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Figures_1] PRIMARY KEY CLUSTERED -( - [FigureID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE UNIQUE NONCLUSTERED INDEX [IX_Figures_ROFstID_ImageID] ON [Figures] -( - [ROFstID] ASC, - [ImageID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Figures', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Entries] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Entries]( - [ContentID] [int] NOT NULL, - [DocID] [int] NOT NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Entries_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Entries_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Entries] PRIMARY KEY CLUSTERED -( - [ContentID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_EntriesDocID] ON [Entries] -( - [DocID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Entries', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Pdfs] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -SET ANSI_PADDING ON -GO -CREATE TABLE [Pdfs]( - [DocID] [int] NOT NULL, - [DebugStatus] [int] NOT NULL, - [TopRow] [int] NOT NULL, - [PageLength] [int] NOT NULL, - [LeftMargin] [int] NOT NULL, - [PageWidth] [int] NOT NULL, - [PageCount] [float] NOT NULL, - [DocPdf] [varbinary](max) NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Pdfs_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Pdfs_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Pdfs] PRIMARY KEY CLUSTERED -( - [DocID] ASC, - [DebugStatus] ASC, - [TopRow] ASC, - [PageLength] ASC, - [LeftMargin] ASC, - [PageWidth] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -SET ANSI_PADDING OFF -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'> 0 for Debug' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Pdfs', @level2type=N'COLUMN',@level2name=N'DebugStatus' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Count of whole and partial pages' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Pdfs', @level2type=N'COLUMN',@level2name=N'PageCount' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Pdfs', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Memberships] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Memberships]( - [UGID] [int] IDENTITY(1,1) NOT NULL, - [UID] [int] NOT NULL, - [GID] [int] NOT NULL, - [StartDate] [datetime] NOT NULL CONSTRAINT [DF_UserGroups_StartDate] DEFAULT (getdate()), - [EndDate] [datetime] NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Memberships_DTS] DEFAULT (getdate()), - [UsrID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Memberships_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_UserGroups] PRIMARY KEY CLUSTERED -( - [UGID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_MembershipsGID] ON [Memberships] -( - [GID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_MembershipsUID] ON [Memberships] -( - [UID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Memberships', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Assignments] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Assignments]( - [AID] [int] IDENTITY(1,1) NOT NULL, - [GID] [int] NOT NULL, - [RID] [int] NOT NULL, - [FolderID] [int] NOT NULL, - [StartDate] [datetime] NOT NULL CONSTRAINT [DF_Assignments_StartDate] DEFAULT (getdate()), - [EndDate] [datetime] NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Assignments_DTS] DEFAULT (getdate()), - [UsrID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Assignments_UsrID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Assignments] PRIMARY KEY CLUSTERED -( - [AID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_AssignmentsFolderID] ON [Assignments] -( - [FolderID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_AssignmentsGID] ON [Assignments] -( - [GID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_AssignmentsRID] ON [Assignments] -( - [RID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Assignments', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Parts] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Parts]( - [ContentID] [int] NOT NULL, - [FromType] [int] NOT NULL, - [ItemID] [int] NOT NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Parts_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Parts_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Parts] PRIMARY KEY CLUSTERED -( - [ContentID] ASC, - [FromType] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_PartsItemID] ON [Parts] -( - [ItemID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Parts', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[DocVersions] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [DocVersions]( - [VersionID] [int] IDENTITY(1,1) NOT NULL, - [FolderID] [int] NOT NULL, - [VersionType] [int] NOT NULL CONSTRAINT [DF_Versions_VersionType] DEFAULT ((0)), - [Name] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [Title] [nvarchar](510) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [ItemID] [int] NULL, - [FormatID] [int] NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Versions_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Versions_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Versions] PRIMARY KEY CLUSTERED -( - [VersionID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_DocVersionsFolderID] ON [DocVersions] -( - [FolderID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_DocVersionsFormatID] ON [DocVersions] -( - [FormatID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_DocVersionsItemID] ON [DocVersions] -( - [ItemID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0 Working Draft, 1 Temporary, 128 Revision, 129 Approved (Greater than 127 - non editable)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DocVersions', @level2type=N'COLUMN',@level2name=N'VersionType' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'DocVersions', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Transitions] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Transitions]( - [TransitionID] [int] IDENTITY(1,1) NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [IsRange] [int] NOT NULL CONSTRAINT [DF_Transitions_IsRange] DEFAULT ((0)), - [TranType] [int] NOT NULL CONSTRAINT [DF_Transitions_TranType] DEFAULT ((0)), - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Transitions_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Transitions_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_TranUsages] PRIMARY KEY CLUSTERED -( - [TransitionID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_TransitionsFromID] ON [Transitions] -( - [FromID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_TransitionsRangeID] ON [Transitions] -( - [RangeID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_TransitionsToID] ON [Transitions] -( - [ToID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'StructureID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Transitions', @level2type=N'COLUMN',@level2name=N'ToID' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0 - Not a Range Transition, 1 - Range Transition, 2 - Range Transition - Extends to last Sibling' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Transitions', @level2type=N'COLUMN',@level2name=N'IsRange' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Transitions', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Annotations] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Annotations]( - [AnnotationID] [int] IDENTITY(1,1) NOT NULL, - [ItemID] [int] NOT NULL, - [TypeID] [int] NOT NULL, - [RtfText] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [SearchText] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Annotations_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Annotations_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Annotations] PRIMARY KEY CLUSTERED -( - [AnnotationID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_AnnotationsItemID] ON [Annotations] -( - [ItemID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_AnnotationsTypeID] ON [Annotations] -( - [TypeID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Annotations', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Contents] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Contents]( - [ContentID] [int] IDENTITY(1,1) NOT NULL, - [Number] [nvarchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [Text] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [Type] [int] NULL, - [FormatID] [int] NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Contents_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Contents_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Contents] PRIMARY KEY CLUSTERED -( - [ContentID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_ContentsFormatID] ON [Contents] -( - [FormatID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Increased from 30 to 256 to support RTF symbols' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Contents', @level2type=N'COLUMN',@level2name=N'Number' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0 - Procedure, 10000 - Section, 20000 Step' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Contents', @level2type=N'COLUMN',@level2name=N'Type' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Contents', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Items] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Items]( - [ItemID] [int] IDENTITY(1,1) NOT NULL, - [PreviousID] [int] NULL, - [ContentID] [int] NOT NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Items_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Items_UsrID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Items] PRIMARY KEY CLUSTERED -( - [ItemID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_ItemsContentID] ON [Items] -( - [ContentID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_ItemsPreviousID] ON [Items] -( - [PreviousID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Items', @level2type=N'COLUMN',@level2name=N'DTS' -GO - -/****** Object: Table [dbo].[Scopes] Script Date: 01/06/2012 15:02:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Scopes]( - [ScopeID] [int] IDENTITY(1,1) NOT NULL, - [Name] [nvarchar](100) NOT NULL, - [Title] [nvarchar](510) NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Scopes_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Scopes_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Scopes] PRIMARY KEY CLUSTERED -( - [ScopeID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Scopes', @level2type=N'COLUMN',@level2name=N'DTS' -GO - -/****** Object: Table [dbo].[Applicabilities] Script Date: 01/06/2012 15:02:52 ******/ ---SET ANSI_NULLS ON ---GO ---SET QUOTED_IDENTIFIER ON ---GO ---CREATE TABLE [Applicabilities]( --- [ItemID] [int] NOT NULL, --- [ScopeID] [int] NOT NULL, --- [DTS] [datetime] NOT NULL CONSTRAINT [DF_Applicabilities_DTS] DEFAULT (getdate()), --- [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Applicabilities_UserID] DEFAULT (upper(suser_sname())), --- [LastChanged] [timestamp] NOT NULL, --- CONSTRAINT [PK_Applicabilities] PRIMARY KEY CLUSTERED ---( --- [ItemID] ASC, --- [ScopeID] ASC ---)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ---) ON [PRIMARY] ---GO ---EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Applicabilities', @level2type=N'COLUMN',@level2name=N'DTS' ---GO - -/****** Object: Table [dbo].[Details] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Details]( - [DetailID] [int] IDENTITY(1,1) NOT NULL, - [ContentID] [int] NOT NULL, - [ItemType] [int] NOT NULL, - [Text] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_StepTexts_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_StepTexts_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_StepTexts] PRIMARY KEY CLUSTERED -( - [DetailID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_DetailsContentID] ON [Details] -( - [ContentID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Details', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[ZContents] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [ZContents]( - [ContentID] [int] NOT NULL, - [OldStepSequence] [nvarchar](32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_ZContents] PRIMARY KEY CLUSTERED -( - [ContentID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -/****** Object: Table [dbo].[Grids] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Grids]( - [ContentID] [int] NOT NULL, - [Data] [xml] NOT NULL, - [Config] [xml] NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Grids_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Grids_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Grids] PRIMARY KEY CLUSTERED -( - [ContentID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Grids', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[Images] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -SET ANSI_PADDING ON -GO -CREATE TABLE [Images]( - [ContentID] [int] NOT NULL, - [ImageType] [int] NOT NULL CONSTRAINT [DF_Images_ImageType] DEFAULT ((1)), - [FileName] [nvarchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [Data] [varbinary](max) NOT NULL, - [Config] [xml] NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Images_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Images_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Images] PRIMARY KEY CLUSTERED -( - [ContentID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -SET ANSI_PADDING OFF -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'1 - Figure, 2 - Video, 3 - Audio' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Images', @level2type=N'COLUMN',@level2name=N'ImageType' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Images', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: Table [dbo].[ZTransitions] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [ZTransitions]( - [TransitionID] [int] NOT NULL, - [oldto] [nvarchar](32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_ZTransitions] PRIMARY KEY CLUSTERED -( - [TransitionID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -/****** Object: Table [dbo].[Permissions] Script Date: 01/06/2012 15:02:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE TABLE [Permissions]( - [PID] [int] IDENTITY(1,1) NOT NULL, - [RID] [int] NOT NULL, - [PermLevel] [int] NOT NULL, - [VersionType] [int] NOT NULL, - [PermValue] [int] NOT NULL, - [PermAD] [int] NOT NULL CONSTRAINT [DF_Permissions_PermAD] DEFAULT ((0)), - [StartDate] [datetime] NOT NULL CONSTRAINT [DF_Permissions_StartDate] DEFAULT (getdate()), - [EndDate] [datetime] NULL, - [Config] [nvarchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Permissions_DTS] DEFAULT (getdate()), - [UsrID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Permissions_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Permissions] PRIMARY KEY CLUSTERED -( - [PID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -CREATE NONCLUSTERED INDEX [IX_PermissionsRID] ON [Permissions] -( - [RID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0 - None, 1 - Security, 2 - System, 3 - RO, 4 - Procdures, 5 - Sections, 6 - Steps, 7 - Comments' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Permissions', @level2type=N'COLUMN',@level2name=N'PermLevel' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0 - None, 1 - Working Draft, 2 - Approved, (3 - All)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Permissions', @level2type=N'COLUMN',@level2name=N'VersionType' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'1 - Read, 2 - Write, 4 - Create, 8 - Delete (15 - All)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Permissions', @level2type=N'COLUMN',@level2name=N'PermValue' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0 - Allow, 1 - Deny' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Permissions', @level2type=N'COLUMN',@level2name=N'PermAD' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Permissions', @level2type=N'COLUMN',@level2name=N'DTS' -GO -/****** Object: ForeignKey [FK_Formats_ParentID] Script Date: 01/06/2012 15:02:52 ******/ -ALTER TABLE [Formats] WITH CHECK ADD CONSTRAINT [FK_Formats_ParentID] FOREIGN KEY([ParentID]) -REFERENCES [Formats] ([FormatID]) -GO -ALTER TABLE [Formats] CHECK CONSTRAINT [FK_Formats_ParentID] -GO -/****** Object: ForeignKey [FK_Associations_DocVersions] Script Date: 01/06/2012 15:02:52 ******/ -ALTER TABLE [Associations] WITH CHECK ADD CONSTRAINT [FK_Associations_DocVersions] FOREIGN KEY([VersionID]) -REFERENCES [DocVersions] ([VersionID]) -GO -ALTER TABLE [Associations] CHECK CONSTRAINT [FK_Associations_DocVersions] -GO -/****** Object: ForeignKey [FK_Associations_ROFsts] Script Date: 01/06/2012 15:02:52 ******/ -ALTER TABLE [Associations] WITH CHECK ADD CONSTRAINT [FK_Associations_ROFsts] FOREIGN KEY([ROFstID]) -REFERENCES [ROFsts] ([ROFstID]) -GO -ALTER TABLE [Associations] CHECK CONSTRAINT [FK_Associations_ROFsts] -GO -/****** Object: ForeignKey [FK__Folders__ParentID] Script Date: 01/06/2012 15:02:52 ******/ -ALTER TABLE [Folders] WITH CHECK ADD CONSTRAINT [FK__Folders__ParentID] FOREIGN KEY([ParentID]) -REFERENCES [Folders] ([FolderID]) -GO -ALTER TABLE [Folders] CHECK CONSTRAINT [FK__Folders__ParentID] -GO -/****** Object: ForeignKey [FK_Folders_Connections] Script Date: 01/06/2012 15:02:52 ******/ -ALTER TABLE [Folders] WITH CHECK ADD CONSTRAINT [FK_Folders_Connections] FOREIGN KEY([DBID]) -REFERENCES [Connections] ([DBID]) -GO -ALTER TABLE [Folders] CHECK CONSTRAINT [FK_Folders_Connections] -GO -/****** Object: ForeignKey [FK_Folders_Formats] Script Date: 01/06/2012 15:02:52 ******/ -ALTER TABLE [Folders] WITH CHECK ADD CONSTRAINT [FK_Folders_Formats] FOREIGN KEY([FormatID]) -REFERENCES [Formats] ([FormatID]) -GO -ALTER TABLE [Folders] CHECK CONSTRAINT [FK_Folders_Formats] -GO -/****** Object: ForeignKey [FK_DROUsages_Documents] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [DROUsages] WITH CHECK ADD CONSTRAINT [FK_DROUsages_Documents] FOREIGN KEY([DocID]) -REFERENCES [Documents] ([DocID]) -GO -ALTER TABLE [DROUsages] CHECK CONSTRAINT [FK_DROUsages_Documents] -GO -/****** Object: ForeignKey [FK_DROUsages_RODbs] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [DROUsages] WITH CHECK ADD CONSTRAINT [FK_DROUsages_RODbs] FOREIGN KEY([RODbID]) -REFERENCES [RODbs] ([RODbID]) -GO -ALTER TABLE [DROUsages] CHECK CONSTRAINT [FK_DROUsages_RODbs] -GO -/****** Object: ForeignKey [FK_Figures_RODbs] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [ROImages] WITH CHECK ADD CONSTRAINT [FK_Figures_RODbs] FOREIGN KEY([RODbID]) -REFERENCES [RODbs] ([RODbID]) -GO -ALTER TABLE [ROImages] CHECK CONSTRAINT [FK_Figures_RODbs] -GO -/****** Object: ForeignKey [FK_ROFsts_RODbs] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [ROFsts] WITH CHECK ADD CONSTRAINT [FK_ROFsts_RODbs] FOREIGN KEY([RODbID]) -REFERENCES [RODbs] ([RODbID]) -GO -ALTER TABLE [ROFsts] CHECK CONSTRAINT [FK_ROFsts_RODbs] -GO -/****** Object: ForeignKey [FK_RoUsages_Contents] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [RoUsages] WITH CHECK ADD CONSTRAINT [FK_RoUsages_Contents] FOREIGN KEY([ContentID]) -REFERENCES [Contents] ([ContentID]) -GO -ALTER TABLE [RoUsages] CHECK CONSTRAINT [FK_RoUsages_Contents] -GO -/****** Object: ForeignKey [FK_ROUsages_RODbs] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [RoUsages] WITH CHECK ADD CONSTRAINT [FK_ROUsages_RODbs] FOREIGN KEY([RODbID]) -REFERENCES [RODbs] ([RODbID]) -GO -ALTER TABLE [RoUsages] CHECK CONSTRAINT [FK_ROUsages_RODbs] -GO -/****** Object: ForeignKey [FK_Figures_ROFsts] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Figures] WITH CHECK ADD CONSTRAINT [FK_Figures_ROFsts] FOREIGN KEY([ROFstID]) -REFERENCES [ROFsts] ([ROFstID]) -GO -ALTER TABLE [Figures] CHECK CONSTRAINT [FK_Figures_ROFsts] -GO -/****** Object: ForeignKey [FK_Figures_ROImages] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Figures] WITH CHECK ADD CONSTRAINT [FK_Figures_ROImages] FOREIGN KEY([ImageID]) -REFERENCES [ROImages] ([ImageID]) -GO -ALTER TABLE [Figures] CHECK CONSTRAINT [FK_Figures_ROImages] -GO -/****** Object: ForeignKey [FK_Entries_Contents] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Entries] WITH CHECK ADD CONSTRAINT [FK_Entries_Contents] FOREIGN KEY([ContentID]) -REFERENCES [Contents] ([ContentID]) -GO -ALTER TABLE [Entries] CHECK CONSTRAINT [FK_Entries_Contents] -GO -/****** Object: ForeignKey [FK_Entries_Documents] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Entries] WITH CHECK ADD CONSTRAINT [FK_Entries_Documents] FOREIGN KEY([DocID]) -REFERENCES [Documents] ([DocID]) -GO -ALTER TABLE [Entries] CHECK CONSTRAINT [FK_Entries_Documents] -GO -/****** Object: ForeignKey [FK_Pdfs_Documents] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Pdfs] WITH CHECK ADD CONSTRAINT [FK_Pdfs_Documents] FOREIGN KEY([DocID]) -REFERENCES [Documents] ([DocID]) -GO -ALTER TABLE [Pdfs] CHECK CONSTRAINT [FK_Pdfs_Documents] -GO -/****** Object: ForeignKey [FK_Memberships_Groups] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Memberships] WITH CHECK ADD CONSTRAINT [FK_Memberships_Groups] FOREIGN KEY([GID]) -REFERENCES [Groups] ([GID]) -GO -ALTER TABLE [Memberships] CHECK CONSTRAINT [FK_Memberships_Groups] -GO -/****** Object: ForeignKey [FK_Memberships_Users] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Memberships] WITH CHECK ADD CONSTRAINT [FK_Memberships_Users] FOREIGN KEY([UID]) -REFERENCES [Users] ([UID]) -GO -ALTER TABLE [Memberships] CHECK CONSTRAINT [FK_Memberships_Users] -GO -/****** Object: ForeignKey [FK_Assignments_Folders] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Assignments] WITH CHECK ADD CONSTRAINT [FK_Assignments_Folders] FOREIGN KEY([FolderID]) -REFERENCES [Folders] ([FolderID]) -GO -ALTER TABLE [Assignments] CHECK CONSTRAINT [FK_Assignments_Folders] -GO -/****** Object: ForeignKey [FK_Assignments_Groups] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Assignments] WITH CHECK ADD CONSTRAINT [FK_Assignments_Groups] FOREIGN KEY([GID]) -REFERENCES [Groups] ([GID]) -GO -ALTER TABLE [Assignments] CHECK CONSTRAINT [FK_Assignments_Groups] -GO -/****** Object: ForeignKey [FK_Assignments_Roles] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Assignments] WITH CHECK ADD CONSTRAINT [FK_Assignments_Roles] FOREIGN KEY([RID]) -REFERENCES [Roles] ([RID]) -GO -ALTER TABLE [Assignments] CHECK CONSTRAINT [FK_Assignments_Roles] -GO -/****** Object: ForeignKey [FK_Parts_Contents] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Parts] WITH CHECK ADD CONSTRAINT [FK_Parts_Contents] FOREIGN KEY([ContentID]) -REFERENCES [Contents] ([ContentID]) -GO -ALTER TABLE [Parts] CHECK CONSTRAINT [FK_Parts_Contents] -GO -/****** Object: ForeignKey [FK_Parts_Items] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Parts] WITH CHECK ADD CONSTRAINT [FK_Parts_Items] FOREIGN KEY([ItemID]) -REFERENCES [Items] ([ItemID]) -GO -ALTER TABLE [Parts] CHECK CONSTRAINT [FK_Parts_Items] -GO -/****** Object: ForeignKey [FK_DocVersions_Formats] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [DocVersions] WITH CHECK ADD CONSTRAINT [FK_DocVersions_Formats] FOREIGN KEY([FormatID]) -REFERENCES [Formats] ([FormatID]) -GO -ALTER TABLE [DocVersions] CHECK CONSTRAINT [FK_DocVersions_Formats] -GO -/****** Object: ForeignKey [FK_DocVersions_Items] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [DocVersions] WITH CHECK ADD CONSTRAINT [FK_DocVersions_Items] FOREIGN KEY([ItemID]) -REFERENCES [Items] ([ItemID]) -GO -ALTER TABLE [DocVersions] CHECK CONSTRAINT [FK_DocVersions_Items] -GO -/****** Object: ForeignKey [FK_Versions_Folders] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [DocVersions] WITH CHECK ADD CONSTRAINT [FK_Versions_Folders] FOREIGN KEY([FolderID]) -REFERENCES [Folders] ([FolderID]) -GO -ALTER TABLE [DocVersions] CHECK CONSTRAINT [FK_Versions_Folders] -GO -/****** Object: ForeignKey [FK_TransitionsFromID_Contents] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Transitions] WITH CHECK ADD CONSTRAINT [FK_TransitionsFromID_Contents] FOREIGN KEY([FromID]) -REFERENCES [Contents] ([ContentID]) -GO -ALTER TABLE [Transitions] CHECK CONSTRAINT [FK_TransitionsFromID_Contents] -GO -/****** Object: ForeignKey [FK_TransitionsRangeId_Items] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Transitions] WITH CHECK ADD CONSTRAINT [FK_TransitionsRangeId_Items] FOREIGN KEY([RangeID]) -REFERENCES [Items] ([ItemID]) -GO -ALTER TABLE [Transitions] CHECK CONSTRAINT [FK_TransitionsRangeId_Items] -GO -/****** Object: ForeignKey [FK_TransitionsToId_Items] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Transitions] WITH CHECK ADD CONSTRAINT [FK_TransitionsToId_Items] FOREIGN KEY([ToID]) -REFERENCES [Items] ([ItemID]) -GO -ALTER TABLE [Transitions] CHECK CONSTRAINT [FK_TransitionsToId_Items] -GO -/****** Object: ForeignKey [FK_Annotations_AnnotationTypes] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Annotations] WITH CHECK ADD CONSTRAINT [FK_Annotations_AnnotationTypes] FOREIGN KEY([TypeID]) -REFERENCES [AnnotationTypes] ([TypeID]) -GO -ALTER TABLE [Annotations] CHECK CONSTRAINT [FK_Annotations_AnnotationTypes] -GO -/****** Object: ForeignKey [FK_Annotations_Items] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Annotations] WITH CHECK ADD CONSTRAINT [FK_Annotations_Items] FOREIGN KEY([ItemID]) -REFERENCES [Items] ([ItemID]) -GO -ALTER TABLE [Annotations] CHECK CONSTRAINT [FK_Annotations_Items] -GO -/****** Object: ForeignKey [FK_Contents_Formats] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Contents] WITH CHECK ADD CONSTRAINT [FK_Contents_Formats] FOREIGN KEY([FormatID]) -REFERENCES [Formats] ([FormatID]) -GO -ALTER TABLE [Contents] CHECK CONSTRAINT [FK_Contents_Formats] -GO -/****** Object: ForeignKey [FK_Items_Contents] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Items] WITH CHECK ADD CONSTRAINT [FK_Items_Contents] FOREIGN KEY([ContentID]) -REFERENCES [Contents] ([ContentID]) -GO -ALTER TABLE [Items] CHECK CONSTRAINT [FK_Items_Contents] -GO -/****** Object: ForeignKey [FK_Items_Items] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Items] WITH CHECK ADD CONSTRAINT [FK_Items_Items] FOREIGN KEY([PreviousID]) -REFERENCES [Items] ([ItemID]) -GO -ALTER TABLE [Items] CHECK CONSTRAINT [FK_Items_Items] -GO -/****** Object: ForeignKey [FK_Details_Contents] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Details] WITH CHECK ADD CONSTRAINT [FK_Details_Contents] FOREIGN KEY([ContentID]) -REFERENCES [Contents] ([ContentID]) -GO -ALTER TABLE [Details] CHECK CONSTRAINT [FK_Details_Contents] -GO -/****** Object: ForeignKey [FK_ZContents_Contents] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [ZContents] WITH CHECK ADD CONSTRAINT [FK_ZContents_Contents] FOREIGN KEY([ContentID]) -REFERENCES [Contents] ([ContentID]) -GO -ALTER TABLE [ZContents] CHECK CONSTRAINT [FK_ZContents_Contents] -GO -/****** Object: ForeignKey [FK_Grids_Contents] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Grids] WITH CHECK ADD CONSTRAINT [FK_Grids_Contents] FOREIGN KEY([ContentID]) -REFERENCES [Contents] ([ContentID]) -GO -ALTER TABLE [Grids] CHECK CONSTRAINT [FK_Grids_Contents] -GO -/****** Object: ForeignKey [FK_Images_Contents] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Images] WITH CHECK ADD CONSTRAINT [FK_Images_Contents] FOREIGN KEY([ContentID]) -REFERENCES [Contents] ([ContentID]) -GO -ALTER TABLE [Images] CHECK CONSTRAINT [FK_Images_Contents] -GO -/****** Object: ForeignKey [FK_ZTransitions_Transitions] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [ZTransitions] WITH CHECK ADD CONSTRAINT [FK_ZTransitions_Transitions] FOREIGN KEY([TransitionID]) -REFERENCES [Transitions] ([TransitionID]) -GO -ALTER TABLE [ZTransitions] CHECK CONSTRAINT [FK_ZTransitions_Transitions] -GO -/****** Object: ForeignKey [FK_Permissions_Roles] Script Date: 01/06/2012 15:02:53 ******/ -ALTER TABLE [Permissions] WITH CHECK ADD CONSTRAINT [FK_Permissions_Roles] FOREIGN KEY([RID]) -REFERENCES [Roles] ([RID]) -GO -ALTER TABLE [Permissions] CHECK CONSTRAINT [FK_Permissions_Roles] -GO ---ALTER TABLE [dbo].[Applicabilities] WITH CHECK ADD CONSTRAINT [FK_Applicabilities_Items] FOREIGN KEY([ItemID]) ---REFERENCES [dbo].[Items] ([ItemID]) ---GO ---ALTER TABLE [dbo].[Applicabilities] CHECK CONSTRAINT [FK_Applicabilities_Items] ---GO ---ALTER TABLE [dbo].[Applicabilities] WITH CHECK ADD CONSTRAINT [FK_Applicabilities_Scopes] FOREIGN KEY([ScopeID]) ---REFERENCES [dbo].[Scopes] ([ScopeID]) ---GO ---ALTER TABLE [dbo].[Applicabilities] CHECK CONSTRAINT [FK_Applicabilities_Scopes] ---GO -/****** Object: View [dbo].[vDuplicates1] Script Date: 01/06/2012 15:02:55 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -CREATE view [vDuplicates1] as -SELECT Min(ContentID) MinID,Max(ContentID) MaxID,[Number],[Text],[Type],[FormatID],[Config],count(*) HowMany - FROM [Contents] -where contentid not in (select contentid from parts) -group by [Number],[Text],[Type],[FormatID],[Config] -having count(*) > 1 and type >= 20000 -GO -/****** Object: View [dbo].[vDuplicates2] Script Date: 01/06/2012 15:02:55 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -create view [vDuplicates2] as -SELECT Min(ContentID) MinID,Max(ContentID) MaxID,[Number],[Text],[Type],[FormatID],[Config],count(*) HowMany - FROM [Contents] -where contentid in (select contentid from parts) -group by [Number],[Text],[Type],[FormatID],[Config] -having count(*) > 1 and type >= 20000 -GO -/****** Object: Trigger [trigAddFolder] Script Date: 01/06/2012 15:02:56 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO --- ============================================= --- Author: --- Create date: --- Description: --- ============================================= -CREATE TRIGGER [trigAddFolder] - ON [Folders] - AFTER INSERT -AS -BEGIN - - SET NOCOUNT ON; - --select max(fld.ManualOrder) from folders fld join inserted ins on fld.ParentID = Ins.ParentID - --Select ROW_NUMBER() OVER(Partition by [ParentID] Order BY FolderID) + (select max(ManualOrder) from folders where ParentID = Inserted.ParentID) as RowNumber,* from Inserted - Update Fld set Fld.ManualOrder = Ins.RowNumber - From Folders Fld join - (Select ROW_NUMBER() OVER(Partition by [ParentID] Order BY FolderID) -+ (select isnull(max(ManualOrder),0) from folders where ParentID = -Inserted.ParentID) as RowNumber,* from Inserted) - Ins on Ins.FolderID = Fld.FolderID - Print 'Trigger Fired' -END -GO -INSERT INTO [Connections] ([Name]) VALUES ('Bozo') -INSERT INTO [Formats] ([Name],[Data]) VALUES ('Bozo',cast('' as xml)) -INSERT INTO [Folders] ([Name],[ShortName],[ManualOrder]) VALUES ('Bozo','Bozo',1) -INSERT INTO [DocVersions] ([FolderID],[Name]) VALUES (1,'Bozo') -INSERT INTO [Contents]([Number]) VALUES('Bozo') -INSERT INTO [Items] ([ContentID]) VALUES (1) -INSERT INTO [RODbs] ([ROName],[FolderPath],[DBConnectionString]) VALUES ('Bozo','Bozo','Bozo') -INSERT INTO [ROFsts] ([RODbID],[ROLookup]) VALUES(1,Cast('Bozo' as varbinary)) -Insert Into [Transitions] ([FromID],[ToID],[RangeID]) VALUES (1,1,1) -Insert Into [AnnotationTypes] ([Name]) VALUES ('Bozo') -Insert Into [Annotations] ([ItemID],[TypeID]) VALUES (1,1) -Insert Into [Groups] ([GroupName]) VALUES ('Bozo') -Insert Into [Details] ([ContentID],[ItemType],[Text]) VALUES (1,1,'Bozo') -Insert Into [Roles] ([Name],[Title]) VALUES ('Bozo','Bozo') -Insert Into [Permissions] ([RID],[PermLevel],[VersionType],[PermValue]) VALUES (1,1,1,1) -Insert Into [Scopes] ([Name]) VALUES ('Bozo') ---Insert Into [Applicabilities] ([ItemID],[ScopeID]) VALUES (1,1) -Insert Into [Associations] ([VersionID],[ROFstID]) VALUES (1,1) -INSERT INTO [Documents] ([LibTitle]) VALUES ('Bozo') -Insert Into [DROUsages] ([DocID],[ROID],[RODbID]) VALUES (1,'Bozo',1) -Insert Into [ROImages] ([RODbID],[FileName],[Content]) VALUES (1,'Bozo',cast ('Bozo' as varbinary)) -Insert Into [RoUsages] ([ContentID],[ROID],[RODbID]) VALUES (1,1,1) -Insert Into [Figures] ([ROFstID],[ImageID]) VALUES (1,1) -INSERT INTO [Users] ([UserID]) VALUES ('Bozo') -Insert Into [Memberships] ([UID],[GID]) VALUES (1,1) -Insert Into [Assignments] ([GID],[RID],[FolderID]) VALUES (1,1,1) -GO -sp_changedbowner sa -GO -USE MASTER -GO diff --git a/PROMS/DataLoader/ClassDiagram1.cd b/PROMS/DataLoader/ClassDiagram1.cd deleted file mode 100644 index 0519ecba..00000000 --- a/PROMS/DataLoader/ClassDiagram1.cd +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/PROMS/DataLoader/ConfigInfo.cs b/PROMS/DataLoader/ConfigInfo.cs deleted file mode 100644 index 51fb8122..00000000 --- a/PROMS/DataLoader/ConfigInfo.cs +++ /dev/null @@ -1,145 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Collections.Generic; -using System.Text; -using System.Xml; - -namespace DataLoader -{ - class ConfigInfo - { - private XmlDocument xmldoc; - public ConfigInfo(string xml) - { - xmldoc = new XmlDocument(); - if (xml == null) - xmldoc.LoadXml(""); - else - xmldoc.LoadXml(xml); - } - - public ConfigInfo(string xml, string ename, string aname, string avalue) - { - xmldoc = new XmlDocument(); - if (xml == null) - xmldoc.LoadXml(""); - else - xmldoc.LoadXml(xml); - AddItem(ename, aname.Replace(' ','_'), avalue); - } - public bool AddItem(string ename, string aname, string avalue) - { - if (aname != null && aname != "") - { - //if (xmldoc == null) - //{ - // xmldoc = new XmlDocument(); - // xmldoc.AppendChild(xmldoc.CreateElement("ConfigInfo")); - //} - // see if ename element exists, use it to add attributes, - // otherwise, create the element. - - XmlNode nxml = null; - XmlNodeList xl = xmldoc.DocumentElement.SelectNodes(string.Format("//{0}", ename)); - switch (xl.Count) - { - case 0: // No nodes found - nxml = xmldoc.DocumentElement.AppendChild(xmldoc.CreateElement(ename)); - break; - default: // Found the node - nxml = xl[0]; - if (nxml.GetType() != typeof(XmlElement)) - { - frmLoader._MyLog.ErrorFormat("Invalid xml element type when migrating config data - element = {0}, name = {1} , value = {2}", ename, aname, avalue); - return false; - } - break; - } - XmlAttribute xa = nxml.Attributes.Append(xmldoc.CreateAttribute(aname.Replace(' ', '_'))); - //added by jcb 20131216 - //aname = SanitizeXmlString(aname); - //XmlAttribute xa = nxml.Attributes.Append(xmldoc.CreateAttribute(aname)); - //end added by jcb 20131216 - xa.Value = avalue; - return true; - } - return false; - } - - //added by jcb 20131216 - public string SanitizeXmlString(string xml) - { - if (xml == null) - throw new ArgumentNullException("xml"); - xml = xml.Replace(' ', '_').Replace("/", "_fslash_").Replace("(", "_lparen_").Replace((char)0xA0, '_').Replace((char)0x20, '_').Replace(":", "_colon_"); - StringBuilder buffer = new StringBuilder(xml.Length); - foreach (char c in xml) - { - if (IsLegalXmlChar(c)) - buffer.Append(c); - } - return buffer.ToString(); - } - - /// - /// Whether a given character is allowed by XML 1.0. - /// - public bool IsLegalXmlChar(int character) - { - return - ( - character == 0x9 /* == '\t' == 9 */ || - character == 0xA /* == '\n' == 10 */ || - character == 0xD /* == '\r' == 13 */ || - (character >= 0x20 && character <= 0xD7FF) || - (character >= 0xE000 && character <= 0xFFFD) || - (character >= 0x10000 && character <= 0x10FFFF) - ); - } - //end added by jcb 20131216 - - public int ItemCount - { - get { return xmldoc.DocumentElement.ChildNodes.Count; } - } - - public override string ToString() - { - if (xmldoc != null) return xmldoc.InnerXml; - else return null; - } - public void AddSlaveNode(int index) - { - XmlElement slaves = xmldoc.SelectSingleNode("Config/Slaves") as XmlElement; - if (slaves == null) - { - slaves = xmldoc.CreateElement("Slaves"); - xmldoc.DocumentElement.AppendChild(slaves); - } - XmlElement slave = xmldoc.CreateElement("Slave"); - XmlAttribute xa = xmldoc.CreateAttribute("index"); - xa.InnerText = index.ToString(); - slave.Attributes.Append(xa); - slaves.AppendChild(slave); - } - public void AddSlaveItem(int index, string aname, string avalue) - { - string srch = "Config/Slaves/Slave[@index='" + index.ToString() + "']"; - XmlElement slave = xmldoc.SelectSingleNode(srch) as XmlElement; - if (slave != null) - { - XmlAttribute xa = xmldoc.CreateAttribute(aname); - xa.InnerText = avalue; - slave.Attributes.Append(xa); - } - } - } -} diff --git a/PROMS/DataLoader/ConfigInfo.cs.bak b/PROMS/DataLoader/ConfigInfo.cs.bak deleted file mode 100644 index 3685ece5..00000000 --- a/PROMS/DataLoader/ConfigInfo.cs.bak +++ /dev/null @@ -1,144 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Collections.Generic; -using System.Text; -using System.Xml; - -namespace DataLoader -{ - class ConfigInfo - { - private XmlDocument xmldoc; - public ConfigInfo(string xml) - { - xmldoc = new XmlDocument(); - if (xml == null) - xmldoc.LoadXml(""); - else - xmldoc.LoadXml(xml); - } - - public ConfigInfo(string xml, string ename, string aname, string avalue) - { - xmldoc = new XmlDocument(); - if (xml == null) - xmldoc.LoadXml(""); - else - xmldoc.LoadXml(xml); - AddItem(ename, aname.Replace(' ','_'), avalue); - } - public bool AddItem(string ename, string aname, string avalue) - { - if (aname != null && aname != "") - { - //if (xmldoc == null) - //{ - // xmldoc = new XmlDocument(); - // xmldoc.AppendChild(xmldoc.CreateElement("ConfigInfo")); - //} - // see if ename element exists, use it to add attributes, - // otherwise, create the element. - - XmlNode nxml = null; - XmlNodeList xl = xmldoc.DocumentElement.SelectNodes(string.Format("//{0}", ename)); - switch (xl.Count) - { - case 0: // No nodes found - nxml = xmldoc.DocumentElement.AppendChild(xmldoc.CreateElement(ename)); - break; - default: // Found the node - nxml = xl[0]; - if (nxml.GetType() != typeof(XmlElement)) - { - frmLoader._MyLog.ErrorFormat("Invalid xml element type when migrating config data - element = {0}, name = {1} , value = {2}", ename, aname, avalue); - return false; - } - break; - } - //added by jcb 20131216 - aname = SanitizeXmlString(aname); - XmlAttribute xa = nxml.Attributes.Append(xmldoc.CreateAttribute(aname)); - //end added by jcb 20131216 - xa.Value = avalue; - return true; - } - return false; - } - - //added by jcb 20131216 - public string SanitizeXmlString(string xml) - { - if (xml == null) - throw new ArgumentNullException("xml"); - xml = xml.Replace(' ', '_').Replace("/", "_fslash_").Replace("(", "_lparen_").Replace((char)0xA0, '_').Replace((char)0x20, '_').Replace(":", "_colon_"); - StringBuilder buffer = new StringBuilder(xml.Length); - foreach (char c in xml) - { - if (IsLegalXmlChar(c)) - buffer.Append(c); - } - return buffer.ToString(); - } - - /// - /// Whether a given character is allowed by XML 1.0. - /// - public bool IsLegalXmlChar(int character) - { - return - ( - character == 0x9 /* == '\t' == 9 */ || - character == 0xA /* == '\n' == 10 */ || - character == 0xD /* == '\r' == 13 */ || - (character >= 0x20 && character <= 0xD7FF) || - (character >= 0xE000 && character <= 0xFFFD) || - (character >= 0x10000 && character <= 0x10FFFF) - ); - } - //end added by jcb 20131216 - - public int ItemCount - { - get { return xmldoc.DocumentElement.ChildNodes.Count; } - } - - public override string ToString() - { - if (xmldoc != null) return xmldoc.InnerXml; - else return null; - } - public void AddSlaveNode(int index) - { - XmlElement slaves = xmldoc.SelectSingleNode("Config/Slaves") as XmlElement; - if (slaves == null) - { - slaves = xmldoc.CreateElement("Slaves"); - xmldoc.DocumentElement.AppendChild(slaves); - } - XmlElement slave = xmldoc.CreateElement("Slave"); - XmlAttribute xa = xmldoc.CreateAttribute("index"); - xa.InnerText = index.ToString(); - slave.Attributes.Append(xa); - slaves.AppendChild(slave); - } - public void AddSlaveItem(int index, string aname, string avalue) - { - string srch = "Config/Slaves/Slave[@index='" + index.ToString() + "']"; - XmlElement slave = xmldoc.SelectSingleNode(srch) as XmlElement; - if (slave != null) - { - XmlAttribute xa = xmldoc.CreateAttribute(aname); - xa.InnerText = avalue; - slave.Attributes.Append(xa); - } - } - } -} diff --git a/PROMS/DataLoader/ConversionRTBProblems.cs b/PROMS/DataLoader/ConversionRTBProblems.cs deleted file mode 100644 index 7866460e..00000000 --- a/PROMS/DataLoader/ConversionRTBProblems.cs +++ /dev/null @@ -1,203 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Xml; -using System.Xml.Serialization; -using System.Xml.Schema; -using System.IO; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - [XmlRoot("Proms2010Print")] - //[Serializable()] - public class ConversionRTBProblems - { - private RTBProblems _RTBProblems; - - public RTBProblems RTBProblems - { - get - { - if (_RTBProblems == null) _RTBProblems = new RTBProblems(); - return _RTBProblems; - } - set { _RTBProblems = value; } - } - public void Save(string fileName) - { - XmlSerializer.WriteFile(this, fileName); - } - public static ConversionRTBProblems LoadProblems(string fileName) - { - return XmlSerializer.ReadFile(fileName); - } - public void Add(int itemID, int contentID, string originalRTF, string oldRTF, string stepRTF, string newRTF, string stepPath) - { - _RTBProblems.Add(itemID, contentID, originalRTF, oldRTF, stepRTF, newRTF, stepPath); - } - //public void Add(int itemID, int contentID, string originalRTF, string oldRTF, string stepRTF, string newRTF, string stepPath, ItemInfo iteminfo) - //{ - // _RTBProblems.Add(itemID, contentID, originalRTF, oldRTF, stepRTF, newRTF, stepPath, iteminfo); - //} - } - public class RTBProblems : List - { - //public void Add(int itemID, int contentID, string originalRTF, string oldRTF, string stepRTF, string newRTF, string stepPath, ItemInfo iteminfo) - public void Add(int itemID, int contentID, string originalRTF, string oldRTF, string stepRTF, string newRTF, string stepPath) - { - base.Add(new RTBProblem(itemID, contentID, originalRTF, oldRTF, stepRTF, newRTF, stepPath)); - //base.Add(new RTBProblem(itemID, contentID, originalRTF, oldRTF, stepRTF, newRTF, stepPath, iteminfo)); - } - } - public class RTBProblem - { - public RTBProblem() - { - } - //public RTBProblem(int itemID, int contentID, string originalRTF, string oldRTF, string stepRTF, string newRTF, string stepPath, ItemInfo iteminfo) - public RTBProblem(int itemID, int contentID, string originalRTF, string oldRTF, string stepRTF, string newRTF, string stepPath) - { - _ItemID = itemID; - _ContentID = contentID; - _OldRTF = oldRTF; - _NewRTF = newRTF; - _StepPath = stepPath; - _OriginalRTF = originalRTF; - _StepRtf = stepRTF; - //_itemInfo = iteminfo; - } - private int _ItemID; - [XmlAttribute("ItemID")] - public int ItemID - { - get { return _ItemID; } - set { _ItemID = value; } - } - private int _ContentID; - [XmlAttribute("ContentID")] - public int ContentID - { - get { return _ContentID; } - set { _ContentID = value; } - } - private string _OriginalRTF; - [XmlAttribute("OriginalRTF")] - public string OriginalRTF - { - get { return _OriginalRTF; } - set { _OriginalRTF = value; } - } - private string _OldRTF; - [XmlAttribute("OldRTF")] - public string OldRTF - { - get { return _OldRTF; } - set { _OldRTF = value; } - } - private string _StepRtf; - [XmlAttribute("StepRTF")] - public string StepRtf - { - get { return _StepRtf; } - set { _StepRtf = value; } - } - private string _NewRTF; - [XmlAttribute("NewRTF")] - public string NewRTF - { - get { return _NewRTF; } - set { _NewRTF = value; } - } - private string _StepPath; - [XmlAttribute("StepPath")] - public string StepPath - { - get { return _StepPath; } - set { _StepPath = value; } - } - private string _Comparison; - [XmlIgnore] - public string Comparison - { - get - { - if (_Comparison == null) - _Comparison = GetComparison(_OldRTF, _NewRTF); - return _Comparison; - } - } - private string _StripRTF; - [XmlIgnore] - public string StripRTF - { - get - { - if (_StripRTF == null) - _StripRTF = GetStrip(_StepRtf); - return _StripRTF; - } - set { _StripRTF = value; } - } - - //private ItemInfo _itemInfo; - //[XmlIgnore] - //public ItemInfo ItemInfo - //{ - // get { return _itemInfo; } - // set { _itemInfo = value; } - //} - - private string GetStrip(string _StepRtf) - { - string rttval = DisplayText.StaticStripRtfCommands(_StepRtf); - //string rttval = Volian.Controls.Library.DisplayText.StaticStripRtfCommands(_StepRtf, _itemInfo); - //return rttval.Replace(@"\u8209?", "-"); - return rttval; - } - private string GetComparison(string str1, string str2) - { - if (str1 == str2) return str1; - int endMatch = 0; - int l1 = str1.Length; - int l2 = str2.Length; - int min = l1 > l2 ? l2 : l1; - int startMatch = min; - for (int i = 0; i < min; i++) - if (str1[i] != str2[i]) - { - startMatch = i; - break; - } - min = min - startMatch; - endMatch = min; - for (int i = 1; i < min; i++) - if (str1[l1 - i] != str2[l2 - i]) - { - endMatch = i - 1; - break; - } - string prefix = str1.Substring(0, startMatch); - string part1 = str1.Substring(startMatch, l1 - (startMatch + endMatch)); - string part2 = str2.Substring(startMatch, l2 - (startMatch + endMatch)); - string suffix = str1.Substring(l1 - endMatch, endMatch); - return prefix + "\r\n<<<" + part1 + "|||" + part2 + ">>>\r\n" + suffix; - } - private ItemInfo _MyItem; - [XmlIgnore] - public ItemInfo MyItem - { - get - { - if (_MyItem == null) - _MyItem = ItemInfo.Get(_ItemID); - return _MyItem; - } - } - public override string ToString() - { - return MyItem.ToString(); - } - } - -} diff --git a/PROMS/DataLoader/CurSet.cs b/PROMS/DataLoader/CurSet.cs deleted file mode 100644 index efb380ad..00000000 --- a/PROMS/DataLoader/CurSet.cs +++ /dev/null @@ -1,127 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== - -using System; -using System.IO; -using System.Collections; -using System.Text; -using System.Windows.Forms; -using System.Xml; -using System.Xml.Serialization; -using VEPROMS.CSLA.Library; - -namespace Utils -{ - /// - /// Summary description for CurSet. - /// - public class CurSet - { - private int NUMCBTEXTYPE = 5; // number of changebar text types. - public string PathName; - private string DefaultPlantFmt; - - public CurSet(string pname) - { - PathName = pname; - DefaultPlantFmt = null; - } - - private string ReadTheString(BinaryReader bw, int maxlen) - { - StringBuilder retStr = new StringBuilder(maxlen+1); - // read a series of characters until a null is found. - char ac; - bool done = false; - while(done==false) - { - ac = bw.ReadChar(); - if (ac=='\0') - done=true; - else - retStr.Append(ac); - } - return retStr.ToString(); - } - - public FolderConfig Convert(FolderConfig cfg) - { - BinaryReader br; - ArrayList DefaultUserCBMsg = new ArrayList(2); - FileStream fs; - FileInfo fi = new FileInfo(PathName); - try - { - fs = fi.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite ); - br = new BinaryReader(fs,System.Text.ASCIIEncoding.ASCII); - } - catch (Exception e) - { - DataLoader.frmLoader._MyLog.ErrorFormat("Error migrating {0} Curset.dat, error = {1}", PathName, e.Message); - return cfg; - } - - try - { - sbyte tmpsbyte; - string tmpstring; - tmpsbyte=br.ReadSByte(); // DefaultDestination not used - - // the next byte has three settings embedded in it, the type of change - // bar (Print_ChangeBar), the change bar location and its text. - tmpsbyte= br.ReadSByte(); - cfg.Print_ChangeBar = (PrintChangeBar)((int)tmpsbyte > 2 ? 3 : (int)tmpsbyte); - if (tmpsbyte > 2) - { - cfg.Print_ChangeBarLoc = (PrintChangeBarLoc)((tmpsbyte - 3) / NUMCBTEXTYPE); - int ts = (tmpsbyte - 3) % NUMCBTEXTYPE; - cfg.Print_ChangeBarText = (PrintChangeBarText)((tmpsbyte - 3) % NUMCBTEXTYPE); - } - else - { - cfg.Print_ChangeBarLoc = PrintChangeBarLoc.WithText; - cfg.Print_ChangeBarText = PrintChangeBarText.DateChgID; - } - cfg.Print_NumCopies=br.ReadSByte(); - cfg.Print_Pagination=(PrintPagination) br.ReadSByte(); - tmpstring = ReadTheString(br,4); // DefaultPrinter not used - cfg.Format_Plant = ReadTheString(br,10); - DefaultPlantFmt = cfg.Format_Plant; - tmpstring = ReadTheString(br, 128); // DefaultDestFName not used - tmpsbyte = br.ReadSByte(); // DefaultPlotterType not used - tmpsbyte = br.ReadSByte(); // DefaultPlotterPort not used - tmpsbyte = br.ReadSByte(); // DefaultCIEType not used. - for (int i=0;i<8;i++) // DefPenColors[8] not used - tmpsbyte = br.ReadSByte(); - cfg.Print_Watermark = (PrintWatermark)br.ReadSByte(); - cfg.Print_UserCBMess1 = ReadTheString(br, 10); - cfg.Print_UserCBMess2 = ReadTheString(br, 10); - tmpsbyte = br.ReadSByte(); // DontPrintStatusTree not used - cfg.Print_UserFormat = ReadTheString(br, 10); - //tmpsbyte = br.ReadSByte(); - //cfg.Print_Duplex = tmpsbyte == 0 ? true : false; - if (cfg.Print_UserFormat.Trim() != string.Empty) - DefaultPlantFmt += " " + cfg.Print_UserFormat; - br.Close(); - } - catch(Exception e) - { - if(br!=null) br.Close(); - DataLoader.frmLoader._MyLog.ErrorFormat("Error migrating {0} Curset.dat, error = {1}", PathName, e.Message); - } - fs.Close(); - return cfg; - } - public string GetDefFmt() - { - return DefaultPlantFmt; - } - } -} diff --git a/PROMS/DataLoader/DataLoader.csproj b/PROMS/DataLoader/DataLoader.csproj deleted file mode 100644 index 920906d7..00000000 --- a/PROMS/DataLoader/DataLoader.csproj +++ /dev/null @@ -1,259 +0,0 @@ - - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {8E239A2B-B38C-4CD5-BA0D-A41A88BD2AEE} - WinExe - Properties - DataLoader - DataLoader - SAK - SAK - SAK - SAK - v3.5 - - - - - 2.0 - - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - x86 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - - - False - ..\csla20cs-2.1.4-070223\csla20cs\csla20cs\Csla\bin\Debug\Csla.dll - - - ..\..\Proms3rdPartyLibraries\Ionic\Ionic.Zip.dll - - - False - bin\Debug\log4net.dll - - - - - - - - - - - - - - - - - - - - - - Form - - - dlgExportImport.cs - - - - - - - - - Form - - - frmCntTkn.cs - - - Form - - - frmErrors.cs - - - Form - - - frmLoader.cs - - - Form - - - frmPG.cs - - - Form - - - GroupProp.cs - - - - - - - - - - - - - - - - dlgExportImport.cs - Designer - - - frmCntTkn.cs - Designer - - - frmErrors.cs - Designer - - - Designer - frmLoader.cs - - - frmPG.cs - Designer - - - Designer - GroupProp.cs - - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - - PreserveNewest - - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - Component - - - RichTextBox41.cs - - - - - - - - - - - - - - - - - - - - - - - - {70F23722-19A3-4AC1-A900-55831C945786} - LBWordLibrary - - - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5} - VEPROMS.CSLA.Library - - - {AEEE9FD1-6892-45E2-A67E-418C06D46FF9} - Volian.Base.Library - - - {8556527C-6615-487F-8AF7-22EBC3EF0268} - Volian.Controls.Library - - - {62314B9C-DA84-4037-8B68-AA18C1F641F5} - Volian.Utils.Library - - - - - PreserveNewest - - - - - \ No newline at end of file diff --git a/PROMS/DataLoader/DataLoader.sln b/PROMS/DataLoader/DataLoader.sln deleted file mode 100644 index 496950ba..00000000 --- a/PROMS/DataLoader/DataLoader.sln +++ /dev/null @@ -1,153 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.30723.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataLoader", "DataLoader.csproj", "{8E239A2B-B38C-4CD5-BA0D-A41A88BD2AEE}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volian.Utils.Library", "..\Volian.Utils.Library\Volian.Utils.Library.csproj", "{62314B9C-DA84-4037-8B68-AA18C1F641F5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VEPROMS.CSLA.Library", "..\VEPROMS.CSLA.Library\VEPROMS.CSLA.Library.csproj", "{41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EPocalipse.IFilter", "..\EPocalipse.IFilter\EPocalipse.IFilter.csproj", "{400462CE-40B3-498F-B95A-B1D2AE679359}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LBWordLibrary", "..\LBWordLibrary\LBWordLibrary.csproj", "{70F23722-19A3-4AC1-A900-55831C945786}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volian.Controls.Library", "..\Volian.Controls.Library\Volian.Controls.Library.csproj", "{8556527C-6615-487F-8AF7-22EBC3EF0268}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volian.Base.Library", "..\Volian.Base.Library\Volian.Base.Library.csproj", "{AEEE9FD1-6892-45E2-A67E-418C06D46FF9}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XYPlots", "..\XYPlots\XYPlots.csproj", "{04E168D0-9CC7-43D9-A9F1-93E481EA86A3}" -EndProject -Global - GlobalSection(SourceCodeControl) = preSolution - SccNumberOfProjects = 7 - SccProjectUniqueName0 = ..\\Volian.Utils.Library\\Volian.Utils.Library.csproj - SccProjectName0 = \u0022$/PROMS/Volian.Utils.Library\u0022,\u0020DICAAAAA - SccLocalPath0 = ..\\Volian.Utils.Library - SccProvider0 = MSSCCI:Microsoft\u0020Visual\u0020SourceSafe - SccProjectUniqueName1 = ..\\VEPROMS.CSLA.Library\\VEPROMS.CSLA.Library.csproj - SccProjectName1 = \u0022$/PROMS/VEPROMS.CSLA.Library\u0022,\u0020TPBAAAAA - SccLocalPath1 = ..\\VEPROMS.CSLA.Library - SccProvider1 = MSSCCI:Microsoft\u0020Visual\u0020SourceSafe - SccProjectUniqueName2 = DataLoader.csproj - SccProjectName2 = \u0022$/PROMS/DataLoader\u0022,\u0020IIAAAAAA - SccLocalPath2 = . - SccProvider2 = MSSCCI:Microsoft\u0020Visual\u0020SourceSafe - SccProjectUniqueName3 = ..\\Volian.Controls.Library\\Volian.Controls.Library.csproj - SccProjectName3 = \u0022$/PROMS/Volian.Controls.Library\u0022,\u0020TVBAAAAA - SccLocalPath3 = ..\\Volian.Controls.Library - SccProvider3 = MSSCCI:Microsoft\u0020Visual\u0020SourceSafe - SccProjectUniqueName4 = ..\\LBWordLibrary\\LBWordLibrary.csproj - SccProjectName4 = \u0022$/PROMS/LBWordLibrary\u0022,\u0020QUDAAAAA - SccLocalPath4 = ..\\LBWordLibrary - SccProvider4 = MSSCCI:Microsoft\u0020Visual\u0020SourceSafe - SccProjectUniqueName5 = ..\\Volian.Base.Library\\Volian.Base.Library.csproj - SccProjectName5 = \u0022$/PROMS/Volian.Base.Library\u0022,\u0020QJEAAAAA - SccLocalPath5 = ..\\Volian.Base.Library - SccProvider5 = MSSCCI:Microsoft\u0020Visual\u0020SourceSafe - SccProjectUniqueName6 = ..\\XYPlots\\XYPlots.csproj - SccProjectName6 = \u0022$/PROMS/XYPlots\u0022,\u0020BRDAAAAA - SccLocalPath6 = ..\\XYPlots - SccProvider6 = MSSCCI:Microsoft\u0020Visual\u0020SourceSafe - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x86 = Debug|x86 - Demo|Any CPU = Demo|Any CPU - Demo|x86 = Demo|x86 - Release|Any CPU = Release|Any CPU - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8E239A2B-B38C-4CD5-BA0D-A41A88BD2AEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8E239A2B-B38C-4CD5-BA0D-A41A88BD2AEE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8E239A2B-B38C-4CD5-BA0D-A41A88BD2AEE}.Debug|x86.ActiveCfg = Debug|Any CPU - {8E239A2B-B38C-4CD5-BA0D-A41A88BD2AEE}.Demo|Any CPU.ActiveCfg = Debug|Any CPU - {8E239A2B-B38C-4CD5-BA0D-A41A88BD2AEE}.Demo|Any CPU.Build.0 = Debug|Any CPU - {8E239A2B-B38C-4CD5-BA0D-A41A88BD2AEE}.Demo|x86.ActiveCfg = Debug|Any CPU - {8E239A2B-B38C-4CD5-BA0D-A41A88BD2AEE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8E239A2B-B38C-4CD5-BA0D-A41A88BD2AEE}.Release|Any CPU.Build.0 = Release|Any CPU - {8E239A2B-B38C-4CD5-BA0D-A41A88BD2AEE}.Release|x86.ActiveCfg = Release|Any CPU - {62314B9C-DA84-4037-8B68-AA18C1F641F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {62314B9C-DA84-4037-8B68-AA18C1F641F5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {62314B9C-DA84-4037-8B68-AA18C1F641F5}.Debug|x86.ActiveCfg = Debug|Any CPU - {62314B9C-DA84-4037-8B68-AA18C1F641F5}.Demo|Any CPU.ActiveCfg = Debug|Any CPU - {62314B9C-DA84-4037-8B68-AA18C1F641F5}.Demo|Any CPU.Build.0 = Debug|Any CPU - {62314B9C-DA84-4037-8B68-AA18C1F641F5}.Demo|x86.ActiveCfg = Debug|Any CPU - {62314B9C-DA84-4037-8B68-AA18C1F641F5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {62314B9C-DA84-4037-8B68-AA18C1F641F5}.Release|Any CPU.Build.0 = Release|Any CPU - {62314B9C-DA84-4037-8B68-AA18C1F641F5}.Release|x86.ActiveCfg = Release|Any CPU - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}.Debug|x86.ActiveCfg = Debug|x86 - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}.Debug|x86.Build.0 = Debug|x86 - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}.Demo|Any CPU.ActiveCfg = Demo|Any CPU - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}.Demo|Any CPU.Build.0 = Demo|Any CPU - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}.Demo|x86.ActiveCfg = Demo|x86 - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}.Demo|x86.Build.0 = Demo|x86 - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}.Release|Any CPU.Build.0 = Release|Any CPU - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}.Release|x86.ActiveCfg = Release|x86 - {41B2D786-1C03-4C1A-9247-DA9F0D6B06D5}.Release|x86.Build.0 = Release|x86 - {400462CE-40B3-498F-B95A-B1D2AE679359}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {400462CE-40B3-498F-B95A-B1D2AE679359}.Debug|Any CPU.Build.0 = Debug|Any CPU - {400462CE-40B3-498F-B95A-B1D2AE679359}.Debug|x86.ActiveCfg = Debug|x86 - {400462CE-40B3-498F-B95A-B1D2AE679359}.Debug|x86.Build.0 = Debug|x86 - {400462CE-40B3-498F-B95A-B1D2AE679359}.Demo|Any CPU.ActiveCfg = Demo|Any CPU - {400462CE-40B3-498F-B95A-B1D2AE679359}.Demo|Any CPU.Build.0 = Demo|Any CPU - {400462CE-40B3-498F-B95A-B1D2AE679359}.Demo|x86.ActiveCfg = Demo|x86 - {400462CE-40B3-498F-B95A-B1D2AE679359}.Demo|x86.Build.0 = Demo|x86 - {400462CE-40B3-498F-B95A-B1D2AE679359}.Release|Any CPU.ActiveCfg = Release|Any CPU - {400462CE-40B3-498F-B95A-B1D2AE679359}.Release|Any CPU.Build.0 = Release|Any CPU - {400462CE-40B3-498F-B95A-B1D2AE679359}.Release|x86.ActiveCfg = Release|x86 - {400462CE-40B3-498F-B95A-B1D2AE679359}.Release|x86.Build.0 = Release|x86 - {70F23722-19A3-4AC1-A900-55831C945786}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {70F23722-19A3-4AC1-A900-55831C945786}.Debug|Any CPU.Build.0 = Debug|Any CPU - {70F23722-19A3-4AC1-A900-55831C945786}.Debug|x86.ActiveCfg = Debug|Any CPU - {70F23722-19A3-4AC1-A900-55831C945786}.Demo|Any CPU.ActiveCfg = Debug|Any CPU - {70F23722-19A3-4AC1-A900-55831C945786}.Demo|Any CPU.Build.0 = Debug|Any CPU - {70F23722-19A3-4AC1-A900-55831C945786}.Demo|x86.ActiveCfg = Debug|Any CPU - {70F23722-19A3-4AC1-A900-55831C945786}.Release|Any CPU.ActiveCfg = Release|Any CPU - {70F23722-19A3-4AC1-A900-55831C945786}.Release|Any CPU.Build.0 = Release|Any CPU - {70F23722-19A3-4AC1-A900-55831C945786}.Release|x86.ActiveCfg = Release|Any CPU - {8556527C-6615-487F-8AF7-22EBC3EF0268}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8556527C-6615-487F-8AF7-22EBC3EF0268}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8556527C-6615-487F-8AF7-22EBC3EF0268}.Debug|x86.ActiveCfg = Debug|x86 - {8556527C-6615-487F-8AF7-22EBC3EF0268}.Debug|x86.Build.0 = Debug|x86 - {8556527C-6615-487F-8AF7-22EBC3EF0268}.Demo|Any CPU.ActiveCfg = Demo|Any CPU - {8556527C-6615-487F-8AF7-22EBC3EF0268}.Demo|Any CPU.Build.0 = Demo|Any CPU - {8556527C-6615-487F-8AF7-22EBC3EF0268}.Demo|x86.ActiveCfg = Demo|x86 - {8556527C-6615-487F-8AF7-22EBC3EF0268}.Demo|x86.Build.0 = Demo|x86 - {8556527C-6615-487F-8AF7-22EBC3EF0268}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8556527C-6615-487F-8AF7-22EBC3EF0268}.Release|Any CPU.Build.0 = Release|Any CPU - {8556527C-6615-487F-8AF7-22EBC3EF0268}.Release|x86.ActiveCfg = Release|x86 - {8556527C-6615-487F-8AF7-22EBC3EF0268}.Release|x86.Build.0 = Release|x86 - {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}.Debug|x86.ActiveCfg = Debug|x86 - {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}.Debug|x86.Build.0 = Debug|x86 - {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}.Demo|Any CPU.ActiveCfg = Debug|x86 - {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}.Demo|x86.ActiveCfg = Debug|x86 - {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}.Demo|x86.Build.0 = Debug|x86 - {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}.Release|Any CPU.Build.0 = Release|Any CPU - {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}.Release|x86.ActiveCfg = Release|x86 - {AEEE9FD1-6892-45E2-A67E-418C06D46FF9}.Release|x86.Build.0 = Release|x86 - {04E168D0-9CC7-43D9-A9F1-93E481EA86A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {04E168D0-9CC7-43D9-A9F1-93E481EA86A3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {04E168D0-9CC7-43D9-A9F1-93E481EA86A3}.Debug|x86.ActiveCfg = Debug|x86 - {04E168D0-9CC7-43D9-A9F1-93E481EA86A3}.Debug|x86.Build.0 = Debug|x86 - {04E168D0-9CC7-43D9-A9F1-93E481EA86A3}.Demo|Any CPU.ActiveCfg = Demo|Any CPU - {04E168D0-9CC7-43D9-A9F1-93E481EA86A3}.Demo|Any CPU.Build.0 = Demo|Any CPU - {04E168D0-9CC7-43D9-A9F1-93E481EA86A3}.Demo|x86.ActiveCfg = Demo|x86 - {04E168D0-9CC7-43D9-A9F1-93E481EA86A3}.Demo|x86.Build.0 = Demo|x86 - {04E168D0-9CC7-43D9-A9F1-93E481EA86A3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {04E168D0-9CC7-43D9-A9F1-93E481EA86A3}.Release|Any CPU.Build.0 = Release|Any CPU - {04E168D0-9CC7-43D9-A9F1-93E481EA86A3}.Release|x86.ActiveCfg = Release|x86 - {04E168D0-9CC7-43D9-A9F1-93E481EA86A3}.Release|x86.Build.0 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/PROMS/DataLoader/DataLoaderGlitches.cs b/PROMS/DataLoader/DataLoaderGlitches.cs deleted file mode 100644 index a16b9705..00000000 --- a/PROMS/DataLoader/DataLoaderGlitches.cs +++ /dev/null @@ -1,213 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Xml; -using System.Xml.Serialization; -using System.Xml.Schema; -using System.IO; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - [XmlRoot("DataLoaderGlitches")] - //[Serializable()] - public class DataLoaderGlitches - { - private Glitches _Glitches; - - public Glitches Glitches - { - get - { - if (_Glitches == null) _Glitches = new Glitches(); - return _Glitches; - } - set { _Glitches = value; } - } - public void Add(string cause, string originalText, string newText) - { - Glitches.Add(cause, originalText, newText); - } - public void Save(string fileName) - { - XmlSerializer.WriteFile(this, fileName); - } - public static DataLoaderGlitches LoadProblems(string fileName) - { - return XmlSerializer.ReadFile(fileName); - } - } - public class Glitches : List - { - public void Add(string cause, string originalText, string newText) - { - base.Add(new Glitch(cause, originalText, newText)); - } - } - public class Glitch - { - public Glitch() - { - } - public Glitch(string cause, string originalText, string newText) - { - _Cause = cause; - _OriginalText = originalText; - _NewText = newText; - } - private string _Cause; - [XmlAttribute("Cause")] - public string Cause - { - get { return _Cause; } - set { _Cause = value; } - } - private string _OriginalText; - [XmlAttribute("OriginalText")] - public string OriginalText - { - get { return _OriginalText; } - set { _OriginalText = value; } - } - private string _NewText; - [XmlAttribute("NewText")] - public string NewText - { - get { return _NewText; } - set { _NewText = value; } - } - private string _Comparison; - [XmlIgnore] - public string Comparison - { - get - { - if (_Comparison == null) - _Comparison = GetComparison(_OriginalText, _NewText); - return _Comparison; - } - } - private string GetComparison(string str1, string str2) - { - if(str1 == str2)return str1; - int endMatch = 0; - int l1 = str1.Length; - int l2 = str2.Length; - int min = l1 > l2 ? l2 : l1; - int startMatch = min; - for(int i = 0; i< min; i++) - if (str1[i] != str2[i]) - { - startMatch = i; - break; - } - for (int i = 1; i < min; i++) - if (str1[l1-i] != str2[l2-i]) - { - endMatch = i-1; - break; - } - string prefix = str1.Substring(0, startMatch); - string part1 = str1.Substring(startMatch, l1 - (startMatch + endMatch)); - string part2 = str2.Substring(startMatch, l2 - (startMatch + endMatch)); - string suffix = str1.Substring(l1 - endMatch, endMatch); - _Delta = "<<<" + part1 + "|||" + part2 + ">>>"; - return prefix + "\r\n<<<" + part1 + "|||" + part2 + ">>>\r\n" + suffix; - } - private string _Delta = null; - public override string ToString() - { - if (Comparison == null) { ;} // This gets the Comparsion and sets _Delta - return _Delta; - } - } - public static class XmlSerializer where T : class - { - public static string StringSerialize(T t) - { - string strOutput = string.Empty; - XmlSerializer xs = new XmlSerializer(typeof(T), "http://www.volian.com"); - using (MemoryStream ms = new MemoryStream()) - { - xs.Serialize(new NonXsiTextWriter(ms, Encoding.UTF8), t); - //xs.Serialize(ms, t); - ms.Position = 0; - StreamReader sr = new StreamReader(ms); - strOutput = sr.ReadToEnd(); - ms.Close(); - } - return strOutput; - } - public static T StringDeserialize(string s) - { - T t; - XmlSerializer xs = new XmlSerializer(typeof(T), "http://www.volian.com"); - UTF8Encoding enc = new UTF8Encoding(); - Byte[] arrBytData = enc.GetBytes(s); - using (MemoryStream ms = new MemoryStream(arrBytData)) - { - t = (T)xs.Deserialize(ms); - } - return t; - } - public static void WriteFile(T t, string fileName) - { - string strOutput = string.Empty; - XmlSerializer xs = new XmlSerializer(typeof(T), "http://www.volian.com"); - using (FileStream fs = new FileStream(fileName, FileMode.Create)) - { - xs.Serialize(new NonXsiTextWriter(fs, Encoding.UTF8), t); - fs.Close(); - } - } - public static T ReadFile(string fileName) - { - T t; - XmlSerializer xs = new XmlSerializer(typeof(T), "http://www.volian.com"); - using (FileStream fs = new FileStream(fileName, FileMode.Open)) - { - t = (T)xs.Deserialize(fs); - } - return t; - } - } - public class NonXsiTextWriter : XmlTextWriter - { - public NonXsiTextWriter(TextWriter w) : base(w) { } - public NonXsiTextWriter(Stream w, Encoding encoding) - : base(w, encoding) - { - this.Formatting = Formatting.Indented; - } - public NonXsiTextWriter(string filename, Encoding encoding) : base(filename, encoding) { } - bool _skip = false; - public override void WriteStartAttribute(string prefix, string localName, string ns) - { - if ((prefix == "xmlns" && (localName == "xsd" || localName == "xsi")) || // Omits XSD and XSI declarations. - ns == XmlSchema.InstanceNamespace) // Omits all XSI attributes. - { - _skip = true; - return; - } - if (localName == "xlink_href") - base.WriteStartAttribute(prefix, "xlink:href", ns); - else - base.WriteStartAttribute(prefix, localName, ns); - } - public override void WriteString(string text) - { - if (_skip) return; - base.WriteString(text); - } - public override void WriteEndAttribute() - { - if (_skip) - { // Reset the flag, so we keep writing. - _skip = false; - return; - } - base.WriteEndAttribute(); - } - } - -} diff --git a/PROMS/DataLoader/DataLoaderSettings.cs b/PROMS/DataLoader/DataLoaderSettings.cs deleted file mode 100644 index 1a0bd2f1..00000000 --- a/PROMS/DataLoader/DataLoaderSettings.cs +++ /dev/null @@ -1,710 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Windows.Forms; -using System.ComponentModel; -using System.Drawing.Design; -using System.Reflection; -using System.Data; -using System.Collections; -using System.IO; -using System.Runtime.Serialization.Formatters.Binary; -using System.Data.SqlClient; - -namespace DataLoader -{ - [Serializable] - class DataLoaderSettings:ICloneable - { - private static List _MyDataPaths = Loader.DataPaths; - #region Clone - public object Clone() - { - MemoryStream memoryStream = new MemoryStream(); - BinaryFormatter binaryFormatter = new BinaryFormatter(); - - binaryFormatter.Serialize(memoryStream, this); - memoryStream.Seek(0, SeekOrigin.Begin); - - return binaryFormatter.Deserialize(memoryStream); - } - #endregion - #region 16-Bit Executable - private string _VEPromsPath; // Folder - [Category("16-Bit Executable")] - [DisplayName("VEProms Exe Folder")] - [Description("Path to the VE-PROMS Executable Folder")] - [EditorAttribute(typeof(UIFolderEditor), typeof(System.Drawing.Design.UITypeEditor))] - public string VEPromsPath - { - get { return _VEPromsPath; } - set { _VEPromsPath = value; } - } - private string _VESamFile; // File - [Category("16-Bit Executable")] - [DisplayName("VEProms Security File")] - [Description("VE-PROMS Securty File (VESam)")] - [UIFilenameEditor.FileDialogFilterAttribute("VEProms Security File|vesam.opt")] - [EditorAttribute(typeof(UIFilenameEditor), typeof(System.Drawing.Design.UITypeEditor))] - public string VESamFile - { - get { return _VESamFile; } - set { _VESamFile = value; } - } - #endregion - #region 16-Bit Data - private string _ProcedureSetPath; // Folder - [Category("16-Bit Data")] - [DisplayName("Procedure Folder")] - [Description("Path to the Data Set being converted")] - [EditorAttribute(typeof(UIFolderEditor), typeof(System.Drawing.Design.UITypeEditor))] - public string ProcedureSetPath - { - get { return _ProcedureSetPath; } - set { _ProcedureSetPath = value; } - } - private bool _OnlyThisSet; // Boolean - [Category("16-Bit Data")] - [DisplayName("Only Process this Procedure Set")] - [Description("Only Convert the Selected Procedure Set")] - public bool OnlyThisSet - { - get { return _OnlyThisSet; } - set { _OnlyThisSet = value; } - } - private bool _LoadApproved; // Boolean - [Category("16-Bit Data")] - [DisplayName("Load approved data for this Procedure Set")] - [Description("Load approved PDFs (if they exist) and consistency checks for the Selected Procedure Set")] - public bool LoadApproved - { - get { return _LoadApproved; } - set { _LoadApproved = value; } - } - private string _ProcessOnlyInLocation; // Folder - [Category("16-Bit Data")] - [DisplayName("Process Only In Location")] - [Description("Limit to folder or group of folders (otherwise all plants will be processed)")] - [EditorAttribute(typeof(UIFolderEditor), typeof(System.Drawing.Design.UITypeEditor))] - public string ProcessOnlyInLocation - { - get { return _ProcessOnlyInLocation; } - set { _ProcessOnlyInLocation = value; } - } - #endregion - #region Format Data - private string _FormatFolder; // Folder - [Category("Format Data")] - [DisplayName("Format Folder")] - [Description("Location of XML Format Files.")] - [EditorAttribute(typeof(UIFolderEditor), typeof(System.Drawing.Design.UITypeEditor))] - public string FormatFolder - { - get { return _FormatFolder; } - set { _FormatFolder = value; } - } - private string _GenMacFolder; // Folder - [Category("Format Data")] - [DisplayName("GenMac Folder")] - [Description("Location of XML (SVG) GenMac Macro Files.")] - [EditorAttribute(typeof(UIFolderEditor), typeof(System.Drawing.Design.UITypeEditor))] - public string GenMacFolder - { - get { return _GenMacFolder; } - set { _GenMacFolder = value; } - } - #endregion - #region Backup Data - private string _BackupFileName; // String - [Category("Backup Data")] - [DisplayName("Backup File Name")] - [Description("Name of Backup File in the batch files created in the Log Folder")] - public string BackupFileName - { - get { return _BackupFileName; } - set { _BackupFileName = value; } - } - private string _BackupFolder; // Folder - [Category("Backup Data")] - [DisplayName("Backup Folder")] - [Description("Location of Backup Files created during each phase of the conversion process.")] - [EditorAttribute(typeof(UIFolderEditor), typeof(System.Drawing.Design.UITypeEditor))] - public string BackupFolder - { - get { return _BackupFolder; } - set { _BackupFolder = value; } - } - private string _Phase1Suffix; // String - [Category("Backup Data")] - [DisplayName("Phase 1 Suffix")] - [Description("Suffix to use for backup before Transitions are Fixed")] - public string Phase1Suffix - { - get { return _Phase1Suffix; } - set { _Phase1Suffix = value; } - } - private string _Phase2Suffix; // String - [Category("Backup Data")] - [DisplayName("Phase 2 Suffix")] - [Description("Suffix to use for backup before Change Manager Script")] - public string Phase2Suffix - { - get { return _Phase2Suffix; } - set { _Phase2Suffix = value; } - } - private string _Phase3Suffix; // String - [Category("Backup Data")] - [DisplayName("Phase 3 Suffix")] - [Description("Suffix to use for backup before Approval Script")] - public string Phase3Suffix - { - get { return _Phase3Suffix; } - set { _Phase3Suffix = value; } - } - private string _Phase4Suffix; // String - [Category("Backup Data")] - [DisplayName("Phase 4 Suffix")] - [Description("Suffix to use for backup before Loading Approved Data")] - public string Phase4Suffix - { - get { return _Phase4Suffix; } - set { _Phase4Suffix = value; } - } - #endregion - #region Process Log - private string _LogFilePath; // Folder - [Category("Process Log")] - [DisplayName("Log File Folder")] - [Description("Location of the Log Files")] - [EditorAttribute(typeof(UIFolderEditor), typeof(System.Drawing.Design.UITypeEditor))] - public string LogFilePath - { - get { return _LogFilePath; } - set { _LogFilePath = value; } - } - #endregion - #region Sql Database - private string _ConnectionString; // String - [Category("Sql Database")] - [DisplayName("SQL Connection String")] - [Description("Connection string for SQL")] - public string ConnectionString - { - get { return _ConnectionString; } - set { _ConnectionString = value; } - } - private string _DBName; // String - [Category("Sql Database")] - [DisplayName("Database Name")] - [Description("Name of the Database that will be created to contain the converted data.")] - public string DBName - { - get { return _DBName; } - set { _DBName = value; } - } - private string _DBPath; // Folder - [Category("Sql Database")] - [DisplayName("Database File Folder")] - [Description("Location of the Database files.")] - [EditorAttribute(typeof(UIFolderEditor), typeof(System.Drawing.Design.UITypeEditor))] - public string DBPath - { - get { return _DBPath; } - set { _DBPath = value; } - } - private bool _PurgeExistingData; - [Category("Sql Database")] - [DisplayName("Purge Existing Data")] - [Description("Should the data in the SQL database be purged (emptied) before adding this data.")] - public bool PurgeExistingData - { - get { return _PurgeExistingData; } - set { _PurgeExistingData = value; } - } - #endregion - //#region PDFs - //private string _PDFFolder; // Folder - //[Category("PDFs")] - //[DisplayName("PDF Folder")] - //[Description("Location for PDFs when printing.")] - //[EditorAttribute(typeof(UIFolderEditor), typeof(System.Drawing.Design.UITypeEditor))] - //public string PDFFolder - //{ - // get { return _PDFFolder; } - // set { _PDFFolder = value; } - //} - //#endregion - #region Debugging - private ExecutionMode _ExecutionMode; - [TypeConverter(typeof(EnumDescConverter))] - [DisplayName("Execution Mode")] - [Category("Debugging")] - [Description("Mode for Conversion")] - public ExecutionMode ExecutionMode - { - get { return _ExecutionMode; } - set { _ExecutionMode = value; } - } - private bool _CheckRTF; - [DisplayName("Check RTF")] - [Category("Debugging")] - [Description("This makes the Fix Transtion Code work Differently. Not sure what it does.")] - public bool CheckRTF - { - get { return _CheckRTF; } - set { _CheckRTF = value; } - } - private int _Skip; // Skip specified procedures during load. - [DisplayName("Skip First n Procedures")] - [Category("Debugging")] - [Description("Skip the specified number of procedures during conversion to get to a problem quicker.")] - public int Skip - { - get { return _Skip; } - set { _Skip = value; } - } - private int _HowMany=0; // Skip specified procedures during load. - [DisplayName("How Many Procedures should be converted")] - [Category("Debugging")] - [Description("Only process part of the set.")] - public int HowMany - { - get { return _HowMany; } - set { _HowMany = value; } - } - #endregion - #region Accessory Pages - private AccPageConversion _ConvertTo; - [TypeConverter(typeof(EnumDescConverter))] - [DisplayName("Convert To")] - [Category("Accessory Pages")] - [Description("Format to which the Accessory Page converted")] - public AccPageConversion ConvertTo - { - get { return _ConvertTo; } - set { _ConvertTo = value; } - } - private bool _RedPDFs; // Boolean - [Category("Accessory Pages")] - [DisplayName("Print MSWord PDFs in Red")] - [Description("Creates Word PDFs in Debug Mode so that Debug printing will not require Word to print again.")] - public bool RedPDFs - { - get { return _RedPDFs; } - set { _RedPDFs = value; } - } - #endregion - #region RO Update - private ROUpdateMode _WhatROsToConvert = 0; - [Category("RO Update")] - [DisplayName("What ROs To Convert")] - [Description("Select which ROs should be converted.")] - public ROUpdateMode WhatROsToConvert - { - get { return _WhatROsToConvert; } - set { _WhatROsToConvert = value; } - } - private int _SelectedROFst = -1; - [Category("RO Update")] - [DisplayName("Selected ROFst")] - [Description("Enter which ROFstID is the basis for the original text (-1 = None).")] - public int SelectedROFst - { - get { return _SelectedROFst; } - set { _SelectedROFst = value; } - } - private bool _AnnotateWhenConvertingToText; - [Category("RO Update")] - [DisplayName("Annotate When Converting To Text")] - [Description("Should the step have annotation when the ro data has been converted to text.")] - public bool AnnotateWhenConvertingToText - { - get { return _AnnotateWhenConvertingToText; } - set { _AnnotateWhenConvertingToText = value; } - } - private bool _AnnotateWhenShowingMissingRO; - [Category("RO Update")] - [DisplayName("Annotate When Showing Missing RO")] - [Description("Should the step have annotation when the ro data is missing and is being displayed as a question mark.")] - public bool AnnotateWhenShowingMissingRO - { - get { return _AnnotateWhenShowingMissingRO; } - set { _AnnotateWhenShowingMissingRO = value; } - } - private bool _AnnotateWhenShowingDifferentRO; - [Category("RO Update")] - [DisplayName("Annotate When Showing Different RO")] - [Description("Should the step have annotation when the ro data is different.")] - public bool AnnotateWhenShowingDifferentRO - { - get { return _AnnotateWhenShowingDifferentRO; } - set { _AnnotateWhenShowingDifferentRO = value; } - } - #endregion - [Browsable(false)] - public string ValidityCheck - { - get - { - StringBuilder sb = new StringBuilder(); - string ErrorPrefix = "Settings are not valid\r\n"; - // VEPromsPath = has to be non-blank - if ((VEPromsPath ?? "") == "" || !Directory.Exists(VEPromsPath)) - { - sb.Append(ErrorPrefix + "VEProms Exe Folder must point to an existing folder\r\n"); - ErrorPrefix = ""; - } - // VESamFile = has to be non-blank - if ((VESamFile ?? "") == "" || !File.Exists(VESamFile)) - { - sb.Append(ErrorPrefix + "VEProms Security File must point to an existing file\r\n"); - ErrorPrefix = ""; - } - // ProcedureSetPath = If OnlyThisSet is checked, then has to be non-blank - if (OnlyThisSet) - { - if ((ProcedureSetPath ?? "") == "" || !Directory.Exists(ProcedureSetPath)) - { - sb.Append(ErrorPrefix + "Procedure Folder must point to an existing folder\r\n"); - ErrorPrefix = ""; - } - else - { - if (!InDataPaths(ProcedureSetPath)) - { - sb.Append(ErrorPrefix + string.Format("Procedure Folder not in DataPath from Config File '{0}' \r\n", DataLoaderSettings._MyDataPaths[0])); - ErrorPrefix = ""; - } - else if (!File.Exists(ProcedureSetPath + @"\set.dbf")) - { - sb.Append(ErrorPrefix + "Procedure Folder must point to an existing procedure data folder\r\n"); - ErrorPrefix = ""; - } - } - } - else - { - if ((ProcedureSetPath ?? "") == "" || !Directory.Exists(ProcedureSetPath)) - { - sb.Append(ErrorPrefix + "Procedure Folder must point to an existing folder\r\n"); - ErrorPrefix = ""; - } - else - { - if (!InDataPaths(ProcedureSetPath)) - { - sb.Append(ErrorPrefix + string.Format("Procedure Folder not in DataPath from Config File '{0}' \r\n", DataLoaderSettings._MyDataPaths[0])); - ErrorPrefix = ""; - } - } - } - //added by jcb 20121127 - //check is ProcedureSetPath contains ProcessOnlyInLocation - if (ProcedureSetPath != null && ProcedureSetPath.StartsWith(ProcessOnlyInLocation ?? "") == false) - { - sb.Append(ErrorPrefix + "Check Process Only In Location value is pointing to similar directory as Procedure Set Path\r\n"); - ErrorPrefix = ""; - } - //end added by jcb 20121127 - // BackupFileName = Has to be non-blank - if ((BackupFileName ?? "") == "") - { - sb.Append(ErrorPrefix + "Backup File Name must not be blank\r\n"); - ErrorPrefix = ""; - } - if ((Phase1Suffix ?? "") == "") - { - sb.Append(ErrorPrefix + "Phase 1 Suffix must not be blank\r\n"); - ErrorPrefix = ""; - } - if ((Phase2Suffix ?? "") == "") - { - sb.Append(ErrorPrefix + "Phase 2 Suffix must not be blank\r\n"); - ErrorPrefix = ""; - } - if ((Phase3Suffix ?? "") == "") - { - sb.Append(ErrorPrefix + "Phase 3 Suffix must not be blank\r\n"); - ErrorPrefix = ""; - } - // BackupFolder = Has to be non-blank - if (OnlyThisSet && (BackupFolder ?? "") == "" || !Directory.Exists(BackupFolder)) - { - sb.Append(ErrorPrefix + "Backup Folder must point to an existing folder\r\n"); - ErrorPrefix = ""; - } - // FormatFolder = Has to be non-blank - if (OnlyThisSet && (FormatFolder ?? "") == "" || !Directory.Exists(FormatFolder)) - { - sb.Append(ErrorPrefix + "Format Folder must point to an existing folder\r\n"); - ErrorPrefix = ""; - } - // GenMacFolder = Has to be non-blank - if (OnlyThisSet && (GenMacFolder ?? "") == "" || !Directory.Exists(GenMacFolder)) - { - sb.Append(ErrorPrefix + "GenMac Folder must point to an existing folder\r\n"); - ErrorPrefix = ""; - } - // LogFilePath = Has to be non-blank - if (OnlyThisSet && (LogFilePath ?? "") == "" || !Directory.Exists(LogFilePath)) - { - sb.Append(ErrorPrefix + "Log File Folder must point to an existing folder\r\n"); - ErrorPrefix = ""; - } - // ConnectionString = Has to be non-blank - if ((ConnectionString ?? "") == "") - { - sb.Append(ErrorPrefix + "SQL Connection String must be a valid connection string\r\n"); - ErrorPrefix = ""; - } - else - { - // Validate ConnectionString - string checkConnectionString = ValidateConnectionString("Master"); - if (checkConnectionString != "") - { - sb.Append(ErrorPrefix + "SQL Connection String must be a valid connection string\r\n"); - sb.Append(checkConnectionString); - ErrorPrefix = ""; - } - } - // DBName = Has to be non-blank - if ((DBName ?? "") == "") - { - sb.Append(ErrorPrefix + "SQL Database Name must be a valid database name\r\n"); - ErrorPrefix = ""; - } - // DBPath = if null check to see if DBName DB has Path, if it does then set DBPath - if ((DBPath ?? "") == "" || !Directory.Exists(DBPath)) - { - string filePath = GetDBFileName(); - if (filePath != null) - { - FileInfo fi = new FileInfo(filePath); - DBPath = fi.DirectoryName; - } - else - { - sb.Append(ErrorPrefix + "SQL Database Path must point to an existing folder\r\n"); - ErrorPrefix = ""; - } - } - // PDFFolder = if not set, then don't set PDFFolder in DocVersion.Config - //if (ExecutionMode == ExecutionMode.Debug && ((PDFFolder ?? "") == "" || !Directory.Exists(PDFFolder))) - //{ - // sb.Append(ErrorPrefix + "PDF Folder must point to an existing folder in debug mode\r\n"); - // ErrorPrefix = ""; - //} - // Skip = Any NUmber - // PurgeExistingData = N/A - // OnlyThisSet = N/A - // CheckRTF = N/A - // ConvertTo = N/A - // RedPDFs = N/A - return sb.ToString(); - } - } - private bool InDataPaths(string ProcedureSetPath) - { - foreach (string dp in _MyDataPaths) - if (ProcedureSetPath.ToUpper().StartsWith(dp.ToUpper())) return true; - return false; - } - private string ValidateConnectionString(string dbName) - { - if(!ConnectionString.Contains("{DBName}")) - return " Needs to have a {DBName} token for the Initial Catalog"; - string cnstr = ConnectionString.Replace("{DBName}", dbName); - try - { - SqlConnection cn = new SqlConnection(cnstr); - cn.Open(); - cn.Close(); - } - catch (Exception ex) - { - StringBuilder sb = new StringBuilder(); - while (ex != null) - { - sb.Append(string.Format(" {0}-{1}",ex.GetType().Name,ex.Message)); - ex = ex.InnerException; - } - return sb.ToString(); - } - return ""; - } - private string GetDBFileName() - { - string filename = null; - SqlConnection cn = new SqlConnection(ConnectionString.Replace("{DBName}","Master")); - cn.Open(); - string cmd = string.Format("Select FileName from sysdatabases where Name = '{0}'",DBName); - SqlDataAdapter da = new SqlDataAdapter(cmd,cn); - DataSet ds = new DataSet(); - da.Fill(ds); - if (ds.Tables.Count == 1 && ds.Tables[0].Rows.Count == 1) - filename = ds.Tables[0].Rows[0][0].ToString(); - cn.Close(); - return filename; - } - } - public enum AccPageConversion : int - { - [Description("Don't Convert")] DoNotConvert=0, - [Description("MS Word")] MSWord = 1, - [Description("Rich Text Format")] RichTextFormat = 2 - } - public enum ExecutionMode : int - { - [Description("Debug")] Debug = 0, - [Description("Production")] Production = 1, - } - public enum ROUpdateMode : int - { - [Description("None")] - None = 0, - [Description("Missing")] - Missing = 1, - [Description("All")] - All = 2, - } - - public class EnumDescConverter : System.ComponentModel.EnumConverter - { - protected System.Type myVal; - - /// - /// Gets Enum Value's Description Attribute - /// - /// The value you want the description attribute for - /// The description, if any, else it's .ToString() - public static string GetEnumDescription(Enum value) - { - //Console.WriteLine("{0}", value); - FieldInfo fi = value.GetType().GetField(value.ToString()); - DescriptionAttribute[] attributes = - (DescriptionAttribute[])fi.GetCustomAttributes( - typeof(DescriptionAttribute), false); - //Console.WriteLine("{0},{1},{2}", value.ToString(), attributes.Length, (attributes.Length > 0) ? attributes[0].Description : value.ToString()); - return (attributes.Length > 0) ? attributes[0].Description : value.ToString(); - } - - /// - /// Gets the description for certaing named value in an Enumeration - /// - /// The type of the Enumeration - /// The name of the Enumeration value - /// The description, if any, else the passed name - public static string GetEnumDescription(System.Type value, string name) - { - FieldInfo fi = value.GetField(name); - DescriptionAttribute[] attributes = - (DescriptionAttribute[])fi.GetCustomAttributes( - typeof(DescriptionAttribute), false); - return (attributes.Length > 0) ? attributes[0].Description : name; - } - - /// - /// Gets the value of an Enum, based on it's Description Attribute or named value - /// - /// The Enum type - /// The description or name of the element - /// The value, or the passed in description, if it was not found - public static object GetEnumValue(System.Type value, string description) - { - FieldInfo[] fis = value.GetFields(); - foreach (FieldInfo fi in fis) - { - DescriptionAttribute[] attributes = - (DescriptionAttribute[])fi.GetCustomAttributes( - typeof(DescriptionAttribute), false); - if (attributes.Length > 0) - { - if (attributes[0].Description == description) - { - return fi.GetValue(fi.Name); - } - } - if (fi.Name == description) - { - return fi.GetValue(fi.Name); - } - } - return description; - } - - public EnumDescConverter(System.Type type) - : base(type.GetType()) - { - myVal = type; - } - - public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) - { - if (value is Enum && destinationType == typeof(string)) - { - return EnumDescConverter.GetEnumDescription((Enum)value); - } - if (value is string && destinationType == typeof(string)) - { - return EnumDescConverter.GetEnumDescription(myVal, (string)value); - } - return base.ConvertTo(context, culture, value, destinationType); - } - - public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) - { - if (value is string) - { - return EnumDescConverter.GetEnumValue(myVal, (string)value); - } - if (value is Enum) - { - return EnumDescConverter.GetEnumDescription((Enum)value); - } - return base.ConvertFrom(context, culture, value); - } - public override bool GetPropertiesSupported(ITypeDescriptorContext context) - { - return false; - } - - public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) - { - ArrayList values = new ArrayList(); - FieldInfo[] fis = myVal.GetFields(); - foreach (FieldInfo fi in fis) - { - DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes( - typeof(DescriptionAttribute), false); - //if (attributes.Length > 0) - if (fi.Name != "value__") - values.Add(fi.GetValue(fi.Name)); - } - return new TypeConverter.StandardValuesCollection(values); - } - public static string GetEnumKeyDescription(Enum value) - { - FieldInfo fi = value.GetType().GetField(value.ToString()); - DescriptionAttribute[] attributes = - (DescriptionAttribute[])fi.GetCustomAttributes( - typeof(DescriptionAttribute), false); - return (attributes.Length > 0) ? attributes[0].Description : value.ToString(); - } - - public static DataTable GetEnumAsDataTable(System.Type EnumType) - { - DataTable DTEnum = new DataTable(); - DTEnum.Columns.Add(new DataColumn("EnumID", typeof(Int32))); - DTEnum.Columns.Add(new DataColumn("Enum", typeof(string))); - DTEnum.Columns.Add(new DataColumn("Description", typeof(string))); - foreach (int i in Enum.GetValues(EnumType)) - { - System.Enum fooItem = (System.Enum)Enum.ToObject(EnumType, i); - DTEnum.Rows.Add(new object[] { i, fooItem.ToString(), GetEnumKeyDescription(fooItem) }); - } - return DTEnum; - } - } - -} diff --git a/PROMS/DataLoader/DocVersions.cs b/PROMS/DataLoader/DocVersions.cs deleted file mode 100644 index f3f86914..00000000 --- a/PROMS/DataLoader/DocVersions.cs +++ /dev/null @@ -1,178 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - public partial class Loader - { - public TimeSpan MigrateDocVersion(DocVersion docver) - { - return MigrateDocVersion(docver, true); - } - - private OutsideTransition _OutTran; - public int MultiUnitCount = 0; - public Dictionary Old2NewApple; - public Dictionary New2OldApple; - - public TimeSpan MigrateDocVersion(DocVersion docver, bool convertProcedures) - { - long lTime = DateTime.Now.Ticks; - string pth = docver.Title; - // if the Title is empty, return because this docversion has already been migrated. - bool appending = false; - if (frmMain.Automatic && !frmMain.PurgeExistingData) - { - pth = frmMain.ProcedureSetPath; - appending = true; - } - if (pth == null || pth == "" || pth == "Title") return TimeSpan.FromTicks(0); - MultiUnitCount = docver.DocVersionConfig.Unit_Count; - if (MultiUnitCount > 0) - { - Old2NewApple = new Dictionary(); - New2OldApple = new Dictionary(); - for (int i = 1; i <= MultiUnitCount; i++) - { - docver.DocVersionConfig.SelectedSlave = i; - int oldindex = int.Parse(docver.DocVersionConfig.Old_Index); - Old2NewApple.Add(oldindex, i); - New2OldApple.Add(i, oldindex); - } - } - if (!File.Exists(pth + @"\set.dbf") || !File.Exists(pth + @"\curset.dat")) return TimeSpan.FromTicks(0); - // Open connection - OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pth + ";Extended Properties=dBase III;Persist Security Info=False"); - if (convertProcedures) - { - // JSJ 02/10/2010 - Remove all the .INF files before proceeding to convert. - // The INF files contain a path to a corresponding NDX file - had data with bat NDX path - DeleteINFFiles(pth); - _OutTran = new OutsideTransition(cn); - frmMain.AddInfo("Before MigrateROFST{0}\r\n{1}", GC.GetTotalMemory(true), VEPROMS.CSLA.Library.CSLACache.UsageAll); - //if(!appending) - MigrateROFST(pth, docver); - GC.Collect(); - frmMain.AddInfo("After MigrateROFST{0}\r\n{1}", GC.GetTotalMemory(true), VEPROMS.CSLA.Library.CSLACache.UsageAll); - // Migrate library documents - //if(!appending) - MigrateLibDocs(cn, pth, appending); - - // if migrating bge, save the 'unit' number. This unit number is used in pagelist items and is - // based on the path/directory name of the procedure set. - if (true) // somehow check for BGE - { - SetDocVersionUnitConfig(pth, docver); - } - - - // Initialize Dictionaries - dicTrans_ItemDone = new Dictionary(); - dicTrans_ItemIds = new Dictionary(); - dicTrans_MigrationErrors = new Dictionary>(); - - // Create a 'dummy' content record. This will be used for any transitions 'to' - // that don't exist when dbf is processed. At end, use this to see if there - // are missing transitions. - TransDummyCont = Content.MakeContent(null, "DUMMY CONTENT FOR TRANSITION MIGRATION", null, null, null); - } - // Process Procedures - Item itm = null; - if (convertProcedures || docver.VersionType == (int)VEPROMS.CSLA.Library.VersionTypeEnum.WorkingDraft || docver.VersionType == (int)VEPROMS.CSLA.Library.VersionTypeEnum.Approved) - { - ResetApplesToOranges(); - itm = MigrateProcedures(cn, pth, docver, convertProcedures, docver.MyDocVersionInfo.ActiveFormat); - } - // Show any Missing Transtitons (i.e. Transitions which have not been processed) - lTime = DateTime.Now.Ticks - lTime; - if (convertProcedures) - { - ShowMissingTransitions(docver); - //frmMain.Status = string.Format("{0}\r\nConversion completed in {1} seconds.", pth, TimeSpan.FromTicks(lTime).TotalSeconds); - TimeSpan ts = TimeSpan.FromTicks(lTime); - frmMain.Status = string.Format("{0}\r\nConversion completion time: {1:D2}:{2:D2}:{3:D2}.{4} ({5} Total Seconds)", pth, ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds, ts.TotalSeconds); - log.InfoFormat("Completed Migration of {0}", pth); - - //MessageBox.Show("Completed Migration of " + pth); //jsj commented out to let it run through - if (rofstinfo != null) rofstinfo.GetROFSTLookup(DocVersionInfo.Get(docver.VersionID)).Close(); - dicTrans_ItemDone.Clear(); - dicTrans_ItemDone = null; - } - else - frmMain.Status = string.Format("{0}\r\nDone.", pth); - cn.Close(); - if (itm != null) - { - docver.MyItem = itm; - if (convertProcedures) docver.Title = ""; // clearing this tell us this docver (path) was converted? - if (!docver.IsSavable) ErrorRpt.ErrorReport(docver); - //if(frmMain.MySettings.ExecutionMode == ExecutionMode.Debug) - // docver.DocVersionConfig.Print_PDFLocation = frmMain.MySettings.PDFFolder; - docver.Save(); - } - return TimeSpan.FromTicks(lTime); - } - - private void SetDocVersionUnitConfig(string pth, DocVersion docver) - { - // the following 'rules' were taken from 16bit code, in pagelist.c, to define the unit number. - - string unitNum = "0"; - string testPath = pth.ToUpper(); - - // back up further if this is a tmpchg or approved directory. - int lastPart = pth.LastIndexOf(@"\"); - if (lastPart != -1) - { - testPath = testPath.Substring(testPath.LastIndexOf(@"\")); - if (testPath.Contains("TMPCHG") || testPath.Contains("APPROVED")) - testPath = testPath.Substring(testPath.LastIndexOf(@"\", lastPart)); - } - if (testPath.IndexOf("PROCS2") > -1 || testPath.IndexOf("2.PRC") > -1) - unitNum = "2"; - else if (testPath.IndexOf("PROCS") > -1 || testPath.IndexOf("1.PRC") > -1) - unitNum = "1"; - else if (testPath.IndexOf("3.PRC") > -1) - unitNum = "3"; - else if (testPath.IndexOf("4.PRC") > -1) - unitNum = "4"; - - docver.DocVersionConfig.Print_UnitNumberForPageList = unitNum; - docver.Save(); - } - private void DeleteINFFiles(string pth) - { - DirectoryInfo di = new DirectoryInfo(pth); - FileInfo [] myFiles = di.GetFiles("*.INF"); - foreach (FileInfo myFile in myFiles) - myFile.Delete(); - } - private VEPROMS.CSLA.Library.VersionTypeEnum DocVersionType(string s) - { - if (s.EndsWith("approved")) return VEPROMS.CSLA.Library.VersionTypeEnum.Approved; - if (s.EndsWith("chgsht")) return VEPROMS.CSLA.Library.VersionTypeEnum.Revision; - if (s.EndsWith("tmpchg")) return VEPROMS.CSLA.Library.VersionTypeEnum.Temporary; - return VEPROMS.CSLA.Library.VersionTypeEnum.WorkingDraft; - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/DocVersions.cs.bak b/PROMS/DataLoader/DocVersions.cs.bak deleted file mode 100644 index 996562a8..00000000 --- a/PROMS/DataLoader/DocVersions.cs.bak +++ /dev/null @@ -1,127 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - public partial class Loader - { - public TimeSpan MigrateDocVersion(DocVersion docver) - { - return MigrateDocVersion(docver, true); - } - - private OutsideTransition _OutTran; - public int MultiUnitCount = 0; - public Dictionary Old2NewApple; - public Dictionary New2OldApple; - - public TimeSpan MigrateDocVersion(DocVersion docver, bool convertProcedures) - { - long lTime = DateTime.Now.Ticks; - string pth = docver.Title; - MultiUnitCount = docver.DocVersionConfig.Unit_Count; - if (MultiUnitCount > 0) - { - Old2NewApple = new Dictionary(); - New2OldApple = new Dictionary(); - for (int i = 1; i <= MultiUnitCount; i++) - { - docver.DocVersionConfig.SelectedSlave = i; - int oldindex = int.Parse(docver.DocVersionConfig.Old_Index); - Old2NewApple.Add(oldindex, i); - New2OldApple.Add(i, oldindex); - } - } - if (!File.Exists(pth + @"\set.dbf") || !File.Exists(pth + @"\curset.dat")) return new TimeSpan(); // Open connection - OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pth + ";Extended Properties=dBase III;Persist Security Info=False"); - if (convertProcedures) - { - // JSJ 02/10/2010 - Remove all the .INF files before proceeding to convert. - // The INF files contain a path to a corresponding NDX file - had data with bat NDX path - DeleteINFFiles(pth); - _OutTran = new OutsideTransition(cn); - frmMain.AddInfo("Before MigrateROFST{0}\r\n{1}", GC.GetTotalMemory(true), VEPROMS.CSLA.Library.CSLACache.UsageAll); - MigrateROFST(pth, docver); - GC.Collect(); - frmMain.AddInfo("After MigrateROFST{0}\r\n{1}", GC.GetTotalMemory(true), VEPROMS.CSLA.Library.CSLACache.UsageAll); - // Migrate library documents - MigrateLibDocs(cn, pth); - // Initialize Dictionaries - dicTrans_ItemDone = new Dictionary(); - dicTrans_ItemIds = new Dictionary(); - dicTrans_MigrationErrors = new Dictionary>(); - - // Create a 'dummy' content record. This will be used for any transitions 'to' - // that don't exist when dbf is processed. At end, use this to see if there - // are missing transitions. - TransDummyCont = Content.MakeContent(null, "DUMMY CONTENT FOR TRANSITION MIGRATION", null, null, null); - } - // Process Procedures - Item itm = null; - if (convertProcedures || docver.VersionType == (int)VEPROMS.CSLA.Library.VersionTypeEnum.WorkingDraft || docver.VersionType == (int)VEPROMS.CSLA.Library.VersionTypeEnum.Approved) - itm = MigrateProcedures(cn, pth, docver, convertProcedures, docver.MyDocVersionInfo.ActiveFormat); - // Show any Missing Transtitons (i.e. Transitions which have not been processed) - lTime = DateTime.Now.Ticks - lTime; - if (convertProcedures) - { - ShowMissingTransitions(docver); - //frmMain.Status = string.Format("{0}\r\nConversion completed in {1} seconds.", pth, TimeSpan.FromTicks(lTime).TotalSeconds); - TimeSpan ts = TimeSpan.FromTicks(lTime); - frmMain.Status = string.Format("{0}\r\nConversion completion time: {1:D2}:{2:D2}:{3:D2}.{4} ({5} Total Seconds)", pth, ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds, ts.TotalSeconds); - log.InfoFormat("Completed Migration of {0}", pth); - - //MessageBox.Show("Completed Migration of " + pth); //jsj commented out to let it run through - if (rofstinfo != null) rofstinfo.ROFSTLookup.Close(); - dicTrans_ItemDone.Clear(); - dicTrans_ItemDone = null; - } - else - frmMain.Status = string.Format("{0}\r\nDone.", pth); - cn.Close(); - if (itm != null) - { - docver.MyItem = itm; - if (convertProcedures) docver.Title = ""; // clearing this tell us this docver (path) was converted? - if (!docver.IsSavable) ErrorRpt.ErrorReport(docver); - if(frmMain.MySettings.ExecutionMode == ExecutionMode.Debug) - docver.DocVersionConfig.Print_PDFLocation = frmMain.MySettings.PDFFolder; - docver.Save(); - } - return TimeSpan.FromTicks(lTime); - } - private void DeleteINFFiles(string pth) - { - DirectoryInfo di = new DirectoryInfo(pth); - FileInfo [] myFiles = di.GetFiles("*.INF"); - foreach (FileInfo myFile in myFiles) - myFile.Delete(); - } - private VEPROMS.CSLA.Library.VersionTypeEnum DocVersionType(string s) - { - if (s.EndsWith("approved")) return VEPROMS.CSLA.Library.VersionTypeEnum.Approved; - if (s.EndsWith("chgsht")) return VEPROMS.CSLA.Library.VersionTypeEnum.Revision; - if (s.EndsWith("tmpchg")) return VEPROMS.CSLA.Library.VersionTypeEnum.Temporary; - return VEPROMS.CSLA.Library.VersionTypeEnum.WorkingDraft; - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/Documents.cs b/PROMS/DataLoader/Documents.cs deleted file mode 100644 index 0e4b366e..00000000 --- a/PROMS/DataLoader/Documents.cs +++ /dev/null @@ -1,368 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using Volian.MSWord; -using VEPROMS.CSLA.Library; -using System.Threading; - -namespace DataLoader -{ - public partial class Loader - { - private void SaveSectionDocument(string fname, string stpseq, string stype, ref int cid, string sectName, bool isLandscape) - { - int docid = SaveWordDoc(fname, stype, sectName, isLandscape); - switch (docid) - { - case 0: - // could add the following back in - but many of these may be put out in the log, and - // don't supply any pertinent info. - //log.InfoFormat("Timing problem for save of word document, will retry. oldstepsequence = {0}", stpseq); - break; - case -1: - log.ErrorFormat("Could not complete save of word document, oldstepsequence = {0}", stpseq); - break; - default: - cid = docid; - break; - } - } - - private int SaveWordDoc(string fname, string title, string stype, bool isLandscape, ConfigInfo ci, string sectName, DateTime dtsutc) - { - int docid = 0; - if (System.IO.File.Exists(fname)) - { - FileInfo myFile = new FileInfo(fname); - GC.Collect(); - frmMain.AddInfo("Processing {0} {1}", fname, GC.GetTotalMemory(true)); - //string tmpName = @"C:\Temp\DataLoader\" + myFile.Name.Replace(".", "_") + ".RTF"; - string tmpName = Path.GetTempFileName(); - string temppath = Path.GetTempFileName(); - if (frmMain.MySettings.ExecutionMode == ExecutionMode.Production || - frmMain.MySettings.ConvertTo == AccPageConversion.MSWord) - { - FileInfo tmpFile = new FileInfo(tmpName); - if (tmpFile.Exists) - tmpFile.Delete(); - myFile.CopyTo(tmpName); - LoadAndSaveRichTextBox41(tmpName); - WordDocument wd = new WordDocument(tmpName, stype, temppath, isLandscape); - Thread myThread = new Thread(wd.GetAsciiFromWord); - myThread.Start(); - myThread.Join(30000); // Wait 30 seconds to time-out - if (myThread.ThreadState == System.Threading.ThreadState.Running) - { - WordDoc.KillWordApps(); - Thread.Sleep(1000);// Give the process a second to shutdown - frmMain.AddError("Could not open file '{0}'", fname); - docid = SaveDoc(fname, title, ci, "", dtsutc); // Save the original file - } - else - { - if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Printing", "Length", string.Format("{0:0.0000}", wd.DocLen)); - docid = SaveDoc(temppath, title, ci, wd.ASCII, dtsutc); - DeleteFile(temppath); - DeleteFile(tmpName); - } - } - else - { - if (frmMain.MySettings.ConvertTo == AccPageConversion.RichTextFormat) - docid = SaveDoc(fname, title, ci, "", dtsutc); // Need to get Ascii Text from RTF - } - } - else - frmMain.AddError("Missing rtf file: {0}", fname); - return docid; - } - private RichTextBox _MyRichTextBox = null; - public RichTextBox MyRichTextBox - { - get - { - if (_MyRichTextBox == null) - _MyRichTextBox = new RichTextBox(); - return _MyRichTextBox; - } - } - private void LoadAndSaveRichTextBox(string tmpName) - { - string rtf = LoadFileRaw(tmpName); - // Parse for margins because the RTB will remove them - rtf = rtf.Replace("\x95", @"\bullet "); - Match match = Regex.Match(rtf, @"((\\marg[^\\]+)+)", RegexOptions.Singleline); - //rtf = rtf.Replace("\\sectd", ""); - //rtf = rtf.Replace("\\sbkpage", ""); - //rtf = rtf.Replace("\\sect", "\\page"); - rtf = Regex.Replace(rtf, @"\\ri[0-9]*(?=[ \\{])", ""); - rtf = Regex.Replace(rtf, @"\\sectd(?=[ \\{])", ""); - rtf = Regex.Replace(rtf, @"\\sbkpage(?=[ \\{])", ""); - rtf = Regex.Replace(rtf, @"\\sect(?=[ \\{])", @"\page"); - rtf = Regex.Replace(rtf, @"\\par(?=[ \\{])", @" <>\par"); - MyRichTextBox.Rtf = rtf; // Allow the RichTextBox to parse the RTF - rtf = MyRichTextBox.Rtf; // Get the RTF back from the RichTextBox - // Add the margins to the RTB output - rtf = Regex.Replace(rtf, @"( |\r\n)<>\\par(?=[\r \\{])", @"\par"); - rtf = Regex.Replace(rtf, @" <>\\f. \\", @"\par\"); - rtf = Regex.Replace(rtf, @" <>", @"\par"); - rtf = Regex.Replace(rtf, @"\\ansi(?=[ \\{])", @"\ansi" + match.Value); - //rtf = rtf.Replace(@"\ansi\", @"\ansi\" + match.Value); - // Save the modified rtf to the temporary file - SaveFile(rtf, tmpName); - } - private RichTextBox41 _MyRichTextBox41 = null; - public RichTextBox41 MyRichTextBox41 - { - get - { - if (_MyRichTextBox41 == null) - _MyRichTextBox41 = new RichTextBox41(); - return _MyRichTextBox41; - } - } - //private void LoadAndSaveRichTextBox41(string tmpName) - //{ - // string rtf = LoadFileRaw(tmpName); - // // Parse for margins because the RTB will remove them - // rtf = rtf.Replace("\x95", @"\bullet "); - // Match match = Regex.Match(rtf, @"((\\marg[^\\]+)+)", RegexOptions.Singleline); - // rtf = Regex.Replace(rtf, @"(? 0) - Application.DoEvents(); - } - else - { - WordDoc.KillWordApps(); - Application.DoEvents(); - while (WordDoc.WordProcesses.Length > 0) - Application.DoEvents(); - } - } - catch (Exception ex) - { - Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message); - } - } - private static void DeleteFile(string fName) - { - if (File.Exists(fName)) - File.Delete(fName); - } - private string LoadFileRaw(string fName) - { - try - { - FileInfo file = new FileInfo(fName); - byte[] myBytes = new byte[file.Length]; - using (FileStream fs = file.OpenRead()) - { - fs.Read(myBytes, 0, (int)file.Length); - fs.Close(); - } - StringBuilder sb = new StringBuilder(); - foreach (byte byt in myBytes) - { - int iByte = (int)byt; - sb.Append((char)byt); - } - return sb.ToString(); - } - catch (Exception ex) - { - Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message); - Application.DoEvents(); - return LoadFileRaw(fName); - } - } - private void SaveFile(string str, string fName) - { - FileInfo file = new FileInfo(fName); - using (StreamWriter sw = file.CreateText()) - { - sw.Write(str); - sw.Close(); - } - } - private int SaveWordDoc(string temppath, string stype, string sectName, bool isLandscape) - { - ConfigInfo ci = new ConfigInfo(null); - ci.AddItem("Edit", "Initialized", "true"); - FileInfo myFile = new FileInfo(temppath); - ci.AddItem("History", "OriginalFileName", myFile.Name); - return SaveWordDoc(temppath, String.Empty, stype, isLandscape, ci, sectName, myFile.LastWriteTimeUtc); - } - private int SaveTheDoc(string temppath, string title, ConfigInfo ci, string ascii, DateTime dtsutc) - { - try - { - FileStream fs = File.Open(temppath, FileMode.Open, FileAccess.Read, FileShare.None); - long len = fs.Length + 1; - byte[] ByteArray = new byte[len]; - int nBytesRead = fs.Read(ByteArray, 0, (int)len); - fs.Close(); - string t1 = (title == null || title == "") ? null : title; - using (Document doc = Document.MakeDocument(t1, ByteArray, null, ci == null ? null : ci.ToString(), dtsutc, "Migration", ".Doc")) - { - FileInfo tmpFile = new FileInfo(temppath); - string docfile = temppath.Substring(0, temppath.LastIndexOf(".")) + @".doc"; - if (File.Exists(docfile)) File.Delete(docfile); - FileInfo doctmpFile = tmpFile.CopyTo(docfile); - doc.DocAscii = ascii; - doc.Save(); - File.Delete(docfile); - return doc.DocID; - } - } - // for an io exception, keep trying - catch (IOException exio) - { - Console.WriteLine("IO: {0} - {1}", exio.GetType().Name, exio.Message); - frmMain.AddError(exio, "SaveTheDoc('{0}','{1}')", temppath, title); - Wait(2); - return 0; - } - catch (Exception ex) - { - log.Error("Save Word Doc"); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - frmMain.AddError(ex, "SaveTheDoc('{0}','{1}')", temppath, title); - return -1; - } - - } - private int SaveDoc(string temppath, string title, ConfigInfo ci, string ascii, DateTime dtsutc) - { - int done = 0; - int ntry = 0; - while (done == 0 && ntry < 4) - { - ntry++; - done = SaveTheDoc(temppath, title, ci, ascii, dtsutc); - } - return done; - } - } -} diff --git a/PROMS/DataLoader/ErrorReport.cs b/PROMS/DataLoader/ErrorReport.cs deleted file mode 100644 index 38726b04..00000000 --- a/PROMS/DataLoader/ErrorReport.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Windows.Forms; -using VEPROMS.CSLA.Library; -using Csla.Validation; - -namespace DataLoader -{ - public static class ErrorRpt - { - public static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public static void ErrorReport(IVEHasBrokenRules mybr) - { - string smess = mybr.GetType().Name; - IVEHasBrokenRules hbr = mybr.HasBrokenRules; - if (hbr == null) smess += "\n Unknown Error"; - else - { - smess += "\n In object" + hbr.GetType().Name; - foreach (BrokenRule br in hbr.BrokenRules) - { - smess += "\n" + br.Property + " - " + br.Description; - } - } - //MessageBox.Show(smess); - _MyLog.Error(smess); - } - } -} diff --git a/PROMS/DataLoader/FixItem.cs b/PROMS/DataLoader/FixItem.cs deleted file mode 100644 index 0888b2da..00000000 --- a/PROMS/DataLoader/FixItem.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; - -namespace DataLoader -{ - public class FixItems : List - { - public FixItems(FileInfo myFile):base() - { - if (!myFile.Exists) - return; - FileStream fs = myFile.OpenRead(); - int len = (int) myFile.Length; - byte [] buffer = new byte[len]; - fs.Read(buffer, 0, len); - int offset = 0; - while(offset < len) - { - int lFixItem = (int)(buffer[offset]); - Add(new FixItem(buffer,offset)); - offset += lFixItem + 1; - } - } - } - public class FixItem - { - public FixItem(byte[] buffer, int offset) - { - int lFixItem = (int)(buffer[offset]); - _Section = (char)(buffer[offset + 1]); - _Step = (int)(buffer[offset + 2]); - string str = System.Text.Encoding.GetEncoding(1251).GetString(buffer, offset + 3, lFixItem - 2); - if (str.Contains(" ")) - { - int index = str.IndexOf(" "); - _Sequence = str.Substring(0, index); - _Rev = str.Substring(index + 1); - } - else - _Sequence = str; - } - private char _Section; - public char Section - { - get { return _Section; } - set { _Section = value; } - } - private int _Step; - public int Step - { - get { return _Step; } - set { _Step = value; } - } - private string _Sequence; - public string Sequence - { - get { return _Sequence; } - set { _Sequence = value; } - } - private string _Rev; - public string Rev - { - get { return _Rev; } - set { _Rev = value; } - } - private string _RevDate; - public string RevDate - { - get { return _RevDate; } - set { _RevDate = value; } - } - private string _ReviewDate; - public string ReviewDate - { - get { return _ReviewDate; } - set { _ReviewDate = value; } - } - } -} diff --git a/PROMS/DataLoader/FolderTreeNode.cs b/PROMS/DataLoader/FolderTreeNode.cs deleted file mode 100644 index 92775a14..00000000 --- a/PROMS/DataLoader/FolderTreeNode.cs +++ /dev/null @@ -1,110 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Collections.Generic; -using System.Text; -using VEPROMS.CSLA.Library; -using Csla; -using System.Windows.Forms; - -namespace DataLoader -{ - public class FolderTreeNode : TreeNode - { - FolderTreeNode(string s) : base(s) - { - this.Name="ID:" + s; - } - FolderTreeNode(FolderInfo folderinfo) - : base(folderinfo.Name) - { - _folderinfo = folderinfo; - this.Name = "ID:" + folderinfo.FolderID.ToString(); - } - private FolderInfo _folderinfo; - public FolderInfo FolderInfo - { - get { return _folderinfo; } - set - { - _folderinfo = value; - } - } - private Dictionary _findTree = null; - private Dictionary FindTree - { - get { return _findTree; } - set { _findTree = value; } - } - public FolderTreeNode FindTreeNode(int folderID) - { - if (_findTree != null) return _findTree[folderID]; - return null; - } - public static FolderTreeNode BuildTreeList() - { - FolderTreeNode root = null; - FolderInfoList fil = FolderInfoList.Get(); - Dictionary dicMissing = new Dictionary(); - Dictionary dicExists = new Dictionary(); - foreach (FolderInfo fi in fil) - { - FolderTreeNode ftp = null; - if (dicExists.ContainsKey(fi.ParentID)) - { - ftp = dicExists[fi.ParentID]; - // dicNeedToLoad.Remove(ftp); - } - else - { - if (fi.ParentID != 0) - { - ftp = new FolderTreeNode(fi.ParentID.ToString()); - dicMissing.Add(fi.ParentID, ftp); - dicExists.Add(fi.ParentID, ftp); - if (fi.FolderDocVersionCount > 0) - { - TreeNode tn = new TreeNode("dummy"); - tn.Tag = "dummy"; - ftp.Nodes.Add(tn); - } - } - } - FolderTreeNode ft = null; - if (dicMissing.ContainsKey(fi.FolderID)) - { - ft = dicMissing[fi.FolderID]; - ft.FolderInfo = fi; - dicMissing.Remove(fi.FolderID); - } - else - { - ft = new FolderTreeNode(fi); - if (fi.FolderDocVersionCount > 0) - { - TreeNode tn = new TreeNode("dummy"); - tn.Tag = "dummy"; - ft.Nodes.Add(tn); - } - dicExists.Add(fi.FolderID, ft); - //dicNeedToLoad.Add(ft); - } - ft.Tag = fi; - if (fi.ParentID == 0) - root = ft; - else - ftp.Nodes.Add(ft); - } - root.FindTree = dicExists; - return root; - } - } -} - diff --git a/PROMS/DataLoader/Formats.cs b/PROMS/DataLoader/Formats.cs deleted file mode 100644 index 1a0c13bf..00000000 --- a/PROMS/DataLoader/Formats.cs +++ /dev/null @@ -1,250 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.Xml.XPath; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - public partial class Loader - { - //public string _FmtAllPath; - //public string _GenmacAllPath; - //private FormatInfoList _AllFormats; - - //public FormatInfoList AllFormats - //{ - // get - // { - // if (_AllFormats == null) - // _AllFormats = FormatInfoList.Get(); - // return _AllFormats; - // } - //} - //private Dictionary _LookupFormats; - //public Dictionary LookupFormats - //{ - // get - // { - // if (_LookupFormats == null) - // { - // _LookupFormats = new Dictionary(); - // foreach (FormatInfo myFormat in AllFormats) - // { - // _LookupFormats.Add(myFormat.Name, myFormat.FormatID); - // } - // } - // return _LookupFormats; - // } - //} - //private Format AddFormatToDB(Format parent, string format, bool issub, DateTime Dts, string Userid) - //{ - // string fmtdata = null; - // string genmacdata = null; - // XmlDocument xd = null; - - // //string path = "c:\\development\\fmtall\\" + format + "all.xml"; - // string path = _FmtAllPath + "\\" + format + "all.xml"; - // if (File.Exists(path)) - // { - // try - // { - // StreamReader srf = new StreamReader(path); - // xd = new XmlDocument(); - // xd.Load(srf); - // //xd.Load(path); - // fmtdata = xd.OuterXml; - // } - // catch (Exception ex) - // { - // frmMain.AddError(ex, "AddFormatToDB('{0}','{1}')", parent.Name, path); - // return null; - // } - // } - - // // Do we need genmac - only if non-subformat - // if (!issub) - // { - // //path = "c:\\development\\genmacall\\" + format + ".svg"; - // path = _GenmacAllPath + "\\" + format + ".svg"; - // if (File.Exists(path)) - // { - // try - // { - // StreamReader sr = new StreamReader(path); - // XmlDocument xdg = new XmlDocument(); - // xdg.Load(sr); - // //xdg.Load(path); - // genmacdata = xdg.OuterXml; - // } - // catch (Exception ex) - // { - // frmMain.AddError(ex, "AddFormatToDB('{0}','{1}')", parent.Name, path); - // return null; - // } - // } - // } - // // Get the name & then create the record. - // if (Userid == null || Userid == "") Userid = "Migration"; - - // string nmattr = "Default"; - - // // use xpath to get name. - // if (parent != null) - // { - // XmlNode nmnode = xd.SelectSingleNode("//FormatData"); - // if (nmnode is XmlElement) - // { - // XmlElement xm = (XmlElement)nmnode; - // nmattr = xm.GetAttribute("Name"); - // } - // } - // // use the format name if base or non sub. If it's a sub, remove the "_". - // string fname = issub ? format.Replace("_", "") : format; - // Format rec = null; - // try - // { - // if (!LookupFormats.ContainsKey(fname)) - // { - // rec = Format.MakeFormat(parent, fname, nmattr, fmtdata, genmacdata, Dts, Userid); - // } - // else - // { - // rec = Format.Get(LookupFormats[fname]); - // rec.Data = fmtdata; - // rec.GenMac = genmacdata; - // rec = rec.Save(); - // } - // } - // catch (Exception ex) - // { - // frmMain.AddError(ex, "AddFormatToDB-make format('{0}','{1}')", parent.Name, path); - // } - // return rec; - //} - //public void LoadAllFormats() - //{ - // Format basefmt = null; - // Format parent = null; - - - // // Load base format. - // basefmt = AddFormatToDB(null, "base", false, DateTime.Now, "Migration"); - // if (basefmt == null) return; - // // now loop through all files... If there is an _ in the name, it's a subformat - // // (for example, AEP_00.xml) skip it in main loop, it's handled for each format. - // DirectoryInfo di = new DirectoryInfo(_FmtAllPath); //(@"c:\development\fmtall"); - // FileInfo[] fis = di.GetFiles("*.xml"); - - // foreach (FileInfo fi in fis) - // { - // //if (fi.Name.ToUpper() == "WCN2ALL.XML"|| fi.Name.ToUpper() == "OHLPALL.XML") - // //{ - // bool issub = (fi.Name.IndexOf("_") > 0) ? true : false; - // if (!issub && fi.Name.ToLower() != "baseall.xml") - // { - // string fmtname = fi.Name.Substring(0, fi.Name.Length - 7); - // // remove the all.xml part of the filename. - // try - // { - // parent = AddFormatToDB(basefmt, fmtname, issub, DateTime.Now, "Migration"); - // if (parent != null) - // { - // // now see if there are any subformats associated with this, if so - // // add them here... - // DirectoryInfo sdi = new DirectoryInfo(_FmtAllPath); //("c:\\development\\fmtall"); - // FileInfo[] sfis = di.GetFiles(fmtname + "_*.xml"); - // foreach (FileInfo sfi in sfis) - // { - // string nm = sfi.Name.Substring(0, sfi.Name.Length - 7); - // //Console.WriteLine("Processing {0}", sfi.Name); - // frmMain.Status = string.Format("Processing Format {0}", sfi.Name); - // try - // { - // AddFormatToDB(parent, nm, true, DateTime.Now, "Migration"); - // } - // catch (Exception ex) - // { - // frmMain.AddError(ex, "LoadAllFormats() '{0}'", sfi.Name); - // //Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message); - // } - // } - // } - // } - // catch (Exception ex) - // { - // frmMain.AddError(ex, "LoadAllFormats() '{0}'", fi.Name); - // //Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message); - // } - // } - // //} - // } - //} - public FormatInfo GetFormat(string format) - { - Format parent = null; - Format rec = null; - - // get base - Format baseparent = Format.Get(1); - - // if there is no format - what should be done? maybe nothing. - if (format == null || format == "") return null; - - try - { - if (format.IndexOf(' ') > -1) // will have spaces if it's a user format - { - string part1 = format.Substring(0, format.IndexOf(' ')); - string part2 = null; - try - { - part2 = format.Substring(format.LastIndexOf(' ') + 1, 2); - } - catch - { - } - format = part1 + part2; - - // get the parent format's id (for example, AEP for AEP00). - parent = Format.GetByParentID_Name(baseparent.FormatID, part1); - } - else - parent = baseparent; - - // see if the format has been added, if not go get it. - rec = Format.GetByParentID_Name(parent.FormatID, format); - // JSJ - 02/04/10 this fixes cases where a subformat is no longer available, - // default to the parent format - if (rec == null) - rec = parent; - } - catch (Exception ex) - { - log.ErrorFormat("Error getting xml version of format {0}", ex.Message); - frmMain.AddError(ex, "GetFormat('{0}')", format); - } - FormatInfo recInfo = FormatInfo.Get(rec.FormatID); - return recInfo; - } - - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/Formats.cs.org b/PROMS/DataLoader/Formats.cs.org deleted file mode 100644 index 552d14e8..00000000 --- a/PROMS/DataLoader/Formats.cs.org +++ /dev/null @@ -1,199 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.Xml.XPath; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - public partial class Loader - { - - private Format AddFormatToDB(Format parent, string format, bool issub, DateTime Dts, string Userid) - { - string fmtdata = null; - string genmacdata = null; - XmlDocument xd = null; - - string path = "c:\\development\\fmtall\\" + format + "all.xml"; - if (File.Exists(path)) - { - try - { - StreamReader srf = new StreamReader(path); - xd = new XmlDocument(); - xd.Load(srf); - //xd.Load(path); - fmtdata = xd.OuterXml; - } - catch(Exception ex) - { - frmMain.AddError(ex, "AddFormatToDB('{0}','{1}')", parent.Name, path); - return null; - } - } - - // Do we need genmac - only if non-subformat - if (!issub) - { - path = "c:\\development\\genmacall\\" + format + ".svg"; - if (File.Exists(path)) - { - try - { - StreamReader sr = new StreamReader(path); - XmlDocument xdg = new XmlDocument(); - xdg.Load(sr); - //xdg.Load(path); - genmacdata = xdg.OuterXml; - } - catch (Exception ex) - { - frmMain.AddError(ex, "AddFormatToDB('{0}','{1}')", parent.Name, path); - return null; - } - } - } - // Get the name & then create the record. - if (Userid == null || Userid == "") Userid = "Migration"; - - string nmattr = "Default"; - - // use xpath to get name. - if (parent != null) - { - XmlNode nmnode = xd.SelectSingleNode("//FormatData"); - if (nmnode is XmlElement) - { - XmlElement xm = (XmlElement)nmnode; - nmattr = xm.GetAttribute("Name"); - } - } - // use the format name if base or non sub. If it's a sub, remove the "_". - string fname = issub ? format.Replace("_", "") : format; - Format rec = null; - try - { - rec = Format.MakeFormat(parent, fname, nmattr, fmtdata, genmacdata, Dts, Userid); - } - catch (Exception ex) - { - frmMain.AddError(ex, "AddFormatToDB-make format('{0}','{1}')", parent.Name, path); - } - return rec; - } - public void LoadAllFormats() - { - Format basefmt = null; - Format parent = null; - - // Load base format. - basefmt = AddFormatToDB(null, "base", false, DateTime.Now, "Migration"); - if (basefmt == null) return; - // now loop through all files... If there is an _ in the name, it's a subformat - // (for example, AEP_00.xml) skip it in main loop, it's handled for each format. - DirectoryInfo di = new DirectoryInfo(@"c:\development\fmtall"); - FileInfo[] fis = di.GetFiles("*.xml"); - - foreach (FileInfo fi in fis) - { - bool issub = (fi.Name.IndexOf("_") > 0) ? true : false; - if (!issub && fi.Name.ToLower() != "baseall.xml") - { - string fmtname = fi.Name.Substring(0, fi.Name.Length - 7); - // remove the all.xml part of the filename. - try - { - parent = AddFormatToDB(basefmt, fmtname, issub, DateTime.Now, "Migration"); - if (parent != null) - { - // now see if there are any subformats associated with this, if so - // add them here... - DirectoryInfo sdi = new DirectoryInfo("c:\\development\\fmtall"); - FileInfo[] sfis = di.GetFiles(fmtname + "_*.xml"); - foreach (FileInfo sfi in sfis) - { - string nm = sfi.Name.Substring(0, sfi.Name.Length - 7); - //Console.WriteLine("Processing {0}", sfi.Name); - frmMain.Status = string.Format("Processing Format {0}", sfi.Name); - try - { - AddFormatToDB(parent, nm, true, DateTime.Now, "Migration"); - } - catch (Exception ex) - { - frmMain.AddError(ex, "LoadAllFormats() '{0}'", sfi.Name); - //Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message); - } - } - } - } - catch (Exception ex) - { - frmMain.AddError(ex, "LoadAllFormats() '{0}'", fi.Name); - //Console.WriteLine("{0} - {1}", ex.GetType().Name, ex.Message); - } - } - } - } - public FormatInfo GetFormat(string format) - { - Format parent = null; - Format rec = null; - - // get base - Format baseparent = Format.Get(1); - - // if there is no format - what should be done? maybe nothing. - if (format == null || format == "") return null; - - try - { - if (format.IndexOf(' ') > -1) // will have spaces if it's a user format - { - string part1 = format.Substring(0, format.IndexOf(' ')); - string part2 = format.Substring(format.LastIndexOf(' ') + 1, 2); - format = part1 + part2; - - // get the parent format's id (for example, AEP for AEP00). - parent = Format.GetByParentID_Name(baseparent.FormatID, part1); - } - else - parent = baseparent; - - // see if the format has been added, if not go get it. - rec = Format.GetByParentID_Name(parent.FormatID, format); - // JSJ - 02/04/10 this fixes cases where a subformat is no longer available, - // default to the parent format - if (rec == null) - rec = parent; - } - catch (Exception ex) - { - log.ErrorFormat("Error getting xml version of format {0}", ex.Message); - frmMain.AddError(ex, "GetFormat('{0}')", format); - } - FormatInfo recInfo = FormatInfo.Get(rec.FormatID); - return recInfo; - } - - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/GroupProp.Designer.cs b/PROMS/DataLoader/GroupProp.Designer.cs deleted file mode 100644 index 87548d7f..00000000 --- a/PROMS/DataLoader/GroupProp.Designer.cs +++ /dev/null @@ -1,110 +0,0 @@ -namespace DataLoader -{ - partial class GroupProp - { - /// - /// 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.splitContainer1 = new System.Windows.Forms.SplitContainer(); - this.lbGroups = new System.Windows.Forms.ListBox(); - this.pg = new System.Windows.Forms.PropertyGrid(); - this.btnSave = new System.Windows.Forms.Button(); - this.splitContainer1.Panel1.SuspendLayout(); - this.splitContainer1.Panel2.SuspendLayout(); - this.splitContainer1.SuspendLayout(); - this.SuspendLayout(); - // - // splitContainer1 - // - this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer1.Location = new System.Drawing.Point(0, 0); - this.splitContainer1.Name = "splitContainer1"; - // - // splitContainer1.Panel1 - // - this.splitContainer1.Panel1.Controls.Add(this.lbGroups); - // - // splitContainer1.Panel2 - // - this.splitContainer1.Panel2.Controls.Add(this.pg); - this.splitContainer1.Panel2.Controls.Add(this.btnSave); - this.splitContainer1.Size = new System.Drawing.Size(629, 290); - this.splitContainer1.SplitterDistance = 209; - this.splitContainer1.TabIndex = 0; - // - // lbGroups - // - this.lbGroups.Dock = System.Windows.Forms.DockStyle.Fill; - this.lbGroups.FormattingEnabled = true; - this.lbGroups.Location = new System.Drawing.Point(0, 0); - this.lbGroups.Name = "lbGroups"; - this.lbGroups.Size = new System.Drawing.Size(209, 290); - this.lbGroups.TabIndex = 0; - this.lbGroups.Click += new System.EventHandler(this.lbGroups_Click); - // - // pg - // - this.pg.Dock = System.Windows.Forms.DockStyle.Fill; - this.pg.Location = new System.Drawing.Point(0, 23); - this.pg.Name = "pg"; - this.pg.Size = new System.Drawing.Size(416, 267); - this.pg.TabIndex = 0; - // - // btnSave - // - this.btnSave.Dock = System.Windows.Forms.DockStyle.Top; - this.btnSave.Location = new System.Drawing.Point(0, 0); - this.btnSave.Name = "btnSave"; - this.btnSave.Size = new System.Drawing.Size(416, 23); - this.btnSave.TabIndex = 1; - this.btnSave.Text = "Save"; - this.btnSave.UseVisualStyleBackColor = true; - this.btnSave.Click += new System.EventHandler(this.btnSave_Click); - // - // GroupProp - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(629, 290); - this.Controls.Add(this.splitContainer1); - this.Name = "GroupProp"; - this.Text = "GroupProp"; - this.Load += new System.EventHandler(this.GroupProp_Load); - this.splitContainer1.Panel1.ResumeLayout(false); - this.splitContainer1.Panel2.ResumeLayout(false); - this.splitContainer1.ResumeLayout(false); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.SplitContainer splitContainer1; - private System.Windows.Forms.ListBox lbGroups; - private System.Windows.Forms.PropertyGrid pg; - private System.Windows.Forms.Button btnSave; - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/GroupProp.cs b/PROMS/DataLoader/GroupProp.cs deleted file mode 100644 index 3b467dc3..00000000 --- a/PROMS/DataLoader/GroupProp.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using Csla; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - public partial class GroupProp : Form - { - GroupInfoList glst; - Group grp; - public GroupProp() - { - InitializeComponent(); - } - private void GroupProp_Load(object sender, EventArgs e) - { - lbGroups.Dock = DockStyle.Fill; - glst = GroupInfoList.Get(); - lbGroups.DataSource = glst; - lbGroups.DisplayMember = "GroupName"; - lbGroups.ValueMember = "GID"; - SetGroup(); - } - private void lbGroups_Click(object sender, EventArgs e) - { - SetGroup(); - Console.WriteLine("Group ID = {0}", lbGroups.SelectedValue); - } - private void SetGroup() - { - grp = glst[lbGroups.SelectedIndex].Get(); - pg.SelectedObject = grp; - } - private void btnSave_Click(object sender, EventArgs e) - { - if (!grp.IsSavable) ErrorRpt.ErrorReport(grp); - grp.Save(); - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/GroupProp.resx b/PROMS/DataLoader/GroupProp.resx deleted file mode 100644 index 19dc0dd8..00000000 --- a/PROMS/DataLoader/GroupProp.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/PROMS/DataLoader/LibDoc.cs b/PROMS/DataLoader/LibDoc.cs deleted file mode 100644 index 0bfb131a..00000000 --- a/PROMS/DataLoader/LibDoc.cs +++ /dev/null @@ -1,137 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using Volian.MSWord; -using vlnObjectLibrary; -using vlnServerLibrary; -using Org.Mentalis.Files; - -namespace DataLoader -{ - public partial class Loader - { - - private void MigrateLibDocs(OleDbConnection cn, string pth, bool appending) - { - // MessageBox.Show("Before LibDocs"); - frmMain.AddInfo("Before MigrateLibDocs{0}\r\n{1}", GC.GetTotalMemory(true), VEPROMS.CSLA.Library.CSLACache.UsageAll); - // Get all of the library documents - the first list has the entire list of files - // found within the rtffiles folder, the second list contains usages from the 'tran' - // file. During processing for procedures/sections occurs, the used library documents - // will be migrated. After that, any remaining library documents will be added to - // the section table without a reference from the structuretbl. - Dictionary dicLibDocSect = new Dictionary(); - VEPROMS.CSLA.Library.DocumentInfoList docList = VEPROMS.CSLA.Library.DocumentInfoList.Get(); - frmMain.UpdateLabelsLibDocs(0, 0); - if (Directory.Exists(pth + "\\rtffiles")) - { - DirectoryInfo di = new DirectoryInfo(pth + "\\RTFFILES"); - FileInfo[] fis = di.GetFiles("DOC_*.LIB"); - frmMain.UpdateLabelsSetProc(fis.Length); - foreach (FileInfo fi in fis) - { - string fName = fi.Name.Substring(0, 8).ToUpper(); - frmMain.UpdateLabelsLibDocs(1, 0); - if (appending) - { - foreach (VEPROMS.CSLA.Library.DocumentInfo docInfo in docList) - { - if(docInfo.Config.Contains(string.Format("\"{0}.LIB\"", fName))) - dicLibDocSect[fName] = docInfo.DocID; - } - } - else - dicLibDocSect[fName] = MigrateLibDoc(fi); - } - } - dicLibDocRef = new Dictionary(); - OleDbDataAdapter da_doc = new OleDbDataAdapter("select [FROMNUMBER], [FROMSEQUEN], [TONUMBER] from [tran] where [TONUMBER] LIKE 'doc_%' or [TONUMBER] like 'DOC_%'", cn); - DataSet ds_doc = new DataSet(); - da_doc.Fill(ds_doc); - frmMain.UpdateLabelsSetSect(ds_doc.Tables[0].Rows.Count); - foreach (DataRow dr_doc in ds_doc.Tables[0].Rows) - { - frmMain.UpdateLabelsLibDocs(0, 1); - string key = dr_doc["FROMNUMBER"].ToString().PadRight(20) + TextConvert.ConvertSeq(dr_doc["FROMSEQUEN"].ToString()).PadRight(10); - if (!dicLibDocSect.ContainsKey(dr_doc["TONUMBER"].ToString().ToUpper())) - log.ErrorFormat("Error setting library document references: {0}", dr_doc["TONUMBER"].ToString().ToUpper()); - else - dicLibDocRef[key] = dicLibDocSect[dr_doc["TONUMBER"].ToString().ToUpper()]; - } - da_doc.Dispose(); - frmMain.AddInfo("After MigrateLibDocs{0}\r\n{1}", GC.GetTotalMemory(true), VEPROMS.CSLA.Library.CSLACache.UsageAll); - // MessageBox.Show("After LibDocs"); - } - private int MigrateLibDoc(FileInfo fi) - { - ConfigInfo ci = new ConfigInfo(null); - string title = null; // for docname, remove the '.lib', i.e. substring(0,8) - ci.AddItem("Edit", "Initialized", "true"); - ci.AddItem("History", "OriginalFileName", fi.Name); - string tmpRtfFileName = GetLibDocData(fi, ci, ref title); - int Docid = SaveWordDoc(tmpRtfFileName, title, null, false, ci, string.Empty,fi.LastWriteTimeUtc); - File.Delete(tmpRtfFileName); - return Docid; - } - private string LoadFromLib(BinaryReader br) - { - int nchar = br.ReadInt16(); - if (nchar > 0) - { - string tmp = new string(br.ReadChars(nchar)); - return tmp.Substring(0, tmp.Length - 1); // remove null at end. - } - return null; - } - private string GetLibDocData(FileInfo fi, ConfigInfo ci, ref string title) - { - title = null; - // get the number, title, etc from the file. - // use the path to open the file & read the title & comment - DateTime dts = fi.LastWriteTimeUtc; - FileStream fs = fi.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite); - BinaryReader br = new BinaryReader(fs, System.Text.ASCIIEncoding.ASCII); - string tmpRtfFileName = Path.GetTempFileName(); - FileStream tmpfile = new FileStream(tmpRtfFileName, FileMode.Create); - BinaryWriter bw = new BinaryWriter(tmpfile, System.Text.Encoding.ASCII); - int cntPage = br.ReadInt16(); - if (cntPage != -1) - { // Not End of File - ci.AddItem("Section", "NumPages", cntPage.ToString()); - string ldtitle = LoadFromLib(br); - if (ldtitle != null && ldtitle != "") title = ldtitle; - ci.AddItem("LibDoc", "Comment", LoadFromLib(br)); - long l = br.BaseStream.Length - br.BaseStream.Position; - byte[] buf = new byte[l]; - br.Read(buf, 0, (int)l); - bw.Write(buf, 0, (int)l); - br.Close(); - fs.Close(); - bw.Close(); - tmpfile.Close(); - WaitMS(wms); // give it some time to close the tempfile before adding section - File.SetLastWriteTimeUtc(tmpRtfFileName, dts); - } - return tmpRtfFileName; - } - } - -} \ No newline at end of file diff --git a/PROMS/DataLoader/LibDoc.cs.bak b/PROMS/DataLoader/LibDoc.cs.bak deleted file mode 100644 index 1b37f99d..00000000 --- a/PROMS/DataLoader/LibDoc.cs.bak +++ /dev/null @@ -1,122 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using Volian.MSWord; -using vlnObjectLibrary; -using vlnServerLibrary; -using Org.Mentalis.Files; - -namespace DataLoader -{ - public partial class Loader - { - - private void MigrateLibDocs(OleDbConnection cn, string pth) - { - // Get all of the library documents - the first list has the entire list of files - // found within the rtffiles folder, the second list contains usages from the 'tran' - // file. During processing for procedures/sections occurs, the used library documents - // will be migrated. After that, any remaining library documents will be added to - // the section table without a reference from the structuretbl. - Dictionary dicLibDocSect = new Dictionary(); - frmMain.UpdateLabelsLibDocs(0, 0); - if (Directory.Exists(pth + "\\rtffiles")) - { - DirectoryInfo di = new DirectoryInfo(pth + "\\RTFFILES"); - FileInfo[] fis = di.GetFiles("DOC_*.LIB"); - frmMain.UpdateLabelsSetProc(fis.Length); - foreach (FileInfo fi in fis) - { - frmMain.UpdateLabelsLibDocs(1, 0); - dicLibDocSect[fi.Name.Substring(0, 8).ToUpper()] = MigrateLibDoc(fi); - } - } - dicLibDocRef = new Dictionary(); - OleDbDataAdapter da_doc = new OleDbDataAdapter("select [FROMNUMBER], [FROMSEQUEN], [TONUMBER] from [tran] where [TONUMBER] LIKE 'doc_%' or [TONUMBER] like 'DOC_%'", cn); - DataSet ds_doc = new DataSet(); - da_doc.Fill(ds_doc); - frmMain.UpdateLabelsSetSect(ds_doc.Tables[0].Rows.Count); - foreach (DataRow dr_doc in ds_doc.Tables[0].Rows) - { - frmMain.UpdateLabelsLibDocs(0, 1); - string key = dr_doc["FROMNUMBER"].ToString().PadRight(20) + dr_doc["FROMSEQUEN"].ToString().PadRight(10); - if (!dicLibDocSect.ContainsKey(dr_doc["TONUMBER"].ToString().ToUpper())) - log.ErrorFormat("Error setting library document references: {0}", dr_doc["TONUMBER"].ToString().ToUpper()); - else - dicLibDocRef[key] = dicLibDocSect[dr_doc["TONUMBER"].ToString().ToUpper()]; - } - da_doc.Dispose(); - } - private int MigrateLibDoc(FileInfo fi) - { - ConfigInfo ci = new ConfigInfo(null); - string title = null; // for docname, remove the '.lib', i.e. substring(0,8) - DateTime dts = DateTime.Now; - ci.AddItem("Edit", "Initialized", "true"); - string tmpRtfFileName = GetLibDocData(fi, ci, ref title); - int Docid = SaveWordDoc(tmpRtfFileName, title, null, ci, string.Empty); - File.Delete(tmpRtfFileName); - return Docid; - } - private string LoadFromLib(BinaryReader br) - { - int nchar = br.ReadInt16(); - if (nchar > 0) - { - string tmp = new string(br.ReadChars(nchar)); - return tmp.Substring(0, tmp.Length - 1); // remove null at end. - } - return null; - } - private string GetLibDocData(FileInfo fi, ConfigInfo ci, ref string title) - { - title = null; - // get the number, title, etc from the file. - // use the path to open the file & read the title & comment - DateTime dts = fi.LastWriteTimeUtc; - FileStream fs = fi.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite); - BinaryReader br = new BinaryReader(fs, System.Text.ASCIIEncoding.ASCII); - string tmpRtfFileName = Path.GetTempFileName(); - FileStream tmpfile = new FileStream(tmpRtfFileName, FileMode.Create); - BinaryWriter bw = new BinaryWriter(tmpfile, System.Text.Encoding.ASCII); - int cntPage = br.ReadInt16(); - if (cntPage != -1) - { // Not End of File - ci.AddItem("Section", "NumPages", cntPage.ToString()); - string ldtitle = LoadFromLib(br); - if (ldtitle != null && ldtitle != "") title = ldtitle; - ci.AddItem("LibDoc", "Comment", LoadFromLib(br)); - long l = br.BaseStream.Length - br.BaseStream.Position; - byte[] buf = new byte[l]; - br.Read(buf, 0, (int)l); - bw.Write(buf, 0, (int)l); - br.Close(); - fs.Close(); - bw.Close(); - tmpfile.Close(); - WaitMS(wms); // give it some time to close the tempfile before adding section - File.SetLastWriteTimeUtc(tmpRtfFileName, dts); - } - return tmpRtfFileName; - } - } - -} \ No newline at end of file diff --git a/PROMS/DataLoader/LoadConfig.cs b/PROMS/DataLoader/LoadConfig.cs deleted file mode 100644 index 2b371cdd..00000000 --- a/PROMS/DataLoader/LoadConfig.cs +++ /dev/null @@ -1,243 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; - -namespace Config -{ - public class ConfigFile - { - #region Log4Net - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - #endregion - #region MigrateStrings - // the following lists are used for storing the element and attribute names - // for migrating of ini & cfg files. The names stored in these lists are - // those that should be migrated. If not in this list, the data (either element - // or attribute name) is prefaced with a 'z'. At some point in the future, those - // names with a 'z' will be removed. - public List listIni_EleName = new List(); - public List listIni_AttrName = new List(); - private void SetIniEleName() - { - // veproms.ini - listIni_EleName.Add("graphics"); - listIni_EleName.Add("color"); - listIni_EleName.Add("print"); - listIni_EleName.Add("startup"); - listIni_EleName.Add("data integrity"); - listIni_EleName.Add("wordprocessor"); - listIni_EleName.Add("procedurelisttabstops"); - - // proc.ini - listIni_EleName.Add("rodefaults"); - listIni_EleName.Add("display"); - listIni_EleName.Add("backgrounddefaults"); - listIni_EleName.Add("unit"); - listIni_EleName.Add("applicability"); - listIni_EleName.Add("procedureset"); - - // roapp.ini - listIni_EleName.Add("roapp"); - - // .cfg - listIni_EleName.Add("spelldictionary"); - // listIni_EleName.Add("wordprocessor"); - already in here. - } - - private void SetIniAttrName() - { - //veproms.ini - listIni_AttrName.Add("defaultext"); - listIni_AttrName.Add("ro"); - listIni_AttrName.Add("editbackground"); - listIni_AttrName.Add("black"); - listIni_AttrName.Add("blue"); - listIni_AttrName.Add("green"); - listIni_AttrName.Add("cyan"); - listIni_AttrName.Add("red"); - listIni_AttrName.Add("magenta"); - listIni_AttrName.Add("brown"); - listIni_AttrName.Add("lightgray"); - listIni_AttrName.Add("darkgray"); - listIni_AttrName.Add("ligthblue"); - listIni_AttrName.Add("lightgreen"); - listIni_AttrName.Add("lightcyan"); - listIni_AttrName.Add("lightred"); - listIni_AttrName.Add("lightmagenta"); - listIni_AttrName.Add("yellow"); - listIni_AttrName.Add("white"); - listIni_AttrName.Add("underlinewidth"); - listIni_AttrName.Add("verticalOffset"); - listIni_AttrName.Add("strokewidth"); - listIni_AttrName.Add("strokewidthbold"); - listIni_AttrName.Add("messageboxtitle"); - listIni_AttrName.Add("messagefile"); - listIni_AttrName.Add("enableindexcheck"); - listIni_AttrName.Add("wordwrap"); - listIni_AttrName.Add("procedurenumbertab"); - listIni_AttrName.Add("proceduretitletab"); - - // proc.ini - listIni_AttrName.Add("setpoint"); - listIni_AttrName.Add("graphics"); - listIni_AttrName.Add("ropath"); - listIni_AttrName.Add("display"); - listIni_AttrName.Add("sectiontitle"); - listIni_AttrName.Add("sectionnumber"); - listIni_AttrName.Add("number"); - listIni_AttrName.Add("othernumber"); - listIni_AttrName.Add("name"); - listIni_AttrName.Add("othername"); - listIni_AttrName.Add("text"); - listIni_AttrName.Add("othertext"); - listIni_AttrName.Add("id"); - listIni_AttrName.Add("otherid"); - listIni_AttrName.Add("procedurenumber"); - listIni_AttrName.Add("masterdir"); - - - // roapp.ini - listIni_AttrName.Add("extention"); // NOTE MIS-SPELLING was in 16-bit program! - - // .cfg - listIni_AttrName.Add("custom"); - listIni_AttrName.Add("page"); - listIni_AttrName.Add("toolbar"); - listIni_AttrName.Add("paragraph"); - listIni_AttrName.Add("ruler"); - listIni_AttrName.Add("userphone1"); - listIni_AttrName.Add("userphone2"); - listIni_AttrName.Add("userloc1"); - listIni_AttrName.Add("userloc2"); - } - #endregion - #region LoadDataCode - public ConfigFile() - { - } - public void LoadUsrCfg(User user, string vepromspath) - { - string cfgpath = vepromspath + "\\config"; - if (!Directory.Exists(cfgpath)) - { - log.Info("No user cfgs found in config directory - did not migrate any user cfgs"); - return; - } - DirectoryInfo di = new DirectoryInfo(cfgpath); - FileInfo[] fis = di.GetFiles("*.cfg"); - - foreach (FileInfo fi in fis) - { - string cfgname = fi.Name.Substring(0, fi.Name.IndexOf(".")); - if (cfgname.ToUpper() == user.UserID.ToUpper()) - { - // Get Users table fields by reading the cfg file into a buffer & looking - // for the UserNetworkId and UserName fields. - StreamReader myReader = new StreamReader(fi.FullName); - string sLine; - string UserLogin = null; - string UserName = null; - int indx = -1; - while ((sLine = myReader.ReadLine()) != null && (UserLogin == null || UserName == null)) - { - if (sLine.Length > 0 && sLine.Substring(0, 1) != ";") - { - if ((indx = sLine.ToLower().IndexOf("usernetworkid")) >= 0) - { - indx = sLine.IndexOf("=", indx + 13); - UserLogin = sLine.Substring(indx + 1, sLine.Length - indx - 1).Trim(); - } - else if ((indx = sLine.ToLower().IndexOf("username")) >= 0) - { - indx = sLine.IndexOf("=", indx + 8); - UserName = sLine.Substring(indx + 1, sLine.Length - indx - 1).Trim(); - } - } - } - myReader.Close(); - - // get the xml to set the config field - XmlDocument d = IniToXml(fi.FullName); - user.Config = d == null ? null : d.InnerXml; - user.UserLogin = UserLogin; - user.UserName = UserName; - user.CFGName = cfgname; - break; - } - } - } - - public XmlDocument LoadSystemIni(string vepromspath) - { - string inipath = vepromspath + "\\veproms.ini"; - if (!File.Exists(inipath)) - { - log.InfoFormat("Did not migrate {0} - file not found", inipath); - return null; - } - XmlDocument d = IniToXml(inipath); - // see if default image file extension was set, if not make it TIF - XmlNode gr = d.SelectSingleNode("//Graphics"); - XmlNode ext = null; - if (gr != null) ext = gr.SelectSingleNode("@defaultext"); - if (ext == null) - { - // if the graphics node doesn't exist, make it. - if (gr == null) - { - gr = d.CreateElement("Graphics"); - d.DocumentElement.AppendChild(gr); - } - XmlAttribute xa = d.CreateAttribute("defaultext"); - xa.Value = "TIF"; - gr.Attributes.Append(xa); - } - return d; - } - - public XmlDocument LoadRoAppIni(string ropath) - { - string inipath = ropath + "\\roapp.ini"; - // not an error if it does not exist - just return null. - if (!File.Exists(inipath)) return null; - - XmlDocument d = IniToXml(inipath); - - return d; - } - - public XmlDocument IniToXml(string path) - { - FileInfo fi = new FileInfo(path); - if (fi.Exists) - { - PrivateProfile ppCfg; - if (listIni_AttrName == null || listIni_AttrName.Count == 0) SetIniAttrName(); - if (listIni_EleName == null || listIni_EleName.Count == 0) SetIniEleName(); - ppCfg = new PrivateProfile(path, listIni_EleName, listIni_AttrName); - return ppCfg.XML(); - } - return null; - } - #endregion - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/LoadTreeDB.cs b/PROMS/DataLoader/LoadTreeDB.cs deleted file mode 100644 index fd7f9b43..00000000 --- a/PROMS/DataLoader/LoadTreeDB.cs +++ /dev/null @@ -1,392 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; -using vlnObjectLibrary; -using vlnServerLibrary; -using Org.Mentalis.Files; -using Config; -using Utils; - -namespace DataLoader -{ - public partial class Loader - { - private static List _DataPaths = null; - public static List DataPaths - { - get - { - if (_DataPaths == null) - { - _DataPaths = new List(); - string sCfg = Environment.GetEnvironmentVariable("veconfig"); - IniReader cfg = new IniReader(sCfg); - // Get DataPath - string sDP = cfg.ReadString("menu", "DataPath"); - // Split DataPath into directories - // Get the current list of folders so that if it already exists, just get the 'Folder', otherwise - // make it. It was done this way because there was no way to get the Folder given a name/Title. - foreach (string s1 in sDP.Split(";".ToCharArray())) - { - if (s1.Length > 0) - { - string[] s2 = s1.Split(",".ToCharArray()); - _DataPaths.Add( s2[0]); - } - } - } - return Loader._DataPaths; - } - } - public List vlnDataPathFolders() // was vlnDataPath - { - List dpf = new List(); - // Get path to config file - string sCfg = Environment.GetEnvironmentVariable("veconfig"); - IniReader cfg = new IniReader(sCfg); - // Get DataPath - string sDP = cfg.ReadString("menu", "DataPath"); - // Split DataPath into directories - - // Get the current list of folders so that if it already exists, just get the 'Folder', otherwise - // make it. It was done this way because there was no way to get the Folder given a name/Title. - FolderInfoList fil = FolderInfoList.Get(); - - foreach (string s1 in sDP.Split(";".ToCharArray())) - { - if (s1.Length > 0) - { - string[] s2 = s1.Split(",".ToCharArray()); - Folder fld = GetFolderFromName(s2[1], s2[0], fil); - if (fld == null) - fld = Folder.MakeFolder(sysFolder, dbConn, s2[1], s2[0], FolderName(s2[0]), null, null, DateTime.Now, "Migration"); - dpf.Add(fld); - } - } - return dpf; - } - private Folder GetFolderFromName(string name, string title, FolderInfoList fil) - { - Folder fld = null; - foreach (FolderInfo fi in fil) - { - string fi_Title = fi.Title.TrimEnd('\\'); - //if (fi.Name.ToUpper() == name.ToUpper() && fi.Title.ToUpper() == title.ToUpper()) - if (fi.Name.ToUpper() == name.ToUpper() && fi_Title.ToUpper() == title.ToUpper()) - { - fld = Folder.Get(fi.FolderID); - return fld; - } - } - return null; - } - private string FolderName(string Path) - { - int ind = Path.LastIndexOf("\\"); - if (ind == Path.Length-1 || ind < 0) return Path; - return Path.Substring(ind + 1); - } - private DocVersion GetDocVersionFromName(Folder fld, string f) - { - DocVersion dv = null; - DocVersionInfoList dvil = DocVersionInfoList.GetByFolderID(fld.FolderID); - foreach (DocVersionInfo dvi in dvil) - { - if (dvi.Name.ToUpper() == f.ToUpper()) - { - dv = DocVersion.Get(dvi.VersionID); - return dv; - } - } - return null; - } - private object cslaObject(vlnObject vb, Connection dbConn, Object parfld, TreeNode tn) - { - switch (vb.Type) - { - case "plant": - case "set": - // if folder exists... get the Folder object, otherwise create it. - FolderInfoList fil = FolderInfoList.Get(); - Folder fld = GetFolderFromName(vb.Title, vb.Path, fil); - if (fld==null) fld = Folder.MakeFolder((Folder)parfld, dbConn, vb.Title, vb.Path, FolderName(vb.Path), null, null, DateTime.Now, "Migration"); - tn.Tag = fld; - return (object) fld; - case "version": - // see if version exists for the input folder, parfld. - DocVersion v = GetDocVersionFromName((Folder)parfld, vb.Title); - if (v == null) - { - ConfigFile cfg = new ConfigFile(); - - XmlDocument d = cfg.IniToXml(vb.Path + "\\proc.ini"); - AddSlaveUnits(d, vb.Path); - if (frmMain.ProcessFailed) - return null; - //DocVersionConfig fld_cfg = new DocVersionConfig(d == null ? "" : d.InnerXml); - FolderConfig fld_cfg = (d==null)?null:new FolderConfig(d.InnerXml); - // translate curset.dat into xml & add to d (somehow). - string csfile = string.Format("{0}\\curset.dat",vb.Path); - string defPlantFmt = null; - if (File.Exists(csfile)) - { - CurSet cs = new CurSet(csfile); - try - { - if (fld_cfg == null) fld_cfg = new FolderConfig(); - fld_cfg = cs.Convert(fld_cfg); - defPlantFmt = cs.GetDefFmt(); - } - catch (Exception ex) - { - log.ErrorFormat("error in convert curset.dat, ex = {0}", ex.Message); - frmMain.AddError(ex, "error in convert curset.dat"); - } - } - // *** RHM 20120613 - Fix - // *** This was naming the DocVersion to the folder name - //string titlepath = vb.Path + "\\" + "Title"; - //FileInfo fi = new FileInfo(titlepath); - //string thetitle = vb.Title; - //if (File.Exists(titlepath)) - //{ - // StreamReader myReader = new StreamReader(titlepath); - // thetitle = myReader.ReadLine(); - // myReader.Close(); - //} - Folder tmpfld = (Folder)parfld; - FormatInfo format = null; - if (defPlantFmt != null && defPlantFmt != "") - { - format = GetFormat(defPlantFmt); - } - else - format = FormatInfo.Get(1); - - using(Format fmt = format.Get()) - v = DocVersion.MakeDocVersion(tmpfld, (int)DocVersionType(vb.Path.ToLower()), vb.Title, vb.Path.ToLower(), null, fmt, fld_cfg == null ? null : fld_cfg.ToString(), DateTime.Now, "Migration"); - } - tn.Tag = v; - MigrateDocVersion(v, false); - return (object)v; - } - return 0; - } - - private void AddSlaveUnits(XmlDocument d, string path) - { - string masterDir = GetMasterDir(d); - if (masterDir == null) - { - //not a master slave procedure set - return; - } - DirectoryInfo master = new DirectoryInfo(path); - if (master.Name.ToUpper() != masterDir.ToUpper()) return; - List names = GetUnitNames(d); - if (names == null) - { - frmMain.ProcessFailed = true; - MessageBox.Show("Could not find Unit names in slave proc.ini files"); - frmMain.MyError = "Could not find Unit names in slave proc.ini files"; - return; - } - DirectoryInfo[] slaves = master.Parent.GetDirectories(masterDir.ToUpper().Replace(".PRC",".SL*")); - XmlDocument units = new XmlDocument(); - units.LoadXml(""); - int idx = 0; - foreach (DirectoryInfo slave in slaves) - { - FileInfo[] inis = slave.GetFiles("proc.ini"); - if (inis.Length > 0) - { - FileInfo ini = inis[0]; - ConfigFile cfg = new ConfigFile(); - XmlDocument xSlave = cfg.IniToXml(ini.FullName); - xSlave.LoadXml(xSlave.OuterXml.Replace(" GetUnitNames(XmlDocument d) - { - XmlNode zapp = GetXMLNode(d, "Unit");// d.SelectSingleNode("//Unit"); - if (zapp == null) return null; - XmlNode zmstr = GetXMLAttribute(zapp, "Name");// zapp.Attributes.GetNamedItem("Name"); - if (zmstr == null) return null; - string[] names = zmstr.InnerText.Split(",".ToCharArray()); - return new List(names); - } - - private static string GetMasterDir(XmlDocument d) - { - XmlNode zapp = GetXMLNode(d, "Applicability");// d.SelectSingleNode("//Applicability"); - if (zapp == null) return null; - XmlNode zmstr = GetXMLAttribute(zapp, "MasterDir");// zapp.Attributes.GetNamedItem("MasterDir"); - if (zmstr == null) return null; - return zmstr.InnerText; - } - private string _OnlyThisFolder; - public string OnlyThisFolder - { - get - { - if (_OnlyThisFolder == null) - { - if (frmMain.MySettings.OnlyThisSet || frmMain.Automatic) - { - DirectoryInfo dir = new DirectoryInfo(frmMain.ProcedureSetPath); - if (frmMain.Automatic) - _OnlyThisFolder = dir.FullName.ToUpper(); - else - _OnlyThisFolder = dir.Parent.FullName.ToUpper(); - } - else if ((frmMain.MySettings.ProcessOnlyInLocation ?? "") != "") - _OnlyThisFolder = frmMain.MySettings.ProcessOnlyInLocation.ToUpper(); - else - _OnlyThisFolder = ""; - } - return _OnlyThisFolder; - } - } - private bool IsInSelectedPlantData(Object parent) - { - if (OnlyThisFolder == "") - return true; - Folder fld = parent as Folder; - if (fld == null) - return true; - if (fld.MyParent.MyParent != null) - return true; - if (fld.Title.ToUpper() == OnlyThisFolder) - return true; - return false; - } - private void MigrateChildren(vlnObject vb, vlnServer vs, Connection dbConn, Object parent, TreeNode tn) - { - if (vb.Type != "version") - { - vb.LoadChildren(vs.GetChildren(vb.ToString())); - List lv = vb.Children; - if (vb.Children.Count == 0) - frmMain.AddError("No children found for {0}", vb.Path); - foreach (vlnObject vbc in lv) - { - if (vbc.Path.ToUpper().StartsWith(OnlyThisFolder) || OnlyThisFolder.StartsWith(vbc.Path.ToUpper())) - { - TreeNode tnc = tn.Nodes.Add(vbc.Title); - object idc = cslaObject(vbc, dbConn, parent, tnc); - if (frmMain.ProcessFailed) - return; - frmMain.Status = "Loading " + vbc.Title; - MigrateChildren(vbc, vs, dbConn, idc, tnc); - frmMain.ChildrenProcessed++; - } - } - } - frmMain.Status = " "; - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/LoadTreeDB.cs.bak b/PROMS/DataLoader/LoadTreeDB.cs.bak deleted file mode 100644 index c58ba470..00000000 --- a/PROMS/DataLoader/LoadTreeDB.cs.bak +++ /dev/null @@ -1,284 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; -using vlnObjectLibrary; -using vlnServerLibrary; -using Org.Mentalis.Files; -using Config; -using Utils; - -namespace DataLoader -{ - public partial class Loader - { - private List vlnDataPathFolders() // was vlnDataPath - { - List dpf = new List(); - // Get path to config file - string sCfg = Environment.GetEnvironmentVariable("veconfig"); - IniReader cfg = new IniReader(sCfg); - // Get DataPath - string sDP = cfg.ReadString("menu", "DataPath"); - // Split DataPath into directories - - // Get the current list of folders so that if it already exists, just get the 'Folder', otherwise - // make it. It was done this way because there was no way to get the Folder given a name/Title. - FolderInfoList fil = FolderInfoList.Get(); - - foreach (string s1 in sDP.Split(";".ToCharArray())) - { - if (s1.Length > 0) - { - string[] s2 = s1.Split(",".ToCharArray()); - Folder fld = GetFolderFromName(s2[1], s2[0], fil); - if (fld == null) - fld = Folder.MakeFolder(sysFolder, dbConn, s2[1], s2[0], FolderName(s2[0]), null, null, DateTime.Now, "Migration"); - dpf.Add(fld); - } - } - return dpf; - } - private Folder GetFolderFromName(string name, string title, FolderInfoList fil) - { - Folder fld = null; - foreach (FolderInfo fi in fil) - { - if (fi.Name.ToUpper() == name.ToUpper() && fi.Title.ToUpper() == title.ToUpper()) - { - fld = Folder.Get(fi.FolderID); - return fld; - } - } - return null; - } - private string FolderName(string Path) - { - int ind = Path.LastIndexOf("\\"); - if (ind == Path.Length-1 || ind < 0) return Path; - return Path.Substring(ind + 1); - } - private DocVersion GetDocVersionFromName(Folder fld, string f) - { - DocVersion dv = null; - DocVersionInfoList dvil = DocVersionInfoList.GetByFolderID(fld.FolderID); - foreach (DocVersionInfo dvi in dvil) - { - if (dvi.Name.ToUpper() == f.ToUpper()) - { - dv = DocVersion.Get(dvi.VersionID); - return dv; - } - } - return null; - } - private object cslaObject(vlnObject vb, Connection dbConn, Object parfld, TreeNode tn) - { - switch (vb.Type) - { - case "plant": - case "set": - // if folder exists... get the Folder object, otherwise create it. - FolderInfoList fil = FolderInfoList.Get(); - Folder fld = GetFolderFromName(vb.Title, vb.Path, fil); - if (fld==null) fld = Folder.MakeFolder((Folder)parfld, dbConn, vb.Title, vb.Path, FolderName(vb.Path), null, null, DateTime.Now, "Migration"); - tn.Tag = fld; - return (object) fld; - case "version": - // see if version exists for the input folder, parfld. - DocVersion v = GetDocVersionFromName((Folder)parfld, vb.Title); - if (v == null) - { - ConfigFile cfg = new ConfigFile(); - - XmlDocument d = cfg.IniToXml(vb.Path + "\\proc.ini"); - AddSlaveUnits(d, vb.Path); - //DocVersionConfig fld_cfg = new DocVersionConfig(d == null ? "" : d.InnerXml); - FolderConfig fld_cfg = (d==null)?null:new FolderConfig(d.InnerXml); - // translate curset.dat into xml & add to d (somehow). - string csfile = string.Format("{0}\\curset.dat",vb.Path); - string defPlantFmt = null; - if (File.Exists(csfile)) - { - CurSet cs = new CurSet(csfile); - try - { - if (fld_cfg == null) fld_cfg = new FolderConfig(); - fld_cfg = cs.Convert(fld_cfg); - defPlantFmt = cs.GetDefFmt(); - } - catch (Exception ex) - { - log.ErrorFormat("error in convert curset.dat, ex = {0}", ex.Message); - frmMain.AddError(ex, "error in convert curset.dat"); - } - } - // *** RHM 20120613 - Fix - // *** This was naming the DocVersion to the folder name - //string titlepath = vb.Path + "\\" + "Title"; - //FileInfo fi = new FileInfo(titlepath); - //string thetitle = vb.Title; - //if (File.Exists(titlepath)) - //{ - // StreamReader myReader = new StreamReader(titlepath); - // thetitle = myReader.ReadLine(); - // myReader.Close(); - //} - Folder tmpfld = (Folder)parfld; - FormatInfo format = null; - if (defPlantFmt != null && defPlantFmt != "") - { - format = GetFormat(defPlantFmt); - } - else - format = FormatInfo.Get(1); - - using(Format fmt = format.Get()) - v = DocVersion.MakeDocVersion(tmpfld, (int)DocVersionType(vb.Path.ToLower()), vb.Title, vb.Path.ToLower(), null, fmt, fld_cfg == null ? null : fld_cfg.ToString(), DateTime.Now, "Migration"); - } - tn.Tag = v; - MigrateDocVersion(v, false); - return (object)v; - } - return 0; - } - - private void AddSlaveUnits(XmlDocument d, string path) - { - string masterDir = GetMasterDir(d); - if (masterDir == null) return; - DirectoryInfo master = new DirectoryInfo(path); - if (master.Name.ToUpper() != masterDir.ToUpper()) return; - List names = GetUnitNames(d); - DirectoryInfo[] slaves = master.Parent.GetDirectories(masterDir.ToUpper().Replace(".PRC",".SL*")); - XmlDocument units = new XmlDocument(); - units.LoadXml(""); - int idx = 0; - foreach (DirectoryInfo slave in slaves) - { - FileInfo[] inis = slave.GetFiles("proc.ini"); - if (inis.Length > 0) - { - FileInfo ini = inis[0]; - ConfigFile cfg = new ConfigFile(); - XmlDocument xSlave = cfg.IniToXml(ini.FullName); - xSlave.LoadXml(xSlave.OuterXml.Replace(" GetUnitNames(XmlDocument d) - { - XmlNode zapp = d.SelectSingleNode("//Unit"); - if (zapp == null) return null; - XmlNode zmstr = zapp.Attributes.GetNamedItem("Name"); - if (zmstr == null) return null; - string[] names = zmstr.InnerText.Split(",".ToCharArray()); - return new List(names); - } - - private static string GetMasterDir(XmlDocument d) - { - XmlNode zapp = d.SelectSingleNode("//Applicability"); - if (zapp == null) return null; - XmlNode zmstr = zapp.Attributes.GetNamedItem("MasterDir"); - if (zmstr == null) return null; - return zmstr.InnerText; - } - private string _OnlyThisFolder; - public string OnlyThisFolder - { - get - { - if (_OnlyThisFolder == null) - { - if (frmMain.MySettings.OnlyThisSet) - { - DirectoryInfo dir = new DirectoryInfo(frmMain.MySettings.ProcedureSetPath); - _OnlyThisFolder = dir.Parent.FullName.ToUpper(); - } - else - _OnlyThisFolder = ""; - } - return _OnlyThisFolder; - } - } - private bool IsInSelectedPlantData(Object parent) - { - if (OnlyThisFolder == "") - return true; - Folder fld = parent as Folder; - if (fld == null) - return true; - if (fld.MyParent.MyParent != null) - return true; - if (fld.Title.ToUpper() == OnlyThisFolder) - return true; - return false; - } - private void MigrateChildren(vlnObject vb, vlnServer vs, Connection dbConn, Object parent, TreeNode tn) - { - if (vb.Type != "version") - { - vb.LoadChildren(vs.GetChildren(vb.ToString())); - List lv = vb.Children; - foreach (vlnObject vbc in lv) - { - if (vbc.Path.ToUpper().StartsWith(OnlyThisFolder) || OnlyThisFolder.StartsWith(vbc.Path.ToUpper())) - { - TreeNode tnc = tn.Nodes.Add(vbc.Title); - object idc = cslaObject(vbc, dbConn, parent, tnc); - frmMain.Status = "Loading " + vbc.Title; - MigrateChildren(vbc, vs, dbConn, idc, tnc); - } - } - } - frmMain.Status = " "; - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/LoadTreeNh.cs b/PROMS/DataLoader/LoadTreeNh.cs deleted file mode 100644 index b76e5b01..00000000 --- a/PROMS/DataLoader/LoadTreeNh.cs +++ /dev/null @@ -1,43 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== - -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - public partial class Loader - { - public bool LoadChildren(FolderInfo fld, TreeNode tn) - { - tn.Nodes.Clear(); - bool bLoaded = true; - foreach (DocVersionInfo fdv in fld.FolderDocVersions) - { - TreeNode tnc = tn.Nodes.Add(fdv.Title); - tnc.Tag = fdv; - tnc.Checked = fdv.ItemID != 0; - bLoaded &= tnc.Checked; - } - return bLoaded; - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/Loader.cs b/PROMS/DataLoader/Loader.cs deleted file mode 100644 index 6b068d6b..00000000 --- a/PROMS/DataLoader/Loader.cs +++ /dev/null @@ -1,282 +0,0 @@ -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using Volian.MSWord; -using vlnObjectLibrary; -using vlnServerLibrary; -using VEPROMS.CSLA.Library; -using Config; -using Volian.Base.Library; - -namespace DataLoader -{ - public partial class Loader - { - #region ClassProperties - private int wms = 500; - private static int EDDATA = 0x01; - private static int PH = 0x02; - private static int TOC = 0x04; - private static int AUTOIND = 0x08; - private static int PLACEKEEPER = 0x40; - private static int PHONELIST = 0x10; - - private static int STP_MULT_CHGID = 1; - private static int STP_LNK_SEQ = 2; - private static int STP_OVR_TAB = 3; - - private string ProcFileName; - private string ProcNumber; - private ROFstInfo rofstinfo; - private RODb rodb; - private int EditSectId; - private Dictionary dicLibDocRef; - - // have a few variables for storing the database id record & the system record. - public Connection dbConn; - public Folder sysFolder; - public AnnotationType CommentType; // this holds the annotationtype of comment for future use - public AnnotationType MigrationErrorType; // this holds the annotationtype of Migration Error for future use - public AnnotationType VerificationRequiredType; // Using this to flag table to grid conversions - public Document MissingDocument = null; // make a document if there is a missing rtf file - // any missing will use this. - private Content TransDummyCont; - // the following two dictionaries are used to handle migration of the - // transitions... dicTrans_ItemDone gets an entry for procnumber, sequence - // number and the new item id as a step or section is created (transitions - // can go to steps or sections). When a transition is encountered, check this - // dictionary to see if the step or section was migrated & use the item - // for the step or section if it was migrated. When a transition is migrated where - // the 'to' has not been migrated yet, check if an entry exists in dicTrans_ItemIds, - // if so, use the item listed here. If no entry exists in dicTrans_ItemIds, create - // an item table record and use the id as part of the 'to', and add an entry to - // dicTrans_ItemIds to flag that the record was already created. As migrating sections - // and steps, check this dicTrans_ItemIds to see if the item record has already - // been create, if so use it and remove it from the dicTrans_ItemIds dictionary, - // otherwise, create a new item record. - private Dictionary dicTrans_ItemDone; - private Dictionary dicTrans_ItemIds; - private Dictionary> dicTrans_MigrationErrors; - private Dictionary dicOldStepSequence; - private Dictionary dicNeedToLoad; - private Dictionary dicSetfileEntries; - - private log4net.ILog log; - #endregion - private frmLoader frmMain; - public Loader(log4net.ILog lg, frmLoader fm) - { - dicNeedToLoad = new Dictionary(); - log = lg; - frmMain = fm; - } - public bool LoadFolders(string vepromspath) - { - try - { - //_FmtAllPath = frmMain.MySettings.FormatFolder; - //_GenmacAllPath = frmMain.MySettings.GenMacFolder; - vlnServer.XMLControlPath = Application.StartupPath + "\\vlncontrol.xml"; - frmMain.Status = "Make Connection"; - // make the initial database connection record, annotation types & top - // system folder. - dbConn = Connection.MakeConnection("Default", "Default", frmMain.MySettings.ConnectionString.Replace("{DBName}",frmMain.DBName), 1, null, DateTime.Now, "Migration"); - ConfigFile cfg = new ConfigFile(); - - frmMain.Status = "Add AnnotationTypes"; - CommentType = AnnotationType.MakeAnnotationType("Comment", null); - MigrationErrorType = AnnotationType.MakeAnnotationType("Migration Error", null); - - AnnotationType at = AnnotationType.MakeAnnotationType("Reference", null); - at = AnnotationType.MakeAnnotationType("Action Items", null); - //at = AnnotationType.MakeAnnotationType("Verification Required", null); - VerificationRequiredType = AnnotationType.MakeAnnotationType("Verification Required", null); - at = AnnotationType.MakeAnnotationType("Volian Comment", null); - - frmMain.Status = "Load veproms.ini"; - XmlDocument d = cfg.LoadSystemIni(vepromspath); - - frmMain.Status = "Load All Formats"; - //LoadAllFormats(); - //Format.UpdateFormats(_FmtAllPath, _GenmacAllPath); - - Format.UpdateFormats(frmMain.MySettings.FormatFolder, frmMain.MySettings.GenMacFolder); - - //Format baseFormat = Format.Get(1); - //sysFolder = Folder.MakeFolder(null, dbConn, "VEPROMS", "VEPROMS", "VEPROMS", baseFormat, d.InnerXml, DateTime.Now, "Migration"); - using (Format baseFormat = Format.Get(1)) - { - sysFolder = Folder.MakeFolder(null, dbConn, "VEPROMS", "VEPROMS", "VEPROMS", baseFormat, d.InnerXml, DateTime.Now, "Migration"); - } - - // This is to test the vln Libraries - List lfldr = vlnDataPathFolders(); - - List dp2 = new List(); - if (frmMain.createEmptyPROMS) return true; - foreach (Folder fldr in lfldr) - { - TreeNode tn = frmMain.TV.Nodes.Add(fldr.Name); - tn.Tag = fldr; - vlnObject vb = new vlnObject(null, "datapath", fldr.Name, fldr.Title); - dp2.Add(vb); - vlnServer vs = new vlnServer(); - frmMain.Status = "Loading " + fldr.Name; - MigrateChildren(vb, vs, dbConn, fldr, tn); - if (frmMain.ProcessFailed) - return false; - tn.Expand(); - } - } - catch (Exception ex) - { - log.Error("Error in LoadFolders", ex); -// log.ErrorFormat("Could not load data, error = {0}", ex.Message); - //return false; - throw new Exception("Error in LoadFolders", ex); - } - return true; - } - public bool LoadFoldersIntoExisting(string s) - { - try - { - frmMain.Status = "Getting Connection"; - // get the connection and annotations from the existing database. - dbConn = Connection.GetByName("Default"); - //dbConn = Connection.MakeConnection("Default", "Default", frmMain.MySettings.ConnectionString.Replace("{DBName}",frmMain.DBName), 1, null, DateTime.Now, "Migration"); - - frmMain.Status = "Getting AnnotationTypes"; - CommentType = AnnotationType.GetByName("Comment"); // .MakeAnnotationType("Comment", null); - MigrationErrorType = AnnotationType.GetByName("Migration Error"); - if(MigrationErrorType == null) - MigrationErrorType = AnnotationType.MakeAnnotationType("Migration Error", null); - VerificationRequiredType = AnnotationType.GetByName("Verification Required"); - - List lfldr = vlnDataPathFolders(); // get plant level list. - - List dp2 = new List(); - foreach (Folder fldr in lfldr) - { - TreeNode tn = frmMain.TV.Nodes.Add(fldr.Name); - tn.Tag = fldr; - vlnObject vb = new vlnObject(null, "datapath", fldr.Name, fldr.Title); - dp2.Add(vb); - vlnServer vs = new vlnServer(); - frmMain.Status = "Loading " + fldr.Name; - MigrateChildren(vb, vs, dbConn, fldr, tn); - if (frmMain.ProcessFailed) - return false; - tn.Expand(); - } - } - catch (Exception ex) - { - log.ErrorFormat("Could not load data, error = {0}", ex.Message); - //return false; - throw new Exception("Error in LoadFolders", ex); - } - return true; - } - public void ClearData() - { - int ra = PurgeDataCommand.Execute(); - //Database.PurgeData(); - } - public static string MakeDate(string src) - { - if (src.Trim() == "") return null; - int[] DateOffset ={ 4, 5, 47, 6, 7, 47, 0, 1, 2, 3 }; // 47 = '/' - StringBuilder datebuff = new StringBuilder(10); - for (int i = 0; i < DateOffset.Length; i++) - { - if (DateOffset[i] < 9) - datebuff.Append(src[DateOffset[i]]); - else - datebuff.Append(System.Convert.ToChar(DateOffset[i])); - } - return datebuff.ToString(); - } - public DateTime GetDTS(string date, string time) - { - // Set the date/time stamp. If there is no 'date', set the date - // to 1/1/2000 (this can be changed!). If there is not 'time', - // set the time to 0:0:0 (midnight). - - DateTime dts = DateTime.Now; - string month = "01"; - string day = "01"; - string year = "2000"; - string hour = ""; - string minute = ""; - try - { - if (date != null && date != "") - { - int indx1 = date.IndexOf("/"); - month = date.Substring(0, indx1); - int indx2 = date.IndexOf("/", indx1 + 1); - day = date.Substring(indx1 + 1, indx2 - indx1 - 1); - year = date.Substring(indx2 + 1, 4); - } - if (time == null || time == "") - { - hour = "0"; - minute = "0"; - } - else - { - - hour = time.Substring(0, 2); - int indxc = time.IndexOfAny(":A-".ToCharArray()); - if (indxc == time.Length - 1) - minute = time.Substring(2, 2); - else - minute = time.Substring(indxc + 1, time.Length - indxc - 1); - } - dts = new DateTime(System.Convert.ToInt32(year), System.Convert.ToInt32(month), System.Convert.ToInt32(day), - System.Convert.ToInt32(hour), System.Convert.ToInt32(minute), 0); - } - catch (Exception ex) - { - log.ErrorFormat("Bad Date/Time {0} {1}. Set to NOW.", date, time); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - frmMain.AddError(ex, "Bad Date/Time {0} {1}", date, time); - //log.ErrorFormat(ex.StackTrace); - return dts; - } - return dts; - } - - public bool LoadSecurity(string VeSamPath, string VePromsPath) - { - Security sec = new Security(VeSamPath, VePromsPath); - return sec.Migrate(); - } - private static void WaitMS(int n) - { - DateTime dtw = DateTime.Now.AddMilliseconds(n); - while (DateTime.Now < dtw) - { - Application.DoEvents(); - } - } - private static void Wait(int n) - { - DateTime dtw = DateTime.Now.AddSeconds(n); - while (DateTime.Now < dtw) - { - Application.DoEvents(); - } - } - } -} diff --git a/PROMS/DataLoader/Loader.cs.bak b/PROMS/DataLoader/Loader.cs.bak deleted file mode 100644 index 87808268..00000000 --- a/PROMS/DataLoader/Loader.cs.bak +++ /dev/null @@ -1,280 +0,0 @@ -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using Volian.MSWord; -using vlnObjectLibrary; -using vlnServerLibrary; -using VEPROMS.CSLA.Library; -using Config; -using Volian.Base.Library; - -namespace DataLoader -{ - public partial class Loader - { - #region ClassProperties - private int wms = 500; - private static int EDDATA = 0x01; - private static int PH = 0x02; - private static int TOC = 0x04; - private static int AUTOIND = 0x08; - private static int AUTOGEN = 0x40; - - private static int STP_MULT_CHGID = 1; - private static int STP_LNK_SEQ = 2; - private static int STP_OVR_TAB = 3; - - private string ProcFileName; - private string ProcNumber; - private ROFstInfo rofstinfo; - private RODb rodb; - private int EditSectId; - private Dictionary dicLibDocRef; - - // have a few variables for storing the database id record & the system record. - public Connection dbConn; - public Folder sysFolder; - public AnnotationType CommentType; // this holds the annotationtype of comment for future use - public AnnotationType MigrationErrorType; // this holds the annotationtype of Migration Error for future use - public AnnotationType VerificationRequiredType; // Using this to flag table to grid conversions - public Document MissingDocument = null; // make a document if there is a missing rtf file - // any missing will use this. - private Content TransDummyCont; - // the following two dictionaries are used to handle migration of the - // transitions... dicTrans_ItemDone gets an entry for procnumber, sequence - // number and the new item id as a step or section is created (transitions - // can go to steps or sections). When a transition is encountered, check this - // dictionary to see if the step or section was migrated & use the item - // for the step or section if it was migrated. When a transition is migrated where - // the 'to' has not been migrated yet, check if an entry exists in dicTrans_ItemIds, - // if so, use the item listed here. If no entry exists in dicTrans_ItemIds, create - // an item table record and use the id as part of the 'to', and add an entry to - // dicTrans_ItemIds to flag that the record was already created. As migrating sections - // and steps, check this dicTrans_ItemIds to see if the item record has already - // been create, if so use it and remove it from the dicTrans_ItemIds dictionary, - // otherwise, create a new item record. - private Dictionary dicTrans_ItemDone; - private Dictionary dicTrans_ItemIds; - private Dictionary> dicTrans_MigrationErrors; - private Dictionary dicOldStepSequence; - private Dictionary dicNeedToLoad; - private Dictionary dicSetfileEntries; - - private log4net.ILog log; - #endregion - private frmLoader frmMain; - public Loader(log4net.ILog lg, frmLoader fm) - { - dicNeedToLoad = new Dictionary(); - log = lg; - frmMain = fm; - } - public bool LoadFolders(string vepromspath) - { - try - { - //_FmtAllPath = frmMain.MySettings.FormatFolder; - //_GenmacAllPath = frmMain.MySettings.GenMacFolder; - frmMain.Status = "Make Connection"; - // make the initial database connection record, annotation types & top - // system folder. - dbConn = Connection.MakeConnection("Default", "Default", frmMain.MySettings.ConnectionString.Replace("{DBName}",frmMain.MySettings.DBName), 1, null, DateTime.Now, "Migration"); - ConfigFile cfg = new ConfigFile(); - - frmMain.Status = "Add AnnotationTypes"; - CommentType = AnnotationType.MakeAnnotationType("Comment", null); - MigrationErrorType = AnnotationType.MakeAnnotationType("Migration Error", null); - - AnnotationType at = AnnotationType.MakeAnnotationType("Reference", null); - at = AnnotationType.MakeAnnotationType("Action Items", null); - //at = AnnotationType.MakeAnnotationType("Verification Required", null); - VerificationRequiredType = AnnotationType.MakeAnnotationType("Verification Required", null); - at = AnnotationType.MakeAnnotationType("Volian Comment", null); - - frmMain.Status = "Load veproms.ini"; - XmlDocument d = cfg.LoadSystemIni(vepromspath); - - frmMain.Status = "Load All Formats"; - //LoadAllFormats(); - //Format.UpdateFormats(_FmtAllPath, _GenmacAllPath); - - Format.UpdateFormats(frmMain.MySettings.FormatFolder, frmMain.MySettings.GenMacFolder); - - //Format baseFormat = Format.Get(1); - //sysFolder = Folder.MakeFolder(null, dbConn, "VEPROMS", "VEPROMS", "VEPROMS", baseFormat, d.InnerXml, DateTime.Now, "Migration"); - using (Format baseFormat = Format.Get(1)) - { - sysFolder = Folder.MakeFolder(null, dbConn, "VEPROMS", "VEPROMS", "VEPROMS", baseFormat, d.InnerXml, DateTime.Now, "Migration"); - } - - // This is to test the vln Libraries - List lfldr = vlnDataPathFolders(); - - List dp2 = new List(); - if (frmMain.createEmptyPROMS) return true; - foreach (Folder fldr in lfldr) - { - TreeNode tn = frmMain.TV.Nodes.Add(fldr.Name); - tn.Tag = fldr; - vlnObject vb = new vlnObject(null, "datapath", fldr.Name, fldr.Title); - dp2.Add(vb); - vlnServer vs = new vlnServer(); - frmMain.Status = "Loading " + fldr.Name; - MigrateChildren(vb, vs, dbConn, fldr, tn); - if (frmMain.ProcessFailed) - return false; - tn.Expand(); - } - } - catch (Exception ex) - { - log.Error("Error in LoadFolders", ex); -// log.ErrorFormat("Could not load data, error = {0}", ex.Message); - //return false; - throw new Exception("Error in LoadFolders", ex); - } - return true; - } - public bool LoadFoldersIntoExisting(string s) - { - try - { - frmMain.Status = "Getting Connection"; - // get the connection and annotations from the existing database. - dbConn = Connection.GetByName("Default"); - //dbConn = Connection.MakeConnection("Default", "Default", frmMain.MySettings.ConnectionString.Replace("{DBName}",frmMain.MySettings.DBName), 1, null, DateTime.Now, "Migration"); - - frmMain.Status = "Getting AnnotationTypes"; - CommentType = AnnotationType.GetByName("Comment"); // .MakeAnnotationType("Comment", null); - MigrationErrorType = AnnotationType.GetByName("Migration Error"); - if(MigrationErrorType == null) - MigrationErrorType = AnnotationType.MakeAnnotationType("Migration Error", null); - VerificationRequiredType = AnnotationType.GetByName("Verification Required"); - - List lfldr = vlnDataPathFolders(); // get plant level list. - - List dp2 = new List(); - foreach (Folder fldr in lfldr) - { - TreeNode tn = frmMain.TV.Nodes.Add(fldr.Name); - tn.Tag = fldr; - vlnObject vb = new vlnObject(null, "datapath", fldr.Name, fldr.Title); - dp2.Add(vb); - vlnServer vs = new vlnServer(); - frmMain.Status = "Loading " + fldr.Name; - MigrateChildren(vb, vs, dbConn, fldr, tn); - if (frmMain.ProcessFailed) - return false; - tn.Expand(); - } - } - catch (Exception ex) - { - log.ErrorFormat("Could not load data, error = {0}", ex.Message); - //return false; - throw new Exception("Error in LoadFolders", ex); - } - return true; - } - public void ClearData() - { - int ra = PurgeDataCommand.Execute(); - //Database.PurgeData(); - } - public static string MakeDate(string src) - { - if (src.Trim() == "") return null; - int[] DateOffset ={ 4, 5, 47, 6, 7, 47, 0, 1, 2, 3 }; // 47 = '/' - StringBuilder datebuff = new StringBuilder(10); - for (int i = 0; i < DateOffset.Length; i++) - { - if (DateOffset[i] < 9) - datebuff.Append(src[DateOffset[i]]); - else - datebuff.Append(System.Convert.ToChar(DateOffset[i])); - } - return datebuff.ToString(); - } - public DateTime GetDTS(string date, string time) - { - // Set the date/time stamp. If there is no 'date', set the date - // to 1/1/2000 (this can be changed!). If there is not 'time', - // set the time to 0:0:0 (midnight). - - DateTime dts = DateTime.Now; - string month = "01"; - string day = "01"; - string year = "2000"; - string hour = ""; - string minute = ""; - try - { - if (date != null && date != "") - { - int indx1 = date.IndexOf("/"); - month = date.Substring(0, indx1); - int indx2 = date.IndexOf("/", indx1 + 1); - day = date.Substring(indx1 + 1, indx2 - indx1 - 1); - year = date.Substring(indx2 + 1, 4); - } - if (time == null || time == "") - { - hour = "0"; - minute = "0"; - } - else - { - - hour = time.Substring(0, 2); - int indxc = time.IndexOfAny(":A-".ToCharArray()); - if (indxc == time.Length - 1) - minute = time.Substring(2, 2); - else - minute = time.Substring(indxc + 1, time.Length - indxc - 1); - } - dts = new DateTime(System.Convert.ToInt32(year), System.Convert.ToInt32(month), System.Convert.ToInt32(day), - System.Convert.ToInt32(hour), System.Convert.ToInt32(minute), 0); - } - catch (Exception ex) - { - log.ErrorFormat("Bad Date/Time {0} {1}. Set to NOW.", date, time); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - frmMain.AddError(ex, "Bad Date/Time {0} {1}", date, time); - //log.ErrorFormat(ex.StackTrace); - return dts; - } - return dts; - } - - public bool LoadSecurity(string VeSamPath, string VePromsPath) - { - Security sec = new Security(VeSamPath, VePromsPath); - return sec.Migrate(); - } - private static void WaitMS(int n) - { - DateTime dtw = DateTime.Now.AddMilliseconds(n); - while (DateTime.Now < dtw) - { - Application.DoEvents(); - } - } - private static void Wait(int n) - { - DateTime dtw = DateTime.Now.AddSeconds(n); - while (DateTime.Now < dtw) - { - Application.DoEvents(); - } - } - } -} diff --git a/PROMS/DataLoader/OutsideTransition.cs b/PROMS/DataLoader/OutsideTransition.cs deleted file mode 100644 index ec7b0227..00000000 --- a/PROMS/DataLoader/OutsideTransition.cs +++ /dev/null @@ -1,327 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Data; -using System.Data.OleDb; -//using System.Collections.Specialized; -//using System.Collections.Generic; -//using System.Xml; -//using System.IO; -//using System.Text; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - class OutsideTransition - { - private OleDbConnection _DbConnect; - - public OleDbConnection DbConnect - { - get { return _DbConnect; } - set { _DbConnect = value; } - } - - private Dictionary _TranLookup; - - public OutsideTransition(OleDbConnection cn) - { - _DbConnect = cn; - _TranLookup = new Dictionary(); - } - - private List _MigrationErrors; - public ItemInfo GetItem(string key, List migrationErrors) - { - _MigrationErrors = migrationErrors; - if (!_TranLookup.ContainsKey(key)) - _TranLookup.Add(key, Find(key)); - return _TranLookup[key]; - } - - private ItemInfo Find(string key) - { - string setid = key.Substring(0, 8); - string procid = key.Substring(8, 8); - string path = GetPath(setid);// Get set path from XTSETID - string proc = GetProc(setid, procid);// Get procedure number from XTPROCID - return Find(path,proc);// Return ItemInfo based upon path and procedure number - } - - private ItemInfo Find(string path, string proc) - { - return OTLookup.Find(path, proc,_MigrationErrors); - } - - private string GetProc(string setid, string procid) - { - string retval = null; - string xtproccmd = "SELECT * FROM [xtprocid] WHERE [SETID]='" + setid + "' AND [PROCID]='" + procid + "'"; - using (OleDbDataAdapter da = new OleDbDataAdapter(xtproccmd, _DbConnect)) - { - try - { - DataSet ds = new DataSet(); - da.Fill(ds); - DataTable dt = ds.Tables[0]; - dt.CaseSensitive = true; - DataRow dr = dt.Rows[0]; // there should be only one entry! - retval = dr["Procnum"].ToString(); // this should be the procedure number! - ds.Dispose(); - } - catch (Exception ex) - { - return "";//ex.GetType().Name + " " + ex.Message; - } - } - return retval; - } - - private string GetPath(string setid) - { - try - { - string xtsetcmd = "SELECT * FROM [xtsetid] WHERE [SETID]='" + setid + "'"; - OleDbDataAdapter da = new OleDbDataAdapter(xtsetcmd, _DbConnect); - DataSet ds = new DataSet(); - da.Fill(ds); - DataTable dt = ds.Tables[0]; - dt.CaseSensitive = true; - DataRow dr = dt.Rows[0]; // there should be only one entry! - // if there are more than one entry use the first legitimate entry - // for NSP we found multiple "FIRST RECORD"s in numerious XTSETID.DBF files - if (dt.Rows.Count > 1) - { - int irow = 0; - while (irow < dt.Rows.Count-1 && dt.Rows[irow]["PLANTTITLE"].ToString() == "FIRST RECORD") irow++; - dr = dt.Rows[irow]; - } - string retval = dr["Path"].ToString(); - da.Dispose(); - ds.Dispose(); - return retval; // dr["Path"].ToString(); // this should be the path to the proc set! - } - catch (Exception ex) - { - return "";//ex.GetType().Name + " " + ex.Message; - } - } - - private string GetTitle(string setid, string procid) - { - try - { - - string xtproccmd = "SELECT * FROM [xtprocid] WHERE [SETID]='" + setid + "' AND [PROCID]='" + procid + "'"; - OleDbDataAdapter da = new OleDbDataAdapter(xtproccmd, _DbConnect); - DataSet ds = new DataSet(); - da.Fill(ds); - DataTable dt = ds.Tables[0]; - dt.CaseSensitive = true; - DataRow dr = dt.Rows[0]; // there should be only one entry! - string retval = dr["Proctitle"].ToString(); - da.Dispose(); - ds.Dispose(); - return retval; // dr["Proctitle"].ToString(); // this should be the procedure number! - } - catch (Exception ex) - { - return "";//ex.GetType().Name + " " + ex.Message; - } - } - - public string GetDescription(string key) - { - string setid = key.Substring(0, 8); - string procid = key.Substring(8, 8); - string path = GetPath(setid);// Get set path from XTSETID - string proc = GetProc(setid, procid);// Get procedure number from XTPROCID - string title = GetTitle(setid, procid);// Get procedure title from XTPROCID - return string.Format("{0}, {1} in folder {2}",proc,title,path); - } - public string GetTransitionText(string key) - { - string setid = key.Substring(0, 8); - string procid = key.Substring(8, 8); - string proc = GetProc(setid, procid);// Get procedure number from XTPROCID - string title = GetTitle(setid, procid);// Get procedure title from XTPROCID - proc = proc.Replace("-", @"\u8209?"); // in proc number, replace dash and spaces with - proc = proc.Replace(" ", @"\u160?"); // nonbreak unicode dash & hardspace. - title = title.Replace("-", @"\u8209?"); // in title, just do the hardspace. - return string.Format("{0}, {1}", proc, title); - } - //private string ProcessOutSideTrans(OleDbConnection cn, string thekey, string pth) - //{ - // string xtransstring = null; - // DataTable dt = null; - // DataSet ds = null; - // OleDbDataAdapter da = null; - - // DataTable dt2 = null; - // DataSet ds2 = null; - // OleDbDataAdapter da2 = null; - - // string tosetid = thekey.Substring(0, 8); - // string toprocid = thekey.Substring(8, 8); - - // /// Get the path to the procedure set from the SETID - // string xtsetcmd = "SELECT * FROM [xtsetid] WHERE [SETID]='" + tosetid + "'"; - // string xtproccmd = "SELECT * FROM [xtprocid] WHERE [SETID]='" + tosetid + "' AND [PROCID]='" + toprocid + "'"; - - // da = new OleDbDataAdapter(xtsetcmd, cn); - // da2 = new OleDbDataAdapter(xtproccmd, cn); - - // // get xtsetid records. - // ds = new DataSet(); - // try - // { - // da.Fill(ds); - // dt = ds.Tables[0]; - // dt.CaseSensitive = true; - // } - // catch (Exception ex) - // { - // log.Error("Error getting XTSETID"); - // log.ErrorFormat("to number = {0}", thekey); - // log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - // //return textm; - // } - // DataRow dr = dt.Rows[0]; // there should be only one entry! - // string setpth = dr["Path"].ToString(); // this should be the path to the proc set! - - // // get xtprocid records - // ds2 = new DataSet(); - // try - // { - // da2.Fill(ds2); - // dt2 = ds2.Tables[0]; - // dt2.CaseSensitive = true; - // } - // catch (Exception ex) - // { - // log.Error("Error getting XTPROCID"); - // log.ErrorFormat("to number = {0}", thekey); - // log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - // //return textm; - // } - // DataRow dr2 = dt2.Rows[0]; // there should be only one entry! - // string procnum = dr2["Procnum"].ToString(); // this should be the procedure number! - - // xtransstring = setpth + "\\" + procnum; // ex: VEHLP\PROCS\0POP05-EO00 - - // //if (pathsAreEqual(setpth, pth)) - // //{ - // // // Outside Transiton is to this procedure set (not really outsde) - // // // need to find the item id that references the proc number and title - // // // - find the setpth in the doc.version - // //} - // //else - // //return thekey; // is a true outside transition - - // return xtransstring; - //} - } - - internal static class OTLookup - { - public static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - private static Dictionary _Lookup = null; - static List _MigrationErrors; - public static ItemInfo Find(string path, string procnum, List migrationErrors) - { - _MigrationErrors = migrationErrors; - string key = string.Format(@"{0}\{1}",path,procnum); - if (_Lookup == null) - _Lookup = new Dictionary(); - if (!_Lookup.ContainsKey(key)) - _Lookup.Add(key, FindItem(path, procnum)); - return _Lookup[key]; - } - - private static DocVersionInfoList _DocVersions = null; - private static ItemInfo FindItem(string path, string procnum) - { - if (_DocVersions == null) - _DocVersions = DocVersionInfoList.Get(); - DocVersionInfo dvi = ExactMatch(path); - if (dvi == null) dvi = PartialMatch(path); - if (dvi != null) return FindItem(dvi, procnum); - return null; - } - - private static ItemInfo FindItem(DocVersionInfo dvi, string procnum) - { - foreach (ItemInfo itm in dvi.Procedures) - if (itm.DisplayNumber == procnum) - return itm; - return null; - } - - private static DocVersionInfo PartialMatch(string path) - { - string partial = GetPartial(path); - if (partial != null) - { - foreach (DocVersionInfo dvi in _DocVersions) - { - if (dvi.MyFolder.Title.ToUpper().EndsWith(partial.ToUpper())) - return dvi; - } - if (path.ToUpper().EndsWith("ABBYPROC")) - return PartialMatch(path + ".prc"); - } - // if we cannot find a match using two folders, simple use one - partial = GetPartial2(path); - if (partial != null) - { - DocVersionInfo match = null; - foreach (DocVersionInfo dvi in _DocVersions) - { - if (dvi.MyFolder.Title.ToUpper().EndsWith(partial.ToUpper())) - { - if (match == null) - match = dvi; - else - { - _MyLog.WarnFormat("Duplicate external paths found for path '{0}'", path); - _MigrationErrors.Add(string.Format("Duplicate external paths found for path '{0}'", path)); - } - - } - } - } - return null; - } - private static string GetPartial(string path) - { - //Console.WriteLine(string.Format("GetPartial path = {0}",path)); - if (path.Contains("\\")) - { - string[] parts = path.Split("\\".ToCharArray()); - return "\\" + parts[parts.Length - 2] + "\\" + parts[parts.Length - 1]; - } - else - return null; - } - private static string GetPartial2(string path) - { - //Console.WriteLine(string.Format("GetPartial path = {0}",path)); - if (path.Contains("\\")) - { - string[] parts = path.Split("\\".ToCharArray()); - return "\\" + parts[parts.Length - 1]; - } - else - return null; - } - private static DocVersionInfo ExactMatch(string path) - { - foreach (DocVersionInfo dvi in _DocVersions) - if (dvi.MyFolder.Title.ToUpper().EndsWith(path.ToUpper())) - return dvi; - if (path.ToUpper().EndsWith("ABBYPROC")) - return ExactMatch(path + ".prc"); - return null; - } - } -} diff --git a/PROMS/DataLoader/PROMS2010.SQL b/PROMS/DataLoader/PROMS2010.SQL deleted file mode 100644 index 9b5dac04..00000000 --- a/PROMS/DataLoader/PROMS2010.SQL +++ /dev/null @@ -1,18751 +0,0 @@ -if db_name() in('master','model','msdn','tempdb') -begin - DECLARE @ErrorMsg varchar(255) - SET @ErrorMsg = 'Don''t add these procedures and functions to ' + db_name() - PRINT '==========================================================================' - PRINT '' - PRINT @ErrorMsg - PRINT '' - PRINT 'You probably want to be in the VEPROMS database' - PRINT '' - PRINT '==========================================================================' - RAISERROR (@ErrorMsg, 20, -1) with log - RETURN -end -print 'Adding procedures and functions to ' + db_name() -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/****** Object: Table [dbo].[DeleteLog] Script Date: 03/29/2011 17:26:23 ******/ -IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DeleteLog]') AND type in (N'U')) -DROP TABLE [dbo].[DeleteLog] -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE TABLE [dbo].[DeleteLog]( - [DeleteID] [int] IDENTITY(1,1) NOT NULL, - [SPID] [int] NOT NULL CONSTRAINT [DF_DeleteLog_SPID] DEFAULT (@@spid), - [UserID] [nvarchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_DeleteLog_DTS] DEFAULT (getdate()), - CONSTRAINT [PK_DeleteLog] PRIMARY KEY CLUSTERED -( - [DeleteID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO - --- Display the status of Table creation -IF (@@Error = 0) PRINT 'Table Creation: DeleteLog Succeeded' -ELSE PRINT 'Table Creation: DeleteLog Error on Creation' -GO - -/****** Object: StoredProcedure [vlnErrorHandler] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vlnErrorHandler]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vlnErrorHandler]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vlnErrorHandler] - (@ExpectedCount int=-1 - ,@MessageFormat nvarchar(512)=N'Expected RowCount (%d) not met (%d)') -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @ErrorMessage NVARCHAR(4000), @ErrorNumber INT, @ErrorSeverity INT, @ErrorState INT, @ErrorProcedure NVARCHAR(126) - , @ErrorLine INT, @RowCount INT; - SELECT @ErrorMessage = ERROR_MESSAGE(), @ErrorSeverity = ERROR_SEVERITY(), @ErrorState = ERROR_STATE(),@ErrorNumber = ERROR_NUMBER() - , @ErrorLine = ERROR_LINE(), @ErrorProcedure = ERROR_PROCEDURE(), @RowCount = @@RowCount; - IF @ErrorNumber > 0 - BEGIN - IF @ErrorProcedure = OBJECT_NAME(@@PROCID) -- If the Procedure is the current procedure just pass the error message - RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState) - ELSE -- Add in the procedure name and line as well as the error number - RAISERROR (N'%s[%d] - (%d) %s', @ErrorSeverity, @ErrorState, @ErrorProcedure, @ErrorLine, @ErrorNumber, @ErrorMessage) - END - ELSE IF @ExpectedCount <> -1 AND @ExpectedCount <> @RowCount - RAISERROR (@MessageFormat, 16, 1, @ExpectedCount, @RowCount) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vlnErrorHandler Succeeded' -ELSE PRINT 'Procedure Creation: vlnErrorHandler Error on Creation' -GO - -/****** Object: StoredProcedure [addAnnotation] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addAnnotation]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addAnnotation]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addAnnotation] - -( - @ItemID int, - @TypeID int, - @RtfText nvarchar(MAX)=null, - @SearchText nvarchar(MAX)=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newAnnotationID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Annotations] - ( - [ItemID], - [TypeID], - [RtfText], - [SearchText], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @ItemID, - @TypeID, - @RtfText, - @SearchText, - @Config, - @DTS, - @UserID - ) - SELECT @newAnnotationID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Annotations] WHERE [AnnotationID]=@newAnnotationID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addAnnotation Succeeded' -ELSE PRINT 'Procedure Creation: addAnnotation Error on Creation' -GO - -/****** Object: StoredProcedure [addAnnotationType] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addAnnotationType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addAnnotationType]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addAnnotationType] - -( - @Name nvarchar(100), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newTypeID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [AnnotationTypes] - ( - [Name], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @Name, - @Config, - @DTS, - @UserID - ) - SELECT @newTypeID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [AnnotationTypes] WHERE [TypeID]=@newTypeID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addAnnotationType Succeeded' -ELSE PRINT 'Procedure Creation: addAnnotationType Error on Creation' -GO - -/****** Object: StoredProcedure [addAssignment] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addAssignment]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addAssignment]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addAssignment] - -( - @GID int, - @RID int, - @FolderID int, - @StartDate datetime, - @EndDate datetime=null, - @DTS datetime, - @UsrID nvarchar(100), - @newAID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Assignments] - ( - [GID], - [RID], - [FolderID], - [StartDate], - [EndDate], - [DTS], - [UsrID] - ) - VALUES - ( - @GID, - @RID, - @FolderID, - @StartDate, - @EndDate, - @DTS, - @UsrID - ) - SELECT @newAID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Assignments] WHERE [AID]=@newAID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addAssignment Succeeded' -ELSE PRINT 'Procedure Creation: addAssignment Error on Creation' -GO - -/****** Object: StoredProcedure [addAssociation] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addAssociation]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addAssociation]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addAssociation] - -( - @VersionID int, - @ROFstID int, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newAssociationID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Associations] - ( - [VersionID], - [ROFstID], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @VersionID, - @ROFstID, - @Config, - @DTS, - @UserID - ) - SELECT @newAssociationID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Associations] WHERE [AssociationID]=@newAssociationID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addAssociation Succeeded' -ELSE PRINT 'Procedure Creation: addAssociation Error on Creation' -GO - -/****** Object: StoredProcedure [addConnection] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addConnection]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addConnection]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addConnection] - -( - @Name nvarchar(100)=null, - @Title nvarchar(510)=null, - @ConnectionString nvarchar(510)=null, - @ServerType int, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UsrID nvarchar(100), - @newDBID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Connections] - ( - [Name], - [Title], - [ConnectionString], - [ServerType], - [Config], - [DTS], - [UsrID] - ) - VALUES - ( - @Name, - @Title, - @ConnectionString, - @ServerType, - @Config, - @DTS, - @UsrID - ) - SELECT @newDBID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Connections] WHERE [DBID]=@newDBID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addConnection Succeeded' -ELSE PRINT 'Procedure Creation: addConnection Error on Creation' -GO - -/****** Object: StoredProcedure [addContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addContent]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addContent] - -( - @Number nvarchar(256)=null, - @Text nvarchar(MAX)=null, - @Type int=null, - @FormatID int=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newContentID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Contents] - ( - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @Number, - @Text, - @Type, - @FormatID, - @Config, - @DTS, - @UserID - ) - SELECT @newContentID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Contents] WHERE [ContentID]=@newContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addContent Succeeded' -ELSE PRINT 'Procedure Creation: addContent Error on Creation' -GO - -/****** Object: StoredProcedure [addDetail] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addDetail]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addDetail]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addDetail] - -( - @ContentID int, - @ItemType int, - @Text nvarchar(MAX), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newDetailID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Details] - ( - [ContentID], - [ItemType], - [Text], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @ContentID, - @ItemType, - @Text, - @Config, - @DTS, - @UserID - ) - SELECT @newDetailID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Details] WHERE [DetailID]=@newDetailID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addDetail Succeeded' -ELSE PRINT 'Procedure Creation: addDetail Error on Creation' -GO - -/****** Object: StoredProcedure [addDocument] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addDocument]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addDocument]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addDocument] - -( - @LibTitle nvarchar(1024)=null, - @DocContent varbinary(MAX)=null, - @DocAscii nvarchar(MAX)=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @FileExtension nvarchar(10), - @newDocID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Documents] - ( - [LibTitle], - [DocContent], - [DocAscii], - [Config], - [DTS], - [UserID], - [FileExtension] - ) - VALUES - ( - @LibTitle, - @DocContent, - @DocAscii, - @Config, - @DTS, - @UserID, - @FileExtension - ) - SELECT @newDocID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Documents] WHERE [DocID]=@newDocID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addDocument Succeeded' -ELSE PRINT 'Procedure Creation: addDocument Error on Creation' -GO - -/****** Object: StoredProcedure [addDocVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addDocVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addDocVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addDocVersion] - -( - @FolderID int, - @VersionType int, - @Name nvarchar(100), - @Title nvarchar(510)=null, - @ItemID int=null, - @FormatID int=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newVersionID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [DocVersions] - ( - [FolderID], - [VersionType], - [Name], - [Title], - [ItemID], - [FormatID], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @FolderID, - @VersionType, - @Name, - @Title, - @ItemID, - @FormatID, - @Config, - @DTS, - @UserID - ) - SELECT @newVersionID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [DocVersions] WHERE [VersionID]=@newVersionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addDocVersion Succeeded' -ELSE PRINT 'Procedure Creation: addDocVersion Error on Creation' -GO - -/****** Object: StoredProcedure [addDROUsage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addDROUsage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addDROUsage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addDROUsage] - -( - @DocID int, - @ROID nvarchar(16), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @RODbID int, - @newDROUsageID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [DROUsages] - ( - [DocID], - [ROID], - [Config], - [DTS], - [UserID], - [RODbID] - ) - VALUES - ( - @DocID, - @ROID, - @Config, - @DTS, - @UserID, - @RODbID - ) - SELECT @newDROUsageID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [DROUsages] WHERE [DROUsageID]=@newDROUsageID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addDROUsage Succeeded' -ELSE PRINT 'Procedure Creation: addDROUsage Error on Creation' -GO - -/****** Object: StoredProcedure [addEntry] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addEntry]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addEntry]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addEntry] - -( - @ContentID int, - @DocID int, - @DTS datetime, - @UserID nvarchar(100), - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Entries] - ( - [ContentID], - [DocID], - [DTS], - [UserID] - ) - VALUES - ( - @ContentID, - @DocID, - @DTS, - @UserID - ) - - SELECT @newLastChanged=[LastChanged] - FROM [Entries] WHERE [ContentID]=@ContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addEntry Succeeded' -ELSE PRINT 'Procedure Creation: addEntry Error on Creation' -GO - -/****** Object: StoredProcedure [addFigure] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addFigure]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addFigure]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addFigure] - -( - @ROFstID int, - @ImageID int, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newFigureID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Figures] - ( - [ROFstID], - [ImageID], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @ROFstID, - @ImageID, - @Config, - @DTS, - @UserID - ) - SELECT @newFigureID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Figures] WHERE [FigureID]=@newFigureID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addFigure Succeeded' -ELSE PRINT 'Procedure Creation: addFigure Error on Creation' -GO - -/****** Object: StoredProcedure [addFiguresByROFstIDandImageIDs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addFiguresByROFstIDandImageIDs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addFiguresByROFstIDandImageIDs]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addFiguresByROFstIDandImageIDs] -( - @ROFstID int, - @ImageIDs varchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Figures] - ( [ROFstID] - ,[ImageID] - ,[Config] - ,[DTS] - ,[UserID] - ) - select distinct FF.ROFstID, II.ID ImageID, '' Config, FF.DTS, FF.UserID from ROFsts FF - , vefn_SplitInt(@ImageIDs,',') II - where ROFstID=@ROFstID - - SELECT [FigureID] - ,[ROFstID] - ,[ImageID] - ,[Config] - ,[DTS] - ,[UserID] - ,[LastChanged] - FROM [Figures] - WHERE [ROFstID]=@ROFstID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addFiguresByROFstIDandImageIDs Succeeded' -ELSE PRINT 'Procedure Creation: addFiguresByROFstIDandImageIDs Error on Creation' -GO - -/****** Object: StoredProcedure [addFolder] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addFolder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addFolder]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addFolder] - -( - @ParentID int, - @DBID int, - @Name nvarchar(100), - @Title nvarchar(510)=null, - @ShortName nvarchar(20), - @FormatID int=null, - @ManualOrder float=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UsrID nvarchar(100), - @newFolderID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Folders] - ( - [ParentID], - [DBID], - [Name], - [Title], - [ShortName], - [FormatID], - [ManualOrder], - [Config], - [DTS], - [UsrID] - ) - VALUES - ( - @ParentID, - @DBID, - @Name, - @Title, - @ShortName, - @FormatID, - @ManualOrder, - @Config, - @DTS, - @UsrID - ) - SELECT @newFolderID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Folders] WHERE [FolderID]=@newFolderID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addFolder Succeeded' -ELSE PRINT 'Procedure Creation: addFolder Error on Creation' -GO - -/****** Object: StoredProcedure [addFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addFormat]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addFormat] - -( - @ParentID int, - @Name nvarchar(20), - @Description nvarchar(250)=null, - @Data xml, - @GenMac xml=null, - @DTS datetime, - @UserID nvarchar(100), - @newFormatID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Formats] - ( - [ParentID], - [Name], - [Description], - [Data], - [GenMac], - [DTS], - [UserID] - ) - VALUES - ( - @ParentID, - @Name, - @Description, - @Data, - @GenMac, - @DTS, - @UserID - ) - SELECT @newFormatID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Formats] WHERE [FormatID]=@newFormatID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addFormat Succeeded' -ELSE PRINT 'Procedure Creation: addFormat Error on Creation' -GO - -/****** Object: StoredProcedure [addGrid] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addGrid]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addGrid]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addGrid] - -( - @ContentID int, - @Data xml, - @Config xml=null, - @DTS datetime, - @UserID nvarchar(100), - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Grids] - ( - [ContentID], - [Data], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @ContentID, - @Data, - @Config, - @DTS, - @UserID - ) - - SELECT @newLastChanged=[LastChanged] - FROM [Grids] WHERE [ContentID]=@ContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addGrid Succeeded' -ELSE PRINT 'Procedure Creation: addGrid Error on Creation' -GO - -/****** Object: StoredProcedure [addGroup] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addGroup]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addGroup]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addGroup] - -( - @GroupName nvarchar(50), - @GroupType int=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UsrID nvarchar(100), - @newGID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Groups] - ( - [GroupName], - [GroupType], - [Config], - [DTS], - [UsrID] - ) - VALUES - ( - @GroupName, - @GroupType, - @Config, - @DTS, - @UsrID - ) - SELECT @newGID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Groups] WHERE [GID]=@newGID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addGroup Succeeded' -ELSE PRINT 'Procedure Creation: addGroup Error on Creation' -GO - -/****** Object: StoredProcedure [addImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addImage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addImage] - -( - @ContentID int, - @ImageType int, - @FileName nvarchar(255), - @Data varbinary(MAX), - @Config xml=null, - @DTS datetime, - @UserID nvarchar(100), - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Images] - ( - [ContentID], - [ImageType], - [FileName], - [Data], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @ContentID, - @ImageType, - @FileName, - @Data, - @Config, - @DTS, - @UserID - ) - - SELECT @newLastChanged=[LastChanged] - FROM [Images] WHERE [ContentID]=@ContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addImage Succeeded' -ELSE PRINT 'Procedure Creation: addImage Error on Creation' -GO - -/****** Object: StoredProcedure [addItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addItem]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addItem] - -( - @PreviousID int=null, - @ContentID int, - @DTS datetime, - @UserID nvarchar(100), - @newItemID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Items] - ( - [PreviousID], - [ContentID], - [DTS], - [UserID] - ) - VALUES - ( - @PreviousID, - @ContentID, - @DTS, - @UserID - ) - SELECT @newItemID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Items] WHERE [ItemID]=@newItemID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addItem Succeeded' -ELSE PRINT 'Procedure Creation: addItem Error on Creation' -GO ---HERE -/****** Object: StoredProcedure [addPart] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addPart]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addPart]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addPart] - -( - @ContentID int, - @FromType int, - @ItemID int, - @DTS datetime, - @UserID nvarchar(100), - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Parts] - ( - [ContentID], - [FromType], - [ItemID], - [DTS], - [UserID] - ) - VALUES - ( - @ContentID, - @FromType, - @ItemID, - @DTS, - @UserID - ) - - SELECT @newLastChanged=[LastChanged] - FROM [Parts] WHERE [ContentID]=@ContentID AND [FromType]=@FromType - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addPart Succeeded' -ELSE PRINT 'Procedure Creation: addPart Error on Creation' -GO - -/****** Object: StoredProcedure [updatePart] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updatePart]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updatePart]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updatePart] - -( - @ContentID int, - @FromType int, - @ItemID int, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Parts] - SET - [ItemID]=@ItemID, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [ContentID]=@ContentID AND [FromType]=@FromType AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Parts] WHERE [ContentID]=@ContentID AND [FromType]=@FromType) - RAISERROR('Part record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Part has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Parts] WHERE [ContentID]=@ContentID AND [FromType]=@FromType - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updatePart Succeeded' -ELSE PRINT 'Procedure Creation: updatePart Error on Creation' -GO - -/****** Object: StoredProcedure [getItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItem]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItem] - -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ItemID], - [PreviousID], - [ContentID], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[Items].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[Items].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[Items].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[Items].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[Items].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[Items].[ItemID]) [Transition_ToIDCount] - FROM [Items] - WHERE [ItemID]=@ItemID - - SELECT - [Annotations].[AnnotationID], - [Annotations].[ItemID], - [Annotations].[TypeID], - [Annotations].[RtfText], - [Annotations].[SearchText], - [Annotations].[Config], - [Annotations].[DTS], - [Annotations].[UserID], - [Annotations].[LastChanged], - [AnnotationTypes].[Name] [AnnotationType_Name], - [AnnotationTypes].[Config] [AnnotationType_Config], - [AnnotationTypes].[DTS] [AnnotationType_DTS], - [AnnotationTypes].[UserID] [AnnotationType_UserID] - FROM [Annotations] - JOIN [AnnotationTypes] ON - [AnnotationTypes].[TypeID]=[Annotations].[TypeID] - WHERE - [Annotations].[ItemID]=@ItemID - - - SELECT - [DocVersions].[VersionID], - [DocVersions].[FolderID], - [DocVersions].[VersionType], - [DocVersions].[Name], - [DocVersions].[Title], - [DocVersions].[ItemID], - [DocVersions].[FormatID], - [DocVersions].[Config], - [DocVersions].[DTS], - [DocVersions].[UserID], - [DocVersions].[LastChanged], - [Folders].[ParentID] [Folder_ParentID], - [Folders].[DBID] [Folder_DBID], - [Folders].[Name] [Folder_Name], - [Folders].[Title] [Folder_Title], - [Folders].[ShortName] [Folder_ShortName], - [Folders].[FormatID] [Folder_FormatID], - [Folders].[ManualOrder] [Folder_ManualOrder], - [Folders].[Config] [Folder_Config], - [Folders].[DTS] [Folder_DTS], - [Folders].[UsrID] [Folder_UsrID] - FROM [DocVersions] - JOIN [Folders] ON - [Folders].[FolderID]=[DocVersions].[FolderID] - WHERE - [DocVersions].[ItemID]=@ItemID - - - SELECT - [Parts].[ContentID], - [Parts].[FromType], - [Parts].[ItemID], - [Parts].[DTS], - [Parts].[UserID], - [Parts].[LastChanged], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [Parts] - JOIN [Contents] ON - [Contents].[ContentID]=[Parts].[ContentID] - WHERE - [Parts].[ItemID]=@ItemID - - - SELECT - [Transitions].[TransitionID], - [Transitions].[FromID], - [Transitions].[ToID], - [Transitions].[RangeID], - [Transitions].[IsRange], - [Transitions].[TranType], - [Transitions].[Config], - [Transitions].[DTS], - [Transitions].[UserID], - [Transitions].[LastChanged], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [Transitions] - JOIN [Contents] ON - [Contents].[ContentID]=[Transitions].[FromID] - WHERE - [Transitions].[RangeID]=@ItemID - - - SELECT - [Transitions].[TransitionID], - [Transitions].[FromID], - [Transitions].[ToID], - [Transitions].[RangeID], - [Transitions].[IsRange], - [Transitions].[TranType], - [Transitions].[Config], - [Transitions].[DTS], - [Transitions].[UserID], - [Transitions].[LastChanged], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [Transitions] - JOIN [Contents] ON - [Contents].[ContentID]=[Transitions].[FromID] - WHERE - [Transitions].[ToID]=@ItemID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItem Succeeded' -ELSE PRINT 'Procedure Creation: getItem Error on Creation' -GO - ---HERE - -/****** Object: StoredProcedure [addItemChild] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addItemChild]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addItemChild]; -GO - ---http://www.code-magazine.com/articleprint.aspx?quickid=0305111&page=4&printmode=true ---http://aleemkhan.wordpress.com/2006/07/21/t-sql-error-handling-pattern-for-nested-transactions-and-stored-procedures/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addItemChild] -( - @ItemID int=null, @Number nvarchar(30)=null, @Text nvarchar(MAX)=null, @FormatID int=null, @Config nvarchar(MAX)=null, - @FromType int=null, @Type int=null, @DTS datetime, @UserID nvarchar(100), @newItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @ChildID int, @ContentID int, @ParentContentID int, @LastChanged timestamp - , @newLastChanged timestamp, @Error int, @Rowcount int, @ChildDeleted int - SELECT @ChildID = pp.[ItemID],@ParentContentID = ii.ContentID, @LastChanged = pp.LastChanged - FROM [ITEMS] ii - LEFT JOIN [PARTS] pp on pp.ContentID=ii.ContentID and pp.FromType=@FromType - WHERE ii.[ItemID]=@ItemID - IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[tblParts]') AND OBJECTPROPERTY(id,N'IsTable') = 1) - BEGIN - SELECT @ChildDeleted = pp.[ItemID],@ParentContentID = ii.ContentID, @LastChanged = pp.LastChanged - FROM [ITEMS] ii - LEFT JOIN [tblPARTS] pp on pp.ContentID=ii.ContentID and pp.FromType=@FromType - WHERE ii.[ItemID]=@ItemID and pp.DeleteStatus > 0 - END - EXECUTE AddContent @Number, @Text, @Type, @FormatID, @Config, @DTS, @UserID, @ContentID output, @newLastChanged output - EXECUTE AddItem null, @ContentID, @DTS, @UserID , @newItemID output, @newLastChanged output - IF @ChildID is null -- No existing child - Add Parts record - BEGIN - IF @ChildDeleted is not null - BEGIN --- INSERT INTO [PartAudits] ([ContentID],[FromType],[ItemID],[DTS],[UserID],[DeleteStatus]) --- SELECT [ContentID],[FromType],[ItemID],[DTS],[UserID],[DeleteStatus] FROM [tblParts] --- WHERE ItemID = @ChildDeleted - DELETE FROM [tblParts] WHERE ItemID = @ChildDeleted - END - EXECUTE AddPart @ParentContentID, @FromType, @newItemID, @DTS, @UserID, @newLastChanged output - END - ELSE -- Update existing Parts record - BEGIN - EXECUTE UpdatePart @ParentContentID, @FromType, @newItemID, @DTS, @UserID, @LastChanged, @newLastChanged output - UPDATE [Items] SET [PreviousID]=@newItemID WHERE [ItemID]=@ChildID - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@newItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TT.ToID = @ChildID OR TT.RangeID = @ChildID - -- Update transitions that pointed to @ItemID to point to @newItemID - Update TRANSITIONS - Set ToID = CASE ToID WHEN @ChildID THEN @newItemID ELSE ToID END, - RangeID = CASE RangeID WHEN @ChildID THEN @newItemID ELSE RangeID END - WHERE ToID = @ChildID OR RangeID = @ChildID - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - -- I don't expect to see any transitions that point to @ChildID. They should have changed in - -- the update above to point to @newItemID. This is here for consistency with the other insert - -- stored procedures - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@ChildID,@newItemID) OR RangeID IN(@ChildID,@newItemID)) - -- Transition Text gets updated in ItemInsertExt.cs - END - IF( @@TRANCOUNT > 0 ) COMMIT - PRINT 'Child Added ' + ltrim(str(@newItemID)) - EXECUTE GetItem @newItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addItemChild Succeeded' -ELSE PRINT 'Procedure Creation: addItemChild Error on Creation' -GO - -/****** Object: StoredProcedure [addItemSiblingAfter] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addItemSiblingAfter]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addItemSiblingAfter]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addItemSiblingAfter] -( - @ItemID int=null, @Number nvarchar(30)=null, @Text nvarchar(MAX)=null, @FormatID int=null, @Config nvarchar(MAX)=null, - @Type int=null, @DTS datetime, @UserID nvarchar(100), @newItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @NextID int, @ContentID int, @newLastChanged timestamp, @NewType int - SELECT @NewType=ISNULL(@Type,[Type]) - FROM [ITEMS] II JOIN [CONTENTS] CC ON II.[ContentID]=CC.[ContentID] - WHERE [ItemID]=@ItemID - SELECT @NextID = [ItemID] - FROM [ITEMS] - WHERE [PreviousID]=@ItemID - EXECUTE AddContent @Number, @Text, @NewType, @FormatID, @Config, @DTS, @UserID, @ContentID output, @newLastChanged output - EXECUTE AddItem @ItemID, @ContentID, @DTS, @UserID , @newItemID output, @newLastChanged output - UPDATE [ITEMS] SET [PreviousID]=@newItemID, [DTS]=@DTS, [UserID]=@UserID where [ItemID]=@NextID -- Should be UpdateItem - -- Get a list of Transitions which need to change children of @ItemID that point to @NextID - DECLARE @NextStepTransitions TABLE - ( - [TransitionID] int PRIMARY KEY, - [FromID] [int], - [ToID] [int], - [RangeID] [int], - [TranType] [int], - [Config] [nvarchar](max) - ) - Insert into @NextStepTransitions select * from vefn_NextStepTransitions(@NextID,@ItemID) - IF (SELECT COUNT(*) from @NextStepTransitions) > 0 -- Next Step Transitions - BEGIN - -- Update all transitions in the list to point to @newItemID - Update TT - Set TT.ToID = CASE TT.ToID WHEN @NextID THEN @newItemID ELSE TT.ToID END, - TT.RangeID = CASE TT.RangeID WHEN @NextID THEN @newItemID ELSE TT.RangeID END - From TRANSITIONS TT - JOIN @NextStepTransitions NS ON NS.TransitionID = TT.TransitionID - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,NS.TransitionID,NS.TranType,NS.ToID,NS.RangeID,@NextID,@newItemID) - From CONTENTS CC - JOIN @NextStepTransitions NS ON NS.FromID = CC.ContentID - END - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Next Step Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@newItemID) OR RangeID IN(@newItemID)) - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@NextID) OR RangeID IN(@NextID)) - -- Transition Text gets updated in ItemInsertExt.cs - IF( @@TRANCOUNT > 0 ) COMMIT - EXECUTE GetItem @newItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addItemSiblingAfter Succeeded' -ELSE PRINT 'Procedure Creation: addItemSiblingAfter Error on Creation' -GO - -/****** Object: StoredProcedure [addItemSiblingBefore] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addItemSiblingBefore]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addItemSiblingBefore]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addItemSiblingBefore] -( - @ItemID int=null, @Number nvarchar(30)=null, @Text nvarchar(MAX)=null, @FormatID int=null, @Config nvarchar(MAX)=null, - @Type int=null, @DTS datetime, @UserID nvarchar(100), @newItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @PreviousID int, @ContentID int, @newLastChanged timestamp, @NewType int - SELECT @PreviousID = [PreviousID], @NewType=ISNULL(@Type,[Type]) - FROM [ITEMS] II - JOIN [CONTENTS] CC ON CC.[ContentID]=II.[CONTENTID] - WHERE [ItemID]=@ItemID - EXECUTE AddContent @Number, @Text, @NewType, @FormatID, @Config, @DTS, @UserID, @ContentID output, @newLastChanged output - EXECUTE AddItem @PreviousID, @ContentID, @DTS, @UserID , @newItemID output, @newLastChanged output - UPDATE [ITEMS] SET [PreviousID]=@newItemID where [ItemID]=@ItemID -- Should be UpdateItem - UPDATE [PARTS] SET [ItemID]=@newItemID where [ItemID]=@ItemID -- Should be UpdatePart - IF @PreviousID is null -- The step is replacing the first step - BEGIN - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@newItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TT.ToID = @ItemID OR TT.RangeID = @ItemID - -- Update transitions that pointed to @ItemID to point to @newItemID - Update TRANSITIONS - Set ToID = CASE ToID WHEN @ItemID THEN @newItemID ELSE ToID END, - RangeID = CASE RangeID WHEN @ItemID THEN @newItemID ELSE RangeID END - WHERE ToID = @ItemID OR RangeID = @ItemID - END - ELSE -- Check for Transitions that point to the Next Step - BEGIN - -- Get a list of Transitions which need to change children of @ItemID that point to @NextID - DECLARE @NextStepTransitions TABLE - ( - [TransitionID] int PRIMARY KEY, - [FromID] [int], - [ToID] [int], - [RangeID] [int], - [TranType] [int], - [Config] [nvarchar](max) - ) - Insert into @NextStepTransitions select * from vefn_NextStepTransitions(@ItemID,@PreviousID) - IF (SELECT COUNT(*) from @NextStepTransitions) > 0 -- Next Step Transitions - BEGIN - -- Update all transitions in the list to point to @newItemID - Update TT - Set TT.ToID = CASE TT.ToID WHEN @ItemID THEN @newItemID ELSE TT.ToID END, - TT.RangeID = CASE TT.RangeID WHEN @ItemID THEN @newItemID ELSE TT.RangeID END - From TRANSITIONS TT - JOIN @NextStepTransitions NS ON NS.TransitionID = TT.TransitionID - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,NS.TransitionID,NS.TranType,NS.ToID,NS.RangeID,@ItemID,@newItemID) - From CONTENTS CC - JOIN @NextStepTransitions NS ON NS.FromID = CC.ContentID - END - END - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@ItemID,@newItemID) OR RangeID IN(@ItemID,@newItemID)) - -- Transition Text gets updated in ItemInsertExt.cs - IF( @@TRANCOUNT > 0 ) COMMIT - PRINT 'Sibling Added Before ' + ltrim(str(@newItemID)) - EXECUTE GetItem @newItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addItemSiblingBefore Succeeded' -ELSE PRINT 'Procedure Creation: addItemSiblingBefore Error on Creation' -GO - -/****** Object: StoredProcedure [addMembership] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addMembership]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addMembership]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addMembership] - -( - @UID int, - @GID int, - @StartDate datetime, - @EndDate datetime=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UsrID nvarchar(100), - @newUGID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Memberships] - ( - [UID], - [GID], - [StartDate], - [EndDate], - [Config], - [DTS], - [UsrID] - ) - VALUES - ( - @UID, - @GID, - @StartDate, - @EndDate, - @Config, - @DTS, - @UsrID - ) - SELECT @newUGID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Memberships] WHERE [UGID]=@newUGID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addMembership Succeeded' -ELSE PRINT 'Procedure Creation: addMembership Error on Creation' -GO - -/****** Object: StoredProcedure [addPdf] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addPdf]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addPdf]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addPdf] - -( - @DocID int, - @DebugStatus int, - @TopRow int, - @PageLength int, - @LeftMargin int, - @PageWidth int, - @PageCount float, - @DocPdf varbinary(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Pdfs] - ( - [DocID], - [DebugStatus], - [TopRow], - [PageLength], - [LeftMargin], - [PageWidth], - [PageCount], - [DocPdf], - [DTS], - [UserID] - ) - VALUES - ( - @DocID, - @DebugStatus, - @TopRow, - @PageLength, - @LeftMargin, - @PageWidth, - @PageCount, - @DocPdf, - @DTS, - @UserID - ) - - SELECT @newLastChanged=[LastChanged] - FROM [Pdfs] WHERE [DocID]=@DocID AND [DebugStatus]=@DebugStatus AND [TopRow]=@TopRow AND [PageLength]=@PageLength AND [LeftMargin]=@LeftMargin AND [PageWidth]=@PageWidth - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addPdf Succeeded' -ELSE PRINT 'Procedure Creation: addPdf Error on Creation' -GO - -/****** Object: StoredProcedure [addPermission] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addPermission]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addPermission]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addPermission] - -( - @RID int, - @PermLevel int, - @VersionType int, - @PermValue int, - @PermAD int, - @StartDate datetime, - @EndDate datetime=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UsrID nvarchar(100), - @newPID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Permissions] - ( - [RID], - [PermLevel], - [VersionType], - [PermValue], - [PermAD], - [StartDate], - [EndDate], - [Config], - [DTS], - [UsrID] - ) - VALUES - ( - @RID, - @PermLevel, - @VersionType, - @PermValue, - @PermAD, - @StartDate, - @EndDate, - @Config, - @DTS, - @UsrID - ) - SELECT @newPID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Permissions] WHERE [PID]=@newPID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addPermission Succeeded' -ELSE PRINT 'Procedure Creation: addPermission Error on Creation' -GO - -/****** Object: StoredProcedure [addRODb] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addRODb]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addRODb]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addRODb] - -( - @ROName nvarchar(255), - @FolderPath nvarchar(255), - @DBConnectionString nvarchar(MAX), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newRODbID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [RODbs] - ( - [ROName], - [FolderPath], - [DBConnectionString], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @ROName, - @FolderPath, - @DBConnectionString, - @Config, - @DTS, - @UserID - ) - SELECT @newRODbID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [RODbs] WHERE [RODbID]=@newRODbID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addRODb Succeeded' -ELSE PRINT 'Procedure Creation: addRODb Error on Creation' -GO - -/****** Object: StoredProcedure [addROFst] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addROFst]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addROFst]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addROFst] - -( - @RODbID int, - @ROLookup varbinary(MAX), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newROFstID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [ROFsts] - ( - [RODbID], - [ROLookup], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @RODbID, - @ROLookup, - @Config, - @DTS, - @UserID - ) - SELECT @newROFstID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [ROFsts] WHERE [ROFstID]=@newROFstID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addROFst Succeeded' -ELSE PRINT 'Procedure Creation: addROFst Error on Creation' -GO - -/****** Object: StoredProcedure [addROImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addROImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addROImage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addROImage] - -( - @RODbID int, - @FileName nvarchar(255), - @Content varbinary(MAX), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newImageID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [ROImages] - ( - [RODbID], - [FileName], - [Content], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @RODbID, - @FileName, - @Content, - @Config, - @DTS, - @UserID - ) - SELECT @newImageID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [ROImages] WHERE [ImageID]=@newImageID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addROImage Succeeded' -ELSE PRINT 'Procedure Creation: addROImage Error on Creation' -GO - -/****** Object: StoredProcedure [addRole] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addRole]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addRole]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addRole] - -( - @Name nvarchar(50), - @Title nvarchar(250), - @DTS datetime, - @UsrID nvarchar(100), - @newRID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Roles] - ( - [Name], - [Title], - [DTS], - [UsrID] - ) - VALUES - ( - @Name, - @Title, - @DTS, - @UsrID - ) - SELECT @newRID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Roles] WHERE [RID]=@newRID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addRole Succeeded' -ELSE PRINT 'Procedure Creation: addRole Error on Creation' -GO - -/****** Object: StoredProcedure [addRoUsage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addRoUsage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addRoUsage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addRoUsage] - -( - @ContentID int, - @ROID nvarchar(16), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @RODbID int, - @newROUsageID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [RoUsages] - ( - [ContentID], - [ROID], - [Config], - [DTS], - [UserID], - [RODbID] - ) - VALUES - ( - @ContentID, - @ROID, - @Config, - @DTS, - @UserID, - @RODbID - ) - SELECT @newROUsageID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [RoUsages] WHERE [ROUsageID]=@newROUsageID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addRoUsage Succeeded' -ELSE PRINT 'Procedure Creation: addRoUsage Error on Creation' -GO - -/****** Object: StoredProcedure [addTransition] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addTransition]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addTransition]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addTransition] - -( - @FromID int, - @ToID int, - @RangeID int, - @IsRange int, - @TranType int, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newTransitionID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Transitions] - ( - [FromID], - [ToID], - [RangeID], - [IsRange], - [TranType], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @FromID, - @ToID, - @RangeID, - @IsRange, - @TranType, - @Config, - @DTS, - @UserID - ) - SELECT @newTransitionID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Transitions] WHERE [TransitionID]=@newTransitionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addTransition Succeeded' -ELSE PRINT 'Procedure Creation: addTransition Error on Creation' -GO - -/****** Object: StoredProcedure [addUser] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addUser]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addUser]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addUser] - -( - @UserID nvarchar(100), - @FirstName nvarchar(50)=null, - @MiddleName nvarchar(50)=null, - @LastName nvarchar(50)=null, - @Suffix nvarchar(10)=null, - @CourtesyTitle nvarchar(10)=null, - @PhoneNumber nvarchar(30)=null, - @CFGName nvarchar(8)=null, - @UserLogin nvarchar(10)=null, - @UserName nvarchar(32)=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UsrID nvarchar(100), - @newUID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Users] - ( - [UserID], - [FirstName], - [MiddleName], - [LastName], - [Suffix], - [CourtesyTitle], - [PhoneNumber], - [CFGName], - [UserLogin], - [UserName], - [Config], - [DTS], - [UsrID] - ) - VALUES - ( - @UserID, - @FirstName, - @MiddleName, - @LastName, - @Suffix, - @CourtesyTitle, - @PhoneNumber, - @CFGName, - @UserLogin, - @UserName, - @Config, - @DTS, - @UsrID - ) - SELECT @newUID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Users] WHERE [UID]=@newUID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addUser Succeeded' -ELSE PRINT 'Procedure Creation: addUser Error on Creation' -GO - -/****** Object: StoredProcedure [addZContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addZContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addZContent]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addZContent] - -( - @ContentID int, - @OldStepSequence nvarchar(32), - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [ZContents] - ( - [ContentID], - [OldStepSequence] - ) - VALUES - ( - @ContentID, - @OldStepSequence - ) - - SELECT @newLastChanged=[LastChanged] - FROM [ZContents] WHERE [ContentID]=@ContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addZContent Succeeded' -ELSE PRINT 'Procedure Creation: addZContent Error on Creation' -GO - -/****** Object: StoredProcedure [addZTransition] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addZTransition]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addZTransition]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addZTransition] - -( - @TransitionID int, - @Oldto nvarchar(32), - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [ZTransitions] - ( - [TransitionID], - [oldto] - ) - VALUES - ( - @TransitionID, - @Oldto - ) - - SELECT @newLastChanged=[LastChanged] - FROM [ZTransitions] WHERE [TransitionID]=@TransitionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addZTransition Succeeded' -ELSE PRINT 'Procedure Creation: addZTransition Error on Creation' -GO - -/****** Object: StoredProcedure [CopyItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[CopyItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [CopyItemAndChildren]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[CopyItemAndChildren] -( - @StartItemID INT, - @DestFormatID INT, - @UserID NVARCHAR(100), - @NewStartItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - ---+-----------------------------------------------------------------+ ---¦ BEGIN TRANSACTION to make these changes temporary ¦ ---+-----------------------------------------------------------------+ - BEGIN TRANSACTION - -DECLARE @Children AS TABLE -( - ItemID INT PRIMARY KEY, - NewItemID INT, - ContentID INT, - NewContentID INT, - FormatID INT, - NewFormatID INT -) -DECLARE @NewDocuments AS TABLE -( - DocID INT PRIMARY KEY, - NewDocID INT -) --- Locals -DECLARE @DTS DATETIME -- DTS of all New Items -SET @DTS = GETDATE() -- Get the current Date and Time --- Get a list of all of the Items to be copied based upon StartItemID and EndItemID --- If the StartItemID = EndItemID then it is a single item and it's children -INSERT INTO @Children SELECT ItemID,ItemID,ContentID,ContentID,FormatID,FormatID FROM vefn_ChildItemsRange(@StartItemID,@StartItemID,null) --- <<< Copy Contents >>> --- Create new content rows to match the existing rows. Set the type to the Current ContentID temporarily --- so that the new content rows can be associated with the existing content rows. -INSERT INTO Contents - ([Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID]) - select [Number],[Text],[ContentID],[FormatID],[Config],@DTS,@UserID - from Contents where ContentID in(Select ContentID from @Children) --- Update the @Children with the NewConentIDs -UPDATE NN set NN.NewContentID = CC.ContentID -From Contents CC -Join @Children NN on NN.ContentID = CC.Type AND CC.DTS = @DTS and CC.UserID = @UserID --- Reset the Type column in the Contents table with the Type column from the original Records. -UPDATE CC set CC.Type = CC2.Type -From Contents CC -Join @Children NN on NN.NewContentID = CC.ContentID -Join Contents CC2 on NN.ContentID = CC2.ContentID --- Contents are done - -- SELECT * From Contents where DTS = @DTS and UserID = @UserID --- <<< Copy Grids >>> -INSERT INTO [Grids]([ContentID],[Data],[Config],[DTS],[UserID]) - SELECT NN.[NewContentID],[Data],[Config],@DTS,@UserID - FROM [Grids] GG Join @Children NN on GG.ContentID = NN.ContentID --- <<< Copy Images >>> -INSERT INTO [Images]([ContentID],[ImageType],[FileName],[Data],[Config],[DTS],[UserID]) - SELECT NN.[NewContentID],[ImageType],[FileName],[Data],[Config],@DTS,@UserID - FROM [Images] II Join @Children NN on II.ContentID = NN.ContentID --- Create new item rows based upon the current item rows and the @Children table, with the NewContentIDs -INSERT INTO [Items] ([PreviousID],[ContentID],[DTS],[UserID]) - SELECT II.[PreviousID], -- Leave the PreviousID as is for now - NN.NewContentID, @DTS, @UserID - from @Children NN - join Items II on II.ContentID = NN.ContentID --- Update the @Children with the NewItemIDs -UPDATE NN set NN.NewItemID = II.ItemID -From Items II -Join @Children NN on NN.NewContentID = II.ContentID AND II.DTS = @DTS and II.UserID = @UserID -DECLARE @NewItemID int -SELECT @NewItemID = NewItemID - FROM @Children - WHERE ItemID = @StartItemID -UPDATE NN SET NN.[NewFormatID] = CC.[FormatID] - FROM @Children NN - Join vefn_ChildItemsRange(@NewItemID,@NewItemID,@DestFormatID) CC - ON NN.NewItemID = CC.ItemID --- The @Children table is now complete - --SELECT * From @Children --- Update the PreviousID in the new Item rows, to the new ItemIDs based upon the old ItemIDs -Update II Set II.[PreviousID] = NN.NewItemID -from Items II -Join @Children NN on NN.ItemID = II.PreviousID AND II.DTS = @DTS and II.UserID = @UserID --- Get the new ItemIDs based upon the old ItemIDs -SELECT @NewStartItemID = NewItemID from @Children where ItemID = @StartItemID ---SELECT @NewEndItemID = NewItemID from @Children where ItemID = @EndItemID --- Set the PreviousID for the starting Item to null temporarily. --- This will be adjusted based upon where the step is inserted. -Update Items Set PreviousID = null where ItemID = @NewStartItemID --- Items are done - --SELECT * From Items where DTS = @DTS and UserID = @UserID --- <<< Copy Parts >>> -INSERT INTO [Parts] ([ContentID],[FromType],[ItemID],[DTS],[UserID]) -Select NNF.NewContentID,[FromType],NNT.NewItemID, @DTS, @UserID from Parts PP -JOIN @Children NNF on PP.ContentID = NNF.ContentID -JOIN @Children NNT on PP.ItemID = NNT.ItemID --- Parts are done - -- SELECT * From Parts where DTS = @DTS and UserID = @UserID --- <<< Copy Annotations >>> -INSERT INTO [Annotations] ([ItemID],[TypeID],[RtfText],[SearchText],[Config],[DTS],[UserID]) - Select NewItemID, TypeID, RtfText, SearchText, Config, @DTS, @UserID - from Annotations AA Join @Children NN on AA.ItemID = NN.ItemID --- Annotations are done - -- SELECT * From Annotations where DTS = @DTS and UserID = @UserID --- <<< Copy Documents and Entries>>> --- logic to create Entries for Library Documents -INSERT INTO [Entries] ([ContentID],[DocID],[DTS],[UserID]) - SELECT NN.[NewContentID],EE.[DocID],@DTS,@UserID - FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID - JOIN [Documents] DD on EE.[DocID] = DD.[DocID] and Isnull(LibTitle,'') <> '' --- Logic to create new documents for any documents used that do not have libtitles -INSERT INTO [Documents] ([LibTitle],[DocContent],[DocAscii],[Config],[DTS],[UserID],[FileExtension]) - OUTPUT CAST(INSERTED.[LibTitle] as INT),INSERTED.[DocID] INTO @NewDocuments - SELECT str(DD.[DocID]),[DocContent],[DocAscii],[Config],@DTS,@UserID,[FileExtension] - FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID - JOIN [Documents] DD on EE.[DocID] = DD.[DocID] and Isnull(LibTitle,'') = '' -UPDATE DD SET LibTitle = '' - FROM Documents DD JOIN @NewDocuments ND on DD.[DocID] = ND.[NewDocID] - where DTS = @DTS and UserID = @UserID --- Documents are Done - -- SELECT * From Documents where DTS = @DTS and UserID = @UserID --- Logic to create entries for these newly created documents -INSERT INTO [Entries] ([ContentID],[DocID],[DTS],[UserID]) - SELECT NN.[NewContentID],ND.[NewDocID],@DTS,@UserID - FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID - JOIN @NewDocuments ND on EE.[DocID] = ND.[DocID] --- Logic to Create DROUsages for these newly created documents -INSERT INTO [DROUsages] ([DocID],[ROID],[Config],[DTS],[UserID],[RODbID]) - SELECT ND.[NewDocID],[ROID],[Config],@DTS,@UserID,[RODbID] - FROM [DROUsages] RR - JOIN @NewDocuments ND on RR.[DocID] = ND.[DocID] - --- Entries are done - -- SELECT * From Entries EE JOIN Documents DD on ee.DocID = DD.DocID where EE.DTS = @DTS and EE.UserID = @UserID --- <<< Copy RoUsages >>> -INSERT INTO [RoUsages] ([ContentID],[ROID],[Config],[DTS],[UserID],[RODbID]) - SELECT NN.[NewContentID],CAST([ROUsageID] as nvarchar(16)),[Config],@DTS,@UserID,[RODbID] - FROM [RoUsages] RR Join @Children NN on RR.ContentID = NN.ContentID --- Update content records for newly copied records to use correct RO usage ids in the RO tags -DECLARE @RowsAffected int -SET @RowsAffected=1 -WHILE @RowsAffected > 0 -BEGIN - UPDATE CC SET [TEXT] = C2.NewText - FROM CONTENTS CC - JOIN (SELECT C1.ContentID, .dbo.vefn_FixROText(C1.Text, CAST([ROID] as int), [ROUsageID]) NewText - FROM CONTENTS C1 - JOIN @Children NN on C1.ContentID = NN.NewContentID - JOIN RoUsages RO on NN.NewContentID = RO.ContentID) C2 ON CC.ContentID = C2.ContentID - WHERE [TEXT] <> C2.NewText - SET @RowsAffected = @@RowCount -END --- Update grid records for newly copied records to use correct RO usage ids in the RO tags -SET @RowsAffected=1 -WHILE @RowsAffected > 0 -BEGIN - UPDATE GG SET [Data] = G2.NewData - FROM GRIDS GG - JOIN (SELECT G1.ContentID, .dbo.vefn_FixROData(G1.Data, CAST([ROID] as int), [ROUsageID]) NewData - FROM GRIDS G1 - JOIN @Children NN on G1.ContentID = NN.NewContentID - JOIN RoUsages RO on NN.NewContentID = RO.ContentID) G2 ON GG.ContentID = G2.ContentID - WHERE Cast([Data] as varchar(max)) <> cast(G2.NewData as varchar(max)) - SET @RowsAffected = @@RowCount -END -UPDATE RON SET [ROID] = ROO.[ROID] - FROM RoUsages RON - JOIN @Children NN on RON.ContentID = NN.NewContentID - JOIN RoUsages ROO on CAST(RON.ROID as int) = ROO.RoUsageID - --- RoUsages are done - -- SELECT * From RoUsages where DTS = @DTS and UserID = @UserID - --- <<< Copy Transtions >>> --- Note that the inserted record has the 'TranType' field set to old transitionid. This is done --- so that the next step can replace the old transitionid with the new transitionid in the --- content record's transition tokens. The TranType gets reset after the content records are --- updated. --- Also note that the 'toid/rangeid' may need converted to newly copied ids or may not. If it's --- not a range, then it always is converted to new, if there is a new. If it's a range, both --- the toid & the rangeid must be new in order for the conversion to be correct. You cannot --- have part of the range pointing to the new and part of the range pointing to the original --- locations. - -INSERT INTO .[dbo].[Transitions] ([FromID],[ToID],[RangeID],[IsRange],[TranType],[Config],[DTS],[UserID]) - SELECT NNF.[NewContentID], - -- if both toid & range are null, use the original toid & rangeid - CASE WHEN NNT.[NewItemID] is null or NNR.[NewItemID] is null THEN [ToID] ELSE NNT.[NewItemID] END, - CASE WHEN NNT.[NewItemID] is null or NNR.[NewItemID] is null THEN [RangeID] ELSE NNR.[NewItemID] END, - [IsRange],[TransitionID],[Config],@DTS,@UserID - FROM .[dbo].[Transitions] TT - JOIN @Children NNF on TT.[FromID] = NNF.[ContentID] - LEFT JOIN @Children NNT on TT.[ToID] = NNT.[ItemID] - LEFT JOIN @Children NNR on TT.[RangeID] = NNR.[ItemID] --- -- Update content records for newly copied records to use correct TransitionIDs in the Transition tags -SET @RowsAffected=1 -WHILE @RowsAffected > 0 -BEGIN -UPDATE CC SET [TEXT] = C2.NewText - FROM CONTENTS CC - JOIN (SELECT C1.ContentID, .dbo.vefn_FixTransitionTextForCopy(C1.Text, TRO.TransitionID, TRO.TranType, TRO.[ToID], TRO.[RangeID],TR.[TransitionID], TR.[ToID], TR.[RangeID], .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType)) NewText - FROM CONTENTS C1 - JOIN @Children NN on C1.ContentID = NN.NewContentID - JOIN Transitions TR on NN.NewContentID = TR.FromID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID) C2 ON CC.ContentID = C2.ContentID - WHERE [TEXT] <> C2.NewText - SET @RowsAffected = @@RowCount -END --- -- Update grid records for newly copied records to use correct TransitionIDs in the Transition tags -SET @RowsAffected=1 -WHILE @RowsAffected > 0 -BEGIN -UPDATE GG SET [DATA] = G2.NewData - FROM GRIDS GG - JOIN (SELECT G1.ContentID, .dbo.vefn_FixTransitionDataForCopy(G1.Data, TRO.TransitionID, TRO.TranType, TRO.[ToID], TRO.[RangeID],TR.[TransitionID], TR.[ToID], TR.[RangeID], .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType)) NewData - FROM GRIDS G1 - JOIN @Children NN on G1.ContentID = NN.NewContentID - JOIN Transitions TR on NN.NewContentID = TR.FromID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID) G2 ON GG.ContentID = G2.ContentID - WHERE Cast([DATA] as varchar(max)) <> CAST(G2.NewData as varchar(max)) - SET @RowsAffected = @@RowCount -END --- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition whose transition format changes -INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT NN.NewItemID, @typeID,'Verify Transition Format',@UserID - FROM Transitions TR - JOIN @Children NN on TR.FromID = NN.NewContentID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID - WHERE .dbo.vefn_CompareTranFormat(NN.FormatID, NN.NewFormatID, TRO.TranType) <> 0 -UPDATE TR SET TR.[TranType] = .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType) - FROM Transitions TR - JOIN @Children NN on TR.FromID = NN.NewContentID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID --- Transitions are done - -- SELECT * From Transitions where DTS = @DTS and UserID = @UserID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: CopyItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: CopyItemAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [deleteAllPdfs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAllPdfs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteAllPdfs]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteAllPdfs] - -( - @DocID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Pdfs] - WHERE [DocID] = @DocID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteAllPdfs Succeeded' -ELSE PRINT 'Procedure Creation: deleteAllPdfs Error on Creation' -GO - -/****** Object: StoredProcedure [deleteAnnotation] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAnnotation]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteAnnotation]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteAnnotation] - -( - @AnnotationID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Annotations] - WHERE [AnnotationID] = @AnnotationID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteAnnotation Succeeded' -ELSE PRINT 'Procedure Creation: deleteAnnotation Error on Creation' -GO - -/****** Object: StoredProcedure [deleteAnnotationType] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAnnotationType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteAnnotationType]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteAnnotationType] - -( - @TypeID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Annotations] - WHERE [TypeID]=@TypeID - DELETE [AnnotationTypes] - WHERE [TypeID] = @TypeID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteAnnotationType Succeeded' -ELSE PRINT 'Procedure Creation: deleteAnnotationType Error on Creation' -GO - -/****** Object: StoredProcedure [deleteAssignment] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAssignment]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteAssignment]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteAssignment] - -( - @AID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Assignments] - WHERE [AID] = @AID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteAssignment Succeeded' -ELSE PRINT 'Procedure Creation: deleteAssignment Error on Creation' -GO - -/****** Object: StoredProcedure [deleteAssociation] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAssociation]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteAssociation]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteAssociation] - -( - @AssociationID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Associations] - WHERE [AssociationID] = @AssociationID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteAssociation Succeeded' -ELSE PRINT 'Procedure Creation: deleteAssociation Error on Creation' -GO - -/****** Object: StoredProcedure [deleteConnection] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteConnection]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteConnection]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteConnection] - -( - @DBID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Folders] - WHERE [DBID]=@DBID - DELETE [Connections] - WHERE [DBID] = @DBID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteConnection Succeeded' -ELSE PRINT 'Procedure Creation: deleteConnection Error on Creation' -GO - -/****** Object: StoredProcedure [deleteContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteContent]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteContent] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Details] - WHERE [ContentID]=@ContentID - DELETE [Entries] - WHERE [ContentID]=@ContentID - DELETE [Grids] - WHERE [ContentID]=@ContentID - DELETE [Images] - WHERE [ContentID]=@ContentID - DELETE [Items] - WHERE [ContentID]=@ContentID - DELETE [Parts] - WHERE [ContentID]=@ContentID - DELETE [RoUsages] - WHERE [ContentID]=@ContentID - DELETE [Transitions] - WHERE [FromID]=@ContentID - DELETE [ZContents] - WHERE [ContentID]=@ContentID - DELETE [Contents] - WHERE [ContentID] = @ContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteContent Succeeded' -ELSE PRINT 'Procedure Creation: deleteContent Error on Creation' -GO - -/****** Object: StoredProcedure [deleteDetail] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteDetail]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteDetail]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteDetail] - -( - @DetailID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Details] - WHERE [DetailID] = @DetailID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteDetail Succeeded' -ELSE PRINT 'Procedure Creation: deleteDetail Error on Creation' -GO - -/****** Object: StoredProcedure [deleteDocument] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteDocument]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteDocument]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteDocument] - -( - @DocID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [DROUsages] - WHERE [DocID]=@DocID - DELETE [Entries] - WHERE [DocID]=@DocID - DELETE [Pdfs] - WHERE [DocID]=@DocID - DELETE [Documents] - WHERE [DocID] = @DocID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteDocument Succeeded' -ELSE PRINT 'Procedure Creation: deleteDocument Error on Creation' -GO - -/****** Object: StoredProcedure [deleteDocVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteDocVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteDocVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteDocVersion] - -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Associations] - WHERE [VersionID]=@VersionID - DELETE [DocVersions] - WHERE [VersionID] = @VersionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteDocVersion Succeeded' -ELSE PRINT 'Procedure Creation: deleteDocVersion Error on Creation' -GO - -/****** Object: StoredProcedure [deleteDROUsage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteDROUsage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteDROUsage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteDROUsage] - -( - @DROUsageID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [DROUsages] - WHERE [DROUsageID] = @DROUsageID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteDROUsage Succeeded' -ELSE PRINT 'Procedure Creation: deleteDROUsage Error on Creation' -GO - -/****** Object: StoredProcedure [deleteEntry] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteEntry]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteEntry]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteEntry] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Entries] - WHERE [ContentID] = @ContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteEntry Succeeded' -ELSE PRINT 'Procedure Creation: deleteEntry Error on Creation' -GO - -/****** Object: StoredProcedure [deleteFigure] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteFigure]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteFigure]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteFigure] - -( - @FigureID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Figures] - WHERE [FigureID] = @FigureID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteFigure Succeeded' -ELSE PRINT 'Procedure Creation: deleteFigure Error on Creation' -GO - -/****** Object: StoredProcedure [deleteFolder] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteFolder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteFolder]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteFolder] - -( - @FolderID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Assignments] - WHERE [FolderID]=@FolderID - DELETE [DocVersions] - WHERE [FolderID]=@FolderID - DELETE [Folders] - WHERE [FolderID] = @FolderID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteFolder Succeeded' -ELSE PRINT 'Procedure Creation: deleteFolder Error on Creation' -GO - -/****** Object: StoredProcedure [deleteFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteFormat]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteFormat] - -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Contents] - WHERE [FormatID]=@FormatID - DELETE [DocVersions] - WHERE [FormatID]=@FormatID - DELETE [Folders] - WHERE [FormatID]=@FormatID - DELETE [Formats] - WHERE [FormatID] = @FormatID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteFormat Succeeded' -ELSE PRINT 'Procedure Creation: deleteFormat Error on Creation' -GO - -/****** Object: StoredProcedure [deleteGrid] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteGrid]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteGrid]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteGrid] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Grids] - WHERE [ContentID] = @ContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteGrid Succeeded' -ELSE PRINT 'Procedure Creation: deleteGrid Error on Creation' -GO - -/****** Object: StoredProcedure [deleteGroup] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteGroup]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteGroup]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteGroup] - -( - @GID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Assignments] - WHERE [GID]=@GID - DELETE [Memberships] - WHERE [GID]=@GID - DELETE [Groups] - WHERE [GID] = @GID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteGroup Succeeded' -ELSE PRINT 'Procedure Creation: deleteGroup Error on Creation' -GO - -/****** Object: StoredProcedure [deleteImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteImage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteImage] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Images] - WHERE [ContentID] = @ContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteImage Succeeded' -ELSE PRINT 'Procedure Creation: deleteImage Error on Creation' -GO - -/****** Object: StoredProcedure [deleteItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteItem]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteItem] - -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Annotations] - WHERE [ItemID]=@ItemID - DELETE [DocVersions] - WHERE [ItemID]=@ItemID - DELETE [Parts] - WHERE [ItemID]=@ItemID - DELETE [Transitions] - WHERE [RangeID]=@ItemID - DELETE [Transitions] - WHERE [ToID]=@ItemID - DELETE [Items] - WHERE [ItemID] = @ItemID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteItem Succeeded' -ELSE PRINT 'Procedure Creation: deleteItem Error on Creation' -GO - -/****** Object: StoredProcedure [DeleteItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DeleteItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [DeleteItemAndChildren]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[DeleteItemAndChildren] -( - @ItemID int, - @UserID AS VARCHAR(100) -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - declare @DeleteID int - DECLARE @ContentID AS INT - DECLARE @NextItemID AS INT - DECLARE @PreviousItemID AS INT - DECLARE @ExternalChildCount AS INT - DECLARE @ExternalCount AS INT - DECLARE @Path AS VARCHAR(MAX) - DECLARE @Children AS TABLE - ( - ItemID INT PRIMARY KEY, - ContentID INT - ) - DECLARE @ExternalTrans TABLE - ( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL - ) - SET NOCOUNT ON - SELECT @ContentID = ContentID, @PreviousItemID = PreviousID FROM Items WHERE ItemID = @ItemID - SELECT @NextItemID = ItemID FROM Items WHERE PreviousID = @ItemID - SELECT @ExternalCount = count(*) FROM vefn_FindExternalTransitions(@ItemID) - SELECT @ExternalChildCount = count(*) FROM vefn_FindExternalChildTransitions(@ItemID) - SET @Path = [dbo].[ve_GetShortPath](@ItemID) - - IF @ExternalCount > 0 AND @NextItemID is null - BEGIN - RAISERROR ('###Cannot Delete Item###Step %d has External Transitions and has no next step - (%s)',16,1,@ItemID,@Path) - RETURN - END - - IF @ExternalChildCount > 0 - BEGIN - RAISERROR ('###Cannot Delete Item###Step %d has External Transitions to it''s children - (%s)',16,1,@ItemID,@Path) - RETURN - END - --deletelog - INSERT INTO DeleteLog (UserID) values (@UserID) - Select @DeleteID = SCOPE_IDENTITY() - --end deletelog - -- Get list of Children - INSERT INTO @Children SELECT * FROM vefn_ChildItems(@ItemID) - -- UPDATE PreviousID in Items WHERE ItemID = @NextItemID - UPDATE Items SET PreviousID = @PreviousItemID WHERE ItemID=@NextItemID - -- UPDATE DocVersion - UPDATE DocVersions SET ItemID=@NextItemID where ItemID = @ItemID - -- UPDATE Parts - IF @NextItemID is not NULL -- Remove Part Record - BEGIN - UPDATE PARTS SET ItemID = @NextItemID where ItemID=@ItemID - END - ELSE - BEGIN - DELETE FROM Parts WHERE ItemID=@ItemID - END - -- Get external transitions that point to the specified Item - -- These will need to be adjusted to point to the next Item. - INSERT INTO @ExternalTrans SELECT * FROM vefn_FindExternalTransitions(@ItemID); - DECLARE @typeID int -- AnnotationType - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add 'Verification Required' annotions for transtions that point to different step - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where ItemID in (SELECT FromItemID FROM @ExternalTrans) - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NextItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TransitionID in(Select TransitionID from @ExternalTrans) - -- Update transitions that point to @ItemID to Point to @NextItemID - UPDATE TRANSITIONS - SET ToID = case when ToID = @ItemID then @NextItemID else ToID END, - RangeID = case when RangeID = @ItemID then @NextItemID else RangeID END - WHERE TransitionID in(Select TransitionID from @ExternalTrans) - -- Delete Annotations for @ItemID and children - DELETE from Annotations where ItemID in(Select ItemID from @Children) - -- Delete Details associated with @ContentID and children - DELETE from Details where ContentID in(Select ContentID from @Children) - -- Delete Grids associated with @ContentID and children - DELETE from Grids where ContentID in(Select ContentID from @Children) - -- Delete Images associated with @ContentID and children - DELETE from Images where ContentID in(Select ContentID from @Children) - -- Delete Entries associated with @ContentID and children - DELETE from Entries where ContentID in(Select ContentID from @Children) - -- Delete ROUsages associated with @ContentID and children - DELETE from RoUsages where ContentID in(Select ContentID from @Children) - -- Delete ZTransitions records associated with @ContentID and children - DELETE FROM ZTransitions where TransitionID - in(SELECT TransitionID from Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID) - -- Delete Transitions associated with @ContentID and children - DELETE FROM Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID - -- Delete Parts associated with @ContentID and children - DELETE from Parts where ContentID in(Select ContentID from @Children) - -- Delete ZContents associated with @ContentID and children - DELETE from ZContents where ContentID in(Select ContentID from @Children) - -- Disconnect Items from Each Other - DELETE from Items where ItemID in(Select ItemID from @Children) and PreviousID Is Not Null - -- Disconnect Items to be deleted from each other - Update Items set PreviousID = null where ItemID in (Select ItemID from @Children) and PreviousID Is Not Null - -- Delete Item Records - DELETE from Items where ItemID in(Select ItemID from @Children) - -- DELETE Contents - DELETE from Contents where ContentID in(Select ContentID from @Children) - --purge deletelog - DELETE from DeleteLog where DeleteID = @DeleteID - --end purge deletelog - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: DeleteItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: DeleteItemAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [DeleteItemAndChildrenTest] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DeleteItemAndChildrenTest]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [DeleteItemAndChildrenTest]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[DeleteItemAndChildrenTest] -( - @ItemID int, - @UserID AS VARCHAR(100) -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @ContentID AS INT - DECLARE @NextItemID AS INT - DECLARE @PreviousItemID AS INT - DECLARE @ExternalChildCount AS INT - DECLARE @ExternalCount AS INT - DECLARE @Path AS VARCHAR(MAX) - DECLARE @Children AS TABLE - ( - ItemID INT PRIMARY KEY, - ContentID INT - ) - DECLARE @ExternalTrans TABLE - ( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL - ) - SET NOCOUNT ON - SELECT @ContentID = ContentID, @PreviousItemID = PreviousID FROM Items WHERE ItemID = @ItemID - SELECT @NextItemID = ItemID FROM Items WHERE PreviousID = @ItemID - SELECT @ExternalCount = count(*) FROM vefn_FindExternalTransitions(@ItemID) - SELECT @ExternalChildCount = count(*) FROM vefn_FindExternalChildTransitions(@ItemID) - SET @Path = [dbo].[ve_GetShortPath](@ItemID) - - IF @ExternalCount > 0 AND @NextItemID is null - BEGIN - PRINT '--->Cannot delete step ' + @Path + '.' + char(13) + '<===> It has External Transitions and has no next step' - SELECT dbo.ve_GetShortPath(FromItemID) FromPath, - dbo.ve_GetShortPath(ToID) ToPath FROM vefn_FindExternalTransitions(@ItemID) - WHERE NOT EXISTS (SELECT * FROM Items WHERE PreviousID = @ItemID) - RETURN - END - - IF @ExternalChildCount > 0 - BEGIN - PRINT '---> Cannot delete step ' + @Path + '.' + char(13) + '<===> It has External Transitions to it''s children' - SELECT dbo.ve_GetShortPath(FromItemID) FromPath, - dbo.ve_GetShortPath(ToID) ToPath FROM vefn_FindExternalChildTransitions(@ItemID) - RETURN - END - - PRINT '@Path = ''' + @Path + '''' - PRINT '@ItemID = ' + cast(@ItemID as varchar(10)) - PRINT '@ContentID = ' + isnull(cast(@ContentID as varchar(10)),'{NULL}') - PRINT '@NextItemID = ' + isnull(cast(@NextItemID as varchar(10)),'{NULL}') - PRINT '@PreviousItemID = ' + isnull(cast(@PreviousItemID as varchar(10)),'{NULL}') - PRINT '@ExternalCount = ' + isnull(cast(@ExternalCount as varchar(10)),'{NULL}') - PRINT '@ExternalChildCount = ' + isnull(cast(@ExternalChildCount as varchar(10)),'{NULL}') - - PRINT '---' + char(13) +'Preparing to delete step ' + @Path+ char(13) + '---' - -- Get list of Children - INSERT INTO @Children SELECT * FROM vefn_ChildItems(@ItemID) - PRINT 'Children' - SELECT ItemID, [dbo].[ve_GetShortPath](ItemID) ItemPath, ContentID,[dbo].[ve_GetShortPathFromContentID](ContentID) ContentPath FROM @Children - - -- UPDATE PreviousID in Items WHERE ItemID = @NextItemID - PRINT 'UPDATE Items Next' - SELECT ItemID, [dbo].[ve_GetShortPath](@NextItemID) PathOfNextItem,[dbo].[ve_GetShortPath](PreviousID) PathOfDeletedItem, [dbo].[ve_GetShortPath](@PreviousItemID) NewPreviousPath - FROM Items WHERE ItemID=@NextItemID - -- UPDATE DocVersion - PRINT 'UPDATE DocVersions ItemID' - SELECT [dbo].[ve_GetShortPath](ItemID) MyPath, [dbo].[ve_GetShortPath](@NextItemID) NewPath - FROM DocVersions WHERE ItemID=@ItemID - SELECT VersionID, [dbo].[ve_GetShortPath](@NextItemID) NewPath - FROM DocVersions WHERE ItemID=@ItemID - -- UPDATE Parts - IF @NextItemID is not NULL -- Remove Part Record - BEGIN - PRINT 'UPDATE Parts' - SELECT ItemID,@NextItemID,[dbo].[ve_GetShortPath](ItemID) ItemPath, [dbo].[ve_GetShortPath](@NextItemID) NewItemPath - FROM Parts WHERE ItemID=@ItemID - END - ELSE - BEGIN - PRINT 'DELETE Parts' - SELECT ContentID,FromType,[dbo].[ve_GetShortPath](ItemID) ItemPath FROM Parts WHERE ItemID=@ItemID - END - -- Get external transitions that point to the specified Item - -- These will need to be adjusted to point to the next Item. - INSERT INTO @ExternalTrans SELECT * FROM vefn_FindExternalTransitions(@ItemID); - DECLARE @typeID int -- AnnotationType - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - PRINT 'ADD Verification Required' - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Get list of External Transitions - - PRINT 'UPDATE Transitions - ADD Annotations' - SELECT [dbo].[ve_GetShortPathFromContentID](FromID)FromPath - ,[dbo].[ve_GetShortPath](ToID) ToPath - ,case when ToID = @ItemID then [dbo].[ve_GetShortPath](@NextItemID) else [dbo].[ve_GetShortPath](ToID) END NewToPath - ,[dbo].[ve_GetShortPath](RangeID) RangePath - ,case when RangeID = @ItemID then [dbo].[ve_GetShortPath](@NextItemID) else [dbo].[ve_GetShortPath](RangeID) END NewRangePath - FROM Transitions - WHERE TransitionID IN(Select TransitionID from @ExternalTrans) - -- Delete Annotations for @ItemID and children - PRINT 'DELETE Annotations' - SELECT AnnotationID, [dbo].[ve_GetShortPath](ItemID) ItemPath from Annotations where ItemID in(Select ItemID from @Children) - -- Delete Details associated with @ContentID and children - PRINT 'DELETE Details' - SELECT [dbo].[ve_GetShortPathFromContentID](ContentID) ContentPath from Details where ContentID in(Select ContentID from @Children) - -- Delete Entries associated with @ContentID and children - PRINT 'DELETE Entries' - SELECT ContentID, [dbo].[ve_GetShortPathFromContentID](ContentID) ContentPath from Entries where ContentID in(Select ContentID from @Children) - -- Delete ROUsages associated with @ContentID and children - PRINT 'DELETE ROUsages' - SELECT ROUsageID, [dbo].[ve_GetShortPathFromContentID](ContentID) ContentPath from RoUsages where ContentID in(Select ContentID from @Children) - -- Delete Transitions associated with @ContentID and children - PRINT 'DELETE Transitions' - SELECT TransitionID, [dbo].[ve_GetShortPathFromContentID](FromID)FromPath ,[dbo].[ve_GetShortPath](ToID) ToPath - ,[dbo].[ve_GetShortPath](RangeID) RangePath FROM Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID - -- Delete Parts associated with @ContentID and children - PRINT 'DELETE Parts' - SELECT ContentID, FromType,[dbo].[ve_GetShortPathFromContentID](ContentID) ContentPath from Parts where ContentID in(Select ContentID from @Children) - -- Delete ZContents associated with @ContentID and children - PRINT 'DELETE XContents' - SELECT ContentID,[dbo].[ve_GetShortPathFromContentID](ContentID) ContentPath from ZContents where ContentID in(Select ContentID from @Children) - -- Disconnect Items from Each Other - PRINT 'DISCONNECT Items from each other' - SELECT ItemID, [dbo].[ve_GetShortPath](ItemID) ItemPath, [dbo].[ve_GetShortPath](PreviousID) PreviousPath from Items where ItemID in(Select ItemID from @Children) and PreviousID Is Not Null - -- Delete Item Records - PRINT 'DELETE Items' - SELECT ItemID, [dbo].[ve_GetShortPath](ItemID) ItemPath from Items where ItemID in(Select ItemID from @Children) - -- DELETE Contents - PRINT 'DELETE Contents' - SELECT ContentID, [dbo].[ve_GetShortPathFromContentID](ContentID) ContentPath from Contents where ContentID in(Select ContentID from @Children) - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: DeleteItemAndChildrenTest Succeeded' -ELSE PRINT 'Procedure Creation: DeleteItemAndChildrenTest Error on Creation' -GO - -/****** Object: StoredProcedure [deleteMembership] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteMembership]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteMembership]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteMembership] - -( - @UGID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Memberships] - WHERE [UGID] = @UGID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteMembership Succeeded' -ELSE PRINT 'Procedure Creation: deleteMembership Error on Creation' -GO - -/****** Object: StoredProcedure [deletePart] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deletePart]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deletePart]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deletePart] - -( - @ContentID int, - @FromType int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Parts] - WHERE [ContentID] = @ContentID AND [FromType] = @FromType - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deletePart Succeeded' -ELSE PRINT 'Procedure Creation: deletePart Error on Creation' -GO - -/****** Object: StoredProcedure [deletePdf] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deletePdf]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deletePdf]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deletePdf] - -( - @DocID int, - @DebugStatus int, - @TopRow int, - @PageLength int, - @LeftMargin int, - @PageWidth int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Pdfs] - WHERE [DocID] = @DocID AND [DebugStatus] = @DebugStatus AND [TopRow] = @TopRow AND [PageLength] = @PageLength AND [LeftMargin] = @LeftMargin AND [PageWidth] = @PageWidth - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deletePdf Succeeded' -ELSE PRINT 'Procedure Creation: deletePdf Error on Creation' -GO - -/****** Object: StoredProcedure [deletePermission] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deletePermission]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deletePermission]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deletePermission] - -( - @PID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Permissions] - WHERE [PID] = @PID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deletePermission Succeeded' -ELSE PRINT 'Procedure Creation: deletePermission Error on Creation' -GO - -/****** Object: StoredProcedure [deleteRODb] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteRODb]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteRODb]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteRODb] - -( - @RODbID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [DROUsages] - WHERE [RODbID]=@RODbID - DELETE [ROFsts] - WHERE [RODbID]=@RODbID - DELETE [ROImages] - WHERE [RODbID]=@RODbID - DELETE [RoUsages] - WHERE [RODbID]=@RODbID - DELETE [RODbs] - WHERE [RODbID] = @RODbID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteRODb Succeeded' -ELSE PRINT 'Procedure Creation: deleteRODb Error on Creation' -GO - -/****** Object: StoredProcedure [deleteROFst] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteROFst]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteROFst]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteROFst] - -( - @ROFstID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Associations] - WHERE [ROFstID]=@ROFstID - DELETE [Figures] - WHERE [ROFstID]=@ROFstID - DELETE [ROFsts] - WHERE [ROFstID] = @ROFstID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteROFst Succeeded' -ELSE PRINT 'Procedure Creation: deleteROFst Error on Creation' -GO - -/****** Object: StoredProcedure [deleteROImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteROImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteROImage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteROImage] - -( - @ImageID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Figures] - WHERE [ImageID]=@ImageID - DELETE [ROImages] - WHERE [ImageID] = @ImageID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteROImage Succeeded' -ELSE PRINT 'Procedure Creation: deleteROImage Error on Creation' -GO - -/****** Object: StoredProcedure [deleteRole] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteRole]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteRole]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteRole] - -( - @RID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Assignments] - WHERE [RID]=@RID - DELETE [Permissions] - WHERE [RID]=@RID - DELETE [Roles] - WHERE [RID] = @RID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteRole Succeeded' -ELSE PRINT 'Procedure Creation: deleteRole Error on Creation' -GO - -/****** Object: StoredProcedure [deleteRoUsage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteRoUsage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteRoUsage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteRoUsage] - -( - @ROUsageID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [RoUsages] - WHERE [ROUsageID] = @ROUsageID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteRoUsage Succeeded' -ELSE PRINT 'Procedure Creation: deleteRoUsage Error on Creation' -GO - -/****** Object: StoredProcedure [deleteTransition] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteTransition]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteTransition]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteTransition] - -( - @TransitionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [ZTransitions] - WHERE [TransitionID]=@TransitionID - DELETE [Transitions] - WHERE [TransitionID] = @TransitionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteTransition Succeeded' -ELSE PRINT 'Procedure Creation: deleteTransition Error on Creation' -GO - -/****** Object: StoredProcedure [deleteUser] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteUser]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteUser]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteUser] - -( - @UID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Memberships] - WHERE [UID]=@UID - DELETE [Users] - WHERE [UID] = @UID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteUser Succeeded' -ELSE PRINT 'Procedure Creation: deleteUser Error on Creation' -GO - -/****** Object: StoredProcedure [deleteZContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteZContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteZContent]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteZContent] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [ZContents] - WHERE [ContentID] = @ContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteZContent Succeeded' -ELSE PRINT 'Procedure Creation: deleteZContent Error on Creation' -GO - -/****** Object: StoredProcedure [deleteZTransition] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteZTransition]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteZTransition]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteZTransition] - -( - @TransitionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [ZTransitions] - WHERE [TransitionID] = @TransitionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteZTransition Succeeded' -ELSE PRINT 'Procedure Creation: deleteZTransition Error on Creation' -GO - -/****** Object: StoredProcedure [existsAnnotation] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsAnnotation]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsAnnotation]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsAnnotation] - -( - @AnnotationID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Annotations] WHERE [AnnotationID]=@AnnotationID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsAnnotation Succeeded' -ELSE PRINT 'Procedure Creation: existsAnnotation Error on Creation' -GO - -/****** Object: StoredProcedure [existsAnnotationType] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsAnnotationType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsAnnotationType]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsAnnotationType] - -( - @TypeID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [AnnotationTypes] WHERE [TypeID]=@TypeID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsAnnotationType Succeeded' -ELSE PRINT 'Procedure Creation: existsAnnotationType Error on Creation' -GO - -/****** Object: StoredProcedure [existsAssignment] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsAssignment]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsAssignment]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsAssignment] - -( - @AID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Assignments] WHERE [AID]=@AID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsAssignment Succeeded' -ELSE PRINT 'Procedure Creation: existsAssignment Error on Creation' -GO - -/****** Object: StoredProcedure [existsAssociation] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsAssociation]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsAssociation]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsAssociation] - -( - @AssociationID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Associations] WHERE [AssociationID]=@AssociationID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsAssociation Succeeded' -ELSE PRINT 'Procedure Creation: existsAssociation Error on Creation' -GO - -/****** Object: StoredProcedure [existsConnection] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsConnection]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsConnection]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsConnection] - -( - @DBID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Connections] WHERE [DBID]=@DBID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsConnection Succeeded' -ELSE PRINT 'Procedure Creation: existsConnection Error on Creation' -GO - -/****** Object: StoredProcedure [existsContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsContent]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsContent] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Contents] WHERE [ContentID]=@ContentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsContent Succeeded' -ELSE PRINT 'Procedure Creation: existsContent Error on Creation' -GO - -/****** Object: StoredProcedure [existsDetail] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsDetail]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsDetail]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsDetail] - -( - @DetailID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Details] WHERE [DetailID]=@DetailID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsDetail Succeeded' -ELSE PRINT 'Procedure Creation: existsDetail Error on Creation' -GO - -/****** Object: StoredProcedure [existsDocument] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsDocument]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsDocument]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsDocument] - -( - @DocID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Documents] WHERE [DocID]=@DocID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsDocument Succeeded' -ELSE PRINT 'Procedure Creation: existsDocument Error on Creation' -GO - -/****** Object: StoredProcedure [existsDocVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsDocVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsDocVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsDocVersion] - -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [DocVersions] WHERE [VersionID]=@VersionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsDocVersion Succeeded' -ELSE PRINT 'Procedure Creation: existsDocVersion Error on Creation' -GO - -/****** Object: StoredProcedure [existsDROUsage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsDROUsage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsDROUsage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsDROUsage] - -( - @DROUsageID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [DROUsages] WHERE [DROUsageID]=@DROUsageID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsDROUsage Succeeded' -ELSE PRINT 'Procedure Creation: existsDROUsage Error on Creation' -GO - -/****** Object: StoredProcedure [existsEntry] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsEntry]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsEntry]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsEntry] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Entries] WHERE [ContentID]=@ContentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsEntry Succeeded' -ELSE PRINT 'Procedure Creation: existsEntry Error on Creation' -GO - -/****** Object: StoredProcedure [existsFigure] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsFigure]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsFigure]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsFigure] - -( - @FigureID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Figures] WHERE [FigureID]=@FigureID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsFigure Succeeded' -ELSE PRINT 'Procedure Creation: existsFigure Error on Creation' -GO - -/****** Object: StoredProcedure [existsFolder] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsFolder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsFolder]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsFolder] - -( - @FolderID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Folders] WHERE [FolderID]=@FolderID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsFolder Succeeded' -ELSE PRINT 'Procedure Creation: existsFolder Error on Creation' -GO - -/****** Object: StoredProcedure [existsFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsFormat]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsFormat] - -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Formats] WHERE [FormatID]=@FormatID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsFormat Succeeded' -ELSE PRINT 'Procedure Creation: existsFormat Error on Creation' -GO - -/****** Object: StoredProcedure [existsGrid] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsGrid]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsGrid]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsGrid] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Grids] WHERE [ContentID]=@ContentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsGrid Succeeded' -ELSE PRINT 'Procedure Creation: existsGrid Error on Creation' -GO - -/****** Object: StoredProcedure [existsGroup] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsGroup]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsGroup]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsGroup] - -( - @GID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Groups] WHERE [GID]=@GID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsGroup Succeeded' -ELSE PRINT 'Procedure Creation: existsGroup Error on Creation' -GO - -/****** Object: StoredProcedure [existsImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsImage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsImage] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Images] WHERE [ContentID]=@ContentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsImage Succeeded' -ELSE PRINT 'Procedure Creation: existsImage Error on Creation' -GO - -/****** Object: StoredProcedure [existsItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsItem]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsItem] - -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Items] WHERE [ItemID]=@ItemID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsItem Succeeded' -ELSE PRINT 'Procedure Creation: existsItem Error on Creation' -GO - -/****** Object: StoredProcedure [existsMembership] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsMembership]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsMembership]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsMembership] - -( - @UGID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Memberships] WHERE [UGID]=@UGID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsMembership Succeeded' -ELSE PRINT 'Procedure Creation: existsMembership Error on Creation' -GO - -/****** Object: StoredProcedure [existsPart] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsPart]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsPart]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsPart] - -( - @ContentID int, - @FromType int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Parts] WHERE [ContentID]=@ContentID AND [FromType]=@FromType - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsPart Succeeded' -ELSE PRINT 'Procedure Creation: existsPart Error on Creation' -GO - -/****** Object: StoredProcedure [existsPdf] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsPdf]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsPdf]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsPdf] - -( - @DocID int, - @DebugStatus int, - @TopRow int, - @PageLength int, - @LeftMargin int, - @PageWidth int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Pdfs] WHERE [DocID]=@DocID AND [DebugStatus]=@DebugStatus AND [TopRow]=@TopRow AND [PageLength]=@PageLength AND [LeftMargin]=@LeftMargin AND [PageWidth]=@PageWidth - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsPdf Succeeded' -ELSE PRINT 'Procedure Creation: existsPdf Error on Creation' -GO - -/****** Object: StoredProcedure [existsPermission] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsPermission]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsPermission]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsPermission] - -( - @PID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Permissions] WHERE [PID]=@PID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsPermission Succeeded' -ELSE PRINT 'Procedure Creation: existsPermission Error on Creation' -GO - -/****** Object: StoredProcedure [existsRODb] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsRODb]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsRODb]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsRODb] - -( - @RODbID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [RODbs] WHERE [RODbID]=@RODbID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsRODb Succeeded' -ELSE PRINT 'Procedure Creation: existsRODb Error on Creation' -GO - -/****** Object: StoredProcedure [existsROFst] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsROFst]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsROFst]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsROFst] - -( - @ROFstID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [ROFsts] WHERE [ROFstID]=@ROFstID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsROFst Succeeded' -ELSE PRINT 'Procedure Creation: existsROFst Error on Creation' -GO - -/****** Object: StoredProcedure [existsROImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsROImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsROImage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsROImage] - -( - @ImageID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [ROImages] WHERE [ImageID]=@ImageID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsROImage Succeeded' -ELSE PRINT 'Procedure Creation: existsROImage Error on Creation' -GO - -/****** Object: StoredProcedure [existsRole] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsRole]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsRole]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsRole] - -( - @RID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Roles] WHERE [RID]=@RID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsRole Succeeded' -ELSE PRINT 'Procedure Creation: existsRole Error on Creation' -GO - -/****** Object: StoredProcedure [existsRoUsage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsRoUsage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsRoUsage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsRoUsage] - -( - @ROUsageID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [RoUsages] WHERE [ROUsageID]=@ROUsageID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsRoUsage Succeeded' -ELSE PRINT 'Procedure Creation: existsRoUsage Error on Creation' -GO - -/****** Object: StoredProcedure [existsTransition] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsTransition]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsTransition]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsTransition] - -( - @TransitionID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Transitions] WHERE [TransitionID]=@TransitionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsTransition Succeeded' -ELSE PRINT 'Procedure Creation: existsTransition Error on Creation' -GO - -/****** Object: StoredProcedure [existsUser] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsUser]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsUser]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsUser] - -( - @UID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Users] WHERE [UID]=@UID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsUser Succeeded' -ELSE PRINT 'Procedure Creation: existsUser Error on Creation' -GO - -/****** Object: StoredProcedure [existsZContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsZContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsZContent]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsZContent] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [ZContents] WHERE [ContentID]=@ContentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsZContent Succeeded' -ELSE PRINT 'Procedure Creation: existsZContent Error on Creation' -GO - -/****** Object: StoredProcedure [existsZTransition] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsZTransition]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsZTransition]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsZTransition] - -( - @TransitionID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [ZTransitions] WHERE [TransitionID]=@TransitionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsZTransition Succeeded' -ELSE PRINT 'Procedure Creation: existsZTransition Error on Creation' -GO - -/****** Object: StoredProcedure [FindText] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[FindText]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [FindText]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create FUNCTION [dbo].[FindText](@LookFor varchar(255)) -RETURNS @Results TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -BEGIN - insert into @Results - select itemid,ii.contentid - from items ii - join contents cc on ii.contentid = cc.contentid - where text like @LookFor - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: FindText Succeeded' -ELSE PRINT 'TableFunction Creation: FindText Error on Creation' -GO - -/****** Object: StoredProcedure [getAffectedDRoUsages] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAffectedDRoUsages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAffectedDRoUsages]; -GO - -/* -getAffectedDROUsages 1, '00010000019c0000', 'KBR Test', 'Changed', 'KBR' -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAffectedDRoUsages] -( - @RODbID int, - @ROID nvarchar(16), - @RODesc nvarchar(MAX), - @Command nvarchar(10), - @UserID nvarchar(100) -) -WITH EXECUTE AS OWNER -AS - BEGIN - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - -- Add "Verification Required" Annotation for each ROUsage - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Referenced Object (' + @RODesc + ') ' + @Command,@UserID - FROM Items where CONTENTID in (SELECT ContentID - FROM DROUsages DR - JOIN Entries EE on EE.DocID = DR.DocID - where RODbID = @RODbID AND ROID = @ROID) - END - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [Documents].[LibTitle] [Document_LibTitle], - [Documents].[DocContent] [Document_DocContent], - [Documents].[DocAscii] [Document_DocAscii], - [Documents].[Config] [Document_Config], - [Documents].[DTS] [Document_DTS], - [Documents].[UserID] [Document_UserID], - [Documents].[FileExtension] [Document_FileExtension] - FROM [DRoUsages] - JOIN [Documents] ON - [Documents].[DocID]=[DROUsages].[DocID] - WHERE - [DRoUsages].[RODbID]=@RODbID AND [DRoUsages].[ROID]=@ROID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAffectedDRoUsages Succeeded' -ELSE PRINT 'Procedure Creation: getAffectedDRoUsages Error on Creation' -GO - -/****** Object: StoredProcedure [getAffectedRoUsages] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAffectedRoUsages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAffectedRoUsages]; -GO - -/* -getAffectedROUsages 1, '00010000019c0000', 'KBR Test', 'Changed', 'KBR' -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAffectedRoUsages] - -( - @RODbID int, - @ROID nvarchar(16), - @RODesc nvarchar(MAX), - @Command nvarchar(10), - @UserID nvarchar(100) -) -WITH EXECUTE AS OWNER -AS - BEGIN - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - -- Add "Verification Required" Annotation for each ROUsage - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Referenced Object (' + @RODesc + ') ' + @Command,@UserID - FROM Items where CONTENTID in (SELECT ContentID FROM ROUSAGES - where RODbID = @RODbID AND ROID = @ROID) - END - SELECT - [RoUsages].[ROUsageID], - [RoUsages].[ContentID], - [RoUsages].[ROID], - [RoUsages].[Config], - [RoUsages].[DTS], - [RoUsages].[UserID], - [RoUsages].[LastChanged], - [RoUsages].[RODbID], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [RoUsages] - JOIN [Contents] ON - [Contents].[ContentID]=[RoUsages].[ContentID] - WHERE - [RoUsages].[RODbID]=@RODbID AND [RoUsages].[ROID]=@ROID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAffectedRoUsages Succeeded' -ELSE PRINT 'Procedure Creation: getAffectedRoUsages Error on Creation' -GO - -/****** Object: StoredProcedure [getAffectedTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAffectedTransitions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAffectedTransitions]; -GO - -/* -exec getAffectedTransitions 2102 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAffectedTransitions] -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - SELECT - TT.[TransitionID], - [FromID], - [ToID], - [RangeID], - [IsRange], - [TranType], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=TT.[TransitionID]) [ZTransitionCount] - FROM [Transitions] TT join vefn_FindAffectedTransitions(@ItemID) TTZ on TTZ.TransitionID = TT.TransitionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAffectedTransitions Succeeded' -ELSE PRINT 'Procedure Creation: getAffectedTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [getAnnotation] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotation]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotation]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAnnotation] - -( - @AnnotationID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [AnnotationID], - [ItemID], - [TypeID], - [RtfText], - [SearchText], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Annotations] - WHERE [AnnotationID]=@AnnotationID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotation Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotation Error on Creation' -GO - -/****** Object: StoredProcedure [getAnnotations] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotations]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotations]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAnnotations] - -WITH EXECUTE AS OWNER -AS - SELECT - [AnnotationID], - [ItemID], - [TypeID], - [RtfText], - [SearchText], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Annotations] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotations Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotations Error on Creation' -GO - -/****** Object: StoredProcedure [getAnnotationsByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotationsByItemID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAnnotationsByItemID] - -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Annotations].[AnnotationID], - [Annotations].[ItemID], - [Annotations].[TypeID], - [Annotations].[RtfText], - [Annotations].[SearchText], - [Annotations].[Config], - [Annotations].[DTS], - [Annotations].[UserID], - [Annotations].[LastChanged], - [AnnotationTypes].[Name] [AnnotationType_Name], - [AnnotationTypes].[Config] [AnnotationType_Config], - [AnnotationTypes].[DTS] [AnnotationType_DTS], - [AnnotationTypes].[UserID] [AnnotationType_UserID] - FROM [Annotations] - JOIN [AnnotationTypes] ON - [AnnotationTypes].[TypeID]=[Annotations].[TypeID] - WHERE - [Annotations].[ItemID]=@ItemID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationsByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationsByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getAnnotationsByTypeID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationsByTypeID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotationsByTypeID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAnnotationsByTypeID] - -( - @TypeID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Annotations].[AnnotationID], - [Annotations].[ItemID], - [Annotations].[TypeID], - [Annotations].[RtfText], - [Annotations].[SearchText], - [Annotations].[Config], - [Annotations].[DTS], - [Annotations].[UserID], - [Annotations].[LastChanged], - [Items].[PreviousID] [Item_PreviousID], - [Items].[ContentID] [Item_ContentID], - [Items].[DTS] [Item_DTS], - [Items].[UserID] [Item_UserID] - FROM [Annotations] - JOIN [Items] ON - [Items].[ItemID]=[Annotations].[ItemID] - WHERE - [Annotations].[TypeID]=@TypeID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationsByTypeID Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationsByTypeID Error on Creation' -GO - -/****** Object: StoredProcedure [getAnnotationType] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotationType]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAnnotationType] - -( - @TypeID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [TypeID], - [Name], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]=[AnnotationTypes].[TypeID]) [AnnotationCount] - FROM [AnnotationTypes] - WHERE [TypeID]=@TypeID - - SELECT - [Annotations].[AnnotationID], - [Annotations].[ItemID], - [Annotations].[TypeID], - [Annotations].[RtfText], - [Annotations].[SearchText], - [Annotations].[Config], - [Annotations].[DTS], - [Annotations].[UserID], - [Annotations].[LastChanged], - [Items].[PreviousID] [Item_PreviousID], - [Items].[ContentID] [Item_ContentID], - [Items].[DTS] [Item_DTS], - [Items].[UserID] [Item_UserID] - FROM [Annotations] - JOIN [Items] ON - [Items].[ItemID]=[Annotations].[ItemID] - WHERE - [Annotations].[TypeID]=@TypeID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationType Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationType Error on Creation' -GO - -/****** Object: StoredProcedure [getAnnotationTypeByName] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationTypeByName]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotationTypeByName]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAnnotationTypeByName] -( - @Name nvarchar(100) -) -WITH EXECUTE AS OWNER -AS - SELECT - [TypeID], - [Name], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]=[AnnotationTypes].[TypeID]) [AnnotationCount] - FROM [AnnotationTypes] - WHERE [Name]=@Name - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationTypeByName Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationTypeByName Error on Creation' -GO - -/****** Object: StoredProcedure [getAnnotationTypes] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationTypes]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotationTypes]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAnnotationTypes] - -WITH EXECUTE AS OWNER -AS - SELECT - [TypeID], - [Name], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[TypeID]=[AnnotationTypes].[TypeID]) [AnnotationCount] - FROM [AnnotationTypes] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationTypes Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationTypes Error on Creation' -GO - -/****** Object: StoredProcedure [getAssignment] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAssignment]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAssignment]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAssignment] - -( - @AID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [AID], - [GID], - [RID], - [FolderID], - [StartDate], - [EndDate], - [DTS], - [UsrID], - [LastChanged] - FROM [Assignments] - WHERE [AID]=@AID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAssignment Succeeded' -ELSE PRINT 'Procedure Creation: getAssignment Error on Creation' -GO - -/****** Object: StoredProcedure [getAssignments] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAssignments]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAssignments]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAssignments] - -WITH EXECUTE AS OWNER -AS - SELECT - [AID], - [GID], - [RID], - [FolderID], - [StartDate], - [EndDate], - [DTS], - [UsrID], - [LastChanged] - FROM [Assignments] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAssignments Succeeded' -ELSE PRINT 'Procedure Creation: getAssignments Error on Creation' -GO - -/****** Object: StoredProcedure [getAssignmentsByFolderID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAssignmentsByFolderID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAssignmentsByFolderID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAssignmentsByFolderID] - -( - @FolderID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Assignments].[AID], - [Assignments].[GID], - [Assignments].[RID], - [Assignments].[FolderID], - [Assignments].[StartDate], - [Assignments].[EndDate], - [Assignments].[DTS], - [Assignments].[UsrID], - [Assignments].[LastChanged], - [Groups].[GroupName] [Group_GroupName], - [Groups].[GroupType] [Group_GroupType], - [Groups].[Config] [Group_Config], - [Groups].[DTS] [Group_DTS], - [Groups].[UsrID] [Group_UsrID], - [Roles].[Name] [Role_Name], - [Roles].[Title] [Role_Title], - [Roles].[DTS] [Role_DTS], - [Roles].[UsrID] [Role_UsrID] - FROM [Assignments] - JOIN [Groups] ON - [Groups].[GID]=[Assignments].[GID] - JOIN [Roles] ON - [Roles].[RID]=[Assignments].[RID] - WHERE - [Assignments].[FolderID]=@FolderID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAssignmentsByFolderID Succeeded' -ELSE PRINT 'Procedure Creation: getAssignmentsByFolderID Error on Creation' -GO - -/****** Object: StoredProcedure [getAssignmentsByGID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAssignmentsByGID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAssignmentsByGID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAssignmentsByGID] - -( - @GID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Assignments].[AID], - [Assignments].[GID], - [Assignments].[RID], - [Assignments].[FolderID], - [Assignments].[StartDate], - [Assignments].[EndDate], - [Assignments].[DTS], - [Assignments].[UsrID], - [Assignments].[LastChanged], - [Folders].[ParentID] [Folder_ParentID], - [Folders].[DBID] [Folder_DBID], - [Folders].[Name] [Folder_Name], - [Folders].[Title] [Folder_Title], - [Folders].[ShortName] [Folder_ShortName], - [Folders].[FormatID] [Folder_FormatID], - [Folders].[ManualOrder] [Folder_ManualOrder], - [Folders].[Config] [Folder_Config], - [Folders].[DTS] [Folder_DTS], - [Folders].[UsrID] [Folder_UsrID], - [Roles].[Name] [Role_Name], - [Roles].[Title] [Role_Title], - [Roles].[DTS] [Role_DTS], - [Roles].[UsrID] [Role_UsrID] - FROM [Assignments] - JOIN [Folders] ON - [Folders].[FolderID]=[Assignments].[FolderID] - JOIN [Roles] ON - [Roles].[RID]=[Assignments].[RID] - WHERE - [Assignments].[GID]=@GID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAssignmentsByGID Succeeded' -ELSE PRINT 'Procedure Creation: getAssignmentsByGID Error on Creation' -GO - -/****** Object: StoredProcedure [getAssignmentsByRID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAssignmentsByRID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAssignmentsByRID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAssignmentsByRID] - -( - @RID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Assignments].[AID], - [Assignments].[GID], - [Assignments].[RID], - [Assignments].[FolderID], - [Assignments].[StartDate], - [Assignments].[EndDate], - [Assignments].[DTS], - [Assignments].[UsrID], - [Assignments].[LastChanged], - [Folders].[ParentID] [Folder_ParentID], - [Folders].[DBID] [Folder_DBID], - [Folders].[Name] [Folder_Name], - [Folders].[Title] [Folder_Title], - [Folders].[ShortName] [Folder_ShortName], - [Folders].[FormatID] [Folder_FormatID], - [Folders].[ManualOrder] [Folder_ManualOrder], - [Folders].[Config] [Folder_Config], - [Folders].[DTS] [Folder_DTS], - [Folders].[UsrID] [Folder_UsrID], - [Groups].[GroupName] [Group_GroupName], - [Groups].[GroupType] [Group_GroupType], - [Groups].[Config] [Group_Config], - [Groups].[DTS] [Group_DTS], - [Groups].[UsrID] [Group_UsrID] - FROM [Assignments] - JOIN [Folders] ON - [Folders].[FolderID]=[Assignments].[FolderID] - JOIN [Groups] ON - [Groups].[GID]=[Assignments].[GID] - WHERE - [Assignments].[RID]=@RID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAssignmentsByRID Succeeded' -ELSE PRINT 'Procedure Creation: getAssignmentsByRID Error on Creation' -GO - -/****** Object: StoredProcedure [getAssociation] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAssociation]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAssociation]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAssociation] - -( - @AssociationID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [AssociationID], - [VersionID], - [ROFstID], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Associations] - WHERE [AssociationID]=@AssociationID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAssociation Succeeded' -ELSE PRINT 'Procedure Creation: getAssociation Error on Creation' -GO - -/****** Object: StoredProcedure [getAssociationByVersionID_ROFstID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAssociationByVersionID_ROFstID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAssociationByVersionID_ROFstID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAssociationByVersionID_ROFstID] -( - @VersionID int, - @ROFstID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [AssociationID], - [VersionID], - [ROFstID], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Associations] - WHERE [VersionID]=@VersionID AND [ROFstID]=@ROFstID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAssociationByVersionID_ROFstID Succeeded' -ELSE PRINT 'Procedure Creation: getAssociationByVersionID_ROFstID Error on Creation' -GO - -/****** Object: StoredProcedure [getAssociations] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAssociations]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAssociations]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAssociations] - -WITH EXECUTE AS OWNER -AS - SELECT - [AssociationID], - [VersionID], - [ROFstID], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Associations] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAssociations Succeeded' -ELSE PRINT 'Procedure Creation: getAssociations Error on Creation' -GO - -/****** Object: StoredProcedure [getAssociationsByROFstID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAssociationsByROFstID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAssociationsByROFstID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAssociationsByROFstID] - -( - @ROFstID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Associations].[AssociationID], - [Associations].[VersionID], - [Associations].[ROFstID], - [Associations].[Config], - [Associations].[DTS], - [Associations].[UserID], - [Associations].[LastChanged], - [DocVersions].[FolderID] [DocVersion_FolderID], - [DocVersions].[VersionType] [DocVersion_VersionType], - [DocVersions].[Name] [DocVersion_Name], - [DocVersions].[Title] [DocVersion_Title], - [DocVersions].[ItemID] [DocVersion_ItemID], - [DocVersions].[FormatID] [DocVersion_FormatID], - [DocVersions].[Config] [DocVersion_Config], - [DocVersions].[DTS] [DocVersion_DTS], - [DocVersions].[UserID] [DocVersion_UserID] - FROM [Associations] - JOIN [DocVersions] ON - [DocVersions].[VersionID]=[Associations].[VersionID] - WHERE - [Associations].[ROFstID]=@ROFstID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAssociationsByROFstID Succeeded' -ELSE PRINT 'Procedure Creation: getAssociationsByROFstID Error on Creation' -GO - -/****** Object: StoredProcedure [getAssociationsByVersionID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAssociationsByVersionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAssociationsByVersionID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAssociationsByVersionID] - -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Associations].[AssociationID], - [Associations].[VersionID], - [Associations].[ROFstID], - [Associations].[Config], - [Associations].[DTS], - [Associations].[UserID], - [Associations].[LastChanged], - [ROFsts].[RODbID] [ROFst_RODbID], - [ROFsts].[ROLookup] [ROFst_ROLookup], - [ROFsts].[Config] [ROFst_Config], - [ROFsts].[DTS] [ROFst_DTS], - [ROFsts].[UserID] [ROFst_UserID] - FROM [Associations] - JOIN [ROFsts] ON - [ROFsts].[ROFstID]=[Associations].[ROFstID] - WHERE - [Associations].[VersionID]=@VersionID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAssociationsByVersionID Succeeded' -ELSE PRINT 'Procedure Creation: getAssociationsByVersionID Error on Creation' -GO - -/****** Object: StoredProcedure [getChildFolders] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getChildFolders]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getChildFolders]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getChildFolders] - -( - @ParentID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [FolderID], - [ParentID], - [DBID], - [Name], - [Title], - [ShortName], - [FormatID], - [ManualOrder], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[FolderID]=[Folders].[FolderID]) [AssignmentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FolderID]=[Folders].[FolderID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] [Children] WHERE [Children].[ParentID]=[Folders].[FolderID]) [ChildCount] - FROM [Folders] WHERE [ParentID]=@ParentID AND [FolderID]<>@ParentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getChildFolders Succeeded' -ELSE PRINT 'Procedure Creation: getChildFolders Error on Creation' -GO - -/****** Object: StoredProcedure [getChildFormats] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getChildFormats]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getChildFormats]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getChildFormats] - -( - @ParentID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [FormatID], - [ParentID], - [Name], - [Description], - [Data], - [GenMac], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] - FROM [Formats] WHERE [ParentID]=@ParentID AND [FormatID]<>@ParentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getChildFormats Succeeded' -ELSE PRINT 'Procedure Creation: getChildFormats Error on Creation' -GO - -/****** Object: StoredProcedure [getConnection] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getConnection]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getConnection]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getConnection] - -( - @DBID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [DBID], - [Name], - [Title], - [ConnectionString], - [ServerType], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[DBID]=[Connections].[DBID]) [FolderCount] - FROM [Connections] - WHERE [DBID]=@DBID - - SELECT - [Folders].[FolderID], - [Folders].[ParentID], - [Folders].[DBID], - [Folders].[Name], - [Folders].[Title], - [Folders].[ShortName], - [Folders].[FormatID], - [Folders].[ManualOrder], - [Folders].[Config], - [Folders].[DTS], - [Folders].[UsrID], - [Folders].[LastChanged] - FROM [Folders] - WHERE - [Folders].[DBID]=@DBID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getConnection Succeeded' -ELSE PRINT 'Procedure Creation: getConnection Error on Creation' -GO - -/****** Object: StoredProcedure [getConnectionByName] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getConnectionByName]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getConnectionByName]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getConnectionByName] -( - @Name nvarchar(100) -) -WITH EXECUTE AS OWNER -AS - SELECT - [DBID], - [Name], - [Title], - [ConnectionString], - [ServerType], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[DBID]=[Connections].[DBID]) [FolderCount] - FROM [Connections] - WHERE [Name]=@Name - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getConnectionByName Succeeded' -ELSE PRINT 'Procedure Creation: getConnectionByName Error on Creation' -GO - -/****** Object: StoredProcedure [getConnections] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getConnections]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getConnections]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getConnections] - -WITH EXECUTE AS OWNER -AS - SELECT - [DBID], - [Name], - [Title], - [ConnectionString], - [ServerType], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[DBID]=[Connections].[DBID]) [FolderCount] - FROM [Connections] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getConnections Succeeded' -ELSE PRINT 'Procedure Creation: getConnections Error on Creation' -GO - -/****** Object: StoredProcedure [getContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContent]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContent] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM [Contents] - WHERE [ContentID]=@ContentID - - SELECT - [Details].[DetailID], - [Details].[ContentID], - [Details].[ItemType], - [Details].[Text], - [Details].[Config], - [Details].[DTS], - [Details].[UserID], - [Details].[LastChanged] - FROM [Details] - WHERE - [Details].[ContentID]=@ContentID - - - SELECT - [Entries].[ContentID], - [Entries].[DocID], - [Entries].[DTS], - [Entries].[UserID], - [Entries].[LastChanged], - [Documents].[LibTitle] [Document_LibTitle], - [Documents].[DocContent] [Document_DocContent], - [Documents].[DocAscii] [Document_DocAscii], - [Documents].[Config] [Document_Config], - [Documents].[DTS] [Document_DTS], - [Documents].[UserID] [Document_UserID], - [Documents].[FileExtension] [Document_FileExtension] - FROM [Entries] - JOIN [Documents] ON - [Documents].[DocID]=[Entries].[DocID] - WHERE - [Entries].[ContentID]=@ContentID - - - SELECT - [Grids].[ContentID], - [Grids].[Data], - [Grids].[Config], - [Grids].[DTS], - [Grids].[UserID], - [Grids].[LastChanged] - FROM [Grids] - WHERE - [Grids].[ContentID]=@ContentID - - - SELECT - [Images].[ContentID], - [Images].[ImageType], - [Images].[FileName], - [Images].[Data], - [Images].[Config], - [Images].[DTS], - [Images].[UserID], - [Images].[LastChanged] - FROM [Images] - WHERE - [Images].[ContentID]=@ContentID - - - SELECT - [Items].[ItemID], - [Items].[PreviousID], - [Items].[ContentID], - [Items].[DTS], - [Items].[UserID], - [Items].[LastChanged] - FROM [Items] - WHERE - [Items].[ContentID]=@ContentID - - - SELECT - [Parts].[ContentID], - [Parts].[FromType], - [Parts].[ItemID], - [Parts].[DTS], - [Parts].[UserID], - [Parts].[LastChanged], - [Items].[PreviousID] [Item_PreviousID], - [Items].[ContentID] [Item_ContentID], - [Items].[DTS] [Item_DTS], - [Items].[UserID] [Item_UserID] - FROM [Parts] - JOIN [Items] ON - [Items].[ItemID]=[Parts].[ItemID] - WHERE - [Parts].[ContentID]=@ContentID - - - SELECT - [RoUsages].[ROUsageID], - [RoUsages].[ContentID], - [RoUsages].[ROID], - [RoUsages].[Config], - [RoUsages].[DTS], - [RoUsages].[UserID], - [RoUsages].[LastChanged], - [RoUsages].[RODbID], - [RODbs].[ROName] [RODb_ROName], - [RODbs].[FolderPath] [RODb_FolderPath], - [RODbs].[DBConnectionString] [RODb_DBConnectionString], - [RODbs].[Config] [RODb_Config], - [RODbs].[DTS] [RODb_DTS], - [RODbs].[UserID] [RODb_UserID] - FROM [RoUsages] - JOIN [RODbs] ON - [RODbs].[RODbID]=[RoUsages].[RODbID] - WHERE - [RoUsages].[ContentID]=@ContentID - - - SELECT - [Transitions].[TransitionID], - [Transitions].[FromID], - [Transitions].[ToID], - [Transitions].[RangeID], - [Transitions].[IsRange], - [Transitions].[TranType], - [Transitions].[Config], - [Transitions].[DTS], - [Transitions].[UserID], - [Transitions].[LastChanged], - [Items_RangeID].[PreviousID] [Item_RangeID_PreviousID], - [Items_RangeID].[ContentID] [Item_RangeID_ContentID], - [Items_RangeID].[DTS] [Item_RangeID_DTS], - [Items_RangeID].[UserID] [Item_RangeID_UserID], - [Items_ToID].[PreviousID] [Item_ToID_PreviousID], - [Items_ToID].[ContentID] [Item_ToID_ContentID], - [Items_ToID].[DTS] [Item_ToID_DTS], - [Items_ToID].[UserID] [Item_ToID_UserID] - FROM [Transitions] - JOIN [Items] [Items_RangeID] ON - [Items_RangeID].[ItemID]=[Transitions].[RangeID] - JOIN [Items] [Items_ToID] ON - [Items_ToID].[ItemID]=[Transitions].[ToID] - WHERE - [Transitions].[FromID]=@ContentID - - - SELECT - [ZContents].[ContentID], - [ZContents].[OldStepSequence], - [ZContents].[LastChanged] - FROM [ZContents] - WHERE - [ZContents].[ContentID]=@ContentID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContent Succeeded' -ELSE PRINT 'Procedure Creation: getContent Error on Creation' -GO - -/****** Object: StoredProcedure [getContentAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ContentAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAudit Succeeded' -ELSE PRINT 'Procedure Creation: getContentAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getContentAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ContentAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAudits Succeeded' -ELSE PRINT 'Procedure Creation: getContentAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getContentAuditsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAuditsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsByContentID] -( - @ContentID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ContentAudits] - WHERE ContentID = @ContentID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getContentAuditsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getContents] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContents]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContents]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContents] - -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM [Contents] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContents Succeeded' -ELSE PRINT 'Procedure Creation: getContents Error on Creation' -GO - -/****** Object: StoredProcedure [getContentsByFormatID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentsByFormatID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentsByFormatID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentsByFormatID] - -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Contents].[ContentID], - [Contents].[Number], - [Contents].[Text], - [Contents].[Type], - [Contents].[FormatID], - [Contents].[Config], - [Contents].[DTS], - [Contents].[UserID], - [Contents].[LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM [Contents] - WHERE - [Contents].[FormatID]=@FormatID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentsByFormatID Succeeded' -ELSE PRINT 'Procedure Creation: getContentsByFormatID Error on Creation' -GO - -/****** Object: StoredProcedure [getDetail] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDetail]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDetail]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDetail] - -( - @DetailID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [DetailID], - [ContentID], - [ItemType], - [Text], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Details] - WHERE [DetailID]=@DetailID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDetail Succeeded' -ELSE PRINT 'Procedure Creation: getDetail Error on Creation' -GO - -/****** Object: StoredProcedure [getDetails] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDetails]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDetails]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDetails] - -WITH EXECUTE AS OWNER -AS - SELECT - [DetailID], - [ContentID], - [ItemType], - [Text], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Details] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDetails Succeeded' -ELSE PRINT 'Procedure Creation: getDetails Error on Creation' -GO - -/****** Object: StoredProcedure [getDetailsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDetailsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDetailsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDetailsByContentID] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Details].[DetailID], - [Details].[ContentID], - [Details].[ItemType], - [Details].[Text], - [Details].[Config], - [Details].[DTS], - [Details].[UserID], - [Details].[LastChanged] - FROM [Details] - WHERE - [Details].[ContentID]=@ContentID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDetailsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getDetailsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getDocument] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocument]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocument]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocument] - -( - @DocID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [DocID], - [LibTitle], - [DocContent], - [DocAscii], - [Config], - [DTS], - [UserID], - [LastChanged], - [FileExtension], - (SELECT COUNT(*) FROM [DROUsages] WHERE [DROUsages].[DocID]=[Documents].[DocID]) [DROUsageCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[DocID]=[Documents].[DocID]) [EntryCount], - (SELECT COUNT(*) FROM [Pdfs] WHERE [Pdfs].[DocID]=[Documents].[DocID]) [PdfCount] - FROM [Documents] - WHERE [DocID]=@DocID - - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [RODbs].[ROName] [RODb_ROName], - [RODbs].[FolderPath] [RODb_FolderPath], - [RODbs].[DBConnectionString] [RODb_DBConnectionString], - [RODbs].[Config] [RODb_Config], - [RODbs].[DTS] [RODb_DTS], - [RODbs].[UserID] [RODb_UserID] - FROM [DROUsages] - JOIN [RODbs] ON - [RODbs].[RODbID]=[DROUsages].[RODbID] - WHERE - [DROUsages].[DocID]=@DocID - - - SELECT - [Entries].[ContentID], - [Entries].[DocID], - [Entries].[DTS], - [Entries].[UserID], - [Entries].[LastChanged], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [Entries] - JOIN [Contents] ON - [Contents].[ContentID]=[Entries].[ContentID] - WHERE - [Entries].[DocID]=@DocID - - - SELECT - [Pdfs].[DocID], - [Pdfs].[DebugStatus], - [Pdfs].[TopRow], - [Pdfs].[PageLength], - [Pdfs].[LeftMargin], - [Pdfs].[PageWidth], - [Pdfs].[PageCount], - [Pdfs].[DocPdf], - [Pdfs].[DTS], - [Pdfs].[UserID], - [Pdfs].[LastChanged] - FROM [Pdfs] - WHERE - [Pdfs].[DocID]=@DocID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocument Succeeded' -ELSE PRINT 'Procedure Creation: getDocument Error on Creation' -GO - -/****** Object: StoredProcedure [getDocumentAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocumentAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocumentAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocumentAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [DocID], - [LibTitle], - [DocContent], - [DocAscii], - [Config], - [DTS], - [UserID], - [FileExtension], - [DeleteStatus] - FROM [DocumentAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocumentAudit Succeeded' -ELSE PRINT 'Procedure Creation: getDocumentAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getDocumentAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocumentAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocumentAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocumentAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [DocID], - [LibTitle], - [DocContent], - [DocAscii], - [Config], - [DTS], - [UserID], - [FileExtension], - [DeleteStatus] - FROM [DocumentAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocumentAudits Succeeded' -ELSE PRINT 'Procedure Creation: getDocumentAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getDocumentAuditsByDocID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocumentAuditsByDocID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocumentAuditsByDocID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocumentAuditsByDocID] -( - @DocID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [DocID], - [LibTitle], - [DocContent], - [DocAscii], - [Config], - [DTS], - [UserID], - [FileExtension], - [DeleteStatus] - FROM [DocumentAudits] - WHERE DocID = @DocID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocumentAuditsByDocID Succeeded' -ELSE PRINT 'Procedure Creation: getDocumentAuditsByDocID Error on Creation' -GO - -/****** Object: StoredProcedure [getDocuments] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocuments]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocuments]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocuments] - -WITH EXECUTE AS OWNER -AS - SELECT - [DocID], - [LibTitle], - [DocContent], - [DocAscii], - [Config], - [DTS], - [UserID], - [LastChanged], - [FileExtension], - (SELECT COUNT(*) FROM [DROUsages] WHERE [DROUsages].[DocID]=[Documents].[DocID]) [DROUsageCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[DocID]=[Documents].[DocID]) [EntryCount], - (SELECT COUNT(*) FROM [Pdfs] WHERE [Pdfs].[DocID]=[Documents].[DocID]) [PdfCount] - FROM [Documents] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocuments Succeeded' -ELSE PRINT 'Procedure Creation: getDocuments Error on Creation' -GO - -/****** Object: StoredProcedure [getDocVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocVersion] - -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [VersionID], - [FolderID], - [VersionType], - [Name], - [Title], - [ItemID], - [FormatID], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[VersionID]=[DocVersions].[VersionID]) [AssociationCount] - FROM [DocVersions] - WHERE [VersionID]=@VersionID - - SELECT - [Associations].[AssociationID], - [Associations].[VersionID], - [Associations].[ROFstID], - [Associations].[Config], - [Associations].[DTS], - [Associations].[UserID], - [Associations].[LastChanged], - [ROFsts].[RODbID] [ROFst_RODbID], - [ROFsts].[ROLookup] [ROFst_ROLookup], - [ROFsts].[Config] [ROFst_Config], - [ROFsts].[DTS] [ROFst_DTS], - [ROFsts].[UserID] [ROFst_UserID] - FROM [Associations] - JOIN [ROFsts] ON - [ROFsts].[ROFstID]=[Associations].[ROFstID] - WHERE - [Associations].[VersionID]=@VersionID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocVersion Succeeded' -ELSE PRINT 'Procedure Creation: getDocVersion Error on Creation' -GO - -/****** Object: StoredProcedure [getDocVersions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocVersions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocVersions] - -WITH EXECUTE AS OWNER -AS - SELECT - [VersionID], - [FolderID], - [VersionType], - [Name], - [Title], - [ItemID], - [FormatID], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[VersionID]=[DocVersions].[VersionID]) [AssociationCount] - FROM [DocVersions] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocVersions Succeeded' -ELSE PRINT 'Procedure Creation: getDocVersions Error on Creation' -GO - -/****** Object: StoredProcedure [getDocVersionsByFolderID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocVersionsByFolderID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocVersionsByFolderID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocVersionsByFolderID] - -( - @FolderID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [DocVersions].[VersionID], - [DocVersions].[FolderID], - [DocVersions].[VersionType], - [DocVersions].[Name], - [DocVersions].[Title], - [DocVersions].[ItemID], - [DocVersions].[FormatID], - [DocVersions].[Config], - [DocVersions].[DTS], - [DocVersions].[UserID], - [DocVersions].[LastChanged], - (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[VersionID]=[DocVersions].[VersionID]) [AssociationCount] - FROM [DocVersions] - WHERE - [DocVersions].[FolderID]=@FolderID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocVersionsByFolderID Succeeded' -ELSE PRINT 'Procedure Creation: getDocVersionsByFolderID Error on Creation' -GO - -/****** Object: StoredProcedure [getDocVersionsByFormatID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocVersionsByFormatID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocVersionsByFormatID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocVersionsByFormatID] - -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [DocVersions].[VersionID], - [DocVersions].[FolderID], - [DocVersions].[VersionType], - [DocVersions].[Name], - [DocVersions].[Title], - [DocVersions].[ItemID], - [DocVersions].[FormatID], - [DocVersions].[Config], - [DocVersions].[DTS], - [DocVersions].[UserID], - [DocVersions].[LastChanged], - [Folders].[ParentID] [Folder_ParentID], - [Folders].[DBID] [Folder_DBID], - [Folders].[Name] [Folder_Name], - [Folders].[Title] [Folder_Title], - [Folders].[ShortName] [Folder_ShortName], - [Folders].[FormatID] [Folder_FormatID], - [Folders].[ManualOrder] [Folder_ManualOrder], - [Folders].[Config] [Folder_Config], - [Folders].[DTS] [Folder_DTS], - [Folders].[UsrID] [Folder_UsrID], - (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[VersionID]=[DocVersions].[VersionID]) [AssociationCount] - FROM [DocVersions] - JOIN [Folders] ON - [Folders].[FolderID]=[DocVersions].[FolderID] - WHERE - [DocVersions].[FormatID]=@FormatID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocVersionsByFormatID Succeeded' -ELSE PRINT 'Procedure Creation: getDocVersionsByFormatID Error on Creation' -GO - -/****** Object: StoredProcedure [getDocVersionsByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocVersionsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocVersionsByItemID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocVersionsByItemID] - -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [DocVersions].[VersionID], - [DocVersions].[FolderID], - [DocVersions].[VersionType], - [DocVersions].[Name], - [DocVersions].[Title], - [DocVersions].[ItemID], - [DocVersions].[FormatID], - [DocVersions].[Config], - [DocVersions].[DTS], - [DocVersions].[UserID], - [DocVersions].[LastChanged], - [Folders].[ParentID] [Folder_ParentID], - [Folders].[DBID] [Folder_DBID], - [Folders].[Name] [Folder_Name], - [Folders].[Title] [Folder_Title], - [Folders].[ShortName] [Folder_ShortName], - [Folders].[FormatID] [Folder_FormatID], - [Folders].[ManualOrder] [Folder_ManualOrder], - [Folders].[Config] [Folder_Config], - [Folders].[DTS] [Folder_DTS], - [Folders].[UsrID] [Folder_UsrID], - (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[VersionID]=[DocVersions].[VersionID]) [AssociationCount] - FROM [DocVersions] - JOIN [Folders] ON - [Folders].[FolderID]=[DocVersions].[FolderID] - WHERE - [DocVersions].[ItemID]=@ItemID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocVersionsByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getDocVersionsByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getDROUsage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDROUsage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDROUsage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDROUsage] - -( - @DROUsageID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [DROUsageID], - [DocID], - [ROID], - [Config], - [DTS], - [UserID], - [LastChanged], - [RODbID] - FROM [DROUsages] - WHERE [DROUsageID]=@DROUsageID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDROUsage Succeeded' -ELSE PRINT 'Procedure Creation: getDROUsage Error on Creation' -GO - -/****** Object: StoredProcedure [getDROUsages] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDROUsages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDROUsages]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDROUsages] - -WITH EXECUTE AS OWNER -AS - SELECT - [DROUsageID], - [DocID], - [ROID], - [Config], - [DTS], - [UserID], - [LastChanged], - [RODbID] - FROM [DROUsages] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDROUsages Succeeded' -ELSE PRINT 'Procedure Creation: getDROUsages Error on Creation' -GO - -/****** Object: StoredProcedure [getDROUsagesByDocID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDROUsagesByDocID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDROUsagesByDocID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDROUsagesByDocID] - -( - @DocID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [RODbs].[ROName] [RODb_ROName], - [RODbs].[FolderPath] [RODb_FolderPath], - [RODbs].[DBConnectionString] [RODb_DBConnectionString], - [RODbs].[Config] [RODb_Config], - [RODbs].[DTS] [RODb_DTS], - [RODbs].[UserID] [RODb_UserID] - FROM [DROUsages] - JOIN [RODbs] ON - [RODbs].[RODbID]=[DROUsages].[RODbID] - WHERE - [DROUsages].[DocID]=@DocID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDROUsagesByDocID Succeeded' -ELSE PRINT 'Procedure Creation: getDROUsagesByDocID Error on Creation' -GO - -/****** Object: StoredProcedure [getDROUsagesByRODbID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDROUsagesByRODbID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDROUsagesByRODbID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDROUsagesByRODbID] - -( - @RODbID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [Documents].[LibTitle] [Document_LibTitle], - [Documents].[DocContent] [Document_DocContent], - [Documents].[DocAscii] [Document_DocAscii], - [Documents].[Config] [Document_Config], - [Documents].[DTS] [Document_DTS], - [Documents].[UserID] [Document_UserID], - [Documents].[FileExtension] [Document_FileExtension] - FROM [DROUsages] - JOIN [Documents] ON - [Documents].[DocID]=[DROUsages].[DocID] - WHERE - [DROUsages].[RODbID]=@RODbID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDROUsagesByRODbID Succeeded' -ELSE PRINT 'Procedure Creation: getDROUsagesByRODbID Error on Creation' -GO - -/****** Object: StoredProcedure [getDRoUsagesByROIDs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDRoUsagesByROIDs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDRoUsagesByROIDs]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDRoUsagesByROIDs] -( - @ROIDs nvarchar(MAX) -) -WITH EXECUTE AS OWNER -AS - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [Documents].[LibTitle] [Document_LibTitle], - [Documents].[DocContent] [Document_DocContent], - [Documents].[DocAscii] [Document_DocAscii], - [Documents].[Config] [Document_Config], - [Documents].[DTS] [Document_DTS], - [Documents].[UserID] [Document_UserID], - [Documents].[FileExtension] [Document_FileExtension] - FROM [DRoUsages] - JOIN vefn_SplitROSearch(@ROIDs) SS - ON [DRoUsages].RODBID = SS.[RODBID] and [DRoUsages].[ROID] like SS.[ROID] + '%' - JOIN [Documents] ON - [Documents].[DocID]=[DROUsages].[DocID] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDRoUsagesByROIDs Succeeded' -ELSE PRINT 'Procedure Creation: getDRoUsagesByROIDs Error on Creation' -GO - -/****** Object: StoredProcedure [getEntries] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getEntries]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getEntries]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getEntries] - -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [DocID], - [DTS], - [UserID], - [LastChanged] - FROM [Entries] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getEntries Succeeded' -ELSE PRINT 'Procedure Creation: getEntries Error on Creation' -GO - -/****** Object: StoredProcedure [getEntriesByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getEntriesByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getEntriesByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getEntriesByContentID] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Entries].[ContentID], - [Entries].[DocID], - [Entries].[DTS], - [Entries].[UserID], - [Entries].[LastChanged], - [Documents].[LibTitle] [Document_LibTitle], - [Documents].[DocContent] [Document_DocContent], - [Documents].[DocAscii] [Document_DocAscii], - [Documents].[Config] [Document_Config], - [Documents].[DTS] [Document_DTS], - [Documents].[UserID] [Document_UserID], - [Documents].[FileExtension] [Document_FileExtension] - FROM [Entries] - JOIN [Documents] ON - [Documents].[DocID]=[Entries].[DocID] - WHERE - [Entries].[ContentID]=@ContentID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getEntriesByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getEntriesByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getEntriesByDocID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getEntriesByDocID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getEntriesByDocID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getEntriesByDocID] - -( - @DocID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Entries].[ContentID], - [Entries].[DocID], - [Entries].[DTS], - [Entries].[UserID], - [Entries].[LastChanged], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [Entries] - JOIN [Contents] ON - [Contents].[ContentID]=[Entries].[ContentID] - WHERE - [Entries].[DocID]=@DocID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getEntriesByDocID Succeeded' -ELSE PRINT 'Procedure Creation: getEntriesByDocID Error on Creation' -GO - -/****** Object: StoredProcedure [getEntry] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getEntry]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getEntry]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getEntry] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [DocID], - [DTS], - [UserID], - [LastChanged] - FROM [Entries] - WHERE [ContentID]=@ContentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getEntry Succeeded' -ELSE PRINT 'Procedure Creation: getEntry Error on Creation' -GO - -/****** Object: StoredProcedure [getEntryAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getEntryAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getEntryAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getEntryAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [DocID], - [DTS], - [UserID], - [DeleteStatus] - FROM [EntryAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getEntryAudit Succeeded' -ELSE PRINT 'Procedure Creation: getEntryAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getEntryAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getEntryAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getEntryAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getEntryAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [DocID], - [DTS], - [UserID], - [DeleteStatus] - FROM [EntryAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getEntryAudits Succeeded' -ELSE PRINT 'Procedure Creation: getEntryAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getEntryAuditsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getEntryAuditsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getEntryAuditsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getEntryAuditsByContentID] -( - @ContentID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [DocID], - [DTS], - [UserID], - [DeleteStatus] - FROM [EntryAudits] - WHERE ContentID = @ContentID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getEntryAuditsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getEntryAuditsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getExternalTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getExternalTransitions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getExternalTransitions]; -GO - -/* -exec getExternalTransitions 4984 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getExternalTransitions] -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - SELECT - TT.[TransitionID], - TT.[FromID], - TT.[ToID], - TT.[RangeID], - TT.[IsRange], - TT.[TranType], - TT.[Config], - TT.[DTS], - TT.[UserID], - TT.[LastChanged], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=TT.[TransitionID]) [ZTransitionCount] - from transitions tt - join items ii on tt.FromID = ii.ContentID - where TT.ToID = @ItemID AND TT.FromID not in(select ContentID from vefn_childItems(@ItemID)) - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getExternalTransitions Succeeded' -ELSE PRINT 'Procedure Creation: getExternalTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [getExternalTransitionsToChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getExternalTransitionsToChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getExternalTransitionsToChildren]; -GO - -/* -exec getExternalTransitionsToChildren 9392 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getExternalTransitionsToChildren] -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - SELECT - TT.[TransitionID], - TT.[FromID], - TT.[ToID], - TT.[RangeID], - TT.[IsRange], - TT.[TranType], - TT.[Config], - TT.[DTS], - TT.[UserID], - TT.[LastChanged], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=TT.[TransitionID]) [ZTransitionCount] - FROM vefn_childItems(@ItemID) II - JOIN Transitions TT on TT.ToID = II.ItemID AND TT.ToID <> @ItemID - where TT.FromID not in(select ContentID from vefn_childItems(@ItemID)) - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getExternalTransitionsToChildren Succeeded' -ELSE PRINT 'Procedure Creation: getExternalTransitionsToChildren Error on Creation' -GO - -/****** Object: StoredProcedure [getFigure] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFigure]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFigure]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFigure] - -( - @FigureID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [FigureID], - [ROFstID], - [ImageID], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Figures] - WHERE [FigureID]=@FigureID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFigure Succeeded' -ELSE PRINT 'Procedure Creation: getFigure Error on Creation' -GO - -/****** Object: StoredProcedure [getFigureByROFstID_ImageID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFigureByROFstID_ImageID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFigureByROFstID_ImageID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFigureByROFstID_ImageID] -( - @ROFstID int, - @ImageID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [FigureID], - [ROFstID], - [ImageID], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Figures] - WHERE [ROFstID]=@ROFstID AND [ImageID]=@ImageID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFigureByROFstID_ImageID Succeeded' -ELSE PRINT 'Procedure Creation: getFigureByROFstID_ImageID Error on Creation' -GO - -/****** Object: StoredProcedure [getFigures] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFigures]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFigures]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFigures] - -WITH EXECUTE AS OWNER -AS - SELECT - [FigureID], - [ROFstID], - [ImageID], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Figures] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFigures Succeeded' -ELSE PRINT 'Procedure Creation: getFigures Error on Creation' -GO - -/****** Object: StoredProcedure [getFiguresByImageID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFiguresByImageID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFiguresByImageID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFiguresByImageID] - -( - @ImageID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Figures].[FigureID], - [Figures].[ROFstID], - [Figures].[ImageID], - [Figures].[Config], - [Figures].[DTS], - [Figures].[UserID], - [Figures].[LastChanged], - [ROFsts].[RODbID] [ROFst_RODbID], - [ROFsts].[ROLookup] [ROFst_ROLookup], - [ROFsts].[Config] [ROFst_Config], - [ROFsts].[DTS] [ROFst_DTS], - [ROFsts].[UserID] [ROFst_UserID] - FROM [Figures] - JOIN [ROFsts] ON - [ROFsts].[ROFstID]=[Figures].[ROFstID] - WHERE - [Figures].[ImageID]=@ImageID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFiguresByImageID Succeeded' -ELSE PRINT 'Procedure Creation: getFiguresByImageID Error on Creation' -GO - -/****** Object: StoredProcedure [getFiguresByROFstID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFiguresByROFstID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFiguresByROFstID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFiguresByROFstID] - -( - @ROFstID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Figures].[FigureID], - [Figures].[ROFstID], - [Figures].[ImageID], - [Figures].[Config], - [Figures].[DTS], - [Figures].[UserID], - [Figures].[LastChanged], - [ROImages].[RODbID] [ROImage_RODbID], - [ROImages].[FileName] [ROImage_FileName], - [ROImages].[Content] [ROImage_Content], - [ROImages].[Config] [ROImage_Config], - [ROImages].[DTS] [ROImage_DTS], - [ROImages].[UserID] [ROImage_UserID] - FROM [Figures] - JOIN [ROImages] ON - [ROImages].[ImageID]=[Figures].[ImageID] - WHERE - [Figures].[ROFstID]=@ROFstID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFiguresByROFstID Succeeded' -ELSE PRINT 'Procedure Creation: getFiguresByROFstID Error on Creation' -GO - -/****** Object: StoredProcedure [getFolder] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFolder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFolder]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFolder] - -( - @FolderID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [FolderID], - [ParentID], - [DBID], - [Name], - [Title], - [ShortName], - [FormatID], - [ManualOrder], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[FolderID]=[Folders].[FolderID]) [AssignmentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FolderID]=[Folders].[FolderID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] [Children] WHERE [Children].[ParentID]=[Folders].[FolderID]) [ChildCount] - FROM [Folders] - WHERE [FolderID]=@FolderID - - SELECT - [Assignments].[AID], - [Assignments].[GID], - [Assignments].[RID], - [Assignments].[FolderID], - [Assignments].[StartDate], - [Assignments].[EndDate], - [Assignments].[DTS], - [Assignments].[UsrID], - [Assignments].[LastChanged], - [Groups].[GroupName] [Group_GroupName], - [Groups].[GroupType] [Group_GroupType], - [Groups].[Config] [Group_Config], - [Groups].[DTS] [Group_DTS], - [Groups].[UsrID] [Group_UsrID], - [Roles].[Name] [Role_Name], - [Roles].[Title] [Role_Title], - [Roles].[DTS] [Role_DTS], - [Roles].[UsrID] [Role_UsrID] - FROM [Assignments] - JOIN [Groups] ON - [Groups].[GID]=[Assignments].[GID] - JOIN [Roles] ON - [Roles].[RID]=[Assignments].[RID] - WHERE - [Assignments].[FolderID]=@FolderID - - - SELECT - [DocVersions].[VersionID], - [DocVersions].[FolderID], - [DocVersions].[VersionType], - [DocVersions].[Name], - [DocVersions].[Title], - [DocVersions].[ItemID], - [DocVersions].[FormatID], - [DocVersions].[Config], - [DocVersions].[DTS], - [DocVersions].[UserID], - [DocVersions].[LastChanged] - FROM [DocVersions] - WHERE - [DocVersions].[FolderID]=@FolderID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFolder Succeeded' -ELSE PRINT 'Procedure Creation: getFolder Error on Creation' -GO - -/****** Object: StoredProcedure [getFolderByParentID_Name] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFolderByParentID_Name]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFolderByParentID_Name]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFolderByParentID_Name] -( - @ParentID int, - @Name nvarchar(100) -) -WITH EXECUTE AS OWNER -AS - SELECT - [FolderID], - [ParentID], - [DBID], - [Name], - [Title], - [ShortName], - [FormatID], - [ManualOrder], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[FolderID]=[Folders].[FolderID]) [AssignmentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FolderID]=[Folders].[FolderID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] [Children] WHERE [Children].[ParentID]=[Folders].[FolderID]) [ChildCount] - FROM [Folders] - WHERE [ParentID]=@ParentID AND [Name]=@Name - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFolderByParentID_Name Succeeded' -ELSE PRINT 'Procedure Creation: getFolderByParentID_Name Error on Creation' -GO - -/****** Object: StoredProcedure [getFolders] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFolders]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFolders]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFolders] - -WITH EXECUTE AS OWNER -AS - SELECT - [FolderID], - [ParentID], - [DBID], - [Name], - [Title], - [ShortName], - [FormatID], - [ManualOrder], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[FolderID]=[Folders].[FolderID]) [AssignmentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FolderID]=[Folders].[FolderID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] [Children] WHERE [Children].[ParentID]=[Folders].[FolderID]) [ChildCount] - FROM [Folders] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFolders Succeeded' -ELSE PRINT 'Procedure Creation: getFolders Error on Creation' -GO - -/****** Object: StoredProcedure [getFoldersByDBID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFoldersByDBID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFoldersByDBID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFoldersByDBID] - -( - @DBID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Folders].[FolderID], - [Folders].[ParentID], - [Folders].[DBID], - [Folders].[Name], - [Folders].[Title], - [Folders].[ShortName], - [Folders].[FormatID], - [Folders].[ManualOrder], - [Folders].[Config], - [Folders].[DTS], - [Folders].[UsrID], - [Folders].[LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[FolderID]=[Folders].[FolderID]) [AssignmentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FolderID]=[Folders].[FolderID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] [Children] WHERE [Children].[ParentID]=[Folders].[FolderID]) [ChildCount] - FROM [Folders] - WHERE - [Folders].[DBID]=@DBID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFoldersByDBID Succeeded' -ELSE PRINT 'Procedure Creation: getFoldersByDBID Error on Creation' -GO - -/****** Object: StoredProcedure [getFoldersByFormatID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFoldersByFormatID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFoldersByFormatID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFoldersByFormatID] - -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Folders].[FolderID], - [Folders].[ParentID], - [Folders].[DBID], - [Folders].[Name], - [Folders].[Title], - [Folders].[ShortName], - [Folders].[FormatID], - [Folders].[ManualOrder], - [Folders].[Config], - [Folders].[DTS], - [Folders].[UsrID], - [Folders].[LastChanged], - [Connections].[Name] [Connection_Name], - [Connections].[Title] [Connection_Title], - [Connections].[ConnectionString] [Connection_ConnectionString], - [Connections].[ServerType] [Connection_ServerType], - [Connections].[Config] [Connection_Config], - [Connections].[DTS] [Connection_DTS], - [Connections].[UsrID] [Connection_UsrID], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[FolderID]=[Folders].[FolderID]) [AssignmentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FolderID]=[Folders].[FolderID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] [Children] WHERE [Children].[ParentID]=[Folders].[FolderID]) [ChildCount] - FROM [Folders] - JOIN [Connections] ON - [Connections].[DBID]=[Folders].[DBID] - WHERE - [Folders].[FormatID]=@FormatID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFoldersByFormatID Succeeded' -ELSE PRINT 'Procedure Creation: getFoldersByFormatID Error on Creation' -GO - -/****** Object: StoredProcedure [getFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFormat]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFormat] - -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [FormatID], - [ParentID], - [Name], - [Description], - [Data], - [GenMac], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] - FROM [Formats] - WHERE [FormatID]=@FormatID - - SELECT - [Contents].[ContentID], - [Contents].[Number], - [Contents].[Text], - [Contents].[Type], - [Contents].[FormatID], - [Contents].[Config], - [Contents].[DTS], - [Contents].[UserID], - [Contents].[LastChanged] - FROM [Contents] - WHERE - [Contents].[FormatID]=@FormatID - - - SELECT - [DocVersions].[VersionID], - [DocVersions].[FolderID], - [DocVersions].[VersionType], - [DocVersions].[Name], - [DocVersions].[Title], - [DocVersions].[ItemID], - [DocVersions].[FormatID], - [DocVersions].[Config], - [DocVersions].[DTS], - [DocVersions].[UserID], - [DocVersions].[LastChanged], - [Folders].[ParentID] [Folder_ParentID], - [Folders].[DBID] [Folder_DBID], - [Folders].[Name] [Folder_Name], - [Folders].[Title] [Folder_Title], - [Folders].[ShortName] [Folder_ShortName], - [Folders].[FormatID] [Folder_FormatID], - [Folders].[ManualOrder] [Folder_ManualOrder], - [Folders].[Config] [Folder_Config], - [Folders].[DTS] [Folder_DTS], - [Folders].[UsrID] [Folder_UsrID] - FROM [DocVersions] - JOIN [Folders] ON - [Folders].[FolderID]=[DocVersions].[FolderID] - WHERE - [DocVersions].[FormatID]=@FormatID - - - SELECT - [Folders].[FolderID], - [Folders].[ParentID], - [Folders].[DBID], - [Folders].[Name], - [Folders].[Title], - [Folders].[ShortName], - [Folders].[FormatID], - [Folders].[ManualOrder], - [Folders].[Config], - [Folders].[DTS], - [Folders].[UsrID], - [Folders].[LastChanged], - [Connections].[Name] [Connection_Name], - [Connections].[Title] [Connection_Title], - [Connections].[ConnectionString] [Connection_ConnectionString], - [Connections].[ServerType] [Connection_ServerType], - [Connections].[Config] [Connection_Config], - [Connections].[DTS] [Connection_DTS], - [Connections].[UsrID] [Connection_UsrID] - FROM [Folders] - JOIN [Connections] ON - [Connections].[DBID]=[Folders].[DBID] - WHERE - [Folders].[FormatID]=@FormatID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFormat Succeeded' -ELSE PRINT 'Procedure Creation: getFormat Error on Creation' -GO - -/****** Object: StoredProcedure [getJustFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getJustFormat]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getJustFormat] - -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [FormatID], - [ParentID], - [Name], - [Description], - [Data], - [GenMac], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] - FROM [Formats] - WHERE [FormatID]=@FormatID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getJustFormat Succeeded' -ELSE PRINT 'Procedure Creation: getJustFormat Error on Creation' -GO - -/****** Object: StoredProcedure [getFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFormatByName]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFormatByName]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFormatByName] - -( - @Name varchar(255) -) -WITH EXECUTE AS OWNER -AS - DECLARE @FormatID INT - Set @FormatID = (select FormatID from Formats where Name = @Name) - SELECT - [FormatID], - [ParentID], - [Name], - [Description], - [Data], - [GenMac], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] - FROM [Formats] - WHERE [FormatID]=@FormatID - - SELECT - [Contents].[ContentID], - [Contents].[Number], - [Contents].[Text], - [Contents].[Type], - [Contents].[FormatID], - [Contents].[Config], - [Contents].[DTS], - [Contents].[UserID], - [Contents].[LastChanged] - FROM [Contents] - WHERE - [Contents].[FormatID]=@FormatID - - - SELECT - [DocVersions].[VersionID], - [DocVersions].[FolderID], - [DocVersions].[VersionType], - [DocVersions].[Name], - [DocVersions].[Title], - [DocVersions].[ItemID], - [DocVersions].[FormatID], - [DocVersions].[Config], - [DocVersions].[DTS], - [DocVersions].[UserID], - [DocVersions].[LastChanged], - [Folders].[ParentID] [Folder_ParentID], - [Folders].[DBID] [Folder_DBID], - [Folders].[Name] [Folder_Name], - [Folders].[Title] [Folder_Title], - [Folders].[ShortName] [Folder_ShortName], - [Folders].[FormatID] [Folder_FormatID], - [Folders].[ManualOrder] [Folder_ManualOrder], - [Folders].[Config] [Folder_Config], - [Folders].[DTS] [Folder_DTS], - [Folders].[UsrID] [Folder_UsrID] - FROM [DocVersions] - JOIN [Folders] ON - [Folders].[FolderID]=[DocVersions].[FolderID] - WHERE - [DocVersions].[FormatID]=@FormatID - - - SELECT - [Folders].[FolderID], - [Folders].[ParentID], - [Folders].[DBID], - [Folders].[Name], - [Folders].[Title], - [Folders].[ShortName], - [Folders].[FormatID], - [Folders].[ManualOrder], - [Folders].[Config], - [Folders].[DTS], - [Folders].[UsrID], - [Folders].[LastChanged], - [Connections].[Name] [Connection_Name], - [Connections].[Title] [Connection_Title], - [Connections].[ConnectionString] [Connection_ConnectionString], - [Connections].[ServerType] [Connection_ServerType], - [Connections].[Config] [Connection_Config], - [Connections].[DTS] [Connection_DTS], - [Connections].[UsrID] [Connection_UsrID] - FROM [Folders] - JOIN [Connections] ON - [Connections].[DBID]=[Folders].[DBID] - WHERE - [Folders].[FormatID]=@FormatID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFormat Succeeded' -ELSE PRINT 'Procedure Creation: getFormat Error on Creation' -GO - -/****** Object: StoredProcedure [getFormatByParentID_Name] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFormatByParentID_Name]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFormatByParentID_Name]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFormatByParentID_Name] -( - @ParentID int, - @Name nvarchar(20) -) -WITH EXECUTE AS OWNER -AS - SELECT - [FormatID], - [ParentID], - [Name], - [Description], - [Data], - [GenMac], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] - FROM [Formats] - WHERE [ParentID]=@ParentID AND [Name]=@Name - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFormatByParentID_Name Succeeded' -ELSE PRINT 'Procedure Creation: getFormatByParentID_Name Error on Creation' -GO - -/****** Object: StoredProcedure [getFormats] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFormats]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFormats]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFormats] - -WITH EXECUTE AS OWNER -AS - SELECT - [FormatID], - [ParentID], - [Name], - [Description], - [Data], - [GenMac], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] - FROM [Formats] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFormats Succeeded' -ELSE PRINT 'Procedure Creation: getFormats Error on Creation' -GO - -/****** Object: StoredProcedure [getGrid] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGrid]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getGrid]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGrid] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [Data], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Grids] - WHERE [ContentID]=@ContentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getGrid Succeeded' -ELSE PRINT 'Procedure Creation: getGrid Error on Creation' -GO - -/****** Object: StoredProcedure [getGridAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGridAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getGridAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGridAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Data], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [GridAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getGridAudit Succeeded' -ELSE PRINT 'Procedure Creation: getGridAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getGridAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGridAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getGridAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGridAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Data], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [GridAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getGridAudits Succeeded' -ELSE PRINT 'Procedure Creation: getGridAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getGridAuditsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGridAuditsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getGridAuditsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGridAuditsByContentID] -( - @ContentID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Data], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [GridAudits] - WHERE ContentID = @ContentID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getGridAuditsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getGridAuditsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getGrids] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGrids]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getGrids]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGrids] - -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [Data], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Grids] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getGrids Succeeded' -ELSE PRINT 'Procedure Creation: getGrids Error on Creation' -GO - -/****** Object: StoredProcedure [getGridsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGridsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getGridsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGridsByContentID] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Grids].[ContentID], - [Grids].[Data], - [Grids].[Config], - [Grids].[DTS], - [Grids].[UserID], - [Grids].[LastChanged] - FROM [Grids] - WHERE - [Grids].[ContentID]=@ContentID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getGridsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getGridsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getGroup] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGroup]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getGroup]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGroup] - -( - @GID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [GID], - [GroupName], - [GroupType], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[GID]=[Groups].[GID]) [AssignmentCount], - (SELECT COUNT(*) FROM [Memberships] WHERE [Memberships].[GID]=[Groups].[GID]) [MembershipCount] - FROM [Groups] - WHERE [GID]=@GID - - SELECT - [Assignments].[AID], - [Assignments].[GID], - [Assignments].[RID], - [Assignments].[FolderID], - [Assignments].[StartDate], - [Assignments].[EndDate], - [Assignments].[DTS], - [Assignments].[UsrID], - [Assignments].[LastChanged], - [Folders].[ParentID] [Folder_ParentID], - [Folders].[DBID] [Folder_DBID], - [Folders].[Name] [Folder_Name], - [Folders].[Title] [Folder_Title], - [Folders].[ShortName] [Folder_ShortName], - [Folders].[FormatID] [Folder_FormatID], - [Folders].[ManualOrder] [Folder_ManualOrder], - [Folders].[Config] [Folder_Config], - [Folders].[DTS] [Folder_DTS], - [Folders].[UsrID] [Folder_UsrID], - [Roles].[Name] [Role_Name], - [Roles].[Title] [Role_Title], - [Roles].[DTS] [Role_DTS], - [Roles].[UsrID] [Role_UsrID] - FROM [Assignments] - JOIN [Folders] ON - [Folders].[FolderID]=[Assignments].[FolderID] - JOIN [Roles] ON - [Roles].[RID]=[Assignments].[RID] - WHERE - [Assignments].[GID]=@GID - - - SELECT - [Memberships].[UGID], - [Memberships].[UID], - [Memberships].[GID], - [Memberships].[StartDate], - [Memberships].[EndDate], - [Memberships].[Config], - [Memberships].[DTS], - [Memberships].[UsrID], - [Memberships].[LastChanged], - [Users].[UserID] [User_UserID], - [Users].[FirstName] [User_FirstName], - [Users].[MiddleName] [User_MiddleName], - [Users].[LastName] [User_LastName], - [Users].[Suffix] [User_Suffix], - [Users].[CourtesyTitle] [User_CourtesyTitle], - [Users].[PhoneNumber] [User_PhoneNumber], - [Users].[CFGName] [User_CFGName], - [Users].[UserLogin] [User_UserLogin], - [Users].[UserName] [User_UserName], - [Users].[Config] [User_Config], - [Users].[DTS] [User_DTS], - [Users].[UsrID] [User_UsrID] - FROM [Memberships] - JOIN [Users] ON - [Users].[UID]=[Memberships].[UID] - WHERE - [Memberships].[GID]=@GID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getGroup Succeeded' -ELSE PRINT 'Procedure Creation: getGroup Error on Creation' -GO - -/****** Object: StoredProcedure [getGroupByGroupName] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGroupByGroupName]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getGroupByGroupName]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGroupByGroupName] -( - @GroupName nvarchar(50) -) -WITH EXECUTE AS OWNER -AS - SELECT - [GID], - [GroupName], - [GroupType], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[GID]=[Groups].[GID]) [AssignmentCount], - (SELECT COUNT(*) FROM [Memberships] WHERE [Memberships].[GID]=[Groups].[GID]) [MembershipCount] - FROM [Groups] - WHERE [GroupName]=@GroupName - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getGroupByGroupName Succeeded' -ELSE PRINT 'Procedure Creation: getGroupByGroupName Error on Creation' -GO - -/****** Object: StoredProcedure [getGroups] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGroups]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getGroups]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGroups] - -WITH EXECUTE AS OWNER -AS - SELECT - [GID], - [GroupName], - [GroupType], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[GID]=[Groups].[GID]) [AssignmentCount], - (SELECT COUNT(*) FROM [Memberships] WHERE [Memberships].[GID]=[Groups].[GID]) [MembershipCount] - FROM [Groups] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getGroups Succeeded' -ELSE PRINT 'Procedure Creation: getGroups Error on Creation' -GO - -/****** Object: StoredProcedure [getImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getImage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getImage] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [ImageType], - [FileName], - [Data], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Images] - WHERE [ContentID]=@ContentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getImage Succeeded' -ELSE PRINT 'Procedure Creation: getImage Error on Creation' -GO - -/****** Object: StoredProcedure [getImageAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getImageAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getImageAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getImageAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [ImageType], - [FileName], - [Data], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ImageAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getImageAudit Succeeded' -ELSE PRINT 'Procedure Creation: getImageAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getImageAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getImageAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getImageAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getImageAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [ImageType], - [FileName], - [Data], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ImageAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getImageAudits Succeeded' -ELSE PRINT 'Procedure Creation: getImageAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getImageAuditsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getImageAuditsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getImageAuditsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getImageAuditsByContentID] -( - @ContentID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [ImageType], - [FileName], - [Data], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ImageAudits] - WHERE ContentID = @ContentID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getImageAuditsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getImageAuditsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getImages] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getImages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getImages]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getImages] - -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [ImageType], - [FileName], - [Data], - [Config], - [DTS], - [UserID], - [LastChanged] - FROM [Images] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getImages Succeeded' -ELSE PRINT 'Procedure Creation: getImages Error on Creation' -GO - -/****** Object: StoredProcedure [getImagesByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getImagesByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getImagesByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getImagesByContentID] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Images].[ContentID], - [Images].[ImageType], - [Images].[FileName], - [Images].[Data], - [Images].[Config], - [Images].[DTS], - [Images].[UserID], - [Images].[LastChanged] - FROM [Images] - WHERE - [Images].[ContentID]=@ContentID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getImagesByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getImagesByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemAndChildren]; -GO - --- getItemAndChildren 111 -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemAndChildren] (@ItemID int) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged] from ItemZ I - join Contents C on C.ContentID = I.ContentID - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: getItemAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [getItemAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ItemID], - [PreviousID], - [ContentID], - [DTS], - [UserID], - [DeleteStatus] - FROM [ItemAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemAudit Succeeded' -ELSE PRINT 'Procedure Creation: getItemAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getItemAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ItemID], - [PreviousID], - [ContentID], - [DTS], - [UserID], - [DeleteStatus] - FROM [ItemAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemAudits Succeeded' -ELSE PRINT 'Procedure Creation: getItemAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getItemNextAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemNextAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemNextAndChildren]; -GO - --- getItemNextAndChildren 111 -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemNextAndChildren] (@ItemID int) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged] from ItemZ I - join Contents C on C.ContentID = I.ContentID - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemNextAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: getItemNextAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [getItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItems]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItems] - -WITH EXECUTE AS OWNER -AS - SELECT - [ItemID], - [PreviousID], - [ContentID], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[Items].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[Items].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[Items].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[Items].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[Items].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[Items].[ItemID]) [Transition_ToIDCount] - FROM [Items] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItems Succeeded' -ELSE PRINT 'Procedure Creation: getItems Error on Creation' -GO - -/****** Object: StoredProcedure [getItemsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemsByContentID] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Items].[ItemID], - [Items].[PreviousID], - [Items].[ContentID], - [Items].[DTS], - [Items].[UserID], - [Items].[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[Items].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[Items].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[Items].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[Items].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[Items].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[Items].[ItemID]) [Transition_ToIDCount] - FROM [Items] - WHERE - [Items].[ContentID]=@ContentID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getItemsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getItemsByPartType] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemsByPartType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemsByPartType]; -GO - -/* samples: - getItemsByPartType 7 // tables - getItemsByPartType 1 // procedure - getItemsByPartType 2 // section - getItemsByPartType 3 // Cautions - getItemsByPartType 4 // Notes - getItemsByPartType 5 // RNOs - getItemsByPartType 6 // Steps - */ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemsByPartType](@FromType int) - -WITH EXECUTE AS OWNER -AS - SELECT - ii.[ItemID], - [PreviousID], - ii.[ContentID], - ii.[DTS], - ii.[UserID], - ii.[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ii.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ii.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ii.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ii.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ii.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ii.[ItemID]) [Transition_ToIDCount] - FROM [Items] ii - JOIN [Parts] pp on pp.ItemID = ii.ItemID - WHERE pp.Fromtype = @FromType - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemsByPartType Succeeded' -ELSE PRINT 'Procedure Creation: getItemsByPartType Error on Creation' -GO - -/****** Object: StoredProcedure [getItemsByPartTypeAndContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemsByPartTypeAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemsByPartTypeAndContent]; -GO - -/* samples: - getItemsByPartTypeAndContent 7 // tables - getItemsByPartTypeAndContent 1 // procedure - getItemsByPartTypeAndContent 2 // section - getItemsByPartTypeAndContent 3 // Cautions - getItemsByPartTypeAndContent 4 // Notes - getItemsByPartTypeAndContent 5 // RNOs - getItemsByPartTypeAndContent 6 // Steps - */ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemsByPartTypeAndContent](@FromType int) - -WITH EXECUTE AS OWNER -AS - SELECT - ii.[ItemID], - [PreviousID], - ii.[ContentID], - ii.[DTS], - ii.[UserID], - ii.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ii.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ii.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ii.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ii.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ii.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ii.[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - FROM [Items] ii - JOIN [Parts] pp on pp.ItemID = ii.ItemID - JOIN [Contents] C on C.ContentID = ii.ContentID - WHERE pp.Fromtype = @FromType - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemsByPartTypeAndContent Succeeded' -ELSE PRINT 'Procedure Creation: getItemsByPartTypeAndContent Error on Creation' -GO - -/****** Object: StoredProcedure [getJustRODb] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustRODb]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getJustRODb]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getJustRODb] - -( - @RODbID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [RODbID], - [ROName], - [FolderPath], - [DBConnectionString], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [DROUsages] WHERE [DROUsages].[RODbID]=[RODbs].[RODbID]) [DROUsageCount], - (SELECT COUNT(*) FROM [ROFsts] WHERE [ROFsts].[RODbID]=[RODbs].[RODbID]) [ROFstCount], - (SELECT COUNT(*) FROM [ROImages] WHERE [ROImages].[RODbID]=[RODbs].[RODbID]) [ROImageCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[RODbID]=[RODbs].[RODbID]) [RoUsageCount] - FROM [RODbs] - WHERE [RODbID]=@RODbID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getJustRODb Succeeded' -ELSE PRINT 'Procedure Creation: getJustRODb Error on Creation' -GO - -/****** Object: StoredProcedure [getJustROFst] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustROFst]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getJustROFst]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getJustROFst] -( - @ROFstID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ROFstID], - [RODbID], - [ROLookup], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount] - FROM [ROFsts] - WHERE [ROFstID]=@ROFstID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getJustROFst Succeeded' -ELSE PRINT 'Procedure Creation: getJustROFst Error on Creation' -GO - -/****** Object: StoredProcedure [getLibraryDocuments] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getLibraryDocuments]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getLibraryDocuments]; -GO - ---getLibraryDocuments -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getLibraryDocuments] - -WITH EXECUTE AS OWNER -AS -SELECT -[DocID], -[LibTitle], -[DocContent], -[DocAscii], -[FileExtension], -[Config], -[DTS], -[UserID], -[LastChanged], -(SELECT COUNT(*) FROM [DROUsages] WHERE [DROUsages].[DocID]=[Documents].[DocID]) [DROUsageCount], -(SELECT COUNT(*) FROM [Entries] WHERE [Entries].[DocID]=[Documents].[DocID]) [EntryCount], -(SELECT COUNT(*) FROM [Pdfs] WHERE [Pdfs].[DocID]=[Documents].[DocID]) [PdfCount] -FROM [Documents] where [LibTitle] <> '' order by [LibTitle] -RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getLibraryDocuments Succeeded' -ELSE PRINT 'Procedure Creation: getLibraryDocuments Error on Creation' -GO - -/****** Object: StoredProcedure [getMembership] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getMembership]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getMembership]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getMembership] - -( - @UGID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [UGID], - [UID], - [GID], - [StartDate], - [EndDate], - [Config], - [DTS], - [UsrID], - [LastChanged] - FROM [Memberships] - WHERE [UGID]=@UGID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getMembership Succeeded' -ELSE PRINT 'Procedure Creation: getMembership Error on Creation' -GO - -/****** Object: StoredProcedure [getMemberships] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getMemberships]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getMemberships]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getMemberships] - -WITH EXECUTE AS OWNER -AS - SELECT - [UGID], - [UID], - [GID], - [StartDate], - [EndDate], - [Config], - [DTS], - [UsrID], - [LastChanged] - FROM [Memberships] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getMemberships Succeeded' -ELSE PRINT 'Procedure Creation: getMemberships Error on Creation' -GO - -/****** Object: StoredProcedure [getMembershipsByGID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getMembershipsByGID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getMembershipsByGID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getMembershipsByGID] - -( - @GID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Memberships].[UGID], - [Memberships].[UID], - [Memberships].[GID], - [Memberships].[StartDate], - [Memberships].[EndDate], - [Memberships].[Config], - [Memberships].[DTS], - [Memberships].[UsrID], - [Memberships].[LastChanged], - [Users].[UserID] [User_UserID], - [Users].[FirstName] [User_FirstName], - [Users].[MiddleName] [User_MiddleName], - [Users].[LastName] [User_LastName], - [Users].[Suffix] [User_Suffix], - [Users].[CourtesyTitle] [User_CourtesyTitle], - [Users].[PhoneNumber] [User_PhoneNumber], - [Users].[CFGName] [User_CFGName], - [Users].[UserLogin] [User_UserLogin], - [Users].[UserName] [User_UserName], - [Users].[Config] [User_Config], - [Users].[DTS] [User_DTS], - [Users].[UsrID] [User_UsrID] - FROM [Memberships] - JOIN [Users] ON - [Users].[UID]=[Memberships].[UID] - WHERE - [Memberships].[GID]=@GID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getMembershipsByGID Succeeded' -ELSE PRINT 'Procedure Creation: getMembershipsByGID Error on Creation' -GO - -/****** Object: StoredProcedure [getMembershipsByUID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getMembershipsByUID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getMembershipsByUID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getMembershipsByUID] - -( - @UID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Memberships].[UGID], - [Memberships].[UID], - [Memberships].[GID], - [Memberships].[StartDate], - [Memberships].[EndDate], - [Memberships].[Config], - [Memberships].[DTS], - [Memberships].[UsrID], - [Memberships].[LastChanged], - [Groups].[GroupName] [Group_GroupName], - [Groups].[GroupType] [Group_GroupType], - [Groups].[Config] [Group_Config], - [Groups].[DTS] [Group_DTS], - [Groups].[UsrID] [Group_UsrID] - FROM [Memberships] - JOIN [Groups] ON - [Groups].[GID]=[Memberships].[GID] - WHERE - [Memberships].[UID]=@UID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getMembershipsByUID Succeeded' -ELSE PRINT 'Procedure Creation: getMembershipsByUID Error on Creation' -GO - -/****** Object: StoredProcedure [getNextItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getNextItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getNextItems]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getNextItems] - -( - @PreviousID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ItemID], - [PreviousID], - [ContentID], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[Items].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[Items].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[Items].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[Items].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[Items].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[Items].[ItemID]) [Transition_ToIDCount] - FROM [Items] WHERE [PreviousID]=@PreviousID AND [ItemID]<>@PreviousID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getNextItems Succeeded' -ELSE PRINT 'Procedure Creation: getNextItems Error on Creation' -GO - -/****** Object: StoredProcedure [getParentFolder] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getParentFolder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getParentFolder]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getParentFolder] -( - @ParentID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [FolderID], - [ParentID], - [DBID], - [Name], - [Title], - [ShortName], - [FormatID], - [ManualOrder], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[FolderID]=[Folders].[FolderID]) [AssignmentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FolderID]=[Folders].[FolderID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] [Children] WHERE [Children].[ParentID]=[Folders].[FolderID]) [ChildCount] - FROM [Folders] - WHERE - [FolderID]=@ParentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getParentFolder Succeeded' -ELSE PRINT 'Procedure Creation: getParentFolder Error on Creation' -GO - -/****** Object: StoredProcedure [getParentFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getParentFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getParentFormat]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getParentFormat] -( - @ParentID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [FormatID], - [ParentID], - [Name], - [Description], - [Data], - [GenMac], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] - FROM [Formats] - WHERE - [FormatID]=@ParentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getParentFormat Succeeded' -ELSE PRINT 'Procedure Creation: getParentFormat Error on Creation' -GO - -/****** Object: StoredProcedure [getPart] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPart]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPart]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPart] - -( - @ContentID int, - @FromType int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [FromType], - [ItemID], - [DTS], - [UserID], - [LastChanged] - FROM [Parts] - WHERE [ContentID]=@ContentID AND [FromType]=@FromType - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPart Succeeded' -ELSE PRINT 'Procedure Creation: getPart Error on Creation' -GO - -/****** Object: StoredProcedure [getPartAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPartAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPartAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPartAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [FromType], - [ItemID], - [DTS], - [UserID], - [DeleteStatus] - FROM [PartAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPartAudit Succeeded' -ELSE PRINT 'Procedure Creation: getPartAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getPartAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPartAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPartAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPartAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [FromType], - [ItemID], - [DTS], - [UserID], - [DeleteStatus] - FROM [PartAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPartAudits Succeeded' -ELSE PRINT 'Procedure Creation: getPartAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getPartAuditsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPartAuditsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPartAuditsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPartAuditsByContentID] -( - @ContentID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [FromType], - [ItemID], - [DTS], - [UserID], - [DeleteStatus] - FROM [PartAudits] - WHERE ContentID = @ContentID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPartAuditsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getPartAuditsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getParts] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getParts]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getParts]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getParts] - -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [FromType], - [ItemID], - [DTS], - [UserID], - [LastChanged] - FROM [Parts] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getParts Succeeded' -ELSE PRINT 'Procedure Creation: getParts Error on Creation' -GO - -/****** Object: StoredProcedure [getPartsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPartsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPartsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPartsByContentID] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Parts].[ContentID], - [Parts].[FromType], - [Parts].[ItemID], - [Parts].[DTS], - [Parts].[UserID], - [Parts].[LastChanged], - [Items].[PreviousID] [Item_PreviousID], - [Items].[ContentID] [Item_ContentID], - [Items].[DTS] [Item_DTS], - [Items].[UserID] [Item_UserID] - FROM [Parts] - JOIN [Items] ON - [Items].[ItemID]=[Parts].[ItemID] - WHERE - [Parts].[ContentID]=@ContentID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPartsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getPartsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getPartsByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPartsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPartsByItemID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPartsByItemID] - -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Parts].[ContentID], - [Parts].[FromType], - [Parts].[ItemID], - [Parts].[DTS], - [Parts].[UserID], - [Parts].[LastChanged], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [Parts] - JOIN [Contents] ON - [Contents].[ContentID]=[Parts].[ContentID] - WHERE - [Parts].[ItemID]=@ItemID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPartsByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getPartsByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getPastedAffectedTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPastedAffectedTransitions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPastedAffectedTransitions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPastedAffectedTransitions] -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - -SELECT - TT.[TransitionID], - [FromID], - [ToID], - [RangeID], - [IsRange], - [TranType], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=TT.[TransitionID]) [ZTransitionCount] -FROM [Transitions] TT join vefn_ChildItems(@ItemID) CC on CC.ContentID = TT.FromID -RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPastedAffectedTransitions Succeeded' -ELSE PRINT 'Procedure Creation: getPastedAffectedTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [getPdf] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPdf]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPdf]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPdf] - -( - @DocID int, - @DebugStatus int, - @TopRow int, - @PageLength int, - @LeftMargin int, - @PageWidth int -) -WITH EXECUTE AS OWNER -AS - SELECT - [DocID], - [DebugStatus], - [TopRow], - [PageLength], - [LeftMargin], - [PageWidth], - [PageCount], - [DocPdf], - [DTS], - [UserID], - [LastChanged] - FROM [Pdfs] - WHERE [DocID]=@DocID AND [DebugStatus]=@DebugStatus AND [TopRow]=@TopRow AND [PageLength]=@PageLength AND [LeftMargin]=@LeftMargin AND [PageWidth]=@PageWidth - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPdf Succeeded' -ELSE PRINT 'Procedure Creation: getPdf Error on Creation' -GO - -/****** Object: StoredProcedure [getPdfs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPdfs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPdfs]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPdfs] - -WITH EXECUTE AS OWNER -AS - SELECT - [DocID], - [DebugStatus], - [TopRow], - [PageLength], - [LeftMargin], - [PageWidth], - [PageCount], - [DocPdf], - [DTS], - [UserID], - [LastChanged] - FROM [Pdfs] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPdfs Succeeded' -ELSE PRINT 'Procedure Creation: getPdfs Error on Creation' -GO - -/****** Object: StoredProcedure [getPdfsByDocID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPdfsByDocID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPdfsByDocID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPdfsByDocID] - -( - @DocID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Pdfs].[DocID], - [Pdfs].[DebugStatus], - [Pdfs].[TopRow], - [Pdfs].[PageLength], - [Pdfs].[LeftMargin], - [Pdfs].[PageWidth], - [Pdfs].[PageCount], - [Pdfs].[DocPdf], - [Pdfs].[DTS], - [Pdfs].[UserID], - [Pdfs].[LastChanged] - FROM [Pdfs] - WHERE - [Pdfs].[DocID]=@DocID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPdfsByDocID Succeeded' -ELSE PRINT 'Procedure Creation: getPdfsByDocID Error on Creation' -GO - -/****** Object: StoredProcedure [getPermission] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPermission]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPermission]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPermission] - -( - @PID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [PID], - [RID], - [PermLevel], - [VersionType], - [PermValue], - [PermAD], - [StartDate], - [EndDate], - [Config], - [DTS], - [UsrID], - [LastChanged] - FROM [Permissions] - WHERE [PID]=@PID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPermission Succeeded' -ELSE PRINT 'Procedure Creation: getPermission Error on Creation' -GO - -/****** Object: StoredProcedure [getPermissions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPermissions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPermissions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPermissions] - -WITH EXECUTE AS OWNER -AS - SELECT - [PID], - [RID], - [PermLevel], - [VersionType], - [PermValue], - [PermAD], - [StartDate], - [EndDate], - [Config], - [DTS], - [UsrID], - [LastChanged] - FROM [Permissions] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPermissions Succeeded' -ELSE PRINT 'Procedure Creation: getPermissions Error on Creation' -GO - -/****** Object: StoredProcedure [getPermissionsByRID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPermissionsByRID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPermissionsByRID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPermissionsByRID] - -( - @RID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Permissions].[PID], - [Permissions].[RID], - [Permissions].[PermLevel], - [Permissions].[VersionType], - [Permissions].[PermValue], - [Permissions].[PermAD], - [Permissions].[StartDate], - [Permissions].[EndDate], - [Permissions].[Config], - [Permissions].[DTS], - [Permissions].[UsrID], - [Permissions].[LastChanged] - FROM [Permissions] - WHERE - [Permissions].[RID]=@RID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPermissionsByRID Succeeded' -ELSE PRINT 'Procedure Creation: getPermissionsByRID Error on Creation' -GO - -/****** Object: StoredProcedure [getPreviousItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPreviousItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPreviousItem]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPreviousItem] -( - @PreviousID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ItemID], - [PreviousID], - [ContentID], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[Items].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[Items].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[Items].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[Items].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[Items].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[Items].[ItemID]) [Transition_ToIDCount] - FROM [Items] - WHERE - [ItemID]=@PreviousID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPreviousItem Succeeded' -ELSE PRINT 'Procedure Creation: getPreviousItem Error on Creation' -GO - -/****** Object: StoredProcedure [getRODb] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRODb]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRODb]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRODb] - -( - @RODbID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [RODbID], - [ROName], - [FolderPath], - [DBConnectionString], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [DROUsages] WHERE [DROUsages].[RODbID]=[RODbs].[RODbID]) [DROUsageCount], - (SELECT COUNT(*) FROM [ROFsts] WHERE [ROFsts].[RODbID]=[RODbs].[RODbID]) [ROFstCount], - (SELECT COUNT(*) FROM [ROImages] WHERE [ROImages].[RODbID]=[RODbs].[RODbID]) [ROImageCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[RODbID]=[RODbs].[RODbID]) [RoUsageCount] - FROM [RODbs] - WHERE [RODbID]=@RODbID - - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [Documents].[LibTitle] [Document_LibTitle], - [Documents].[DocContent] [Document_DocContent], - [Documents].[DocAscii] [Document_DocAscii], - [Documents].[Config] [Document_Config], - [Documents].[DTS] [Document_DTS], - [Documents].[UserID] [Document_UserID], - [Documents].[FileExtension] [Document_FileExtension] - FROM [DROUsages] - JOIN [Documents] ON - [Documents].[DocID]=[DROUsages].[DocID] - WHERE - [DROUsages].[RODbID]=@RODbID - - - SELECT - [ROFsts].[ROFstID], - [ROFsts].[RODbID], - [ROFsts].[ROLookup], - [ROFsts].[Config], - [ROFsts].[DTS], - [ROFsts].[UserID], - [ROFsts].[LastChanged] - FROM [ROFsts] - WHERE - [ROFsts].[RODbID]=@RODbID - - - SELECT - [ROImages].[ImageID], - [ROImages].[RODbID], - [ROImages].[FileName], - [ROImages].[Content], - [ROImages].[Config], - [ROImages].[DTS], - [ROImages].[UserID], - [ROImages].[LastChanged] - FROM [ROImages] - WHERE - [ROImages].[RODbID]=@RODbID - - - SELECT - [RoUsages].[ROUsageID], - [RoUsages].[ContentID], - [RoUsages].[ROID], - [RoUsages].[Config], - [RoUsages].[DTS], - [RoUsages].[UserID], - [RoUsages].[LastChanged], - [RoUsages].[RODbID], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [RoUsages] - JOIN [Contents] ON - [Contents].[ContentID]=[RoUsages].[ContentID] - WHERE - [RoUsages].[RODbID]=@RODbID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRODb Succeeded' -ELSE PRINT 'Procedure Creation: getRODb Error on Creation' -GO - -/****** Object: StoredProcedure [getRODbByFolderPath] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRODbByFolderPath]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRODbByFolderPath]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRODbByFolderPath] -( - @FolderPath nvarchar(255) -) -WITH EXECUTE AS OWNER -AS - SELECT - [RODbID], - [ROName], - [FolderPath], - [DBConnectionString], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [DROUsages] WHERE [DROUsages].[RODbID]=[RODbs].[RODbID]) [DROUsageCount], - (SELECT COUNT(*) FROM [ROFsts] WHERE [ROFsts].[RODbID]=[RODbs].[RODbID]) [ROFstCount], - (SELECT COUNT(*) FROM [ROImages] WHERE [ROImages].[RODbID]=[RODbs].[RODbID]) [ROImageCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[RODbID]=[RODbs].[RODbID]) [RoUsageCount] - FROM [RODbs] - WHERE [FolderPath]=@FolderPath - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRODbByFolderPath Succeeded' -ELSE PRINT 'Procedure Creation: getRODbByFolderPath Error on Creation' -GO - -/****** Object: StoredProcedure [getRODbs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRODbs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRODbs]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRODbs] - -WITH EXECUTE AS OWNER -AS - SELECT - [RODbID], - [ROName], - [FolderPath], - [DBConnectionString], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [DROUsages] WHERE [DROUsages].[RODbID]=[RODbs].[RODbID]) [DROUsageCount], - (SELECT COUNT(*) FROM [ROFsts] WHERE [ROFsts].[RODbID]=[RODbs].[RODbID]) [ROFstCount], - (SELECT COUNT(*) FROM [ROImages] WHERE [ROImages].[RODbID]=[RODbs].[RODbID]) [ROImageCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[RODbID]=[RODbs].[RODbID]) [RoUsageCount] - FROM [RODbs] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRODbs Succeeded' -ELSE PRINT 'Procedure Creation: getRODbs Error on Creation' -GO - -/****** Object: StoredProcedure [getROFst] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROFst]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getROFst]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getROFst] - -( - @ROFstID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ROFstID], - [RODbID], - [ROLookup], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount] - FROM [ROFsts] - WHERE [ROFstID]=@ROFstID - - SELECT - [Associations].[AssociationID], - [Associations].[VersionID], - [Associations].[ROFstID], - [Associations].[Config], - [Associations].[DTS], - [Associations].[UserID], - [Associations].[LastChanged], - [DocVersions].[FolderID] [DocVersion_FolderID], - [DocVersions].[VersionType] [DocVersion_VersionType], - [DocVersions].[Name] [DocVersion_Name], - [DocVersions].[Title] [DocVersion_Title], - [DocVersions].[ItemID] [DocVersion_ItemID], - [DocVersions].[FormatID] [DocVersion_FormatID], - [DocVersions].[Config] [DocVersion_Config], - [DocVersions].[DTS] [DocVersion_DTS], - [DocVersions].[UserID] [DocVersion_UserID] - FROM [Associations] - JOIN [DocVersions] ON - [DocVersions].[VersionID]=[Associations].[VersionID] - WHERE - [Associations].[ROFstID]=@ROFstID - - - SELECT - [Figures].[FigureID], - [Figures].[ROFstID], - [Figures].[ImageID], - [Figures].[Config], - [Figures].[DTS], - [Figures].[UserID], - [Figures].[LastChanged], - [ROImages].[RODbID] [ROImage_RODbID], - [ROImages].[FileName] [ROImage_FileName], - [ROImages].[Content] [ROImage_Content], - [ROImages].[Config] [ROImage_Config], - [ROImages].[DTS] [ROImage_DTS], - [ROImages].[UserID] [ROImage_UserID] - FROM [Figures] - JOIN [ROImages] ON - [ROImages].[ImageID]=[Figures].[ImageID] - WHERE - [Figures].[ROFstID]=@ROFstID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getROFst Succeeded' -ELSE PRINT 'Procedure Creation: getROFst Error on Creation' -GO - -/****** Object: StoredProcedure [getROFstByRODbID_DTS] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROFstByRODbID_DTS]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getROFstByRODbID_DTS]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getROFstByRODbID_DTS] -( - @RODbID int, - @DTS datetime -) -WITH EXECUTE AS OWNER -AS - SELECT - [ROFstID], - [RODbID], - [ROLookup], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount] - FROM [ROFsts] - WHERE [RODbID]=@RODbID AND [DTS]=@DTS - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getROFstByRODbID_DTS Succeeded' -ELSE PRINT 'Procedure Creation: getROFstByRODbID_DTS Error on Creation' -GO - -/****** Object: StoredProcedure [getRoFstBySize] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoFstBySize]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoFstBySize]; -GO - -/* -getRoFstBySize 1,74928 - */ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create PROCEDURE [dbo].[getRoFstBySize] -( - @RODbID int, - @Len int -) -WITH EXECUTE AS OWNER -AS -select - [ROFstID], - [RODbID], - [ROLookup], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount] -from [ROFsts] -where len(rolookup) = @len and [RODbID] = @RODbID -RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoFstBySize Succeeded' -ELSE PRINT 'Procedure Creation: getRoFstBySize Error on Creation' -GO - -/****** Object: StoredProcedure [getROFsts] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROFsts]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getROFsts]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getROFsts] - -WITH EXECUTE AS OWNER -AS - SELECT - [ROFstID], - [RODbID], - [ROLookup], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount] - FROM [ROFsts] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getROFsts Succeeded' -ELSE PRINT 'Procedure Creation: getROFsts Error on Creation' -GO - -/****** Object: StoredProcedure [getROFstsByRODbID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROFstsByRODbID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getROFstsByRODbID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getROFstsByRODbID] - -( - @RODbID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [ROFsts].[ROFstID], - [ROFsts].[RODbID], - [ROFsts].[ROLookup], - [ROFsts].[Config], - [ROFsts].[DTS], - [ROFsts].[UserID], - [ROFsts].[LastChanged], - (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount] - FROM [ROFsts] - WHERE - [ROFsts].[RODbID]=@RODbID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getROFstsByRODbID Succeeded' -ELSE PRINT 'Procedure Creation: getROFstsByRODbID Error on Creation' -GO - -/****** Object: StoredProcedure [getROImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getROImage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getROImage] - -( - @ImageID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ImageID], - [RODbID], - [FileName], - [Content], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ImageID]=[ROImages].[ImageID]) [FigureCount] - FROM [ROImages] - WHERE [ImageID]=@ImageID - - SELECT - [Figures].[FigureID], - [Figures].[ROFstID], - [Figures].[ImageID], - [Figures].[Config], - [Figures].[DTS], - [Figures].[UserID], - [Figures].[LastChanged], - [ROFsts].[RODbID] [ROFst_RODbID], - [ROFsts].[ROLookup] [ROFst_ROLookup], - [ROFsts].[Config] [ROFst_Config], - [ROFsts].[DTS] [ROFst_DTS], - [ROFsts].[UserID] [ROFst_UserID] - FROM [Figures] - JOIN [ROFsts] ON - [ROFsts].[ROFstID]=[Figures].[ROFstID] - WHERE - [Figures].[ImageID]=@ImageID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getROImage Succeeded' -ELSE PRINT 'Procedure Creation: getROImage Error on Creation' -GO - -/****** Object: StoredProcedure [getROImageByRODbID_FileName_DTS] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROImageByRODbID_FileName_DTS]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getROImageByRODbID_FileName_DTS]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getROImageByRODbID_FileName_DTS] -( - @RODbID int, - @FileName nvarchar(255), - @DTS datetime -) -WITH EXECUTE AS OWNER -AS - SELECT - [ImageID], - [RODbID], - [FileName], - [Content], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ImageID]=[ROImages].[ImageID]) [FigureCount] - FROM [ROImages] - WHERE [RODbID]=@RODbID AND [FileName]=@FileName AND [DTS]=@DTS - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getROImageByRODbID_FileName_DTS Succeeded' -ELSE PRINT 'Procedure Creation: getROImageByRODbID_FileName_DTS Error on Creation' -GO - -/****** Object: StoredProcedure [getROImageByROFstID_FileName] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROImageByROFstID_FileName]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getROImageByROFstID_FileName]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getROImageByROFstID_FileName] - -( - @ROFstID int, - @FileName nvarchar(255) -) -WITH EXECUTE AS OWNER -AS - - SELECT - [ImageID], - [RODbID], - [FileName], - [Content], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ImageID]=[ROImages].[ImageID]) [FigureCount] - FROM [ROImages] - --JOIN [Figures] ON - -- [Figures].[ImageID]=[ROImages].[ImageID] - WHERE - [ImageID] in (select ImageID from Figures where ROFstID=@ROFstID) AND - [ROImages].[FileName]=@FileName - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getROImageByROFstID_FileName Succeeded' -ELSE PRINT 'Procedure Creation: getROImageByROFstID_FileName Error on Creation' -GO - -/****** Object: StoredProcedure [getROImages] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROImages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getROImages]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getROImages] - -WITH EXECUTE AS OWNER -AS - SELECT - [ImageID], - [RODbID], - [FileName], - [Content], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ImageID]=[ROImages].[ImageID]) [FigureCount] - FROM [ROImages] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getROImages Succeeded' -ELSE PRINT 'Procedure Creation: getROImages Error on Creation' -GO - -/****** Object: StoredProcedure [getROImagesByRODbID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROImagesByRODbID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getROImagesByRODbID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getROImagesByRODbID] - -( - @RODbID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [ROImages].[ImageID], - [ROImages].[RODbID], - [ROImages].[FileName], - [ROImages].[Content], - [ROImages].[Config], - [ROImages].[DTS], - [ROImages].[UserID], - [ROImages].[LastChanged], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ImageID]=[ROImages].[ImageID]) [FigureCount] - FROM [ROImages] - WHERE - [ROImages].[RODbID]=@RODbID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getROImagesByRODbID Succeeded' -ELSE PRINT 'Procedure Creation: getROImagesByRODbID Error on Creation' -GO - -/****** Object: StoredProcedure [getROImagesByRODbIDNoData] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROImagesByRODbIDNoData]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getROImagesByRODbIDNoData]; -GO - -/* -This is used to quickly retrieve ROImages without their data for the ROFst Update process -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create PROCEDURE [dbo].[getROImagesByRODbIDNoData] -( - @RODbID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [ROImages].[ImageID], - [ROImages].[RODbID], - [ROImages].[FileName], - null [Content], - [ROImages].[Config], - [ROImages].[DTS], - [ROImages].[UserID], - [ROImages].[LastChanged], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ImageID]=[ROImages].[ImageID]) [FigureCount] - FROM [ROImages] - WHERE - [ROImages].[RODbID]=@RODbID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getROImagesByRODbIDNoData Succeeded' -ELSE PRINT 'Procedure Creation: getROImagesByRODbIDNoData Error on Creation' -GO - -/****** Object: StoredProcedure [getRole] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRole]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRole]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRole] - -( - @RID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [RID], - [Name], - [Title], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[RID]=[Roles].[RID]) [AssignmentCount], - (SELECT COUNT(*) FROM [Permissions] WHERE [Permissions].[RID]=[Roles].[RID]) [PermissionCount] - FROM [Roles] - WHERE [RID]=@RID - - SELECT - [Assignments].[AID], - [Assignments].[GID], - [Assignments].[RID], - [Assignments].[FolderID], - [Assignments].[StartDate], - [Assignments].[EndDate], - [Assignments].[DTS], - [Assignments].[UsrID], - [Assignments].[LastChanged], - [Folders].[ParentID] [Folder_ParentID], - [Folders].[DBID] [Folder_DBID], - [Folders].[Name] [Folder_Name], - [Folders].[Title] [Folder_Title], - [Folders].[ShortName] [Folder_ShortName], - [Folders].[FormatID] [Folder_FormatID], - [Folders].[ManualOrder] [Folder_ManualOrder], - [Folders].[Config] [Folder_Config], - [Folders].[DTS] [Folder_DTS], - [Folders].[UsrID] [Folder_UsrID], - [Groups].[GroupName] [Group_GroupName], - [Groups].[GroupType] [Group_GroupType], - [Groups].[Config] [Group_Config], - [Groups].[DTS] [Group_DTS], - [Groups].[UsrID] [Group_UsrID] - FROM [Assignments] - JOIN [Folders] ON - [Folders].[FolderID]=[Assignments].[FolderID] - JOIN [Groups] ON - [Groups].[GID]=[Assignments].[GID] - WHERE - [Assignments].[RID]=@RID - - - SELECT - [Permissions].[PID], - [Permissions].[RID], - [Permissions].[PermLevel], - [Permissions].[VersionType], - [Permissions].[PermValue], - [Permissions].[PermAD], - [Permissions].[StartDate], - [Permissions].[EndDate], - [Permissions].[Config], - [Permissions].[DTS], - [Permissions].[UsrID], - [Permissions].[LastChanged] - FROM [Permissions] - WHERE - [Permissions].[RID]=@RID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRole Succeeded' -ELSE PRINT 'Procedure Creation: getRole Error on Creation' -GO - -/****** Object: StoredProcedure [getRoleByName] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoleByName]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoleByName]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRoleByName] -( - @Name nvarchar(50) -) -WITH EXECUTE AS OWNER -AS - SELECT - [RID], - [Name], - [Title], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[RID]=[Roles].[RID]) [AssignmentCount], - (SELECT COUNT(*) FROM [Permissions] WHERE [Permissions].[RID]=[Roles].[RID]) [PermissionCount] - FROM [Roles] - WHERE [Name]=@Name - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoleByName Succeeded' -ELSE PRINT 'Procedure Creation: getRoleByName Error on Creation' -GO - -/****** Object: StoredProcedure [getRoles] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoles]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoles]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRoles] - -WITH EXECUTE AS OWNER -AS - SELECT - [RID], - [Name], - [Title], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[RID]=[Roles].[RID]) [AssignmentCount], - (SELECT COUNT(*) FROM [Permissions] WHERE [Permissions].[RID]=[Roles].[RID]) [PermissionCount] - FROM [Roles] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoles Succeeded' -ELSE PRINT 'Procedure Creation: getRoles Error on Creation' -GO - -/****** Object: StoredProcedure [getRoUsage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoUsage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRoUsage] - -( - @ROUsageID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ROUsageID], - [ContentID], - [ROID], - [Config], - [DTS], - [UserID], - [LastChanged], - [RODbID] - FROM [RoUsages] - WHERE [ROUsageID]=@ROUsageID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsage Succeeded' -ELSE PRINT 'Procedure Creation: getRoUsage Error on Creation' -GO - -/****** Object: StoredProcedure [getRoUsages] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoUsages]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRoUsages] - -WITH EXECUTE AS OWNER -AS - SELECT - [ROUsageID], - [ContentID], - [ROID], - [Config], - [DTS], - [UserID], - [LastChanged], - [RODbID] - FROM [RoUsages] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsages Succeeded' -ELSE PRINT 'Procedure Creation: getRoUsages Error on Creation' -GO - -/****** Object: StoredProcedure [getRoUsagesByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsagesByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoUsagesByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRoUsagesByContentID] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [RoUsages].[ROUsageID], - [RoUsages].[ContentID], - [RoUsages].[ROID], - [RoUsages].[Config], - [RoUsages].[DTS], - [RoUsages].[UserID], - [RoUsages].[LastChanged], - [RoUsages].[RODbID], - [RODbs].[ROName] [RODb_ROName], - [RODbs].[FolderPath] [RODb_FolderPath], - [RODbs].[DBConnectionString] [RODb_DBConnectionString], - [RODbs].[Config] [RODb_Config], - [RODbs].[DTS] [RODb_DTS], - [RODbs].[UserID] [RODb_UserID] - FROM [RoUsages] - JOIN [RODbs] ON - [RODbs].[RODbID]=[RoUsages].[RODbID] - WHERE - [RoUsages].[ContentID]=@ContentID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsagesByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getRoUsagesByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getRoUsagesByRODbID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsagesByRODbID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoUsagesByRODbID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRoUsagesByRODbID] - -( - @RODbID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [RoUsages].[ROUsageID], - [RoUsages].[ContentID], - [RoUsages].[ROID], - [RoUsages].[Config], - [RoUsages].[DTS], - [RoUsages].[UserID], - [RoUsages].[LastChanged], - [RoUsages].[RODbID], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [RoUsages] - JOIN [Contents] ON - [Contents].[ContentID]=[RoUsages].[ContentID] - WHERE - [RoUsages].[RODbID]=@RODbID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsagesByRODbID Succeeded' -ELSE PRINT 'Procedure Creation: getRoUsagesByRODbID Error on Creation' -GO - -/****** Object: StoredProcedure [getRoUsagesByROIDs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsagesByROIDs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoUsagesByROIDs]; -GO - -/* -findRoUsagesByROIDs 1,'1:000100000406,000200000229,00020000022A,00020000022B,0002000005F7,0002000005F9,0002000005FA,0002000005FB,000200000623,000200000626,000200000155,00020000018C,00020000018D,00020000022F,000200000230,00020000019E,000200000677,000200000678,000200000684,000D000000CA0042,000D000000CA0043,000D0000064A0042,000D000006600042,000D000006600043,000D000006670042,000D000006670043,000D000006680042,000D000006680043,000D0000067D0041,000D0000067D0042,000D0000067D0043,000D000006850042,000D000006850043,000D000009140042,000D000009140043,000D00000A320042,000D00000A360042,000D00000A500042,000D00000A500043,000D00000A630042,000D00000A630043,0010000022400041,0010000022400042,0010000022400043,001000002AE60042,001000002AE60043,001000003D8B0042,001000003D8B0043,001000003D8C0042,001000003D8C0043,0010000058AB0042,0010000058AB0043,0010000086550042,0010000086550043,001000009B550041,001000009B550042,001000009C1C0041,001000009C1C0042,001000009C1D0041,001000009C1D0042,001000009C1E0041,001000009C1E0042,001000009C1F0041,001000009C1F0042,001000009C200041,001000009C200042,001000009C210041,001000009C210042,001000009C220041,001000009C220042,001000009C230041,001000009C230042,001000009C240041,001000009C240042,001000009C250041,001000009C250042,001000009C260041,001000009C260042,00100000546E0042,00100000546E0043,001000009B900041,001000009B900042,001000009B910041,001000009B910042,001000009B920041,001000009B920042,001000009B930041,001000009B930042,001000009B940041,001000009B940042,001000009B950041,001000009B950042,001000009B960041,001000009B960042,001000009B970041,001000009B970042,001000009B980041,001000009B980042,001000009B990041,001000009B990042,001000009C270041,001000009C270042,001000009C280041,001000009C280042,001000009C290041,001000009C290042,001000009C2A0041,001000009C2A0042,001000009C2B0041,001000009C2B0042,001000009C2C0041,001000009C2C0042,00110000027E0042,00110000027E0043,00150000216A,001500002367,00150000236C,0015000029B7,001500000392,00150000039E,0015000021C7,0015000021E6,001500002261,001500002265,001500002266,001500002297,001500002754,001500002756,0015000004F4,001500002766,001500002546,001500002643,001500002645,001500002646,00150000266A,00150000266B,00150000266C,00150000266D,00150000266E,00150000266F,001500002670,001500002671,0015000026AA,001500000720' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRoUsagesByROIDs] -( - @ROIDs nvarchar(MAX) -) -WITH EXECUTE AS OWNER -AS - SELECT - [RoUsages].[ROUsageID], - [RoUsages].[ContentID], - [RoUsages].[ROID], - [RoUsages].[Config], - [RoUsages].[DTS], - [RoUsages].[UserID], - [RoUsages].[LastChanged], - [RoUsages].[RODbID], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [RoUsages] - JOIN vefn_SplitROSearch(@ROIDs) SS - ON [RoUsages].RODBID = SS.[RODBID] and [RoUsages].[ROID] like SS.[ROID] + '%' - JOIN [Contents] ON - [Contents].[ContentID]=[RoUsages].[ContentID] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsagesByROIDs Succeeded' -ELSE PRINT 'Procedure Creation: getRoUsagesByROIDs Error on Creation' -GO - -/****** Object: StoredProcedure [getTopFolder] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTopFolder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getTopFolder]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getTopFolder] -WITH EXECUTE AS OWNER -AS - SELECT - [FolderID], - [ParentID], - [DBID], - [Name], - [Title], - [ShortName], - [FormatID], - [ManualOrder], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Assignments] WHERE [Assignments].[FolderID]=[Folders].[FolderID]) [AssignmentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FolderID]=[Folders].[FolderID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] [Children] WHERE [Children].[ParentID]=[Folders].[FolderID]) [ChildCount] - FROM [Folders] - WHERE [FolderID]=[ParentID] - - SELECT - [Assignments].[AID], - [Assignments].[GID], - [Assignments].[RID], - [Assignments].[FolderID], - [Assignments].[StartDate], - [Assignments].[EndDate], - [Assignments].[DTS], - [Assignments].[UsrID], - [Assignments].[LastChanged], - [Groups].[GroupName] [Group_GroupName], - [Groups].[GroupType] [Group_GroupType], - [Groups].[Config] [Group_Config], - [Groups].[DTS] [Group_DTS], - [Groups].[UsrID] [Group_UsrID], - [Roles].[Name] [Role_Name], - [Roles].[Title] [Role_Title], - [Roles].[DTS] [Role_DTS], - [Roles].[UsrID] [Role_UsrID] - FROM [Assignments] - JOIN [Groups] ON - [Groups].[GID]=[Assignments].[GID] - JOIN [Roles] ON - [Roles].[RID]=[Assignments].[RID] - WHERE - [Assignments].[FolderID]=(Select [FolderID] from [Folders] where [FolderID]=[ParentID]) - - - SELECT - [DocVersions].[VersionID], - [DocVersions].[FolderID], - [DocVersions].[VersionType], - [DocVersions].[Name], - [DocVersions].[Title], - [DocVersions].[ItemID], - [DocVersions].[FormatID], - [DocVersions].[Config], - [DocVersions].[DTS], - [DocVersions].[UserID], - [DocVersions].[LastChanged] - FROM [DocVersions] - WHERE - [DocVersions].[FolderID]=(Select [FolderID] from [Folders] where [FolderID]=[ParentID]) - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getTopFolder Succeeded' -ELSE PRINT 'Procedure Creation: getTopFolder Error on Creation' -GO - -/****** Object: StoredProcedure [getTransition] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransition]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getTransition]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getTransition] - -( - @TransitionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [TransitionID], - [FromID], - [ToID], - [RangeID], - [IsRange], - [TranType], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=[Transitions].[TransitionID]) [ZTransitionCount] - FROM [Transitions] - WHERE [TransitionID]=@TransitionID - - SELECT - [ZTransitions].[TransitionID], - [ZTransitions].[oldto], - [ZTransitions].[LastChanged] - FROM [ZTransitions] - WHERE - [ZTransitions].[TransitionID]=@TransitionID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getTransition Succeeded' -ELSE PRINT 'Procedure Creation: getTransition Error on Creation' -GO - -/****** Object: StoredProcedure [getTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransitions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getTransitions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getTransitions] - -WITH EXECUTE AS OWNER -AS - SELECT - [TransitionID], - [FromID], - [ToID], - [RangeID], - [IsRange], - [TranType], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=[Transitions].[TransitionID]) [ZTransitionCount] - FROM [Transitions] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getTransitions Succeeded' -ELSE PRINT 'Procedure Creation: getTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [getTransitionsByFromID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransitionsByFromID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getTransitionsByFromID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getTransitionsByFromID] - -( - @FromID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Transitions].[TransitionID], - [Transitions].[FromID], - [Transitions].[ToID], - [Transitions].[RangeID], - [Transitions].[IsRange], - [Transitions].[TranType], - [Transitions].[Config], - [Transitions].[DTS], - [Transitions].[UserID], - [Transitions].[LastChanged], - [Items_RangeID].[PreviousID] [Item_RangeID_PreviousID], - [Items_RangeID].[ContentID] [Item_RangeID_ContentID], - [Items_RangeID].[DTS] [Item_RangeID_DTS], - [Items_RangeID].[UserID] [Item_RangeID_UserID], - [Items_ToID].[PreviousID] [Item_ToID_PreviousID], - [Items_ToID].[ContentID] [Item_ToID_ContentID], - [Items_ToID].[DTS] [Item_ToID_DTS], - [Items_ToID].[UserID] [Item_ToID_UserID], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=[Transitions].[TransitionID]) [ZTransitionCount] - FROM [Transitions] - JOIN [Items] [Items_RangeID] ON - [Items_RangeID].[ItemID]=[Transitions].[RangeID] - JOIN [Items] [Items_ToID] ON - [Items_ToID].[ItemID]=[Transitions].[ToID] - WHERE - [Transitions].[FromID]=@FromID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getTransitionsByFromID Succeeded' -ELSE PRINT 'Procedure Creation: getTransitionsByFromID Error on Creation' -GO - -/****** Object: StoredProcedure [getTransitionsByRangeID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransitionsByRangeID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getTransitionsByRangeID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getTransitionsByRangeID] - -( - @RangeID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Transitions].[TransitionID], - [Transitions].[FromID], - [Transitions].[ToID], - [Transitions].[RangeID], - [Transitions].[IsRange], - [Transitions].[TranType], - [Transitions].[Config], - [Transitions].[DTS], - [Transitions].[UserID], - [Transitions].[LastChanged], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=[Transitions].[TransitionID]) [ZTransitionCount] - FROM [Transitions] - JOIN [Contents] ON - [Contents].[ContentID]=[Transitions].[FromID] - WHERE - [Transitions].[RangeID]=@RangeID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getTransitionsByRangeID Succeeded' -ELSE PRINT 'Procedure Creation: getTransitionsByRangeID Error on Creation' -GO - -/****** Object: StoredProcedure [getTransitionsByToID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransitionsByToID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getTransitionsByToID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getTransitionsByToID] - -( - @ToID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Transitions].[TransitionID], - [Transitions].[FromID], - [Transitions].[ToID], - [Transitions].[RangeID], - [Transitions].[IsRange], - [Transitions].[TranType], - [Transitions].[Config], - [Transitions].[DTS], - [Transitions].[UserID], - [Transitions].[LastChanged], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=[Transitions].[TransitionID]) [ZTransitionCount] - FROM [Transitions] - JOIN [Contents] ON - [Contents].[ContentID]=[Transitions].[FromID] - WHERE - [Transitions].[ToID]=@ToID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getTransitionsByToID Succeeded' -ELSE PRINT 'Procedure Creation: getTransitionsByToID Error on Creation' -GO - -/****** Object: StoredProcedure [getUser] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getUser]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getUser]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getUser] - -( - @UID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [UID], - [UserID], - [FirstName], - [MiddleName], - [LastName], - [Suffix], - [CourtesyTitle], - [PhoneNumber], - [CFGName], - [UserLogin], - [UserName], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Memberships] WHERE [Memberships].[UID]=[Users].[UID]) [MembershipCount] - FROM [Users] - WHERE [UID]=@UID - - SELECT - [Memberships].[UGID], - [Memberships].[UID], - [Memberships].[GID], - [Memberships].[StartDate], - [Memberships].[EndDate], - [Memberships].[Config], - [Memberships].[DTS], - [Memberships].[UsrID], - [Memberships].[LastChanged], - [Groups].[GroupName] [Group_GroupName], - [Groups].[GroupType] [Group_GroupType], - [Groups].[Config] [Group_Config], - [Groups].[DTS] [Group_DTS], - [Groups].[UsrID] [Group_UsrID] - FROM [Memberships] - JOIN [Groups] ON - [Groups].[GID]=[Memberships].[GID] - WHERE - [Memberships].[UID]=@UID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getUser Succeeded' -ELSE PRINT 'Procedure Creation: getUser Error on Creation' -GO - -/****** Object: StoredProcedure [getUsers] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getUsers]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getUsers]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getUsers] - -WITH EXECUTE AS OWNER -AS - SELECT - [UID], - [UserID], - [FirstName], - [MiddleName], - [LastName], - [Suffix], - [CourtesyTitle], - [PhoneNumber], - [CFGName], - [UserLogin], - [UserName], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Memberships] WHERE [Memberships].[UID]=[Users].[UID]) [MembershipCount] - FROM [Users] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getUsers Succeeded' -ELSE PRINT 'Procedure Creation: getUsers Error on Creation' -GO - -/****** Object: StoredProcedure [getZContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getZContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getZContent]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getZContent] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [OldStepSequence], - [LastChanged] - FROM [ZContents] - WHERE [ContentID]=@ContentID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getZContent Succeeded' -ELSE PRINT 'Procedure Creation: getZContent Error on Creation' -GO - -/****** Object: StoredProcedure [getZContents] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getZContents]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getZContents]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getZContents] - -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [OldStepSequence], - [LastChanged] - FROM [ZContents] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getZContents Succeeded' -ELSE PRINT 'Procedure Creation: getZContents Error on Creation' -GO - -/****** Object: StoredProcedure [getZContentsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getZContentsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getZContentsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getZContentsByContentID] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [ZContents].[ContentID], - [ZContents].[OldStepSequence], - [ZContents].[LastChanged] - FROM [ZContents] - WHERE - [ZContents].[ContentID]=@ContentID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getZContentsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getZContentsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getZTransition] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getZTransition]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getZTransition]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getZTransition] - -( - @TransitionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [TransitionID], - [oldto], - [LastChanged] - FROM [ZTransitions] - WHERE [TransitionID]=@TransitionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getZTransition Succeeded' -ELSE PRINT 'Procedure Creation: getZTransition Error on Creation' -GO - -/****** Object: StoredProcedure [getZTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getZTransitions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getZTransitions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getZTransitions] - -WITH EXECUTE AS OWNER -AS - SELECT - [TransitionID], - [oldto], - [LastChanged] - FROM [ZTransitions] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getZTransitions Succeeded' -ELSE PRINT 'Procedure Creation: getZTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [getZTransitionsByTransitionID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getZTransitionsByTransitionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getZTransitionsByTransitionID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getZTransitionsByTransitionID] - -( - @TransitionID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [ZTransitions].[TransitionID], - [ZTransitions].[oldto], - [ZTransitions].[LastChanged] - FROM [ZTransitions] - WHERE - [ZTransitions].[TransitionID]=@TransitionID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getZTransitionsByTransitionID Succeeded' -ELSE PRINT 'Procedure Creation: getZTransitionsByTransitionID Error on Creation' -GO - -/****** Object: StoredProcedure [PasteItemReplace] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemReplace]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [PasteItemReplace]; -GO - --- ItemID is item to replace --- StartItemID is item to copy -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[PasteItemReplace] -( - @ItemID int=null, @StartItemID int=null, - @Type int=null, @DTS datetime, @UserID nvarchar(100), - @NewItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @ContentID AS INT - DECLARE @NextItemID AS INT - DECLARE @PreviousItemID AS INT - DECLARE @ExternalChildCount AS INT - DECLARE @ExternalCount AS INT - DECLARE @Path AS VARCHAR(MAX) - DECLARE @Children AS TABLE - ( - ItemID INT PRIMARY KEY, - ContentID INT - ) - - -- First check if the replaced item can be deleted, i.e. it doesn't have transitions - -- pointing to it or children. - - DECLARE @ExternalTrans TABLE - ( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL - ) - SET NOCOUNT ON - SELECT @ContentID = ContentID, @PreviousItemID = PreviousID FROM Items WHERE ItemID = @ItemID - SELECT @NextItemID = ItemID FROM Items WHERE PreviousID = @ItemID - --SELECT @ExternalCount = count(*) FROM vefn_FindExternalTransitions(@ItemID) - SELECT @ExternalChildCount = count(*) FROM vefn_FindExternalChildTransitions(@ItemID) - SET @Path = [dbo].[ve_GetShortPath](@ItemID) - - --IF @ExternalCount > 0 AND @NextItemID is null - --BEGIN - -- RAISERROR ('###Cannot Delete Item###Step %d has External Transitions and has no next step - (%s)',16,1,@ItemID,@Path) - -- RETURN - --END - - IF @ExternalChildCount > 0 - BEGIN - RAISERROR ('###Cannot Delete Item###Step %d has External Transitions to it''s children - (%s)',16,1,@ItemID,@Path) - RETURN - END - - -- Copy the item, 'NewItemID' represents the new item(s) - -- DestFormatID is the formatid for the destination parent's format - DECLARE @DestFormatID int - SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - - -- Adjust the next/previous to point to the new item - - DECLARE @PreviousID int - SELECT @PreviousID = [PreviousID] - FROM [ITEMS] II - WHERE [ItemID]=@ItemID - UPDATE [ITEMS] SET [PreviousID]=@PreviousID where [ItemID]=@NewItemID - UPDATE [CONTENTS] SET [Type]=@Type - FROM [CONTENTS] CC JOIN [ITEMS] ii ON CC.[ContentID]=II.[ContentID] - WHERE [ItemID]=@NewItemID - UPDATE [ITEMS] SET [PreviousID]=@NewItemID where [PreviousID]=@ItemID - UPDATE [PARTS] SET [ItemID]=@NewItemID where [ItemID]=@ItemID - - -- UPDATE DocVersion if this was a procedure - UPDATE DocVersions SET ItemID=@NewItemID where ItemID = @ItemID - - -- If there were 'external transitions' that pointed to the original - -- top replaced step, adjust them to point to the new top. - INSERT INTO @ExternalTrans SELECT * FROM vefn_FindExternalTransitions(@ItemID) - IF (SELECT COUNT(*) from @ExternalTrans) > 0 - BEGIN - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NewItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TransitionID in(Select TransitionID from @ExternalTrans) - -- Update transitions that point to @ItemID to Point to @NextItemID - UPDATE TRANSITIONS - SET ToID = case when ToID = @ItemID then @NewItemID else ToID END, - RangeID = case when RangeID = @ItemID then @NewItemID else RangeID END - WHERE TransitionID in(Select TransitionID from @ExternalTrans) - - DECLARE @typeID int -- AnnotationType - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add 'Verification Required' annotions for transtions that pointed to top step - -- and need to point to - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Replaced Step Transition Destination',@UserID - FROM Items where ItemID in (SELECT FromItemID FROM @ExternalTrans) - - END - -- Remove the old one - - -- Get list of Children - INSERT INTO @Children SELECT * FROM vefn_ChildItems(@ItemID) - -- Delete Annotations for @ItemID and children - DELETE from Annotations where ItemID in(Select ItemID from @Children) - -- Delete Details associated with @ContentID and children - DELETE from Details where ContentID in(Select ContentID from @Children) - -- Delete Grids associated with @ContentID and children - DELETE from Grids where ContentID in(Select ContentID from @Children) - -- Delete Images associated with @ContentID and children - DELETE from Images where ContentID in(Select ContentID from @Children) - -- Delete Entries associated with @ContentID and children - DELETE from Entries where ContentID in(Select ContentID from @Children) - -- Delete ROUsages associated with @ContentID and children - DELETE from RoUsages where ContentID in(Select ContentID from @Children) - -- Delete ZTransitions records associated with @ContentID and children - DELETE FROM ZTransitions where TransitionID - in(SELECT TransitionID from Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID) - -- Delete Transitions associated with @ContentID and children - DELETE FROM Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID - -- Delete Parts associated with @ContentID and children - DELETE from Parts where ContentID in(Select ContentID from @Children) - -- Delete ZContents associated with @ContentID and children - DELETE from ZContents where ContentID in(Select ContentID from @Children) - -- Disconnect Items from Each Other - DELETE from Items where ItemID in(Select ItemID from @Children) and PreviousID Is Not Null - -- Disconnect Items to be deleted from each other - Update Items set PreviousID = null where ItemID in (Select ItemID from @Children) and PreviousID Is Not Null - -- Delete Item Records - DELETE from Items where ItemID in(Select ItemID from @Children) - -- DELETE Contents - DELETE from Contents where ContentID in(Select ContentID from @Children) - IF( @@TRANCOUNT > 0 ) COMMIT - EXECUTE GetItem @NewItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemReplace Succeeded' -ELSE PRINT 'Procedure Creation: PasteItemReplace Error on Creation' -GO - -/****** Object: StoredProcedure [PasteItemSiblingAfter] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemSiblingAfter]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [PasteItemSiblingAfter]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[PasteItemSiblingAfter] -( - @ItemID int=null, @StartItemID int=null, -- ItemID is destination, StartItemID is top of copy - @Type int=null, @DTS datetime, @UserID nvarchar(100), - @NewItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - -- First make a copy of the input StartItemID - -- DestFormatID is the formatid for the destination parent's format - DECLARE @DestFormatID int - SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - -- Adjust previous field - DECLARE @NextID int - SELECT @NextID = [ItemID] - FROM [ITEMS] - WHERE [PreviousID]=@ItemID - IF @NextID is not null -- step after the copy point. Adjust it's previous to point to the new step - BEGIN - UPDATE [ITEMS] SET [PreviousID]=@NewItemID, [DTS]=@DTS, [UserID]=@UserID where [ItemID]=@NextID - END - UPDATE [ITEMS] SET [PreviousID]=@ItemID where [ItemID]=@NewItemID - UPDATE [CONTENTS] SET [Type]=@Type - FROM [CONTENTS] CC JOIN [ITEMS] ii ON CC.[ContentID]=II.[ContentID] - WHERE [ItemID]=@NewItemID - - - -- Check for Transitions that point to the Next Step - BEGIN - -- Get a list of Transitions which need to change children of @ItemID that point to @NextID - DECLARE @NextStepTransitions TABLE - ( - [TransitionID] int PRIMARY KEY, - [FromID] [int], - [ToID] [int], - [RangeID] [int], - [TranType] [int], - [Config] [nvarchar](max) - ) - Insert into @NextStepTransitions select * from vefn_NextStepTransitions(@NextID,@ItemID) - IF (SELECT COUNT(*) from @NextStepTransitions) > 0 -- Next Step Transitions - BEGIN - -- Update all transitions in the list to point to @newItemID - Update TT - Set TT.ToID = CASE TT.ToID WHEN @NextID THEN @NewItemID ELSE TT.ToID END, - TT.RangeID = CASE TT.RangeID WHEN @NextID THEN @NewItemID ELSE TT.RangeID END - From TRANSITIONS TT - JOIN @NextStepTransitions NS ON NS.TransitionID = TT.TransitionID - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,NS.TransitionID,NS.TranType,NS.ToID,NS.RangeID,@NextID,@NewItemID) - From CONTENTS CC - JOIN @NextStepTransitions NS ON NS.FromID = CC.ContentID - END - END - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Next Step Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@newItemID) OR RangeID IN(@newItemID)) - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@NextID) OR RangeID IN(@NextID)) - -- Transition Text gets updated in ItemInsertExt.cs - - IF( @@TRANCOUNT > 0 ) COMMIT - EXECUTE GetItem @NewItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemSiblingAfter Succeeded' -ELSE PRINT 'Procedure Creation: PasteItemSiblingAfter Error on Creation' -GO - -/****** Object: StoredProcedure [PasteItemSiblingBefore] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemSiblingBefore]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [PasteItemSiblingBefore]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[PasteItemSiblingBefore] -( - @ItemID int=null, @StartItemID int=null, - @Type int=null, @DTS datetime, @UserID nvarchar(100), - @NewItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - -- First make a copy of the input CopyStartID - -- DestFormatID is the formatid for the destination parent's format - DECLARE @DestFormatID int - SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - -- First adjust previous fields, may also have to do parts, if before first one in list. - DECLARE @PreviousID int, @ContentID int, @newLastChanged timestamp, @NewType int - SELECT @PreviousID = [PreviousID], @NewType=ISNULL(@Type,[Type]) - FROM [ITEMS] II - JOIN [CONTENTS] CC ON CC.[ContentID]=II.[CONTENTID] - WHERE [ItemID]=@ItemID - UPDATE [ITEMS] SET [PreviousID]=@NewItemID where [ItemID]=@ItemID - UPDATE [ITEMS] SET [PreviousID]=@PreviousID where [ItemID]=@NewItemID - UPDATE [CONTENTS] SET [Type]=@Type - FROM [CONTENTS] CC JOIN [ITEMS] ii ON CC.[ContentID]=II.[ContentID] - WHERE [ItemID]=@NewItemID - UPDATE [PARTS] SET [ItemID]=@NewItemID where [ItemID]=@ItemID - UPDATE [DOCVERSIONS] SET [ItemID] = @NewItemID where [ItemID]=@ItemID - - IF @PreviousID is null -- The step is replacing the first step - BEGIN - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NewItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TT.ToID = @ItemID OR TT.RangeID = @ItemID - -- Update transitions that pointed to @ItemID to point to @newItemID - Update TRANSITIONS - Set ToID = CASE ToID WHEN @ItemID THEN @NewItemID ELSE ToID END, - RangeID = CASE RangeID WHEN @ItemID THEN @NewItemID ELSE RangeID END - WHERE ToID = @ItemID OR RangeID = @ItemID - END - ELSE -- Check for Transitions that point to the Next Step - BEGIN - -- Get a list of Transitions which need to change children of @ItemID that point to @NextID - DECLARE @NextStepTransitions TABLE - ( - [TransitionID] int PRIMARY KEY, - [FromID] [int], - [ToID] [int], - [RangeID] [int], - [TranType] [int], - [Config] [nvarchar](max) - ) - Insert into @NextStepTransitions select * from vefn_NextStepTransitions(@ItemID,@PreviousID) - IF (SELECT COUNT(*) from @NextStepTransitions) > 0 -- Next Step Transitions - BEGIN - -- Update all transitions in the list to point to @newItemID - Update TT - Set TT.ToID = CASE TT.ToID WHEN @ItemID THEN @NewItemID ELSE TT.ToID END, - TT.RangeID = CASE TT.RangeID WHEN @ItemID THEN @NewItemID ELSE TT.RangeID END - From TRANSITIONS TT - JOIN @NextStepTransitions NS ON NS.TransitionID = TT.TransitionID - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,NS.TransitionID,NS.TranType,NS.ToID,NS.RangeID,@ItemID,@NewItemID) - From CONTENTS CC - JOIN @NextStepTransitions NS ON NS.FromID = CC.ContentID - END - END - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@ItemID,@NewItemID) OR RangeID IN(@ItemID,@NewItemID)) - -- Transition Text gets updated in ItemInsertExt.cs - IF( @@TRANCOUNT > 0 ) COMMIT - EXECUTE GetItem @NewItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemSiblingBefore Succeeded' -ELSE PRINT 'Procedure Creation: PasteItemSiblingBefore Error on Creation' -GO - -/****** Object: StoredProcedure [purgeData] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[purgeData]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [purgeData]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[purgeData] - -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - delete from [Annotations] - dbcc checkident([Annotations],reseed,0) - delete from [AnnotationTypes] - dbcc checkident([AnnotationTypes],reseed,0) - delete from [Assignments] - dbcc checkident([Assignments],reseed,0) - delete from [Associations] - dbcc checkident([Associations],reseed,0) - delete from [Details] - dbcc checkident([Details],reseed,0) - delete from [DocVersions] - dbcc checkident([DocVersions],reseed,0) - delete from [DROUsages] - dbcc checkident([DROUsages],reseed,0) - delete from [Entries] - delete from [Figures] - dbcc checkident([Figures],reseed,0) - delete from [Folders] - dbcc checkident([Folders],reseed,0) - delete from [Grids] - delete from [Images] - delete from [Memberships] - dbcc checkident([Memberships],reseed,0) - delete from [Parts] - delete from [Pdfs] - delete from [Permissions] - dbcc checkident([Permissions],reseed,0) - delete from [ROFsts] - dbcc checkident([ROFsts],reseed,0) - delete from [ROImages] - dbcc checkident([ROImages],reseed,0) - delete from [Roles] - dbcc checkident([Roles],reseed,0) - delete from [RoUsages] - dbcc checkident([RoUsages],reseed,0) - delete from [Users] - dbcc checkident([Users],reseed,0) - delete from [ZContents] - delete from [ZTransitions] - delete from [Connections] - dbcc checkident([Connections],reseed,0) - delete from [Documents] - dbcc checkident([Documents],reseed,0) - delete from [Groups] - dbcc checkident([Groups],reseed,0) - delete from [RODbs] - dbcc checkident([RODbs],reseed,0) - delete from [Transitions] - dbcc checkident([Transitions],reseed,0) - delete from [Items] - dbcc checkident([Items],reseed,0) - delete from [Contents] - dbcc checkident([Contents],reseed,0) - delete from [Formats] - dbcc checkident([Formats],reseed,0) - delete from [Scopes] - dbcc checkident([Scopes],reseed,0) - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: purgeData Succeeded' -ELSE PRINT 'Procedure Creation: purgeData Error on Creation' -GO - -/****** Object: StoredProcedure [Standardize] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[Standardize]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [Standardize]; -GO - -/* -Standardize '%engineering evaluation%' -Standardize '%preferred running order%' -Standardize '%provide normal spray%' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[Standardize] -( - @LookFor varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @ContentID INT - SET @Contentid = (select min(ContentID) FROM FindText(@LookFor)) - UPDATE Items SET ContentID = @ContentID WHERE ItemID in(SELECT ItemID FROM FindText(@LookFor)) -IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: Standardize Succeeded' -ELSE PRINT 'Procedure Creation: Standardize Error on Creation' -GO - -/****** Object: StoredProcedure [updateAnnotation] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateAnnotation]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateAnnotation]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateAnnotation] - -( - @AnnotationID int, - @ItemID int, - @TypeID int, - @RtfText nvarchar(MAX)=null, - @SearchText nvarchar(MAX)=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Annotations] - SET - [ItemID]=@ItemID, - [TypeID]=@TypeID, - [RtfText]=@RtfText, - [SearchText]=@SearchText, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [AnnotationID]=@AnnotationID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Annotations] WHERE [AnnotationID]=@AnnotationID) - RAISERROR('Annotation record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Annotation has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Annotations] WHERE [AnnotationID]=@AnnotationID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateAnnotation Succeeded' -ELSE PRINT 'Procedure Creation: updateAnnotation Error on Creation' -GO - -/****** Object: StoredProcedure [updateAnnotationType] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateAnnotationType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateAnnotationType]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateAnnotationType] - -( - @TypeID int, - @Name nvarchar(100), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [AnnotationTypes] - SET - [Name]=@Name, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [TypeID]=@TypeID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [AnnotationTypes] WHERE [TypeID]=@TypeID) - RAISERROR('AnnotationType record has been deleted by another user', 16, 1) - ELSE - RAISERROR('AnnotationType has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [AnnotationTypes] WHERE [TypeID]=@TypeID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateAnnotationType Succeeded' -ELSE PRINT 'Procedure Creation: updateAnnotationType Error on Creation' -GO - -/****** Object: StoredProcedure [updateAssignment] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateAssignment]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateAssignment]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateAssignment] - -( - @AID int, - @GID int, - @RID int, - @FolderID int, - @StartDate datetime, - @EndDate datetime=null, - @DTS datetime, - @UsrID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Assignments] - SET - [GID]=@GID, - [RID]=@RID, - [FolderID]=@FolderID, - [StartDate]=@StartDate, - [EndDate]=@EndDate, - [DTS]=@DTS, - [UsrID]=@UsrID - WHERE [AID]=@AID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Assignments] WHERE [AID]=@AID) - RAISERROR('Assignment record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Assignment has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Assignments] WHERE [AID]=@AID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateAssignment Succeeded' -ELSE PRINT 'Procedure Creation: updateAssignment Error on Creation' -GO - -/****** Object: StoredProcedure [updateAssociation] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateAssociation]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateAssociation]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateAssociation] - -( - @AssociationID int, - @VersionID int, - @ROFstID int, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Associations] - SET - [VersionID]=@VersionID, - [ROFstID]=@ROFstID, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [AssociationID]=@AssociationID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Associations] WHERE [AssociationID]=@AssociationID) - RAISERROR('Association record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Association has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Associations] WHERE [AssociationID]=@AssociationID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateAssociation Succeeded' -ELSE PRINT 'Procedure Creation: updateAssociation Error on Creation' -GO - -/****** Object: StoredProcedure [updateConnection] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateConnection]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateConnection]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateConnection] - -( - @DBID int, - @Name nvarchar(100)=null, - @Title nvarchar(510)=null, - @ConnectionString nvarchar(510)=null, - @ServerType int, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UsrID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Connections] - SET - [Name]=@Name, - [Title]=@Title, - [ConnectionString]=@ConnectionString, - [ServerType]=@ServerType, - [Config]=@Config, - [DTS]=@DTS, - [UsrID]=@UsrID - WHERE [DBID]=@DBID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Connections] WHERE [DBID]=@DBID) - RAISERROR('Connection record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Connection has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Connections] WHERE [DBID]=@DBID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateConnection Succeeded' -ELSE PRINT 'Procedure Creation: updateConnection Error on Creation' -GO - -/****** Object: StoredProcedure [updateContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateContent]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateContent] - -( - @ContentID int, - @Number nvarchar(256)=null, - @Text nvarchar(MAX)=null, - @Type int=null, - @FormatID int=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Contents] - SET - [Number]=@Number, - [Text]=@Text, - [Type]=@Type, - [FormatID]=@FormatID, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [ContentID]=@ContentID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Contents] WHERE [ContentID]=@ContentID) - RAISERROR('Content record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Content has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Contents] WHERE [ContentID]=@ContentID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateContent Succeeded' -ELSE PRINT 'Procedure Creation: updateContent Error on Creation' -GO - -/****** Object: StoredProcedure [updateDetail] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateDetail]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateDetail]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateDetail] - -( - @DetailID int, - @ContentID int, - @ItemType int, - @Text nvarchar(MAX), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Details] - SET - [ContentID]=@ContentID, - [ItemType]=@ItemType, - [Text]=@Text, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [DetailID]=@DetailID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Details] WHERE [DetailID]=@DetailID) - RAISERROR('Detail record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Detail has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Details] WHERE [DetailID]=@DetailID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateDetail Succeeded' -ELSE PRINT 'Procedure Creation: updateDetail Error on Creation' -GO - -/****** Object: StoredProcedure [updateDocument] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateDocument]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateDocument]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateDocument] - -( - @DocID int, - @LibTitle nvarchar(1024)=null, - @DocContent varbinary(MAX)=null, - @DocAscii nvarchar(MAX)=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @FileExtension nvarchar(10), - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Documents] - SET - [LibTitle]=@LibTitle, - [DocContent]=@DocContent, - [DocAscii]=@DocAscii, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID, - [FileExtension]=@FileExtension - WHERE [DocID]=@DocID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Documents] WHERE [DocID]=@DocID) - RAISERROR('Document record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Document has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Documents] WHERE [DocID]=@DocID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateDocument Succeeded' -ELSE PRINT 'Procedure Creation: updateDocument Error on Creation' -GO - -/****** Object: StoredProcedure [updateDocVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateDocVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateDocVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateDocVersion] - -( - @VersionID int, - @FolderID int, - @VersionType int, - @Name nvarchar(100), - @Title nvarchar(510)=null, - @ItemID int=null, - @FormatID int=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [DocVersions] - SET - [FolderID]=@FolderID, - [VersionType]=@VersionType, - [Name]=@Name, - [Title]=@Title, - [ItemID]=@ItemID, - [FormatID]=@FormatID, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [VersionID]=@VersionID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [DocVersions] WHERE [VersionID]=@VersionID) - RAISERROR('DocVersion record has been deleted by another user', 16, 1) - ELSE - RAISERROR('DocVersion has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [DocVersions] WHERE [VersionID]=@VersionID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateDocVersion Succeeded' -ELSE PRINT 'Procedure Creation: updateDocVersion Error on Creation' -GO - -/****** Object: StoredProcedure [updateDROUsage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateDROUsage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateDROUsage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateDROUsage] - -( - @DROUsageID int, - @DocID int, - @ROID nvarchar(16), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @RODbID int, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [DROUsages] - SET - [DocID]=@DocID, - [ROID]=@ROID, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID, - [RODbID]=@RODbID - WHERE [DROUsageID]=@DROUsageID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [DROUsages] WHERE [DROUsageID]=@DROUsageID) - RAISERROR('DROUsage record has been deleted by another user', 16, 1) - ELSE - RAISERROR('DROUsage has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [DROUsages] WHERE [DROUsageID]=@DROUsageID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateDROUsage Succeeded' -ELSE PRINT 'Procedure Creation: updateDROUsage Error on Creation' -GO - -/****** Object: StoredProcedure [updateEntry] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateEntry]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateEntry]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateEntry] - -( - @ContentID int, - @DocID int, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Entries] - SET - [DocID]=@DocID, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [ContentID]=@ContentID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Entries] WHERE [ContentID]=@ContentID) - RAISERROR('Entry record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Entry has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Entries] WHERE [ContentID]=@ContentID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateEntry Succeeded' -ELSE PRINT 'Procedure Creation: updateEntry Error on Creation' -GO - -/****** Object: StoredProcedure [updateFigure] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateFigure]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateFigure]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateFigure] - -( - @FigureID int, - @ROFstID int, - @ImageID int, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Figures] - SET - [ROFstID]=@ROFstID, - [ImageID]=@ImageID, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [FigureID]=@FigureID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Figures] WHERE [FigureID]=@FigureID) - RAISERROR('Figure record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Figure has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Figures] WHERE [FigureID]=@FigureID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateFigure Succeeded' -ELSE PRINT 'Procedure Creation: updateFigure Error on Creation' -GO - -/****** Object: StoredProcedure [updateFolder] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateFolder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateFolder]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateFolder] - -( - @FolderID int, - @ParentID int, - @DBID int, - @Name nvarchar(100), - @Title nvarchar(510)=null, - @ShortName nvarchar(20), - @FormatID int=null, - @ManualOrder float=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UsrID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Folders] - SET - [ParentID]=@ParentID, - [DBID]=@DBID, - [Name]=@Name, - [Title]=@Title, - [ShortName]=@ShortName, - [FormatID]=@FormatID, - [ManualOrder]=@ManualOrder, - [Config]=@Config, - [DTS]=@DTS, - [UsrID]=@UsrID - WHERE [FolderID]=@FolderID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Folders] WHERE [FolderID]=@FolderID) - RAISERROR('Folder record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Folder has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Folders] WHERE [FolderID]=@FolderID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateFolder Succeeded' -ELSE PRINT 'Procedure Creation: updateFolder Error on Creation' -GO - -/****** Object: StoredProcedure [updateFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateFormat]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateFormat] - -( - @FormatID int, - @ParentID int, - @Name nvarchar(20), - @Description nvarchar(250)=null, - @Data xml, - @GenMac xml=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Formats] - SET - [ParentID]=@ParentID, - [Name]=@Name, - [Description]=@Description, - [Data]=@Data, - [GenMac]=@GenMac, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [FormatID]=@FormatID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Formats] WHERE [FormatID]=@FormatID) - RAISERROR('Format record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Format has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Formats] WHERE [FormatID]=@FormatID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateFormat Succeeded' -ELSE PRINT 'Procedure Creation: updateFormat Error on Creation' -GO - -/****** Object: StoredProcedure [updateGrid] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateGrid]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateGrid]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateGrid] - -( - @ContentID int, - @Data xml, - @Config xml=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Grids] - SET - [Data]=@Data, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [ContentID]=@ContentID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Grids] WHERE [ContentID]=@ContentID) - RAISERROR('Grid record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Grid has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Grids] WHERE [ContentID]=@ContentID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateGrid Succeeded' -ELSE PRINT 'Procedure Creation: updateGrid Error on Creation' -GO - -/****** Object: StoredProcedure [updateGroup] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateGroup]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateGroup]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateGroup] - -( - @GID int, - @GroupName nvarchar(50), - @GroupType int=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UsrID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Groups] - SET - [GroupName]=@GroupName, - [GroupType]=@GroupType, - [Config]=@Config, - [DTS]=@DTS, - [UsrID]=@UsrID - WHERE [GID]=@GID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Groups] WHERE [GID]=@GID) - RAISERROR('Group record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Group has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Groups] WHERE [GID]=@GID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateGroup Succeeded' -ELSE PRINT 'Procedure Creation: updateGroup Error on Creation' -GO - -/****** Object: StoredProcedure [updateImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateImage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateImage] - -( - @ContentID int, - @ImageType int, - @FileName nvarchar(255), - @Data varbinary(MAX), - @Config xml=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Images] - SET - [ImageType]=@ImageType, - [FileName]=@FileName, - [Data]=@Data, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [ContentID]=@ContentID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Images] WHERE [ContentID]=@ContentID) - RAISERROR('Image record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Image has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Images] WHERE [ContentID]=@ContentID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateImage Succeeded' -ELSE PRINT 'Procedure Creation: updateImage Error on Creation' -GO - -/****** Object: StoredProcedure [updateItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateItem]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateItem] - -( - @ItemID int, - @PreviousID int=null, - @ContentID int, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Items] - SET - [PreviousID]=@PreviousID, - [ContentID]=@ContentID, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [ItemID]=@ItemID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Items] WHERE [ItemID]=@ItemID) - RAISERROR('Item record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Item has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Items] WHERE [ItemID]=@ItemID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateItem Succeeded' -ELSE PRINT 'Procedure Creation: updateItem Error on Creation' -GO - -/****** Object: StoredProcedure [updateMembership] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateMembership]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateMembership]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateMembership] - -( - @UGID int, - @UID int, - @GID int, - @StartDate datetime, - @EndDate datetime=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UsrID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Memberships] - SET - [UID]=@UID, - [GID]=@GID, - [StartDate]=@StartDate, - [EndDate]=@EndDate, - [Config]=@Config, - [DTS]=@DTS, - [UsrID]=@UsrID - WHERE [UGID]=@UGID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Memberships] WHERE [UGID]=@UGID) - RAISERROR('Membership record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Membership has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Memberships] WHERE [UGID]=@UGID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateMembership Succeeded' -ELSE PRINT 'Procedure Creation: updateMembership Error on Creation' -GO - -/****** Object: StoredProcedure [updatePdf] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updatePdf]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updatePdf]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updatePdf] - -( - @DocID int, - @DebugStatus int, - @TopRow int, - @PageLength int, - @LeftMargin int, - @PageWidth int, - @PageCount float, - @DocPdf varbinary(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Pdfs] - SET - [PageCount]=@PageCount, - [DocPdf]=@DocPdf, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [DocID]=@DocID AND [DebugStatus]=@DebugStatus AND [TopRow]=@TopRow AND [PageLength]=@PageLength AND [LeftMargin]=@LeftMargin AND [PageWidth]=@PageWidth AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Pdfs] WHERE [DocID]=@DocID AND [DebugStatus]=@DebugStatus AND [TopRow]=@TopRow AND [PageLength]=@PageLength AND [LeftMargin]=@LeftMargin AND [PageWidth]=@PageWidth) - RAISERROR('Pdf record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Pdf has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Pdfs] WHERE [DocID]=@DocID AND [DebugStatus]=@DebugStatus AND [TopRow]=@TopRow AND [PageLength]=@PageLength AND [LeftMargin]=@LeftMargin AND [PageWidth]=@PageWidth - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updatePdf Succeeded' -ELSE PRINT 'Procedure Creation: updatePdf Error on Creation' -GO - -/****** Object: StoredProcedure [updatePermission] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updatePermission]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updatePermission]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updatePermission] - -( - @PID int, - @RID int, - @PermLevel int, - @VersionType int, - @PermValue int, - @PermAD int, - @StartDate datetime, - @EndDate datetime=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UsrID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Permissions] - SET - [RID]=@RID, - [PermLevel]=@PermLevel, - [VersionType]=@VersionType, - [PermValue]=@PermValue, - [PermAD]=@PermAD, - [StartDate]=@StartDate, - [EndDate]=@EndDate, - [Config]=@Config, - [DTS]=@DTS, - [UsrID]=@UsrID - WHERE [PID]=@PID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Permissions] WHERE [PID]=@PID) - RAISERROR('Permission record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Permission has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Permissions] WHERE [PID]=@PID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updatePermission Succeeded' -ELSE PRINT 'Procedure Creation: updatePermission Error on Creation' -GO - -/****** Object: StoredProcedure [updateRODb] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateRODb]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateRODb]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateRODb] - -( - @RODbID int, - @ROName nvarchar(255), - @FolderPath nvarchar(255), - @DBConnectionString nvarchar(MAX), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [RODbs] - SET - [ROName]=@ROName, - [FolderPath]=@FolderPath, - [DBConnectionString]=@DBConnectionString, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [RODbID]=@RODbID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [RODbs] WHERE [RODbID]=@RODbID) - RAISERROR('RODb record has been deleted by another user', 16, 1) - ELSE - RAISERROR('RODb has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [RODbs] WHERE [RODbID]=@RODbID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateRODb Succeeded' -ELSE PRINT 'Procedure Creation: updateRODb Error on Creation' -GO - -/****** Object: StoredProcedure [updateROFst] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateROFst]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateROFst]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateROFst] - -( - @ROFstID int, - @RODbID int, - @ROLookup varbinary(MAX), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [ROFsts] - SET - [RODbID]=@RODbID, - [ROLookup]=@ROLookup, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [ROFstID]=@ROFstID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [ROFsts] WHERE [ROFstID]=@ROFstID) - RAISERROR('ROFst record has been deleted by another user', 16, 1) - ELSE - RAISERROR('ROFst has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [ROFsts] WHERE [ROFstID]=@ROFstID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateROFst Succeeded' -ELSE PRINT 'Procedure Creation: updateROFst Error on Creation' -GO - -/****** Object: StoredProcedure [updateROImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateROImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateROImage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateROImage] - -( - @ImageID int, - @RODbID int, - @FileName nvarchar(255), - @Content varbinary(MAX), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [ROImages] - SET - [RODbID]=@RODbID, - [FileName]=@FileName, - [Content]=@Content, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [ImageID]=@ImageID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [ROImages] WHERE [ImageID]=@ImageID) - RAISERROR('ROImage record has been deleted by another user', 16, 1) - ELSE - RAISERROR('ROImage has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [ROImages] WHERE [ImageID]=@ImageID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateROImage Succeeded' -ELSE PRINT 'Procedure Creation: updateROImage Error on Creation' -GO - -/****** Object: StoredProcedure [updateRole] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateRole]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateRole]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateRole] - -( - @RID int, - @Name nvarchar(50), - @Title nvarchar(250), - @DTS datetime, - @UsrID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Roles] - SET - [Name]=@Name, - [Title]=@Title, - [DTS]=@DTS, - [UsrID]=@UsrID - WHERE [RID]=@RID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Roles] WHERE [RID]=@RID) - RAISERROR('Role record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Role has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Roles] WHERE [RID]=@RID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateRole Succeeded' -ELSE PRINT 'Procedure Creation: updateRole Error on Creation' -GO - -/****** Object: StoredProcedure [updateRoUsage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateRoUsage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateRoUsage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateRoUsage] - -( - @ROUsageID int, - @ContentID int, - @ROID nvarchar(16), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @RODbID int, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [RoUsages] - SET - [ContentID]=@ContentID, - [ROID]=@ROID, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID, - [RODbID]=@RODbID - WHERE [ROUsageID]=@ROUsageID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [RoUsages] WHERE [ROUsageID]=@ROUsageID) - RAISERROR('RoUsage record has been deleted by another user', 16, 1) - ELSE - RAISERROR('RoUsage has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [RoUsages] WHERE [ROUsageID]=@ROUsageID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateRoUsage Succeeded' -ELSE PRINT 'Procedure Creation: updateRoUsage Error on Creation' -GO - -/****** Object: StoredProcedure [updateTransition] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateTransition]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateTransition]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateTransition] - -( - @TransitionID int, - @FromID int, - @ToID int, - @RangeID int, - @IsRange int, - @TranType int, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Transitions] - SET - [FromID]=@FromID, - [ToID]=@ToID, - [RangeID]=@RangeID, - [IsRange]=@IsRange, - [TranType]=@TranType, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [TransitionID]=@TransitionID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Transitions] WHERE [TransitionID]=@TransitionID) - RAISERROR('Transition record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Transition has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Transitions] WHERE [TransitionID]=@TransitionID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateTransition Succeeded' -ELSE PRINT 'Procedure Creation: updateTransition Error on Creation' -GO - -/****** Object: StoredProcedure [updateUser] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateUser]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateUser]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateUser] - -( - @UID int, - @UserID nvarchar(100), - @FirstName nvarchar(50)=null, - @MiddleName nvarchar(50)=null, - @LastName nvarchar(50)=null, - @Suffix nvarchar(10)=null, - @CourtesyTitle nvarchar(10)=null, - @PhoneNumber nvarchar(30)=null, - @CFGName nvarchar(8)=null, - @UserLogin nvarchar(10)=null, - @UserName nvarchar(32)=null, - @Config nvarchar(MAX)=null, - @DTS datetime, - @UsrID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Users] - SET - [UserID]=@UserID, - [FirstName]=@FirstName, - [MiddleName]=@MiddleName, - [LastName]=@LastName, - [Suffix]=@Suffix, - [CourtesyTitle]=@CourtesyTitle, - [PhoneNumber]=@PhoneNumber, - [CFGName]=@CFGName, - [UserLogin]=@UserLogin, - [UserName]=@UserName, - [Config]=@Config, - [DTS]=@DTS, - [UsrID]=@UsrID - WHERE [UID]=@UID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Users] WHERE [UID]=@UID) - RAISERROR('User record has been deleted by another user', 16, 1) - ELSE - RAISERROR('User has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Users] WHERE [UID]=@UID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateUser Succeeded' -ELSE PRINT 'Procedure Creation: updateUser Error on Creation' -GO - -/****** Object: StoredProcedure [updateZContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateZContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateZContent]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateZContent] - -( - @ContentID int, - @OldStepSequence nvarchar(32), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [ZContents] - SET - [OldStepSequence]=@OldStepSequence - WHERE [ContentID]=@ContentID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [ZContents] WHERE [ContentID]=@ContentID) - RAISERROR('ZContent record has been deleted by another user', 16, 1) - ELSE - RAISERROR('ZContent has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [ZContents] WHERE [ContentID]=@ContentID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateZContent Succeeded' -ELSE PRINT 'Procedure Creation: updateZContent Error on Creation' -GO - -/****** Object: StoredProcedure [updateZTransition] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateZTransition]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateZTransition]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateZTransition] - -( - @TransitionID int, - @Oldto nvarchar(32), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [ZTransitions] - SET - [oldto]=@Oldto - WHERE [TransitionID]=@TransitionID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [ZTransitions] WHERE [TransitionID]=@TransitionID) - RAISERROR('ZTransition record has been deleted by another user', 16, 1) - ELSE - RAISERROR('ZTransition has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [ZTransitions] WHERE [TransitionID]=@TransitionID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateZTransition Succeeded' -ELSE PRINT 'Procedure Creation: updateZTransition Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetChildCount] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetChildCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetChildCount]; -GO - -/* --- Select Procedures with Children -select ItemID, dbo.ve_GetChildCount(ItemID) ChildCount from [Items] II -Join [Contents] CC on II.ContentID = CC.ContentID and CC.Type = 0 and CC.ContentID in (Select ContentID from Parts) -order dbo.ve_GetChildCount(ItemID) desc -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetChildCount] (@ItemID int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN -declare @Count int; -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -Select @Count = Count(*) from Itemz -OPTION (MAXRECURSION 10000) -return @Count END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetChildCount Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetChildCount Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetFolderPath] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetFolderPath]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetFolderPath]; -GO - -/* - -Select VersionID,Name,dbo.ve_GetFolderPath(VersionID) from DocVersions order by VersionID - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetFolderPath] (@VersionID int) RETURNS varchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN -declare @Path varchar(MAX); -with Folderz(Level, FolderID, Path) as ( - Select 1 Level, FolderID,CAST(Name as varchar(MAX)) - from DocVersions I - where VersionID = @VersionID - Union All --- - Select FS.ParentID - (Select ParentID from Folders where FolderID = FS.ParentID), ParentID, CAST(Name + char(7) + Path as varchar(MAX)) - from Folders FS - join Folderz FZ on FS.FolderID = FZ.FolderID - where FS.FolderID <> FS.ParentID -) -select @Path = path From Folderz where Level = 0 -return @Path -END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetFolderPath Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetFolderPath Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetNextTranCount] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetNextTranCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetNextTranCount]; -GO - -/* -select dbo.ve_GetNextTranCount(251) NextTrans -select *, dbo.ve_GetNextTranCount(ItemID) NextTrans from vefn_AllHighLevelSteps() -Order By dbo.ve_GetNextTranCount(ItemID) DESC - - Select count(*) from Transitions TT - join contents CC on TT.FromID = CC.ContentID - where FromID in (Select ContentID from vefn_ChildItems(247)) - AND (ToID = 251 or RangeID = 251) - -declare @ItemID int; -set @ItemID=251 - - declare @Count int; - declare @PreviousID as int - select @PreviousID = PreviousID from items where ItemID = @ItemID - Print @PreviousID - if @PreviousID is not null - BEGIN - Select @Count = count(*) from vefn_ChildItems(247) - --Select @Count = count(*) from Transitions TT - --join contents CC on TT.FromID = CC.ContentID - --where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) - --AND (ToID = @ItemID or RangeID = @ItemID) - END - --ELSE - --set @Count=0 - Print 'I''m here' - Print @Count - - Select * from vefn_ChildItems(247) - -*/ - - - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetNextTranCount] (@ItemID int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN - declare @Count int; - declare @PreviousID as int - select @PreviousID = PreviousID from items where ItemID = @ItemID - if @PreviousID is not null - BEGIN - Select @Count = count(*) from Transitions TT - join contents CC on TT.FromID = CC.ContentID - where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) - AND (ToID = @ItemID or RangeID = @ItemID) - END - ELSE - set @Count=0 - return @Count -END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetNextTranCount Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetNextTranCount Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetParts] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetParts]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetParts]; -GO - ---select .dbo.ve_GetParts(756,6) - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetParts] (@ContentID int,@FromType int) -RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN -declare @retval varchar(max) -begin -with ContentZ(AllContents,PreviousID,HasChildren) as ( - Select cast(II.ContentID as varchar(max)) AllContents,II.ItemID PreviousID, case when Exists(select ItemID from Items where PreviousID = II.ItemID) then 1 else 0 end HasChildren - from Items II join Parts PP on II.ItemID=PP.ItemID - where PP.ContentID=@ContentID and PP.FromType = @FromType - Union All --- - Select ZZ.AllContents + '.' + cast(II.ContentID as varchar(max)) AllContents,II.ItemID PreviousID, case when Exists(select ItemID from Items where PreviousID = II.ItemID) then 1 else 0 end HasChildren - from Items II - Join ContentZ ZZ on II.PreviousID = ZZ.PreviousID -) -Select @retval = AllContents from ContentZ where HasChildren=0 -OPTION (MAXRECURSION 1000) -end -return @retval -end -/* -ALTER FUNCTION [dbo].[ve_GetPath] (@StructID int) -RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN --- declare @STructID int ---set @StructID=11 -declare @Path varchar(max); -with Struct(FromType,FromID,Item,PPath,Path) as ( - Select FromType,FromID,0 Item,Cast('' as varchar(max)) PPath , - Cast(case FromType - when 1 then 'PRC.000' when 2 then '.SEC.000' - when 3 then '.CAU.000' when 4 then '.NOT.000' - when 5 then '.RNO' when 7 then '.TAB' - else '.000' end as varchar(max)) Path - from Structures - where StructureID=@StructID - Union All --- Child - Select A.FromType,A.FromID,0 as Item,Path, - Cast(case A.FromType - when 1 then 'PRC.000' when 2 then '.SEC.000' - when 3 then '.CAU.000' when 4 then '.NOT.000' - when 5 then '.RNO' when 7 then '.TAB' - else '.000' end + Path as varchar(max)) Path - from Structures A - Join Struct C on C.FromID=A.StructureID - where C.FromType <> 0 - Union All --- Sibling - Select A.FromType,A.FromID,Item + 1 Item,PPath, - case A.FromType - when 1 then 'PRC.' when 2 then '.SEC.' - when 3 then '.CAU.' when 4 then '.NOT.' - when 5 then '.RNO.' when 7 then '.TAB.' - else '.' end + right('000' + cast(Item + 1 as varchar(3)),3) + PPath Path - from Structures A - Join Struct C on C.FromID=A.StructureID - where C.FromType = 0 -) ---select * from Struct OPTION (MAXRECURSION 1000) -Select @Path = Path from Struct where FromID=0 OPTION (MAXRECURSION 1000) ---print @path -return @Path -END; -*/ -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetParts Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetParts Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetPath] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetPath]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetPath]; -GO - -/* -select ItemID, CC.Type, dbo.ve_GetPath(ItemID) -from Items II join Contents CC on II.ContentID = CC.ContentID -where ItemID in(111,265,266,267) -*/ --- drop function ve_GetPath -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetPath] (@ItemID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN --- declare @STructID int ---set @StructID=11 -declare @Path varchar(max); -with Itemz(ItemCount,ItemID,PreviousID,FromType,CType,Number,Text,PPath, Path) as ( - Select 1,ItemID,PreviousID,0,C.Type/10000,C.Number,C.Text, - Cast(Case when C.Type < 20000 then '`' + C.Number +'`' + C.Text else '' end as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then '`' + C.Number +'`' + C.Text else '1' end as nvarchar(max)) Path - from Items I - join Contents C on I.ContentID = C.ContentID - where ItemID=@ItemID - Union All --- siblings - Select ItemCount+1,I.PreviousID,II.PreviousID,0,C.Type/10000,Z.Number,Z.Text,PPath,cast(ItemCount + 1 as nvarchar(3)) + PPath - from Items I - join Contents C on I.ContentID = C.ContentID - Join Items II on II.ItemID = I.PreviousID - Join Itemz Z on I.ItemID=Z.ItemID - where I.PreviousID != 0 - Union All --- children - select 1,I.ItemID,I.PreviousID,P.FromType,C.Type/10000,C.Number,C.Text, - case C.Type/10000 - when 0 then '`' + C.Number +'`' + C.Text - when 1 then '`' + C.Number +'`' + C.Text +'`' + cast(ItemCount + 0 as varchar(3)) - else - case P.FromType - when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(3)) - when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(3)) - when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(3)) - when 4 then '`Note`' + cast(ItemCount + 0 as varchar(3)) - when 5 then '`RNO`' - when 7 then '`Table`' - else '`' + cast(ItemCount + 0 as varchar(3)) - end end + PPath PPath, - --'1' + - case C.Type/10000 - when 0 then '`' + C.Number +'`' + C.Text - when 1 then '`' + C.Number +'`' + C.Text +'`' + cast(ItemCount + 0 as varchar(3)) - else - case P.FromType - when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(3)) - when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(3)) - when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(3)) - when 4 then '`Note`' + cast(ItemCount + 0 as varchar(3)) - when 5 then '`RNO' - when 7 then '`Table' - else '`' + cast(ItemCount + 0 as varchar(3)) - end end + PPath Path - - from Parts P - join Items I on I.ContentID = P.ContentID - join Contents C on I.ContentID = C.ContentID - join Itemz Z on P.ItemID=Z.ItemID -) -select @Path = path From Itemz where ItemCount=1 and CType=0 -OPTION (MAXRECURSION 10000) -return @Path -END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetPath Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetPath Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetPathFromContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetPathFromContentID]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetPathFromContentID]; -GO - -/* -select top 5 -[dbo].[ve_GetPathFromContentID](FromID)FromPath -,[dbo].[ve_GetPath](ToID) ToPath -,[dbo].[ve_GetPath](RangeID) RangePath - from transitions -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetPathFromContentID] (@ContentID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @ItemID int; - select top 1 @ItemID=ItemID from Items where ContentID = @ContentID; - return DBO.ve_GetPath(@ItemID) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetPathFromContentID Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetPathFromContentID Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetShortPart] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetShortPart]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetShortPart]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create FUNCTION [dbo].[ve_GetShortPart] (@Number varchar(max),@Title varchar(max)) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN - if(isnull(@Number,'') = '') return @Title - return @Number -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetShortPart Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetShortPart Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetShortPath] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetShortPath]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetShortPath]; -GO - -/* -select ItemID, CC.Type, dbo.ve_GetPath(ItemID) -from Items II join Contents CC on II.ContentID = CC.ContentID -where ItemID in(111,265,266,267) -*/ --- drop function ve_GetPath -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetShortPath] (@ItemID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN --- declare @STructID int ---set @StructID=11 -declare @Path varchar(max); -with Itemz(ItemCount,ItemID,PreviousID,FromType,CType,Number,Text,PPath, Path) as ( - Select 1,ItemID,PreviousID,0,C.Type/10000,C.Number,C.Text, - Cast(Case when C.Type < 20000 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) else '' end as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) else '1' end as nvarchar(max)) Path - from Items I - join Contents C on I.ContentID = C.ContentID - where ItemID=@ItemID - Union All --- siblings - Select ItemCount+1,I.PreviousID,II.PreviousID,0,C.Type/10000,Z.Number,Z.Text,PPath,cast(ItemCount + 1 as nvarchar(3)) + PPath - from Items I - join Contents C on I.ContentID = C.ContentID - Join Items II on II.ItemID = I.PreviousID - Join Itemz Z on I.ItemID=Z.ItemID - where I.PreviousID != 0 - Union All --- children - select 1,I.ItemID,I.PreviousID,P.FromType,C.Type/10000,C.Number,C.Text, - case C.Type/10000 - when 0 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) - when 1 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) +'`' + cast(ItemCount + 0 as varchar(3)) - else - case P.FromType - when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(3)) - when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(3)) - when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(3)) - when 4 then '`Note`' + cast(ItemCount + 0 as varchar(3)) - when 5 then '`RNO`' - when 7 then '`Table`' - else '`' + cast(ItemCount + 0 as varchar(3)) - end end + PPath PPath, - --'1' + - case C.Type/10000 - when 0 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) - when 1 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) +'`' + cast(ItemCount + 0 as varchar(3)) - else - case P.FromType - when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(3)) - when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(3)) - when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(3)) - when 4 then '`Note`' + cast(ItemCount + 0 as varchar(3)) - when 5 then '`RNO' - when 7 then '`Table' - else '`' + cast(ItemCount + 0 as varchar(3)) - end end + PPath Path - - from Parts P - join Items I on I.ContentID = P.ContentID - join Contents C on I.ContentID = C.ContentID - join Itemz Z on P.ItemID=Z.ItemID -) -select @Path = path From Itemz where ItemCount=1 and CType=0 -OPTION (MAXRECURSION 10000) -return REPLACE(@Path,'\u8209?','-') -END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetShortPath Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetShortPath Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetShortPathFromContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetShortPathFromContentID]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetShortPathFromContentID]; -GO - -/* -select top 5 -[dbo].[ve_GetShortPathFromContentID](FromID)FromPath -,[dbo].[ve_GetShortPath](ToID) ToPath -,[dbo].[ve_GetShortPath](RangeID) RangePath - from transitions -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetShortPathFromContentID] (@ContentID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @ItemID int; - select top 1 @ItemID=ItemID from Items where ContentID = @ContentID; - return DBO.ve_GetShortPath(@ItemID) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetShortPathFromContentID Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetShortPathFromContentID Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetSiblingCount] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetSiblingCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetSiblingCount]; -GO - -/* -select top 5 CC.Number,CC.Text,Type,ItemID, dbo.ve_GetSiblingCount(ItemID) HLStepCount -from Contents CC -Join Parts PP on PP.ContentID = CC.ContentID -where CC.Type >= 10000 and CC.Type < 20000 -order by dbo.ve_GetSiblingCount(ItemID) desc - -select top 5 CC.Number,CC.Text,Type,ItemID, dbo.ve_GetSiblingCount(ItemID) SectionCount -from Contents CC -Join Parts PP on PP.ContentID = CC.ContentID -where CC.Type < 10000 -order by dbo.ve_GetSiblingCount(ItemID) desc - -select top 5 CC.Text,Type,ItemID, dbo.ve_GetSiblingCount(ItemID) SubStepCount -from Contents CC -Join Parts PP on PP.ContentID = CC.ContentID -where CC.Type >= 20000 -order by dbo.ve_GetSiblingCount(ItemID) desc - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetSiblingCount] (@ItemID int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN -declare @Count int; -with Itemz([Direction], [ItemID], [PreviousID]) as ( - Select 0 Direction,[ItemID], [PreviousID] - FROM [Items] - where [ItemID]=@ItemID --- Siblings Previous -Union All - select -1 Direction,I.[ItemID], I.[PreviousID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.Direction <= 0 --- Siblings Next -Union All - select 1 Direction,I.[ItemID], I.[PreviousID] - from Itemz Z - join Items I on I.ItemID = Z.PreviousID - where Z.Direction >= 0 -) -Select @Count = Count(*) from Itemz -OPTION (MAXRECURSION 10000) -return @Count END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetSiblingCount Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetSiblingCount Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_AllHighLevelSteps] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AllHighLevelSteps]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_AllHighLevelSteps]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_AllHighLevelSteps]() -RETURNS @HighLevelStepTransitions TABLE -( - ParentID int - ,ItemID int PRIMARY KEY - ,Ordinal int - ,Path varchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM (select II.ItemID ParentID, PP.ItemID, PreviousID, II.ContentID, II.DTS, II.UserID, II.LastChanged from Items II -Join Contents CC on II.ContentID = CC.ContentID -Join Parts PP on PP.ContentID = II.ContentID and FromType = 6 -where CC.Type = 10000) TT --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - --where Z.[Level] > 0 -) -Insert into @HighLevelStepTransitions -select [ParentID],ItemID,Ordinal,dbo.ve_GetPath([ItemID]) Path -from Itemz -Order by ParentID,ItemID -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_AllHighLevelSteps Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_AllHighLevelSteps Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_AllHighLevelStepTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AllHighLevelStepTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_AllHighLevelStepTransitions]; -GO - -/* -select * from vefn_AllHighLevelStepTransitions() -where ExternalTransitions > 0 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_AllHighLevelStepTransitions]() -RETURNS @HighLevelStepTransitions TABLE -( - ParentID int - ,ItemID int PRIMARY KEY - ,Ordinal int - ,Path varchar(max) - ,TransCount int - ,ExternalTransitions int - ,ExternalChildTransitions int - ,InternalTransitions int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM (select II.ItemID ParentID, PP.ItemID, PreviousID, II.ContentID, II.DTS, II.UserID, II.LastChanged from Items II -Join Contents CC on II.ContentID = CC.ContentID -Join Parts PP on PP.ContentID = II.ContentID and FromType = 6 -where CC.Type = 10000) TT --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - --where Z.[Level] > 0 -) -Insert into @HighLevelStepTransitions -select [ParentID],ItemID,Ordinal,dbo.ve_GetShortPath([ItemID]) Path,(Select Count(*) from Transitions where ToID=ItemID OR RangeID=ItemID ) TransCount -,(Select count(*) from vefn_FindExternalTransitions(ItemID)) ExternalTransitions -,(Select count(*) from vefn_FindExternalChildTransitions(ItemID)) ExternalChildTransitions -,(Select count(*) from vefn_FindInternalTransitions(ItemID)) InternalTransitions -from Itemz -where (Select Count(*) from Transitions where ToID=ItemID OR RangeID=ItemID ) > 0 -OR(Select count(*) from vefn_FindExternalTransitions(ItemID)) > 0 -OR(Select count(*) from vefn_FindInternalTransitions(ItemID)) > 0 -Order by ParentID,ItemID -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_AllHighLevelStepTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_AllHighLevelStepTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_AllSections] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AllSections]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_AllSections]; -GO - --- Select .dbo.vefn_AllSections(10001) MyTypeSection, .dbo.vlnfn_AllSections(20001) MyTypeStep, .dbo.vlnfn_AllSections(5) MyTypeProc -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_AllSections](@type int) -RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN - IF(@type < 20000 and @type >= 10000) - RETURN 10000 - RETURN @type -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_AllSections Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_AllSections Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_AnnotationTypeSplit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AnnotationTypeSplit]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_AnnotationTypeSplit]; -GO - -/* -select * from vefn_AnnotationTypeSplit('1,4') -select * from vefn_AnnotationTypeSplit(null) -select * from vefn_AnnotationTypeSplit('') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_AnnotationTypeSplit](@AnnotationTypeList varchar(MAX)) -RETURNS @IDs TABLE -( - TypeID int PRIMARY KEY, - Name varchar(100) -) -WITH EXECUTE AS OWNER -AS -BEGIN -IF(isnull(@AnnotationTypeList,'') = '') - Insert into @IDs - Select TypeID, Name - from AnnotationTypes -else - Insert into @IDs - Select TypeID,NAME - from AnnotationTypes - where TypeID in(select ID from vefn_SplitInt(@AnnotationTypeList,',')) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_AnnotationTypeSplit Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_AnnotationTypeSplit Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_ChildItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChildItems]; -GO - -/* -declare @PreviousID as int -declare @ItemID as int -set @ItemID = 450 -select @PreviousID = PreviousID from items where ItemID = @ItemID - -Select * from Items where ItemID = @ItemID - -select * from Transitions -where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) -AND (ToID = @ItemID or RangeID = @ItemID) - -select CC.Text from Transitions TT -join contents CC on TT.FromID = CC.ContentID -where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) -AND (ToID = @ItemID or RangeID = @ItemID) - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_ChildItems](@ItemID int) -RETURNS @Children TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ItemID], [ContentID]) as ( - Select 0 [Level], [ItemID], [ContentID] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1, I.[ItemID], I.[ContentID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] , I.[ItemID], I.[ContentID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children select ItemID, ContentID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_ChildItems Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_ChildItemsRange] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildItemsRange]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChildItemsRange]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_ChildItemsRange](@StartItemID int, @EndItemID int, @DestFormat int) -RETURNS @Children TABLE -( -ItemID int PRIMARY KEY, -ContentID int, -FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @FormatID int -SELECT @FormatID = isnull(@DestFormat,.dbo.vefn_GetInheritedFormat(@StartItemID,1)) -BEGIN -with Itemz([Level], [ItemID], [ContentID], [FormatID], [FoundEnd]) as ( -Select 0 [Level], [ItemID], I.[ContentID], IsNull(C.[FormatID], @FormatID), case [ItemID] when @EndItemID then 1 else 0 end [FoundEnd] -FROM [Items] I -JOIN [Contents] C on I.ContentID = C.ContentID -where [ItemID]=@StartItemID -Union All --- Children -select [Level] + 1, I.[ItemID], I.[ContentID], IsNull(C.[FormatID], Z.[FormatID]), case I.[ItemID] when @EndItemID then 1 else 0 end [FoundEnd] -from Itemz Z -join Parts P on P.ContentID = Z.ContentID -join Items I on I.ItemID = P.ItemID -JOIN [Contents] C on I.ContentID = C.ContentID --- Siblings -Union All -select [Level] , I.[ItemID], I.[ContentID], IsNull(C.[FormatID], Z.[FormatID]), case I.[ItemID] when @EndItemID then 1 else 0 end [FoundEnd] -from Itemz Z -join Items I on I.PreviousID = Z.ItemID -JOIN [Contents] C on I.ContentID = C.ContentID -where FoundEnd = 0 -) -insert into @Children select ItemID, ContentID, FormatID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildItemsRange Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_ChildItemsRange Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_ChildrenItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildrenItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChildrenItems]; -GO - -/* -select * from Transitions -where (ToID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) OR (RangeID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) -AND NOT (FromID in(Select ContentID From dbo.vefn_ChildrenItems(185,184))) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_ChildrenItems](@ItemID int, @ParentID int) -RETURNS @Children TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children select ItemID, ContentID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildrenItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_ChildrenItems Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_CompareTranFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CompareTranFormat]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_CompareTranFormat]; -GO - -/* - Determines if two transition formats are same string. - returns 0 if identical, 1 if similar (range for range, item for item), 2 if totally different -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_CompareTranFormat] (@FormatID int, @NewFormatID int, @TranType int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN - -- - IF @FormatID = @NewFormatID - RETURN 0 -- Exactly the same format file - DECLARE @TransFormat varchar(max) - DECLARE @NewTransFormat varchar(max) - SET @TransFormat = isnull(.dbo.vefn_GetTransFormat(@FormatID, @TranType),'') - SET @NewTransFormat = isnull(.dbo.vefn_GetTransFormat(@NewFormatID, @TranType),'') - RETURN CASE - WHEN @TransFormat = @NewTransFormat THEN 0 -- transition formats are identical - WHEN @TransFormat LIKE '%{Last Step}%' THEN - CASE - WHEN @NewTransFormat LIKE '%{Last Step}%' THEN 1 -- both ranges, but different format - ELSE 2 -- totally different format, not even same type (was single, changed to range) - END - ELSE - CASE - WHEN @NewTransFormat LIKE '%{Last Step}%' THEN 2 -- totally different format, not even same type (was range, changed to single) - ELSE 1 -- both single, but different format - END - END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_CompareTranFormat Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_CompareTranFormat Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_DocVersionSplit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_DocVersionSplit]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_DocVersionSplit]; -GO - -/* -select * from vefn_DocVersionSplit('1,4') -select * from vefn_DocVersionSplit(null) -select * from vefn_DocVersionSplit('') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_DocVersionSplit](@DocVersionList varchar(MAX)) -RETURNS @IDs TABLE -( - VersionID int PRIMARY KEY, - ItemID int, - DVPath varchar(MAX) -) -WITH EXECUTE AS OWNER -AS -BEGIN -IF(isnull(@DocVersionList,'') = '') - Insert into @IDs - Select VersionID, ItemID, dbo.ve_GetFolderPath(VersionID) - from DocVersions where ItemID is not null -else - Insert into @IDs - Select ID, ItemID, dbo.ve_GetFolderPath(VersionID) - from vefn_SplitInt(@DocVersionList,',') as T - join DocVersions DV on VersionID = T.ID -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_DocVersionSplit Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_DocVersionSplit Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_DVContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_DVContent]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_DVContent]; -GO - -/* -select contentID from vefn_DVContent('1') -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_DVContent](@DocVersionList varchar(MAX)) -RETURNS @DVContents TABLE -( - ContentID int PRIMARY KEY -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID] in (select [ItemID] from vefn_DocVersionSplit(@DocVersionList)) -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -insert into @DVContents select distinct ContentID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_DVContent Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_DVContent Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindAffectedTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindAffectedTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindAffectedTransitions]; -GO - -/* -select top 1 * from items order by itemid desc -Select -FromID,.dbo.ve_GetPathFromContentID(FromID) ContentPath -,ToID,dbo.ve_GetPath(ToID) ToPath -,RangeID,dbo.ve_GetPath(RangeID) RangePath -,cc.Text -from vefn_FindAffectedTransitions(2102) ttz -join transitions tt on ttz.TransitionID = tt.TransitionID ---join items ii on ii.ItemID = tt.fromID -join contents cc on tt.FromID = cc.contentid -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindAffectedTransitions](@ItemID int) -RETURNS @Transitions TABLE -( - TransitionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- All Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - --where Z.[Level] > 0 -- This would limit the siblings to the siblings of the children and not the initial ItemID -) -, Itemz2([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID --- All Siblings -Union All - select [Level] ,Z.[Ordinal] -1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz2 Z - join Items I on Z.PreviousID = I.ItemID - --where Z.[Level] > 0 -- This would limit the siblings to the siblings of the children and not the initial ItemID -) -insert into @Transitions -select TransitionID from Transitions TT -where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) -UNION -select TransitionID from Transitions TT -JOIN Itemz2 on ToID=ItemID and RangeID=ItemID and IsRange = 2 -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindAffectedTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindAffectedTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindContentText] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindContentText]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindContentText]; -GO - -/* -SELECT * From vefn_FindContentText('1','%RCP%') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindContentText]( -@DocVersionList nvarchar(MAX) -,@SearchString varchar(MAX)) -RETURNS @FoundContents TABLE -( - ContentID int PRIMARY KEY - ,Type int - ,Text varchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -IF(ISNULL(@DocVersionList,'')='') - BEGIN - INSERT INTO @FoundContents -- Do a case insensitive search - select ContentID,Type,Text from contents - where [Text] like @SearchString Collate SQL_Latin1_General_CP1_CI_AS - END -ELSE - BEGIN - INSERT INTO @FoundContents -- Do a case insensitive search - select ContentID,Type,Text from contents - where [ContentID] in (select [ContentID] from vefn_DVContent(@DocVersionList)) - AND [Text] like @SearchString Collate SQL_Latin1_General_CP1_CI_AS - END - -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindContentText Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindContentText Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindExternalChildTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindExternalChildTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindExternalChildTransitions]; -GO - -/* -Select * from vefn_FindExternalChildTransitions(185) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindExternalChildTransitions](@ItemID int) -RETURNS @Children TABLE -( - FromItemID int, - ToID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children -select ItemID [FromItemID], case when TT.ToID in(select ItemID from Itemz) then TT.ToID else TT.RangeID end [ToID] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID in(select ItemID from Itemz where Level > 0) OR RangeID in(select ItemID from Itemz where Level > 0)) -AND FromID not in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindExternalChildTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindExternalChildTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindExternalTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindExternalTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindExternalTransitions]; -GO - -/* -Select * from vefn_FindExternalTransitions(185) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindExternalTransitions](@ItemID int) -RETURNS @Children TABLE -( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children -select ItemID [FromItemID], TT.[TransitionID], TT.[FromID], TT.[ToID], TT.[RangeID], TT.[Config] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) -AND FromID not in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindExternalTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindExternalTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindInternalTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindInternalTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindInternalTransitions]; -GO - -/* -Select * from vefn_FindInternalTransitions(185) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindInternalTransitions](@ItemID int) -RETURNS @Children TABLE -( - FromItemID int, - ToID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children -select ItemID [FromItemID], case when TT.ToID in(select ItemID from Itemz) then TT.ToID else TT.RangeID end [ToID] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) -AND FromID in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindInternalTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindInternalTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindInternalTransitionsForCopy] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindInternalTransitionsForCopy]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindInternalTransitionsForCopy]; -GO - -/* -Select * from vefn_FindInternalTransitionsForCopy(10277) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindInternalTransitionsForCopy](@ItemID int) -RETURNS @Transitions TABLE -( - TransitionID int, - FromID int, - TranType int, - ToID int, - RangeID int, - OldTransition int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Transitions -select TransitionID, FromID, TT.TranType, TT.ToID, TT.RangeID, CAST(TT.Config as int) --case when TT.ToID in(select ItemID from Itemz) then TT.ToID else TT.RangeID end [ToID] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) -AND FromID in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindInternalTransitionsForCopy Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindInternalTransitionsForCopy Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindText] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindText]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindText]; -GO - -/* -SELECT * From vefn_FindText('1','turbine-driven',0,0,0,1,'') -SELECT * From vefn_FindText('1','turbine\u8209?driven',0,0,0,0,'') -SELECT * From vefn_FindText('1','trip',0,0,0,0,'') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindText]( -@DocVersionList nvarchar(MAX) -,@SearchString varchar(MAX) -,@CaseSensitive as int -,@IncludeLinks as int -,@IncludeRtfFormatting as int -,@IncludeSpecialCharacters as int -,@StepTypeList varchar(MAX)) -RETURNS @FoundContents TABLE -( - ContentID int PRIMARY KEY -) -WITH EXECUTE AS OWNER -AS -BEGIN -Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) -IF isnull(@SearchString,'')='' - BEGIN - insert into @FoundContents - select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C - where(dbo.vefn_AllSections(C.Type)>=10000) - or - (dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - END -ELSE - Declare @SearchStringx nvarchar(200) --kbr - set @SearchStringx = replace(@SearchString,'-','\u8209?') --kbr - IF @CaseSensitive = 0 -- Not Case Sensitive - BEGIN - insert into @FoundContents - select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchStringx) C - where - (.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchStringx Collate SQL_Latin1_General_CP1_CI_AS) - AND ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - UNION - select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C - join Entries E on C.ContentID = E.ContentID - join Documents D on E.DocID = D.DocID - where - (D.DocAscii like @SearchString Collate SQL_Latin1_General_CP1_CI_AS) - AND - ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - END - ELSE - BEGIN - IF @CaseSensitive = 1 -- Case Sensitive - BEGIN - insert into @FoundContents - select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchStringx) C - where - (.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchStringx Collate SQL_Latin1_General_CP1_CS_AS) - AND ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - UNION - select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C - join Entries E on C.ContentID = E.ContentID - join Documents D on E.DocID = D.DocID - where - (D.DocAscii like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) - AND - ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) or - ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - END -END -RETURN -END - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindText Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindText Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FirstLink] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FirstLink]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FirstLink]; -GO - -/* -select .dbo.vefn_FirstLink('asdasdadsasd' + char(21) + 'asdasdasd\vasdasdasd', 2) -select .dbo.vefn_FirstLink('asdasdadsasd' + char(21) + 'asdasdasd\vasdasdasd', 1) -select .dbo.vefn_FirstLink('asdasdadsasd' + char(21) + 'asdasdasd\vasdasdasd', 0) -*/ - --- This is only used for testing by vefn_RemoveExtraText -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FirstLink](@text nvarchar(MAX),@includeLink int) -RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @index int -SET @index = 0 -if(@includeLink = 2) - RETURN 0 -if(@includeLink = 1) - return CHARINDEX('\v' , @text) -DECLARE @index2 int -SET @index = PATINDEX('%[' + nchar(9574)+nchar(9516)+nchar(21) + ']%',@text) -return @index -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FirstLink Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_FirstLink Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FixROData] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixROData]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FixROData]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create FUNCTION [dbo].[vefn_FixROData] -(@data XML,@ROUsageID int,@NewROUsageID int) -RETURNS XML -WITH EXECUTE AS OWNER -AS -BEGIN - -- Build Search String and Replace String - DECLARE @lookFor varchar(MAX) - DECLARE @replaceWith varchar(MAX) - SET @lookFor = '#Link:ReferencedObject:' + ltrim(str(@ROUsageID)) + ' ' - SET @replaceWith = '#Link:ReferencedObject:' + ltrim(str(@NewROUsageID)) + ' ' - return CAST(replace(CAST(@data AS VarChar(max)),@lookFor,@replaceWith) AS XML) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FixROData Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_FixROData Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FixROText] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixROText]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FixROText]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FixROText] -(@Text varchar(MAX),@ROUsageID int,@NewROUsageID int) -RETURNS varchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN - -- Build Search String and Replace String - DECLARE @lookFor varchar(MAX) - DECLARE @replaceWith varchar(MAX) - SET @lookFor = '#Link:ReferencedObject:' + ltrim(str(@ROUsageID)) + ' ' - SET @replaceWith = '#Link:ReferencedObject:' + ltrim(str(@NewROUsageID)) + ' ' - return replace(@text,@lookFor,@replaceWith) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FixROText Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_FixROText Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FixSearchString] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixSearchString]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FixSearchString]; -GO - -/* -select ID,ss,.dbo.vefn_FixSearchString(ss) -from ( -select 1 ID,'*' ss union -select 2 ID,'50%' ss union -select 3 ID,'IF*' ss union -select 4 ID,'*then:' ss union -select 5 ID,'530`F' ss union -select 6 ID,'check' ss union -select 7 ID,'RCP*Cooling' ss union -select 8 ID,'14%[34%]' ss union -select 9 ID,'\*' ss union -select 10 ID,'\?' ss union -select 11 ID,'_' ss union -select 12 ID,'[' ss union -select 13 ID,']' ss union -select 14 ID,'%' ss union -select 15 ID,'_' ss union -select 16 ID,'-' ss -) tt order by ID -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FixSearchString](@SearchString nvarchar(MAX)) -RETURNS nvarchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN - -- This code adds % at the beginning and end if the beginning and end - -- of the search string if it does not have % at the beginning or end - Set @SearchString = replace(@SearchString,'[','[[]') - Set @SearchString = replace(@SearchString,'_','[_]') - Set @SearchString = replace(@SearchString,'%','[%]') - Set @SearchString = replace(@SearchString,'*','%') - Set @SearchString = replace(@SearchString,'?','_') - Set @SearchString = replace(@SearchString,'\%','*') - Set @SearchString = replace(@SearchString,'\_','?') - --Set @SearchString = replace(@SearchString,'-','[-'+nchar(8209)+']') - IF(@SearchString like '[%]%') RETURN @SearchString - IF(@SearchString like '%[%]') RETURN @SearchString -RETURN '%' + @SearchString + '%' -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FixSearchString Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_FixSearchString Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FixTransitionDataForCopy] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixTransitionDataForCopy]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FixTransitionDataForCopy]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FixTransitionDataForCopy] -(@data XML,@TransitionID int,@TranType int,@OldToID int,@OldRangeID int, @NewID int, @NewToID int, @NewRangeID int, @NewTranType int) -RETURNS XML -WITH EXECUTE AS OWNER -AS -BEGIN - - -- Build Search String and Replace String - DECLARE @offset int - DECLARE @lookFor varchar(MAX) - DECLARE @replaceWith varchar(MAX) - DECLARE @text varchar(MAX) - SET @text = Cast(@data as varchar(max)) - SET @lookFor = '#Link:Transition:' + ltrim(str(@TranType)) + ' ' + ltrim(str(@TransitionID)) - SET @offset = CHARINDEX(@lookFor,@text) - if(@offset = 0) - BEGIN - - SET @lookFor = '#Link:TransitionRange:' + ltrim(str(@TranType)) + ' ' + ltrim(str(@TransitionID)) - SET @offset = CHARINDEX(@lookFor,@text) - SET @replaceWith = '#Link:TransitionRange:' + ltrim(str(@NewTranType)) + ' ' + ltrim(str(@NewID)) - + ' ' + ltrim(str(@NewToID)) + ' ' + ltrim(str(@NewRangeID)) - SET @lookFor = @lookFor + ' ' + ltrim(str(@OldToID)) + ' ' + ltrim(str(@OldRangeID)) - END - ELSE - BEGIN - SET @replaceWith = '#Link:Transition:' + ltrim(str(@NewTranType)) + ' ' + ltrim(str(@NewID)) - + ' ' + ltrim(str(@NewToID)) - SET @lookFor = @lookFor + ' ' + ltrim(str(@OldToID)) - END - return Cast(replace(@text,@lookFor,@replaceWith) as XML) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FixTransitionDataForCopy Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_FixTransitionDataForCopy Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FixTransitionText] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixTransitionText]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FixTransitionText]; -GO - -/* -select top 5 * from contents order by contentid desc - -DECLARE @Text1 varchar(MAX),@Text2 varchar(MAX),@Text3 varchar(MAX),@Text4 varchar(MAX) -SET @Text1='\v \v0 PERFORM the following:' -SET @Text2='\v \v0 PERFORM the following:' -SET @Text3='\v \v0 PERFORM the following:' -SET @Text4='\v \v0 IF reactor will NOT trip, THEN:' - -Select @Text1 Before, dbo.vefn_FixTransitionText(@Text1,58,4,270,285,270,999) [After] -Union Select @Text2 Before, dbo.vefn_FixTransitionText(@Text2,58,2,265,270,270,999) [After] -Union Select @Text3 Before, dbo.vefn_FixTransitionText(@Text3,58,2,270,270,270,999) [After] -Union Select @Text4 Before, dbo.vefn_FixTransitionText(@Text4,8,1,270,270,270,999) [After] -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FixTransitionText] -(@Text varchar(MAX),@TransitionID int,@TranType int,@OldToID int,@OldRangeID int,@OldID int,@NewID int) -RETURNS varchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN - -- Build Search String and Replace String - DECLARE @offset int - DECLARE @lookFor varchar(MAX) - DECLARE @replaceWith varchar(MAX) - SET @lookFor = '#Link:Transition:' + ltrim(str(@TranType)) + ' ' + ltrim(str(@TransitionID)) - SET @offset = CHARINDEX(@lookFor,@Text) - if(@offset = 0) - BEGIN - - SET @lookFor = '#Link:TransitionRange:' + ltrim(str(@TranType)) + ' ' + ltrim(str(@TransitionID)) - SET @offset = CHARINDEX(@lookFor,@Text) - SET @replaceWith = @lookFor - + ' ' + ltrim(str(case @OldToID when @OldID then @NewID else @OldToID end)) - + ' ' + ltrim(str(case @OldRangeID when @OldID then @NewID else @OldRangeID end)) - SET @lookFor = @lookFor + ' ' + ltrim(str(@OldToID)) + ' ' + ltrim(str(@OldRangeID)) - END - ELSE - BEGIN - SET @replaceWith = @lookFor - + ' ' + ltrim(str(case @OldToID when @OldID then @NewID else @OldToID end)) - SET @lookFor = @lookFor + ' ' + ltrim(str(@OldToID)) - END - return replace(@text,@lookFor,@replaceWith) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FixTransitionText Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_FixTransitionText Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FixTransitionTextForCopy] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixTransitionTextForCopy]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FixTransitionTextForCopy]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FixTransitionTextForCopy] -(@Text varchar(MAX),@TransitionID int,@TranType int,@OldToID int,@OldRangeID int, @NewID int, @NewToID int, @NewRangeID int, @NewTranType int) -RETURNS varchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN - - -- Build Search String and Replace String - DECLARE @offset int - DECLARE @lookFor varchar(MAX) - DECLARE @replaceWith varchar(MAX) - SET @lookFor = '#Link:Transition:' + ltrim(str(@TranType)) + ' ' + ltrim(str(@TransitionID)) - SET @offset = CHARINDEX(@lookFor,@Text) - if(@offset = 0) - BEGIN - - SET @lookFor = '#Link:TransitionRange:' + ltrim(str(@TranType)) + ' ' + ltrim(str(@TransitionID)) - SET @offset = CHARINDEX(@lookFor,@Text) - SET @replaceWith = '#Link:TransitionRange:' + ltrim(str(@NewTranType)) + ' ' + ltrim(str(@NewID)) - + ' ' + ltrim(str(@NewToID)) + ' ' + ltrim(str(@NewRangeID)) - SET @lookFor = @lookFor + ' ' + ltrim(str(@OldToID)) + ' ' + ltrim(str(@OldRangeID)) - END - ELSE - BEGIN - SET @replaceWith = '#Link:Transition:' + ltrim(str(@NewTranType)) + ' ' + ltrim(str(@NewID)) - + ' ' + ltrim(str(@NewToID)) - SET @lookFor = @lookFor + ' ' + ltrim(str(@OldToID)) - END - return replace(@text,@lookFor,@replaceWith) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FixTransitionTextForCopy Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_FixTransitionTextForCopy Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetDocumentPageLength] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetDocumentPageLength]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetDocumentPageLength]; -GO - -/* -print .dbo.[vefn_GetDocumentPageLength](1) -select DocID, .dbo.[vefn_GetDocumentPageLength](DocID) PageLength from Documents -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetDocumentPageLength] (@DocID int) RETURNS float -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @PageLength float -SET @PageLength = (select top 1 v.value('.', 'nvarchar(100)') [Length] -from (select DocID, cast (Config as xml) ConfigXML from Documents) T1 -CROSS APPLY ConfigXML.nodes('//@Length') TempXML(v) -WHERE DocID = @DocID) -return @PageLength -END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetDocumentPageLength Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_GetDocumentPageLength Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetFormatField] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetFormatField]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetFormatField]; -GO - -/* -Select * from vefn_GetFormatField('Font') -Select * from vefn_GetFormatField('PSADJBNGROW') -Select * from vefn_GetFormatField('SectionTitle') -Select * from vefn_GetFormatField('PrintNoTitle') -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetFormatField](@find varchar(255)) -RETURNS @FormatFields TABLE -( - FormatID int - ,Name varchar(20) - ,Description varchar(250) - ,Path varchar(max) - ,Value varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN - INSERT INTO @FormatFields - Select FormatID, Name, Description, - case when v9.exist('.') is null THEN '' ELSE v9.value('local-name(.)','varchar(max)') + '/' END + - case when v8.exist('.') is null THEN '' ELSE v8.value('local-name(.)','varchar(max)') + '/' END + - case when v7.exist('.') is null THEN '' ELSE v7.value('local-name(.)','varchar(max)') + '/' END + - case when v6.exist('.') is null THEN '' ELSE v6.value('local-name(.)','varchar(max)') + '/' END + - case when v5.exist('.') is null THEN '' ELSE v5.value('local-name(.)','varchar(max)') + '/' END + - case when v4.exist('.') is null THEN '' ELSE v4.value('local-name(.)','varchar(max)') + '/' END + - case when v3.exist('.') is null THEN '' ELSE v3.value('local-name(.)','varchar(max)') + '/' END + - case when v2.exist('.') is null THEN '' ELSE v2.value('local-name(.)','varchar(max)') + '/' END + - case when v1.exist('.') is null THEN '' ELSE v1.value('local-name(.)','varchar(max)') + '/' END + - + '@' + v.value('local-name(.)','varchar(max)') Path - , v.value('.', 'varchar(255)') Value - FROM Formats - CROSS APPLY Data.nodes('//*/@*') TempXML(v) - OUTER APPLY v.nodes('..') TempXML1(v1) - OUTER APPLY v1.nodes('..') TempXML2(v2) - OUTER APPLY v2.nodes('..') TempXML3(v3) - OUTER APPLY v3.nodes('..') TempXML4(v4) - OUTER APPLY v4.nodes('..') TempXML5(v5) - OUTER APPLY v5.nodes('..') TempXML6(v6) - OUTER APPLY v6.nodes('..') TempXML7(v7) - OUTER APPLY v7.nodes('..') TempXML8(v8) - OUTER APPLY v8.nodes('..') TempXML9(v9) - where v.value('local-name(.)', 'varchar(255)') like '%' + @find + '%' - OR v.value('.', 'varchar(255)') like '%' + @find + '%' - UNION - Select FormatID, Name, Description, - case when v9.exist('.') is null THEN '' ELSE v9.value('local-name(.)','varchar(max)') + '/' END + - case when v8.exist('.') is null THEN '' ELSE v8.value('local-name(.)','varchar(max)') + '/' END + - case when v7.exist('.') is null THEN '' ELSE v7.value('local-name(.)','varchar(max)') + '/' END + - case when v6.exist('.') is null THEN '' ELSE v6.value('local-name(.)','varchar(max)') + '/' END + - case when v5.exist('.') is null THEN '' ELSE v5.value('local-name(.)','varchar(max)') + '/' END + - case when v4.exist('.') is null THEN '' ELSE v4.value('local-name(.)','varchar(max)') + '/' END + - case when v3.exist('.') is null THEN '' ELSE v3.value('local-name(.)','varchar(max)') + '/' END + - case when v2.exist('.') is null THEN '' ELSE v2.value('local-name(.)','varchar(max)') + '/' END + - case when v1.exist('.') is null THEN '' ELSE v1.value('local-name(.)','varchar(max)') + '/' END + - + v.value('local-name(.)','varchar(max)') Path - , '{node}' - FROM Formats - CROSS APPLY Data.nodes('//*') TempXML(v) - OUTER APPLY v.nodes('..') TempXML1(v1) - OUTER APPLY v1.nodes('..') TempXML2(v2) - OUTER APPLY v2.nodes('..') TempXML3(v3) - OUTER APPLY v3.nodes('..') TempXML4(v4) - OUTER APPLY v4.nodes('..') TempXML5(v5) - OUTER APPLY v5.nodes('..') TempXML6(v6) - OUTER APPLY v6.nodes('..') TempXML7(v7) - OUTER APPLY v7.nodes('..') TempXML8(v8) - OUTER APPLY v8.nodes('..') TempXML9(v9) - where v.value('local-name(.)', 'varchar(255)') like '%' + @find + '%' - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetFormatField Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetFormatField Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetFormatFieldByStepType] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetFormatFieldByStepType]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetFormatFieldByStepType]; -GO - -/* -Select * from vefn_GetFormatFieldByStepType('Font') -Select * from vefn_GetFormatFieldByStepType('PSADJBNGROW') -Select * from vefn_GetFormatFieldByStepType('SectionTitle') -Select * from vefn_GetFormatFieldByStepType('PrintNoTitle') -Select * from vefn_GetFormatFieldByStepType('Off') where name ='AEP' - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetFormatFieldByStepType](@find varchar(255)) -RETURNS @FormatFields TABLE -( - FormatID int - ,Name varchar(20) - ,Description varchar(250) - ,Path varchar(max) - ,StepType varchar(255) - ,Value varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN - INSERT INTO @FormatFields - Select FormatID, Name, Description, - case when v9.exist('.') is null THEN '' ELSE v9.value('local-name(.)','varchar(max)') + '/' END + - case when v8.exist('.') is null THEN '' ELSE v8.value('local-name(.)','varchar(max)') + '/' END + - case when v7.exist('.') is null THEN '' ELSE v7.value('local-name(.)','varchar(max)') + '/' END + - case when v6.exist('.') is null THEN '' ELSE v6.value('local-name(.)','varchar(max)') + '/' END + - case when v5.exist('.') is null THEN '' ELSE v5.value('local-name(.)','varchar(max)') + '/' END + - case when v4.exist('.') is null THEN '' ELSE v4.value('local-name(.)','varchar(max)') + '/' END + - case when v3.exist('.') is null THEN '' ELSE v3.value('local-name(.)','varchar(max)') + '/' END + - case when v2.exist('.') is null THEN '' ELSE v2.value('local-name(.)','varchar(max)') + '/' END + - case when v1.exist('.') is null THEN '' ELSE v1.value('local-name(.)','varchar(max)') + '/' END + - .dbo.vefn_XmlPath(v1.query('.')) + - + '@' + v.value('local-name(.)','varchar(max)') Path - , coalesce(v.value('../@Type','varchar(255)'),v.value('../../@Type','varchar(255)'),v.value('../../../@Type','varchar(255)')) StepType - , v.value('.', 'varchar(255)') Value - FROM Formats - CROSS APPLY Data.nodes('//*/@*') TempXML(v) - OUTER APPLY v.nodes('..') TempXML1(v1) - OUTER APPLY v1.nodes('..') TempXML2(v2) - OUTER APPLY v2.nodes('..') TempXML3(v3) - OUTER APPLY v3.nodes('..') TempXML4(v4) - OUTER APPLY v4.nodes('..') TempXML5(v5) - OUTER APPLY v5.nodes('..') TempXML6(v6) - OUTER APPLY v6.nodes('..') TempXML7(v7) - OUTER APPLY v7.nodes('..') TempXML8(v8) - OUTER APPLY v8.nodes('..') TempXML9(v9) - where v.value('local-name(.)', 'varchar(255)') like '%' + @find + '%' - OR v.value('.', 'varchar(255)') like '%' + @find + '%' - UNION ALL - Select FormatID, Name, Description, - case when v9.exist('.') is null THEN '' ELSE v9.value('local-name(.)','varchar(max)') + '/' END + - case when v8.exist('.') is null THEN '' ELSE v8.value('local-name(.)','varchar(max)') + '/' END + - case when v7.exist('.') is null THEN '' ELSE v7.value('local-name(.)','varchar(max)') + '/' END + - case when v6.exist('.') is null THEN '' ELSE v6.value('local-name(.)','varchar(max)') + '/' END + - case when v5.exist('.') is null THEN '' ELSE v5.value('local-name(.)','varchar(max)') + '/' END + - case when v4.exist('.') is null THEN '' ELSE v4.value('local-name(.)','varchar(max)') + '/' END + - case when v3.exist('.') is null THEN '' ELSE v3.value('local-name(.)','varchar(max)') + '/' END + - case when v2.exist('.') is null THEN '' ELSE v2.value('local-name(.)','varchar(max)') + '/' END + - case when v1.exist('.') is null THEN '' ELSE v1.value('local-name(.)','varchar(max)') + coalesce('[' + v1.value('@Index','varchar(255)')+']','') + '/' END + - + v.value('local-name(.)','varchar(max)') Path - , coalesce(v.value('../@Type','varchar(255)'),v.value('../../@Type','varchar(255)'),v.value('../../../@Type','varchar(255)')) StepType - , '{node}' - FROM Formats - CROSS APPLY Data.nodes('//*') TempXML(v) - OUTER APPLY v.nodes('..') TempXML1(v1) - OUTER APPLY v1.nodes('..') TempXML2(v2) - OUTER APPLY v2.nodes('..') TempXML3(v3) - OUTER APPLY v3.nodes('..') TempXML4(v4) - OUTER APPLY v4.nodes('..') TempXML5(v5) - OUTER APPLY v5.nodes('..') TempXML6(v6) - OUTER APPLY v6.nodes('..') TempXML7(v7) - OUTER APPLY v7.nodes('..') TempXML8(v8) - OUTER APPLY v8.nodes('..') TempXML9(v9) - where v.value('local-name(.)', 'varchar(255)') like '%' + @find + '%' - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetFormatFieldByStepType Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetFormatFieldByStepType Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetFormatFieldByStepType2] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetFormatFieldByStepType2]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetFormatFieldByStepType2]; -GO - -/* -Select * from vefn_GetFormatFieldByStepType2('Font') -Select * from vefn_GetFormatFieldByStepType2('PSADJBNGROW') -Select * from vefn_GetFormatFieldByStepType2('SectionTitle') -Select * from vefn_GetFormatFieldByStepType2('PrintNoTitle') -Select * from vefn_GetFormatFieldByStepType2('Off') - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetFormatFieldByStepType2](@find varchar(255)) -RETURNS @FormatFields TABLE -( - FormatID int - ,Name varchar(20) - ,Description varchar(250) - ,Path varchar(max) - ,StepType varchar(255) - ,Indx varchar(255) - ,Value varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN - INSERT INTO @FormatFields - Select FormatID, Name, Description, - .dbo.vefn_XmlPath(v9.query('.')) + - .dbo.vefn_XmlPath(v8.query('.')) + - .dbo.vefn_XmlPath(v7.query('.')) + - .dbo.vefn_XmlPath(v6.query('.')) + - .dbo.vefn_XmlPath(v5.query('.')) + - .dbo.vefn_XmlPath(v4.query('.')) + - .dbo.vefn_XmlPath(v3.query('.')) + - .dbo.vefn_XmlPath(v2.query('.')) + - .dbo.vefn_XmlPath(v1.query('.')) + - + '@' + v.value('local-name(.)','varchar(max)') Path - , coalesce(v.value('../@Type','varchar(255)'),v.value('../../@Type','varchar(255)'),v.value('../../../@Type','varchar(255)')) StepType - , coalesce(v1.value('@Index','varchar(255)'),v2.value('@Index','varchar(255)'),v3.value('@Index','varchar(255)')) Indx - , v.value('.', 'varchar(255)') Value - FROM Formats - CROSS APPLY Data.nodes('//*/@*') TempXML(v) - OUTER APPLY v.nodes('..') TempXML1(v1) - OUTER APPLY v1.nodes('..') TempXML2(v2) - OUTER APPLY v2.nodes('..') TempXML3(v3) - OUTER APPLY v3.nodes('..') TempXML4(v4) - OUTER APPLY v4.nodes('..') TempXML5(v5) - OUTER APPLY v5.nodes('..') TempXML6(v6) - OUTER APPLY v6.nodes('..') TempXML7(v7) - OUTER APPLY v7.nodes('..') TempXML8(v8) - OUTER APPLY v8.nodes('..') TempXML9(v9) - where v.value('local-name(.)', 'varchar(255)') like '%' + @find + '%' - OR v.value('.', 'varchar(255)') like '%' + @find + '%' - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetFormatFieldByStepType2 Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetFormatFieldByStepType2 Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetFormatFieldNoValue] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetFormatFieldNoValue]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetFormatFieldNoValue]; -GO - -/* -Select * from vefn_GetFormatFieldNoValue('Font') -Select * from vefn_GetFormatFieldNoValue('PSADJBNGROW') -Select * from vefn_GetFormatFieldNoValue('SectionTitle') -Select * from vefn_GetFormatFieldNoValue('PrintNoTitle') -Select * from vefn_GetFormatFieldNoValue('Off') -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetFormatFieldNoValue](@find varchar(255)) -RETURNS @FormatFields TABLE -( - FormatID int - ,Name varchar(20) - ,Description varchar(250) - ,Path varchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN - INSERT INTO @FormatFields - Select FormatID, Name, Description, - case when v9.exist('.') is null THEN '' ELSE v9.value('local-name(.)','varchar(max)') + '/' END + - case when v8.exist('.') is null THEN '' ELSE v8.value('local-name(.)','varchar(max)') + '/' END + - case when v7.exist('.') is null THEN '' ELSE v7.value('local-name(.)','varchar(max)') + '/' END + - case when v6.exist('.') is null THEN '' ELSE v6.value('local-name(.)','varchar(max)') + '/' END + - case when v5.exist('.') is null THEN '' ELSE v5.value('local-name(.)','varchar(max)') + '/' END + - case when v4.exist('.') is null THEN '' ELSE v4.value('local-name(.)','varchar(max)') + '/' END + - case when v3.exist('.') is null THEN '' ELSE v3.value('local-name(.)','varchar(max)') + '/' END + - case when v2.exist('.') is null THEN '' ELSE v2.value('local-name(.)','varchar(max)') + '/' END + - case when v1.exist('.') is null THEN '' ELSE v1.value('local-name(.)','varchar(max)') + '/' END + - + '@' + v.value('local-name(.)','varchar(max)') Path - FROM Formats - CROSS APPLY Data.nodes('//*/@*') TempXML(v) - OUTER APPLY v.nodes('..') TempXML1(v1) - OUTER APPLY v1.nodes('..') TempXML2(v2) - OUTER APPLY v2.nodes('..') TempXML3(v3) - OUTER APPLY v3.nodes('..') TempXML4(v4) - OUTER APPLY v4.nodes('..') TempXML5(v5) - OUTER APPLY v5.nodes('..') TempXML6(v6) - OUTER APPLY v6.nodes('..') TempXML7(v7) - OUTER APPLY v7.nodes('..') TempXML8(v8) - OUTER APPLY v8.nodes('..') TempXML9(v9) - where v.value('local-name(.)', 'varchar(255)') like '%' + @find + '%' - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetFormatFieldNoValue Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetFormatFieldNoValue Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetFormatValues] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetFormatValues]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetFormatValues]; -GO - -/* - -SELECT * from vefn_GetFormatValues('WidSAdjByLevel') -SELECT * from vefn_GetFormatValues('MatchProcNumber') -SELECT * from vefn_GetFormatValues('TofCPositionAdj') - -*/ - - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetFormatValues](@FieldName as varchar(255)) -RETURNS @AllValues TABLE -( - FormatID int, - Name varchar(100), - ParentNode XML, - Node XML, - FieldValue varchar(MAX) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @NodeName as varchar(255) - set @NodeName = (Select distinct v.value('local-name(..)', 'varchar(255)') MyName - FROM Formats CROSS APPLY Data.nodes('(*//@*[local-name()=sql:variable("@FieldName")])') TempXML(v)) - Insert into @AllValues - Select FormatID, Name, v.query('..') ParentNode, v.query('.') Node, - v.value('(./@*[local-name()=sql:variable("@FieldName")])[1]','varchar(255)') FieldValue - FROM Formats CROSS APPLY Data.nodes('(//*[local-name()=sql:variable("@NodeName")])') TempXML(v) - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetFormatValues Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetFormatValues Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetGenMacMacros] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetGenMacMacros]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetGenMacMacros]; -GO - -/* -Select * from vefn_GetGenMacMacros() -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetGenMacMacros]() -RETURNS @GenMacMacros TABLE -( - FormatID int - ,Name varchar(20) - ,Description varchar(250) - ,MacroName varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN - INSERT INTO @GenMacMacros - Select FormatID, Name, Description,v.value('@id','varchar(20)') MacroName - FROM Formats CROSS APPLY GenMac.nodes('//g') TempXML(v) - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetGenMacMacros Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetGenMacMacros Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetInheritedFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetInheritedFormat]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetInheritedFormat]; -GO - -/* Samples -Select TranType, .dbo.vefn_GetInheritedFormat(355) TransFormat - from(Select 1 TranType UNION Select 2 TranType UNION Select 3 TranType UNION - Select 4 TranType UNION Select 5 TranType UNION Select 6 TranType UNION - Select 7 TranType UNION Select 8 TranType UNION Select 9 TranType UNION Select 10 TranType) TT - -Select top 25 ItemID, TranType, .dbo.vefn_GetInheritedFormat(ItemID) TransFormat - From Transitions TR - Join Items II on II.ContentID = TR.FromID - -*/ -/* - local is a 'boolean' (0=false, 1=true) to state whether to look at the item itself or - only its parent -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetInheritedFormat] (@ItemID int, @local int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @FormatID as int - -- First get the Active Format - begin - with Itemz([Level], [PreviousID], [ItemID], [ParentID], [FolderID], [FormatID]) as ( - Select 0 [Level], [PreviousID], [ItemID], null, null, - case when @local = 1 then (Select FormatID from Contents CC where [CC].[ContentID] = [II].[ContentID]) - else null end FormatID - FROM [Items] II - where [ItemID]=@ItemID - Union All - -- Parent Item - select [Level] + 1, I.[PreviousID], I.[ItemID], null, null, C.FormatID - from Itemz Z - join Parts P on P.ItemID = Z.ItemID - join Items I on I.ContentID = P.ContentID - join Contents C on C.ContentID = P.ContentID - where Z.FormatID is null - -- Siblings Item - Union All - select [Level] , I.[PreviousID] , I.[ItemID], null, null, Z.FormatID - from Itemz Z - join Items I on Z.PreviousID = I.ItemID - where Z.FormatID is null - Union All - -- DocVersion From Item - select [Level] + 1, null, null, DV.FolderID, null, DV.FormatID - from Itemz Z - join DocVersions DV on DV.ItemID = Z.ItemID - where Z.FormatID is null - Union All - -- Folders - select [Level] + 1, null, null, FF.ParentID, FF.FolderID, FF.FormatID - from Itemz Z - join Folders FF on FF.FolderID = Z.ParentID and FF.ParentID <> FF.FolderID - where Z.FormatID is null - ) - Select @FormatID = FormatID from Itemz ZZ Where FormatID is not null - OPTION (MAXRECURSION 10000) - RETURN @FormatID - END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetInheritedFormat Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_GetInheritedFormat Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetNewTranType] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetNewTranType]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetNewTranType]; -GO - -/* Samples - -SELECT .dbo.[vefn_GetNewTranType] (1, 2, 6) -SELECT .dbo.[vefn_GetNewTranType] (1, 2, 7) -SELECT .dbo.[vefn_GetNewTranType] (27, 29, 10) -SELECT .dbo.[vefn_GetNewTranType] (29, 27, 10) -SELECT .dbo.[vefn_GetNewTranType] (27, 31, 10) ---SELECT .dbo.[vefn_GetNewTranType] (29, 27, 10) - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetNewTranType] (@FormatID int, @NewFormatID int, @TranType int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN - -- - IF @FormatID = @NewFormatID - RETURN @TranType - DECLARE @TransFormat varchar(max) - DECLARE @NewTransFormat varchar(max) - SET @TransFormat = isnull(.dbo.vefn_GetTransFormat(@FormatID, @TranType),'') - SET @NewTransFormat = isnull(.dbo.vefn_GetTransFormat(@NewFormatID, @TranType),'') - RETURN CASE - WHEN @TransFormat = @NewTransFormat THEN @TranType - WHEN @TransFormat LIKE '%{Last Step}%' THEN - CASE - WHEN @NewTransFormat LIKE '%{Last Step}%' THEN @TranType - ELSE 3 -- This is a default 'range' type, all transition formats have it! - END - ELSE - CASE - WHEN @NewTransFormat LIKE '%{Last Step}%' THEN 0 - ELSE @TranType -- This is a default 'single' type, all transition formats have it! - END - END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetNewTranType Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_GetNewTranType Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetNullFormatValues] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetNullFormatValues]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetNullFormatValues]; -GO - -/* - -SELECT * from vefn_GetNullFormatValues('WidSAdjByLevel') -SELECT * from vefn_GetNullFormatValues('MatchProcNumber') -SELECT * from vefn_GetNullFormatValues('TofCPositionAdj') - -*/ - - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetNullFormatValues](@FieldName as varchar(255)) -RETURNS @NullValues TABLE -( - FormatID int, - Name varchar(100), - ParentNode XML, - Node XML -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @NodeName as varchar(255) - set @NodeName = (Select distinct v.value('local-name(..)', 'varchar(255)') MyName - FROM Formats CROSS APPLY Data.nodes('(*//@*[local-name()=sql:variable("@FieldName")])') TempXML(v)) - Insert into @NullValues - Select FormatID, Name, ParentNode, Node FROM ( - Select FormatID, Name, v.query('..') ParentNode, v.query('.') Node, - v.value('(./@*[local-name()=sql:variable("@FieldName")])[1]','varchar(255)') FieldValue - FROM Formats CROSS APPLY Data.nodes('(//*[local-name()=sql:variable("@NodeName")])') TempXML(v) - ) t1 WHERE FieldValue is null - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetNullFormatValues Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetNullFormatValues Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetTokens] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetTokens]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetTokens]; -GO - -/* -select * from vefn_GetTokens('abc{Header1}def{Header2}ghi') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetTokens](@text varchar(64)) -RETURNS @Tokens TABLE -( - Token varchar(64) -) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @index int -SET @index = -1 -WHILE (LEN(@text) > 0) - BEGIN - SET @index = CHARINDEX('{' , @text) - IF @index = 0 - BREAK - DECLARE @index2 int - SET @index2 = CHARINDEX('}' , @text) - if @index2 = 0 - BREAK - INSERT INTO @Tokens VALUES (substring(@text, @index,1+@index2-@index)) - SET @text = RIGHT(@text, (LEN(@text) - @index2)) - END - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetTokens Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetTokens Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetTransFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetTransFormat]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetTransFormat]; -GO - -/* Samples -select .dbo.vefn_GetTransFormat(1,6) -select .dbo.vefn_GetTransFormat(1,1) -select .dbo.vefn_GetTransFormat(1,2) -select .dbo.vefn_GetTransFormat(1,3) - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetTransFormat] (@FormatID int, @TranType int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN - - -- Walk up the Formats (inheritance) looking for the TransFormat - Declare @TransFormat as varchar(MAX) - BEGIN - with Formatz([MyOrder],[FormatID],[ParentID],[Data]) as ( - Select 0,FormatID, ParentID, Data From Formats where FormatID=@FormatID - Union All - Select [MyOrder]+1,FF.FormatID, FF.ParentID, FF.Data From Formats FF - Join Formatz ZZ on ZZ.ParentID=FF.FormatID - Where ZZ.FormatID <> ZZ.ParentID) - Select Top 1 @TransFormat=v.value('./@TransFormat', 'varchar(MAX)') - FROM Formatz - CROSS APPLY Data.nodes('//TransTypes') TempXML(v) - where v.value('./@TransType', 'int')=@TranType - order by [MyOrder] - END - return @TransFormat -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetTransFormat Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_GetTransFormat Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_HighLevelStepTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_HighLevelStepTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_HighLevelStepTransitions]; -GO - -/* -select * from vefn_HighLevelStepTransitions(105,104) -where TransCount > 0 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_HighLevelStepTransitions](@ItemID int, @ParentID int) -RETURNS @HighLevelStepTransitions TABLE -( - ParentID int - ,ItemID int PRIMARY KEY - ,Path varchar(max) - ,TransCount int - ,ExternalTransitions int - ,InternalTransitions int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - --where Z.[Level] > 0 -) -Insert into @HighLevelStepTransitions -select [ParentID],ItemID,dbo.ve_GetPath([ItemID]) ,(Select Count(*) from Transitions where ToID=ItemID OR RangeID=ItemID ) TransCount -,(Select count(*) from vefn_FindExternalTransitions(ItemID)) ExternalTransitions -,(Select count(*) from vefn_FindInternalTransitions(ItemID)) InternalTransitions -from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_HighLevelStepTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_HighLevelStepTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_NextStepTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_NextStepTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_NextStepTransitions]; -GO - -/* -select * from vefn_NextStepTransitions(450,443) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_NextStepTransitions](@ItemID int, @PreviousID int) -RETURNS @Transitions TABLE -( - [TransitionID] int PRIMARY KEY, - [FromID] [int], - [ToID] [int], - [RangeID] [int], - [TranType] [int], - [Config] [nvarchar](max) -) -WITH EXECUTE AS OWNER -AS -BEGIN - INSERT INTO @Transitions - SELECT [TransitionID],[FromID],[ToID],[RangeID],[TranType],[Config] - FROM [Transitions] where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) - AND (ToID = @ItemID OR RangeID = @ItemID) - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_NextStepTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_NextStepTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_RemoveExtraText] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_RemoveExtraText]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_RemoveExtraText]; -GO - -/* -select text, .dbo.vefn_RemoveExtraText(text,2,0,0) StrippedText from Contents where ContentID=373 -select text, .dbo.vefn_RemoveExtraText(text,1,0,0) StrippedText from Contents where ContentID=373 -select text, .dbo.vefn_RemoveExtraText(text,0,0,0) StrippedText ,.dbo.vefn_FirstLink(text,0), PATINDEX('%[' + nchar(9516) + nchar(9574) + char(21) + ']%' , text) from Contents where ContentID=373 -select .dbo.vefn_RemoveExtraText('\b Bold\b0',0,0,0) -select .dbo.vefn_RemoveExtraText('\b Bold\b0',0,1,0) -select .dbo.vefn_RemoveExtraText('A\u1?B\u12?C\u123?D\u1234?E',0,0,0) -select .dbo.vefn_RemoveExtraText('A\u1?B\u12?C\u123?D\u1234?E',0,0,1) -*/ - - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_RemoveExtraText](@text nvarchar(MAX),@includeLink int, @includeRtfFormatting int , @includeSpecialCharacters int) -RETURNS varchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @index int -DECLARE @index2 int --- Strip Links -IF @includeLink = 0 -- Remove Links - SET @text = [dbo].[vefn_RemoveRange](@text,'') -IF @includeLink < 2 -- Remove Comments - SET @text = [dbo].[vefn_RemoveRange](@text,'\v' ,'\v0') -if(@includeRtfFormatting=0) - -- Remove Rtf Formatting - BEGIN - SET @text = Replace(@text, '\b0 ', ''); - SET @text = Replace(@text, '\b ', ''); - SET @text = Replace(@text, '\ul0 ', ''); - SET @text = Replace(@text, '\ul ', ''); - SET @text = Replace(@text, '\i0 ', ''); - SET @text = Replace(@text, '\i ', ''); - SET @text = Replace(@text, '\super ', ''); - SET @text = Replace(@text, '\sub ', ''); - SET @text = Replace(@text, '\nosupersub ', ''); - SET @text = Replace(@text, '\b0', ''); - SET @text = Replace(@text, '\b', ''); - SET @text = Replace(@text, '\ul0', ''); - SET @text = Replace(@text, '\ul', ''); - SET @text = Replace(@text, '\i0', ''); - SET @text = Replace(@text, '\i', ''); - SET @text = Replace(@text, '\super', ''); - SET @text = Replace(@text, '\sub', ''); - SET @text = Replace(@text, '\nosupersub', ''); - END -if(@includeSpecialCharacters=0) - -- Remove Special Characters - BEGIN - SET @index = PATINDEX('%\u[0-9]?%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+4,len(@text)) - SET @index = PATINDEX('%\u[0-9]?%',@text) - END - SET @index = PATINDEX('%\u[0-9][0-9]?%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+5,len(@text)) - SET @index = PATINDEX('%\u[0-9][0-9]?%',@text) - END - SET @index = PATINDEX('%\u[0-9][0-9][0-9]?%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+6,len(@text)) - SET @index = PATINDEX('%\u[0-9][0-9][0-9]?%',@text) - END - SET @index = PATINDEX('%\u[0-9][0-9][0-9][0-9]?%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+7,len(@text)) - SET @index = PATINDEX('%\u[0-9][0-9][0-9][0-9]?%',@text) - END - SET @index = PATINDEX('%\''[0-9A-Fa-f][0-9A-Fa-f]%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+4,len(@text)) - SET @index = PATINDEX('%\''[0-9A-Fa-f][0-9A-Fa-f]%',@text) - END - - END -RETURN @text -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_RemoveExtraText Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_RemoveExtraText Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_RemoveRange] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_RemoveRange]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_RemoveRange]; -GO - -/* -SELECT ContentID, text, [dbo].[vefn_RemoveRange](text,'') StrippedText -from contents -where contentid in (select top 25 ContentID from contents where text like '%[[]END>%') - -select top 25 * from contents where text like '%[[]END>%' - -SELECT ContentID, [dbo].[vefn_RemoveRange](text,'') StrippedText -from contents -where contentid =189 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_RemoveRange](@text nvarchar(MAX),@startToken nvarchar(MAX), @endToken nvarchar(MAX)) -RETURNS varchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @index int - DECLARE @index2 int - DECLARE @lenStartToken int - DECLARE @lenEndToken int - SET @lenStartToken = len(@startToken) - SET @lenEndToken = len(@endToken) - SET @index = CHARINDEX(@startToken , @text) - while (@index != 0) - BEGIN - SET @index2 = CHARINDEX(@endToken , @text, @index + @lenStartToken) - SET @text = substring(@text,1,@index-1) + substring(@text,@index2+@lenEndToken,len(@text)) - SET @index = CHARINDEX(@startToken , @text) - END - RETURN @text -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_RemoveRange Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_RemoveRange Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_SectionFormats] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SectionFormats]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SectionFormats]; -GO - ---select FormatID ---,10000 + v.value('../@Index', 'int') [SectionType] ---,[Name] ---,v.value('../@Name', 'varchar(255)') [SectionFormatName] ---,v.value('@TopRow', 'int') TopRow ---,v.value('@PageLength', 'int') PageLength ---,v.value('@FooterLength', 'int') FooterLength ---,v.value('@LeftMargin', 'int') LeftMargin ---,v.value('@PageWidth', 'int') PageWidth ---from Formats ---CROSS APPLY Data.nodes('//DocStyle/Layout') TempXML(v) - -/* - -select * from vefn_SectionFormats() where Name = 'OHLP' - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SectionFormats]() -RETURNS @SectionFormats TABLE -( - [FormatID] int - ,[SectionType] int - ,[Name] nvarchar(20) - ,[SectionFormatName] nvarchar(max) - ,[TopRow] int - ,[PageLength] int - ,[FooterLength] int - ,[LeftMargin] int - ,[PageWidth] int -) -WITH EXECUTE AS OWNER -AS -BEGIN -Insert into @SectionFormats -select FormatID -,10000 + v.value('../@Index', 'int') [SectionType] -,[Name] -,v.value('../@Name', 'varchar(255)') [SectionFormatName] -,v.value('@TopRow', 'int') TopRow -,v.value('@PageLength', 'int') PageLength -,v.value('@FooterLength', 'int') FooterLength -,v.value('@LeftMargin', 'int') LeftMargin -,v.value('@PageWidth', 'int') PageWidth -from Formats -CROSS APPLY Data.nodes('//DocStyle/Layout') TempXML(v) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SectionFormats Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SectionFormats Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_SiblingAndChildrenItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingAndChildrenItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SiblingAndChildrenItems]; -GO - -/* -select * from vefn_SiblingAndChildrenItems('3') II -join -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SiblingAndChildrenItems](@DocVersionList varchar(MAX),@UnitPrefix varchar(MAX)) -RETURNS @SiblingAndChildren TABLE -( - [ItemID] int PRIMARY KEY - , [DVPath] nvarchar(max) - , [Path] nvarchar(max) - , [Level] int - , [FromType] int - , [Ordinal] int - , [ParentID] int - , [PreviousID] int - , [ContentID] int - , [DTS] datetime - , [UserID] nvarchar(100) - , [pContentID] int - , [pDTS] datetime - , [pUserID] nvarchar(100) - , [IsRNO] int - --- , [PPath] nvarchar(max) --- , [POrdinalPath] nvarchar(max) - , [OrdinalPath] nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -BEGIN -with Itemz([ItemID], [DVPath], [Level], [ParentID], [Ordinal], [PreviousID], [FromType], [ContentID], [DTS], [UserID],[pContentID], - [pDTS],[pUserID],PPath, [Path], [IsRNO], [POrdinalPath], [OrdinalPath]) as ( - Select [I].[ItemID], DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], - Cast('' as nvarchar(max)) [PPath], - Cast(Case when C.Type < 20000 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text else '1' end as nvarchar(max)) [Path], - 0 IsRNO, Cast('' as nvarchar(max)) [POrdinalPath], Cast('0001' as nvarchar(max)) [OrdinalPath] - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select I.[ItemID], DVPath, [Level] + 1,Z.ItemID,0, I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID], - P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text -- Procedure - when 1 then @Delim + C.Number + @DelimNumber + C.Text -- Section - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(3)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001' - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select I.[ItemID], DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID] - ,null,null,null, - PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text -- Procedure - when 1 then @Delim + C.Number + @DelimNumber + C.Text -- Section - else case when Path like '%.%' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('00000' + cast(Z.[Ordinal] + 2 as varchar(5)), 5) - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 - -) -insert into @SiblingAndChildren -select I.[ItemID], [DvPath], [Path], I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID], - [pContentID],[pDTS],[pUserID],[IsRNO]/*,[PPath],[POrdinalPath]*/,[OrdinalPath] - from ItemZ I -OPTION (MAXRECURSION 10000) -END -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingAndChildrenItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SiblingAndChildrenItems Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_SiblingChildrenItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingChildrenItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SiblingChildrenItems]; -GO - -/* -select * from Transitions -where (ToID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) OR (RangeID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) -AND NOT (FromID in(Select ContentID From dbo.vefn_ChildrenItems(185,184))) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SiblingChildrenItems](@ItemID int) -RETURNS @SiblingChildren TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 as [pContentID],[DTS] As [pDTS], [UserID] As [pUserID], [LastChanged] As [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] as [pContentID],P.[DTS] As [pDTS],P.[UserID] As [pUserID],P.[LastChanged] As [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -insert into @SiblingChildren select ItemID, ContentID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingChildrenItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SiblingChildrenItems Error on Creation' -GO - -/****** Object: Table Function [vefn_SiblingItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SiblingItems]; -GO - -/* -select * from Transitions -where (ToID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) OR (RangeID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) -AND NOT (FromID in(Select ContentID From dbo.vefn_ChildrenItems(185,184))) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SiblingItems](@ItemID int, @ParentID int) -RETURNS @Siblings TABLE -( - ItemID int PRIMARY KEY, - ContentID int, - Ordinal int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -insert into @Siblings select ItemID, ContentID, Ordinal from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SiblingItems Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_SplitInt] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SplitInt]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SplitInt]; -GO - ---select * from DocVersions where VersionID in(select * from vefn_SplitInt('1,2,4',',')) ---select Type, Count(*) from Contents where Type in(select * from vefn_SplitInt('20001,20002,20004',',')) group by Type -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SplitInt](@text varchar(MAX), @delimiter varchar(20) = ',') -RETURNS @IDs TABLE -( - ID int PRIMARY KEY -) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @index int -SET @index = -1 -WHILE (LEN(@text) > 0) - BEGIN - SET @index = CHARINDEX(@delimiter , @text) - IF (@index = 0) AND (LEN(@text) > 0) - BEGIN - INSERT INTO @IDs VALUES (CAST(@text AS INT )) - BREAK - END - IF (@index > 1) - BEGIN - INSERT INTO @IDs VALUES (CAST(LEFT(@text, @index - 1) AS INT)) - SET @text = RIGHT(@text, (LEN(@text) - @index)) - END - ELSE - SET @text = RIGHT(@text, (LEN(@text) - @index)) - END - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SplitInt Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SplitInt Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_SplitROSearch] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SplitROSearch]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SplitROSearch]; -GO - -/* -select * from vefn_SplitROSearch(null) -select * from vefn_SplitROSearch('') -select * from vefn_SplitROSearch('1') -select * from vefn_SplitROSearch('1:0001') -select * from vefn_SplitROSearch('1:0001000019C') -select * from vefn_SplitROSearch('1:0001000019C,0001000019D') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SplitROSearch](@text varchar(MAX)='') -RETURNS @ROIDSearch TABLE -( - RODBID int, - ROID varchar(16) - --,CONSTRAINT ROIDSearchPK PRIMARY KEY(RODBID, ROID) -) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @index int -IF(isnull(@text,'') = '') -BEGIN - Insert into @ROIDSearch - Select RODBID, '' - from RODbs - RETURN -END -SET @index = CHARINDEX(':' , @text) -DECLARE @RODBID int -IF (@index = 0) AND (LEN(@text) > 0) - BEGIN - SET @RODBID = CAST(@text AS INT) - INSERT INTO @ROIDSearch VALUES (@RODBID,'') - SET @Text='' - END -ELSE - BEGIN - SET @RODBID = CAST(LEFT(@text, @index - 1) AS INT) - SET @text = RIGHT(@text, (LEN(@text) - @index)) - SET @index = -1 - END -SET @text = RIGHT(@text, (LEN(@text) - @index)) -WHILE (LEN(@text) > 0) - BEGIN - SET @index = CHARINDEX(',' , @text) - IF (@index = 0) AND (LEN(@text) > 0) - BEGIN - INSERT INTO @ROIDSearch VALUES (@RODBID,@text) - BREAK - END - IF (@index > 1) - BEGIN - INSERT INTO @ROIDSearch VALUES (@RODBID,LEFT(@text, @index - 1)) - SET @text = RIGHT(@text, (LEN(@text) - @index)) - END - ELSE - SET @text = RIGHT(@text, (LEN(@text) - @index)) - END - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SplitROSearch Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SplitROSearch Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_XmlPath] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_XmlPath]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_XmlPath]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_XmlPath] (@xml XML) RETURNS varchar(255) -WITH EXECUTE AS OWNER -AS -BEGIN - return case when @xml.exist('*[1]') is null THEN '' ELSE @xml.value('local-name(*[1])','varchar(max)') + - coalesce('[' + @xml.value('*[1]/@Type','varchar(255)')+']','[' + @xml.value('*[1]/@Index','varchar(255)')+']','') + '/' END -END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_XmlPath Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_XmlPath Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_CleanUpItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_CleanUpItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_CleanUpItems]; -GO - -/* -select *, .dbo.ve_GetParts(ContentID,6) SubSteps from items -where contentid in(select contentid from contents where text like 'DISPATCH operator to open breaker%') - - -select * from items -where itemid in(298,299,436,440) - -select itemid from items -where previousid is null and itemid not in (select itemid from parts) - ---select * from contents where text like 'foldout cip%' - -select count(*) from parts -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE procedure [dbo].[vesp_CleanUpItems] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - BEGIN -with Itemz(ItemID) as( -select itemid from items -where previousid is null -and itemid not in(1) -and itemid not in (select itemid from parts) -UNION ALL -select ii.itemid from items ii join itemz zz on zz.itemid = ii.previousid -) -delete from items where itemid in (select itemid from itemz) -OPTION (MAXRECURSION 10000) - END - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_CleanUpItems Succeeded' -ELSE PRINT 'Procedure Creation: vesp_CleanUpItems Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetFormatFields] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetFormatFields]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetFormatFields]; -GO - -/* -vesp_GetFormatFields 'PrintNoTitle' -vesp_GetFormatFields 'Sep' -vesp_GetFormatFields 'TabFormat' -vesp_GetFormatFields 'ShowSectionTitles' -vesp_GetFormatFields 'Caution' -vesp_GetFormatFields 'Ident' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetFormatFields] -( - @find varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @pivotlist varchar(max) - select @pivotlist = stuff((select distinct ',[' + [Name] + ']' from vefn_GetFormatField(@find) - order by ',[' + [Name] + ']' for xml path('')),1,1,'') - DECLARE @query VARCHAR(max) - SET @query = 'SELECT * FROM (Select Name,''Format Description'' Path,'''' Value, Description From Formats) T1 PIVOT ( Max(Description) FOR [Name] IN (' + @pivotlist + ') ) As Pivot2' - EXECUTE(@query) - SET @query = 'SELECT * FROM (Select Name,''FormatID'' Path,'''' Value, FormatID From Formats) T1 PIVOT ( Max(FormatID) FOR [Name] IN (' + @pivotlist + ') ) As Pivot2' - EXECUTE(@query) - SET @query = 'SELECT * FROM (Select Name,Path,Value From vefn_GetFormatField(''' + @find + ''')) T1 PIVOT ( Count(Name) FOR [Name] IN (' + @pivotlist + ') ) AS Pivot1 ORDER BY PATH,VALUE' - print @Query - EXECUTE(@query) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetFormatFields Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetFormatFields Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetFormatFieldsAll] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetFormatFieldsAll]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetFormatFieldsAll]; -GO - -/* -vesp_GetFormatFieldsAll 'PrintNoTitle' -vesp_GetFormatFieldsAll 'Sep' -vesp_GetFormatFieldsAll 'TabFormat' -vesp_GetFormatFieldsAll 'ShowSectionTitles' -vesp_GetFormatFieldsAll 'Caution' -vesp_GetFormatFieldsAll 'Ident' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetFormatFieldsAll] -( - @find varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @pivotlist varchar(max) - select @pivotlist = stuff((select distinct ',[' + [Name] + ']' from Formats - order by ',[' + [Name] + ']' for xml path('')),1,1,'') - DECLARE @query VARCHAR(max) - SET @query = 'SELECT * FROM (Select Name,Path,Value From vefn_GetFormatField(''' + @find + ''')) T1 PIVOT ( Count(Name) FOR [Name] IN (' + @pivotlist + ') ) AS Pivot1 ORDER BY PATH,VALUE' - print @Query - EXECUTE(@query) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetFormatFieldsAll Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetFormatFieldsAll Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetFormatFieldsByStepType] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetFormatFieldsByStepType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetFormatFieldsByStepType]; -GO - -/* -vesp_GetFormatFieldsByStepType 'PrintNoTitle' -vesp_GetFormatFieldsByStepType 'Sep' -vesp_GetFormatFieldsByStepType 'TabFormat' -vesp_GetFormatFieldsByStepType 'ShowSectionTitles' -vesp_GetFormatFieldsByStepType 'Caution' -vesp_GetFormatFieldsByStepType 'Ident' -vesp_GetFormatFieldsByStepType 'Off' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetFormatFieldsByStepType] -( - @find varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @pivotlist varchar(max) - select @pivotlist = stuff((select distinct ',[' + [Name] + ']' from vefn_GetFormatField(@find) - order by ',[' + [Name] + ']' for xml path('')),1,1,'') - DECLARE @query VARCHAR(max) - SET @query = 'SELECT * FROM (Select Name,''Format Description'' Path,'''' StepType, '''' Value, Description From Formats) T1 PIVOT ( Max(Description) FOR [Name] IN (' + @pivotlist + ') ) As Pivot2' - EXECUTE(@query) - SET @query = 'SELECT * FROM (Select Name,''FormatID'' Path, '''' StepType,'''' Value, FormatID From Formats) T1 PIVOT ( Max(FormatID) FOR [Name] IN (' + @pivotlist + ') ) As Pivot2' - EXECUTE(@query) - SET @query = 'SELECT * FROM (Select Name,Path,StepType,Value From vefn_GetFormatFieldByStepType(''' + @find + ''')) T1 PIVOT ( Count(Name) FOR [Name] IN (' + @pivotlist + ') ) AS Pivot1 ORDER BY PATH,StepType,VALUE' - print @Query - EXECUTE(@query) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetFormatFieldsByStepType Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetFormatFieldsByStepType Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetFormatFieldsByStepType2] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetFormatFieldsByStepType2]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetFormatFieldsByStepType2]; -GO - -/* -vesp_GetFormatFieldsByStepType2 'PrintNoTitle' -vesp_GetFormatFieldsByStepType2 'Sep' -vesp_GetFormatFieldsByStepType2 'TabFormat' -vesp_GetFormatFieldsByStepType2 'ShowSectionTitles' -vesp_GetFormatFieldsByStepType2 'Caution' -vesp_GetFormatFieldsByStepType2 'Ident' -vesp_GetFormatFieldsByStepType2 'Off' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create PROCEDURE [dbo].[vesp_GetFormatFieldsByStepType2] -( - @find varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @pivotlist varchar(max) - select @pivotlist = stuff((select distinct ',[' + [Name] + ']' from vefn_GetFormatFieldByStepType2(@find) - order by ',[' + [Name] + ']' for xml path('')),1,1,'') - DECLARE @query VARCHAR(max) - SET @query = 'SELECT * FROM (Select Name,''Format Description'' Path,'''' StepType, '''' Value, Description From Formats) T1 PIVOT ( Max(Description) FOR [Name] IN (' + @pivotlist + ') ) As Pivot2' - EXECUTE(@query) - SET @query = 'SELECT * FROM (Select Name,''FormatID'' Path, '''' StepType,'''' Value, FormatID From Formats) T1 PIVOT ( Max(FormatID) FOR [Name] IN (' + @pivotlist + ') ) As Pivot2' - EXECUTE(@query) - SET @query = 'SELECT * FROM (Select Name,Path,StepType,Value From vefn_GetFormatFieldByStepType2(''' + @find + ''')) T1 PIVOT ( Count(Name) FOR [Name] IN (' + @pivotlist + ') ) AS Pivot1 ORDER BY PATH,StepType,VALUE' - print @Query - EXECUTE(@query) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetFormatFieldsByStepType2 Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetFormatFieldsByStepType2 Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetFormatFieldsNoValue] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetFormatFieldsNoValue]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetFormatFieldsNoValue]; -GO - -/* -vesp_GetFormatFieldsNoValue 'PrintNoTitle' -vesp_GetFormatFieldsNoValue 'Sep' -vesp_GetFormatFieldsNoValue 'TabFormat' -vesp_GetFormatFieldsNoValue 'ShowSectionTitles' -vesp_GetFormatFieldsNoValue 'Caution' -vesp_GetFormatFieldsNoValue 'Ident' -vesp_GetFormatFieldsNoValue 'Off' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetFormatFieldsNoValue] -( - @find varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @pivotlist varchar(max) - select @pivotlist = stuff((select distinct ',[' + [Name] + ']' from vefn_GetFormatField(@find) - order by ',[' + [Name] + ']' for xml path('')),1,1,'') - DECLARE @query VARCHAR(max) - SET @query = 'SELECT * FROM (Select Name,''Format Description'' Path, Description From Formats) T1 PIVOT ( Max(Description) FOR [Name] IN (' + @pivotlist + ') ) As Pivot2' - EXECUTE(@query) - SET @query = 'SELECT * FROM (Select Name,''FormatID'' Path, FormatID From Formats) T1 PIVOT ( Max(FormatID) FOR [Name] IN (' + @pivotlist + ') ) As Pivot2' - EXECUTE(@query) - SET @query = 'SELECT * FROM (Select Name,Path From vefn_GetFormatFieldNoValue(''' + @find + ''')) T1 PIVOT ( Count(Name) FOR [Name] IN (' + @pivotlist + ') ) AS Pivot1 ORDER BY PATH' - print @Query - EXECUTE(@query) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetFormatFieldsNoValue Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetFormatFieldsNoValue Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetFormatGroupFields] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetFormatGroupFields]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetFormatGroupFields]; -GO - -/* -vesp_GetFormatGroupFields 'PrintNoTitle' -vesp_GetFormatGroupFields 'Sep' -vesp_GetFormatGroupFields 'TabFormat' -vesp_GetFormatGroupFields 'ShowSectionTitles' -vesp_GetFormatGroupFields 'Caution' -vesp_GetFormatGroupFields 'Ident' -vesp_GetFormatGroupFields 'SectionTitleLen' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetFormatGroupFields] -( - @find varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @pivotlist varchar(max) - select @pivotlist = stuff((select distinct ',[' + substring([Name],1,3) + ']' from vefn_GetFormatField(@find) - order by ',[' + substring([Name],1,3) + ']' for xml path('')),1,1,'') - DECLARE @query VARCHAR(max) - SET @query = 'SELECT * FROM (Select substring([Name],1,3) FormatGroup,Path,Value From vefn_GetFormatField(''' + @find + ''')) T1 PIVOT ( Count(FormatGroup) FOR FormatGroup IN (' + @pivotlist + ') ) AS Pivot1 ORDER BY PATH,VALUE' - print @Query - EXECUTE(@query) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetFormatGroupFields Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetFormatGroupFields Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetFormatGroupFieldsByStepType] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetFormatGroupFieldsByStepType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetFormatGroupFieldsByStepType]; -GO - -/* -vesp_GetFormatGroupFieldsByStepType 'PrintNoTitle' -vesp_GetFormatGroupFieldsByStepType 'Sep' -vesp_GetFormatGroupFieldsByStepType 'TabFormat' -vesp_GetFormatGroupFieldsByStepType 'ShowSectionTitles' -vesp_GetFormatGroupFieldsByStepType 'Caution' -vesp_GetFormatGroupFieldsByStepType 'Ident' -vesp_GetFormatGroupFieldsByStepType 'SectionTitleLen' -vesp_GetFormatGroupFieldsByStepType 'Off' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetFormatGroupFieldsByStepType] -( - @find varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @pivotlist varchar(max) - select @pivotlist = stuff((select distinct ',[' + substring([Name],1,3) + ']' from vefn_GetFormatField(@find) - order by ',[' + substring([Name],1,3) + ']' for xml path('')),1,1,'') - DECLARE @query VARCHAR(max) - SET @query = 'SELECT * FROM (Select substring([Name],1,3) FormatGroup,Path,StepType,Value From vefn_GetFormatFieldByStepType(''' + @find + ''')) T1 PIVOT ( Count(FormatGroup) FOR FormatGroup IN (' + @pivotlist + ') ) AS Pivot1 ORDER BY PATH, StepType,VALUE' - print @Query - EXECUTE(@query) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetFormatGroupFieldsByStepType Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetFormatGroupFieldsByStepType Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetFormatGroupFieldsNoValues] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetFormatGroupFieldsNoValues]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetFormatGroupFieldsNoValues]; -GO - -/* -vesp_GetFormatGroupFieldsNoValues 'PrintNoTitle' -vesp_GetFormatGroupFieldsNoValues 'Sep' -vesp_GetFormatGroupFieldsNoValues 'TabFormat' -vesp_GetFormatGroupFieldsNoValues 'ShowSectionTitles' -vesp_GetFormatGroupFieldsNoValues 'Caution' -vesp_GetFormatGroupFieldsNoValues 'Ident' -vesp_GetFormatGroupFieldsNoValues 'SectionTitleLen' -vesp_GetFormatGroupFieldsNoValues 'Off' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetFormatGroupFieldsNoValues] -( - @find varchar(255) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @pivotlist varchar(max) - select @pivotlist = stuff((select distinct ',[' + substring([Name],1,3) + ']' from vefn_GetFormatFieldNoValue(@find) - order by ',[' + substring([Name],1,3) + ']' for xml path('')),1,1,'') - DECLARE @query VARCHAR(max) - SET @query = 'SELECT * FROM (Select substring([Name],1,3) FormatGroup,Path From vefn_GetFormatFieldNoValue(''' + @find + ''')) T1 PIVOT ( Count(FormatGroup) FOR FormatGroup IN (' + @pivotlist + ') ) AS Pivot1 ORDER BY PATH' - print @Query - EXECUTE(@query) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetFormatGroupFieldsNoValues Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetFormatGroupFieldsNoValues Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetGenMacMacros] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetGenMacMacros]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetGenMacMacros]; -GO - -/* -vesp_GetGenMacMacros -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetGenMacMacros] -WITH EXECUTE AS OWNER -AS -BEGIN - declare @pivotlist varchar(max) - select @pivotlist = stuff((select distinct ',[' + [Name] + ']' from vefn_GetGenMacMacros() - order by ',[' + [Name] + ']' for xml path('')),1,1,'') - DECLARE @query VARCHAR(max) - SET @query = 'SELECT * FROM (Select Name,''Format Description'' Path, Description From Formats) T1 PIVOT ( Max(Description) FOR [Name] IN (' + @pivotlist + ') ) As Pivot2' - EXECUTE(@query) - SET @query = 'SELECT * FROM (Select Name,''FormatID'' Path, FormatID From Formats) T1 PIVOT ( Max(FormatID) FOR [Name] IN (' + @pivotlist + ') ) As Pivot2' - EXECUTE(@query) - SET @query = 'SELECT * FROM (Select Name,MacroName From vefn_GetGenMacMacros()) T1 PIVOT ( Count(Name) FOR [Name] IN (' + @pivotlist + ') ) AS Pivot1 ORDER BY MacroName' - print @Query - EXECUTE(@query) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetGenMacMacros Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetGenMacMacros Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListChildren]; -GO - --- vesp_ListChildren 17 --- drop procedure [getItemAndChildren] -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListChildren] (@ItemID int) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListChildren Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListContentPath] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListContentPath]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListContentPath]; -GO - --- vesp_ListContentPath 148 -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create PROCEDURE [dbo].[vesp_ListContentPath] - ( - @ContentID int - ) -WITH EXECUTE AS OWNER -AS -BEGIN -with ContentZ(BaseID,ContentID,ItemID,Number,Text,Item,Level,PreviousID) as ( - Select II.ItemID,CC.ContentID,II.ItemID,CC.Number,CC.Text,1,1,II.PreviousID - from Items II join Contents CC on CC.ContentID=II.ContentID where @ContentID=II.ContentID - Union All --- - Select BaseID,CC.ContentID,II.ItemID,CC.Number,CC.Text,ZZ.Item+1,ZZ.Level,II.PreviousID - FROM ContentZ ZZ - Join Items II on II.ItemID = ZZ.PreviousID - Join Contents CC on II.ContentID = CC.ContentID - where ZZ.PreviousID is not null - Union All - Select BaseID,CC.ContentID,II.ItemID,CC.Number,CC.Text,1,ZZ.Level+1,II.PreviousID - FROM ContentZ ZZ - Join Parts PP on ZZ.ItemID = PP.ItemID - Join Contents CC on PP.ContentID = CC.ContentID - Join Items II on II.ContentID = CC.ContentID - where ZZ.PreviousID is null --and ZZ.ItemID in(717,715,711,662) -) -Select ZZ.BaseID,ZZ.Level,MaxItem,ZZ.Number,ZZ.Text from ContentZ ZZ -join (select BaseID, Level, max(item) MaxItem from ContentZ group by BaseID,Level) T1 on T1.BaseID=ZZ.BaseID and T1.Level = ZZ.Level -where Item=1 -order by ZZ.BaseID,ZZ.Level Desc, Item Desc -OPTION (MAXRECURSION 10000) -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListContentPath Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListContentPath Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListContentsByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListContentsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListContentsByItemID]; -GO - ---vesp_ListContentsByItemID 1 - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListContentsByItemID] -( -@ItemID int = 0 -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz(ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged]) as ( - Select ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged] - from Items - where ItemID=@ItemID - Union All --- - Select C.ItemID,C.PreviousID,C.ContentID,C.[DTS],C.[UserID],C.[LastChanged] - from Items C - Join Itemz Z on C.PreviousID=Z.ItemID -) - SELECT - cc.[ContentID], - cc.[Number], - cc.[Text], - cc.[Type], - cc.[FormatID], - cc.[Config], - cc.[DTS], - cc.[UserID], - cc.[LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=cc.[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=cc.[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=cc.[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=cc.[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=cc.[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=cc.[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=cc.[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=cc.[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=cc.[ContentID]) [ZContentCount] - FROM [Contents] cc - join itemz zz on cc.contentid=zz.contentid -OPTION (MAXRECURSION 1000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListContentsByItemID Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListContentsByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemAndChildren]; -GO - --- vesp_ListItemAndChildren 1,0 --- drop procedure [vesp_ListItemAndChildren] -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemAndChildren] (@ItemID int, @ParentID int) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItems]; -GO - ---vesp_ListItems 1 - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItems] -( -@ItemID int = 0 -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz(ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged]) as ( - Select ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged] - from Items - where ItemID=@ItemID - Union All --- - Select C.ItemID,C.PreviousID,C.ContentID,C.[DTS],C.[UserID],C.[LastChanged] - from Items C - Join Itemz Z on C.PreviousID=Z.ItemID -) -Select ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[Itemz].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[Itemz].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[Itemz].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[Itemz].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[Itemz].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[Itemz].[ItemID]) [Transition_ToIDCount] -from Itemz -OPTION (MAXRECURSION 1000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItems Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItems Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListItemsAndContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsAndContent]; -GO - ---vesp_ListItemsAndContent 1 - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsAndContent] -( -@ItemID int = 0 -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz(ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged]) as ( - Select ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged] - from Items - where ItemID=@ItemID - Union All --- - Select I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged] - from Items I - Join Itemz Z on I.PreviousID=Z.ItemID -) -Select I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] -from Itemz I Join Contents C on I.ContentID = C.ContentID -OPTION (MAXRECURSION 1000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsAndContent Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsAndContent Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListTables] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListTables]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListTables]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create procedure [dbo].[vesp_ListTables] -WITH EXECUTE AS OWNER -AS -begin -select o.name TableName,c.name ColumnName, -case c.xtype - when 56 then 'int' - when 231 then 'nvarchar(' + case c.length when -1 then 'Max' else cast(c.length/2 as varchar(10)) end + ')' - when 165 then 'varbinary(' + case c.length when -1 then 'Max' else cast(c.length as varchar(10)) end + ')' - when 239 then 'nchar(' + case c.length when -1 then 'Max' else cast(c.length/2 as varchar(10)) end + ')' - when 175 then 'char(' + case c.length when -1 then 'Max' else cast(c.length as varchar(10)) end + ')' - when 61 then 'datetime' - when 104 then 'bit' - when 48 then 'TinyInt' - when 189 then 'timestamp' - else '???' + cast(c.xtype as varchar(10)) end ItemType, - case when c.isnullable=1 then 'Yes' else '' end AllowNulls, - case when c.colstat=1 then 'Identity' else dc.definition end DefaultValue -from sysobjects o -join syscolumns c on o.id=c.id -left join sysconstraints cn on o.id=cn.id and c.colid=cn.colid -left join sys.default_constraints dc on dc.object_id = cn.constid -where o.xtype='U' -order by o.name,c.colid -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListTables Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListTables Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListTables2] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListTables2]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListTables2]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create procedure [dbo].[vesp_ListTables2] -WITH EXECUTE AS OWNER -AS -begin -select o.name TableName,c.name ColumnName, -case c.xtype - when 56 then 'int' - when 231 then 'nvarchar' - when 165 then 'varbinary' - when 239 then 'nchar' - when 175 then 'char' - when 61 then 'datetime' - when 104 then 'bit' - when 48 then 'TinyInt' - when 189 then 'timestamp' - else '???' + cast(c.xtype as varchar(10)) end ItemType, -case c.xtype - when 56 then '0' - when 231 then case c.length when -1 then 'Max' else cast(c.length/2 as varchar(10)) end - when 165 then case c.length when -1 then 'Max' else cast(c.length/2 as varchar(10)) end - when 239 then case c.length when -1 then 'Max' else cast(c.length/2 as varchar(10)) end - when 175 then case c.length when -1 then 'Max' else cast(c.length/2 as varchar(10)) end - when 61 then '0' - when 104 then '0' - when 48 then '0' - when 189 then '0' - else '0' end ItemSize, - - case when c.isnullable=1 then 'Yes' else '' end AllowNulls, - case when c.colstat=1 then 'Identity' else dc.definition end DefaultValue -from sysobjects o -join syscolumns c on o.id=c.id -left join sysconstraints cn on o.id=cn.id and c.colid=cn.colid -left join sys.default_constraints dc on dc.object_id = cn.constid -where o.xtype='U' -order by o.name,c.colid -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListTables2 Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListTables2 Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListTables3] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListTables3]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListTables3]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE procedure [dbo].[vesp_ListTables3] -WITH EXECUTE AS OWNER -AS -begin -select o.name TableName,c.name ColumnName, -case c.system_type_id - when 56 then 'int' - when 231 then 'nvarchar' - when 165 then 'varbinary' - when 167 then 'varchar' - when 239 then 'nchar' - when 175 then 'char' - when 61 then 'datetime' - when 104 then 'bit' - when 48 then 'TinyInt' - when 189 then 'timestamp' - else '???' + cast(c.system_type_id as varchar(10)) end ItemType, -case c.system_type_id - when 56 then '0' - when 231 then case c.max_length when -1 then 'Max' else cast(c.max_length/2 as varchar(10)) end - when 165 then case c.max_length when -1 then 'Max' else cast(c.max_length as varchar(10)) end - when 167 then case c.max_length when -1 then 'Max' else cast(c.max_length as varchar(10)) end - when 239 then case c.max_length when -1 then 'Max' else cast(c.max_length/2 as varchar(10)) end - when 175 then case c.max_length when -1 then 'Max' else cast(c.max_length as varchar(10)) end - when 61 then '0' - when 104 then '0' - when 48 then '0' - when 189 then '0' - else '0' end ItemSize, - - case when c.is_nullable=1 then 'Yes' else '' end AllowNulls, - case when c.is_identity=1 then 'Identity' else dc.definition end DefaultValue, - x.value Description -from sys.objects o -join sys.columns c on o.object_id=c.object_id -left join sysconstraints cn on o.object_id=cn.id and c.column_id=cn.colid -left join sys.default_constraints dc on dc.object_id = cn.constid -left join sys.extended_properties x on x.major_id = o.OBJECT_ID AND x.minor_id=c.column_id AND x.Name='MS_Description' -where o.type='U' -order by o.name,c.column_id -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListTables3 Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListTables3 Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ResetFolderManualOrder] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ResetFolderManualOrder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ResetFolderManualOrder]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ResetFolderManualOrder] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION -update fld - set Fld.ManualOrder =Fld.MyRow -from (Select ROW_NUMBER() OVER(Partition by ParentID Order BY FolderID) MyRow,* from folders ) fld - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ResetFolderManualOrder Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ResetFolderManualOrder Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SearchAnnotationItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchAnnotationItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SearchAnnotationItemAndChildren]; -GO - -/* -exec vesp_SearchAnnotationItemAndChildren Null,Null,'1',Null,0,"3-" -exec vesp_SearchAnnotationItemAndChildren Null,Null,'2',Null,0 -exec vesp_SearchAnnotationItemAndChildren Null,Null,'3',Null,0 -exec vesp_SearchAnnotationItemAndChildren Null,Null,'4',Null,0 -exec vesp_SearchAnnotationItemAndChildren Null,Null,'5',Null,0 -exec vesp_SearchAnnotationItemAndChildren Null,Null,'',Null,0 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchAnnotationItemAndChildren] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), @AnnotationTypeList varchar(MAX), @SearchString nvarchar(MAX), @CaseSensitive as int, @UnitPrefix nvarchar(MAX)) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) -begin -with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], - [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath) as ( - Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], - Cast('' as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text else '1' end as nvarchar(max)) Path, - 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text - when 1 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(3)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001' - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - ,PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text - when 1 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text - else case when Path like '%.%' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4) - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 -) -select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged],AnnotationID SearchAnnotationID, SearchText, TT.Name AnnotationType, - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - left join Entries E on C.ContentID = E.ContentID - left join Documents D on E.DocID = D.DocID - join Annotations A on A.ItemID = I.ItemID - join vefn_AnnotationTypeSplit(@AnnotationTypeList) TT on TT.TypeID=A.TypeID -where - (isnull(@SearchString,'')='' - OR (@CaseSensitive = 1 AND A.SearchText like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) - OR (@CaseSensitive = 0 AND A.SearchText like @SearchString Collate SQL_Latin1_General_CP1_CI_AS)) - AND - ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) - or - ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - or - (@StepTypeList like '%20040%' AND IsRNO = -1))) - order by DvPath,OrdinalPath -OPTION (MAXRECURSION 10000) -END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchAnnotationItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchAnnotationItemAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SearchItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SearchItemAndChildren]; -GO - -/* -exec vesp_SearchItemAndChildren '1,2,4','20007','#Link:Transition',1,0,0,0 -exec vesp_SearchItemAndChildren '1,2,4','20007','#Link:Transition',1,1,0,0 -exec vesp_SearchItemAndChildren '1,2,4','20007','#Link:Transition',1,2,0,0 -exec vesp_SearchItemAndChildren '4','','#Link:Refer',1,2,0,0 -exec vesp_SearchItemAndChildren '4','','200`F',0,1,0,0 -exec vesp_SearchItemAndChildren '4','10000','',0,0,0,0 -exec vesp_SearchItemAndChildren '4','','[0-9]`F',0,1,0,0 -exec vesp_SearchItemAndChildren '','','RCP',0,0,0,0 -exec vesp_SearchItemAndChildren '','','%',0,0,0,0 -exec vesp_SearchItemAndChildren '','20040','',0,0,0,0 -exec vesp_SearchItemAndChildren '','10000','XYZZY',0,0,0,0 -exec vesp_SearchItemAndChildren '','10000','XYZZY',1,0,0,0 -exec vesp_SearchItemAndChildren '','','%IF%',0,0,0,0 -exec vesp_SearchItemAndChildren '','','%IF%',1,0,0,0 -exec vesp_SearchItemAndChildren '','','%47%',1,0,0,0 -exec vesp_SearchItemAndChildren '','','%47%',1,0,0,1 -exec vesp_SearchItemAndChildren '','','condenser not av',0,0,0,0 -exec vesp_SearchItemAndChildren '','','(SG OR LHSI) AND DISPATCH',2,0,0,0 -exec vesp_SearchItemAndChildren '','','DISPATCH NEAR SG',2,0,0,0 -exec vesp_SearchItemAndChildren '','','PORV NEAR SG',2,0,0,0 -exec vesp_SearchItemAndChildren '','','CHECK NORMAL',0,0,0,0 -exec vesp_SearchItemAndChildren '','','turbine-driven',0,0,0,0 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchItemAndChildren] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), -@SearchString varchar(MAX), @CaseSensitive as int, @IncludeLinks as int, @IncludeRtfFormatting as int, @IncludeSpecialCharacters as int, @UnitPrefix as varchar(MAX)) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) -begin -with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], - [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath) as ( - Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], - Cast('' as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text else '1' end as nvarchar(max)) Path, - 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text - when 1 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(3)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001' - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - ,PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text - when 1 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text - else case when Path like '%.%' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4) - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 -) -select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - left join Entries E on C.ContentID = E.ContentID - left join Documents D on E.DocID = D.DocID - where - (isnull(@SearchString,'')='' - OR (@CaseSensitive = 1 AND .dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) - OR (@CaseSensitive = 0 AND .dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS) - OR (@CaseSensitive = 1 AND D.DocAscii like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) - OR (@CaseSensitive = 0 AND D.DocAscii like @SearchString Collate SQL_Latin1_General_CP1_CI_AS) - ) - AND - ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) - or - ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - or - (@StepTypeList like '%20040%' AND IsRNO = -1))) - order by DvPath,OrdinalPath -OPTION (MAXRECURSION 10000) -END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchItemAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SearchItemAndChildrenNew] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchItemAndChildrenNew]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SearchItemAndChildrenNew]; -GO - -/* -exec vesp_SearchItemAndChildrenNew '1,2,4','20007','#Link:Transition',1,0,0,0 -exec vesp_SearchItemAndChildrenNew '1,2,4','20007','#Link:Transition',1,1,0,0 -exec vesp_SearchItemAndChildrenNew '1,2,4','20007','#Link:Transition',1,2,0,0 -exec vesp_SearchItemAndChildrenNew '4','','#Link:Refer',1,2,0,0 -exec vesp_SearchItemAndChildrenNew '4','','200`F',0,1,0,0 -exec vesp_SearchItemAndChildrenNew '4','10000','',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '4','','[0-9]`F',0,1,0,0 -exec vesp_SearchItemAndChildrenNew '1','','"RCP"',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','"RCP"',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','20040','',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','10000','XYZZY',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','10000','XYZZY',1,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%IF%',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%IF%',1,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%47%',1,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%47%',1,0,0,1 -exec vesp_SearchItemAndChildrenNew '','','condenser not av',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','(SG OR LHSI) AND DISPATCH',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','DISPATCH NEAR SG',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','PORV NEAR SG',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','CHECK NORMAL',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','(Resolved Transition Text)',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%turbine-driven%',0,0,0,0 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchItemAndChildrenNew] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), -@SearchString varchar(MAX), @CaseSensitive as int, @IncludeLinks as int, @IncludeRtfFormatting as int, @IncludeSpecialCharacters as int, @UnitPrefix as varchar(MAX)) -WITH EXECUTE AS OWNER -AS -select ZZ.DvPath, ZZ.Path, ZZ.[Level],ZZ.[FromType],ZZ.[Ordinal], ZZ.[ParentID], ZZ.[ItemID],ZZ.[PreviousID],ZZ.[ContentID],ZZ.[DTS],ZZ.[UserID] - ,II.[LastChanged] - ,CC.[Number],CC.[Text],CC.[Type],CC.[FormatID],CC.[Config],CC.[DTS] [cDTS],CC.[UserID] [cUserID] - ,CC.[LastChanged] [cLastChanged], - PP.[ContentID] [pContentID], PP.[DTS] [pDTS],PP.[UserID] [pUserID], PP.[LastChanged] [pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ZZ.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ZZ.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ZZ.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ZZ.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ZZ.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ZZ.[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=CC.[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=CC.[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=CC.[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=CC.[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=CC.[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=CC.[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=CC.[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=CC.[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=CC.[ContentID]) [ZContentCount] -from vefn_SiblingAndChildrenItems(@DocVersionList, @UnitPrefix) ZZ - Join Items II on ZZ.ItemID=II.ItemID - Left Join Parts PP on ZZ.PContentID=PP.ContentID and ZZ.FromType = PP.FromType - Join Contents CC on CC.ContentID=ZZ.ContentID -where ZZ.ContentID in (select ContentID from vefn_FindText(@DocVersionList,@SearchString,@CaseSensitive,@IncludeLinks,@IncludeRtfFormatting,@IncludeSpecialCharacters,@StepTypeList)) - order by DvPath,OrdinalPath -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchItemAndChildrenNew Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchItemAndChildrenNew Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SearchROItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchROItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SearchROItemAndChildren]; -GO - -/* -exec vesp_SearchROItemAndChildren '1,2,4','20007','1:00010000019C,0001000002AE' -exec vesp_SearchROItemAndChildren '1,2,4','','1:00010000019C,0001000002AE' -exec vesp_SearchROItemAndChildren '1,2,4','20007','1:0001' -exec vesp_SearchROItemAndChildren '1,2,4','20006','1' -exec vesp_SearchROItemAndChildren '1,2,4','20006','' -exec vesp_SearchROItemAndChildren '1,2,4',Null,Null -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchROItemAndChildren] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), @ROSearchString varchar(MAX), @UnitPrefix as varchar(MAX)) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -begin -with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], - [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath) as ( - Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], - Cast('' as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text else '1' end as nvarchar(max)) Path, - 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath - - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - --Path + case when Z.FromType < 3 then @Delim else @DelimStep end + case C.Type/10000 - Path + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text - when 1 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(3)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001' - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - ,PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text - when 1 then @Delim + @UnitPrefix + C.Number + @DelimNumber + C.Text - else case when Path like '%.%' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4) - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 -) -select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - left join Entries E on C.ContentID = E.ContentID - left join Documents D on E.DocID = D.DocID - where - I.ContentID in(select ContentID from ROUsages RU - join vefn_SplitROSearch(@ROSearchString) RR - ON RR.RODBID = RU.RODBID and - RU.ROID like RR.ROID + '%' Collate SQL_Latin1_General_CP1_CI_AS -UNION -select Distinct ContentID from Entries EE - Join DROUsages RU on RU.DocID = EE.DocID - join vefn_SplitROSearch(@ROSearchString) RR - ON RR.RODBID = RU.RODBID and - RU.ROID = RR.ROID) - AND - ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) - or - ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - or - (@StepTypeList like '%20040%' AND IsRNO = -1))) - order by DvPath,OrdinalPath -OPTION (MAXRECURSION 10000) -END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchROItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchROItemAndChildren Error on Creation' -GO - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranFrom]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsTranFrom]; -GO -/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranFrom] Script Date: 10/03/2012 10:06:38 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsTranFrom] -WITH EXECUTE AS OWNER -AS -begin - -Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=I.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=I.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=I.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=I.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=I.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=I.[ItemID]) [Transition_ToIDCount] -from Items I -join Transitions T on I.ContentID = T.FromID -END -GO - -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranFrom Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsTranFrom Error on Creation' -GO - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranTo]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsTranTo]; -GO -/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranTo] Script Date: 10/03/2012 10:08:03 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsTranTo] -WITH EXECUTE AS OWNER -AS -begin -with Itemz(ItemID, ContentID, PreviousID, [Type]) as ( - Select Distinct ItemID, C.ContentID, PreviousID, C.Type - FROM [Items] I - Join Contents C on C.ContentID = I.ContentID - JOIN Transitions T on t.ToID = I.ItemID or t.RangeID = I.ItemID - --where [ItemID]=@ItemID -Union ALL --- Parent - select I.ItemID,I.ContentID, I.PreviousID, C.Type - from Itemz Z - join Parts P on P.ItemID = Z.ItemID - join Items I on I.ContentID = P.ContentID - Join Contents C on C.ContentID = I.ContentID --- Previous -Union ALL - select I.ItemID,I.ContentID, I.PreviousID, C.Type - from Itemz Z - join Items I on Z.PreviousID = I.ItemID - Join Contents C on C.ContentID = I.ContentID - where Z.Type >= 10000 -) -Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=Z.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=Z.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=Z.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=Z.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=Z.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=Z.[ItemID]) [Transition_ToIDCount] -from Itemz Z join Items I on I.ItemID = Z.ItemID -OPTION (MAXRECURSION 1000) -END -GO - -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranTo Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsTranTo Error on Creation' -GO - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranFromAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsTranFromAndContent]; -GO -/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranFromAndContent] Script Date: 10/03/2012 10:52:31 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsTranFromAndContent] -WITH EXECUTE AS OWNER -AS -begin - -Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] -from Items I Join Contents C on I.ContentID = C.ContentID -join Transitions T on I.ContentID = T.FromID -END -GO -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranFromAndContent Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsTranFromAndContent Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranToAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsTranToAndContent]; -GO -GO -/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranToAndContent] Script Date: 10/03/2012 10:08:17 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsTranToAndContent] -WITH EXECUTE AS OWNER -AS -begin -with Itemz(ItemID, ContentID, PreviousID, [Type]) as ( - Select Distinct ItemID, C.ContentID, PreviousID, C.Type - FROM [Items] I - Join Contents C on C.ContentID = I.ContentID - JOIN Transitions T on t.ToID = I.ItemID or t.RangeID = I.ItemID - --where [ItemID]=@ItemID -Union ALL --- Parent - select I.ItemID,I.ContentID, I.PreviousID, C.Type - from Itemz Z - join Parts P on P.ItemID = Z.ItemID - join Items I on I.ContentID = P.ContentID - Join Contents C on C.ContentID = I.ContentID --- Previous -Union ALL - select I.ItemID,I.ContentID, I.PreviousID, C.Type - from Itemz Z - join Items I on Z.PreviousID = I.ItemID - Join Contents C on C.ContentID = I.ContentID - where Z.Type >= 10000 -) -Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] -from Itemz Z -Join Items I on Z.ItemID = I.ItemID -Join Contents C on I.ContentID = C.ContentID -OPTION (MAXRECURSION 1000) -END -GO - -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranToAndContent Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsTranToAndContent Error on Creation' -GO -/****** Object: StoredProcedure [vesp_TurnChangeManagerOFF] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_TurnChangeManagerOFF]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_TurnChangeManagerOFF]; -GO -/****** Object: StoredProcedure [dbo].[vesp_TurnChangeManagerOFF] Script Date: 03/20/2012 16:02:54 ******/ -/* -exec vesp_TurnChangeManagerOFF -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_TurnChangeManagerOFF] WITH EXECUTE AS OWNER AS -BEGIN - PRINT 'NOTHING TO DO' -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_TurnChangeManagerOFF Succeeded' -ELSE PRINT 'Procedure Creation: vesp_TurnChangeManagerOFF Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_TurnChangeManagerON] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_TurnChangeManagerON]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_TurnChangeManagerON]; -GO -/****** Object: StoredProcedure [dbo].[vesp_TurnChangeManagerON] Script Date: 03/20/2012 16:02:54 ******/ -/* -exec vesp_TurnChangeManagerON -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_TurnChangeManagerON] WITH EXECUTE AS OWNER AS -BEGIN - PRINT 'NOTHING TO DO' -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_TurnChangeManagerON Succeeded' -ELSE PRINT 'Procedure Creation: vesp_TurnChangeManagerON Error on Creation' -GO diff --git a/PROMS/DataLoader/PROMSApproveApprove.sql b/PROMS/DataLoader/PROMSApproveApprove.sql deleted file mode 100644 index 69e39ebb..00000000 Binary files a/PROMS/DataLoader/PROMSApproveApprove.sql and /dev/null differ diff --git a/PROMS/DataLoader/PROMSFixes.Sql b/PROMS/DataLoader/PROMSFixes.Sql deleted file mode 100644 index dc4a33b0..00000000 --- a/PROMS/DataLoader/PROMSFixes.Sql +++ /dev/null @@ -1,21997 +0,0 @@ - - -Set NoCount On; - -If (db_name() in('master','model','msdn','tempdb')) -begin - DECLARE @ErrorMsg varchar(255) - SET @ErrorMsg = 'Don''t add these procedures and functions to ' + db_name() - PRINT '==========================================================================' - PRINT '' - PRINT @ErrorMsg - PRINT '' - PRINT 'You probably want to be in the VEPROMS database' - PRINT '' - PRINT '==========================================================================' - RAISERROR (@ErrorMsg, 20, -1) with log - RETURN -end -print 'Adding procedures and functions to ' + db_name() - - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemReplace]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [PasteItemReplace]; -GO -/****** Object: StoredProcedure [dbo].[PasteItemReplace] Script Date: 03/20/2012 16:02:54 ******/ -/* -declare @NewItemID int -declare @dts datetime -set @newitemid = 0 -set @dts = getdate() -exec PasteItemReplace 398,397,20014,@dts,'bodine',@NewItemID output -*/ --- ItemID is item to replace --- StartItemID is item to copy -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[PasteItemReplace] -( - @ItemID int=null, @StartItemID int=null, - @Type int=null, @DTS datetime, @UserID nvarchar(100), - @NewItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @ContentID AS INT - DECLARE @NextItemID AS INT - DECLARE @PreviousItemID AS INT - DECLARE @ExternalChildCount AS INT - DECLARE @ExternalCount AS INT - DECLARE @Path AS VARCHAR(MAX) - DECLARE @Children AS TABLE - ( - ItemID INT PRIMARY KEY, - ContentID INT - ) - - if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0) - BEGIN - RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1) - RETURN - END - -- First check if the replaced item can be deleted, i.e. it doesn't have transitions - -- pointing to it or children. - - DECLARE @ExternalTrans TABLE - ( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL - ) - SET NOCOUNT ON - DECLARE @DeleteID int - INSERT INTO DeleteLog (UserID) VALUES (@UserID) - SELECT @DeleteID = SCOPE_IDENTITY() - SELECT @ContentID = ContentID, @PreviousItemID = PreviousID FROM Items WHERE ItemID = @ItemID - SELECT @NextItemID = ItemID FROM Items WHERE PreviousID = @ItemID - --SELECT @ExternalCount = count(*) FROM vefn_FindExternalTransitions(@ItemID) - SELECT @ExternalChildCount = count(*) FROM vefn_FindExternalChildTransitions(@ItemID) - SET @Path = [dbo].[ve_GetShortPath](@ItemID) - - --IF @ExternalCount > 0 AND @NextItemID is null - --BEGIN - -- RAISERROR ('###Cannot Delete Item###Step %d has External Transitions and has no next step - (%s)',16,1,@ItemID,@Path) - -- RETURN - --END - - IF @ExternalChildCount > 0 - BEGIN - RAISERROR ('###Cannot Delete Item###Step %d has External Transitions to it''s children - (%s)',16,1,@ItemID,@Path) - RETURN - END - - -- Copy the item, 'NewItemID' represents the new item(s) - -- DestFormatID is the formatid for the destination parent's format - DECLARE @DestFormatID int - SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - - -- Adjust the next/previous to point to the new item - - DECLARE @PreviousID int - SELECT @PreviousID = [PreviousID] - FROM [ITEMS] II - WHERE [ItemID]=@ItemID - UPDATE [ITEMS] SET [PreviousID]=@PreviousID where [ItemID]=@NewItemID - UPDATE [CONTENTS] SET [Type]=@Type - FROM [CONTENTS] CC JOIN [ITEMS] ii ON CC.[ContentID]=II.[ContentID] - WHERE [ItemID]=@NewItemID - UPDATE [ITEMS] SET [PreviousID]=@NewItemID where [PreviousID]=@ItemID - UPDATE [PARTS] SET [ItemID]=@NewItemID where [ItemID]=@ItemID - - -- UPDATE DocVersion if this was a procedure - UPDATE DocVersions SET ItemID=@NewItemID where ItemID = @ItemID - - -- If there were 'external transitions' that pointed to the original - -- top replaced step, adjust them to point to the new top. - INSERT INTO @ExternalTrans SELECT * FROM vefn_FindExternalTransitions(@ItemID) - OPTION (MAXRECURSION 10000) - IF (SELECT COUNT(*) from @ExternalTrans) > 0 - BEGIN - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NewItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TransitionID in(Select TransitionID from @ExternalTrans) - -- Update transitions that point to @ItemID to Point to @NextItemID - UPDATE TRANSITIONS - SET ToID = case when ToID = @ItemID then @NewItemID else ToID END, - RangeID = case when RangeID = @ItemID then @NewItemID else RangeID END - WHERE TransitionID in(Select TransitionID from @ExternalTrans) - - DECLARE @typeID int -- AnnotationType - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add 'Verification Required' annotions for transtions that pointed to top step - -- and need to point to - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Replaced Step Transition Destination',@UserID - FROM Items where ItemID in (SELECT FromItemID FROM @ExternalTrans) - - END - -- Remove the old one - - -- Get list of Children - INSERT INTO @Children SELECT * FROM vefn_ChildItems(@ItemID) - -- Delete Annotations for @ItemID and children - DELETE from Annotations where ItemID in(Select ItemID from @Children) - -- Delete Details associated with @ContentID and children - DELETE from Details where ContentID in(Select ContentID from @Children) - -- Delete Grids associated with @ContentID and children - DELETE from Grids where ContentID in(Select ContentID from @Children) - -- Delete Images associated with @ContentID and children - DELETE from Images where ContentID in(Select ContentID from @Children) - -- Delete Entries associated with @ContentID and children - DELETE from Entries where ContentID in(Select ContentID from @Children) - -- Delete ROUsages associated with @ContentID and children - DELETE from RoUsages where ContentID in(Select ContentID from @Children) - -- Delete ZTransitions records associated with @ContentID and children - DELETE FROM ZTransitions where TransitionID - in(SELECT TransitionID from Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID) - -- Delete Transitions associated with @ContentID and children - DELETE FROM Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID - -- Delete Parts associated with @ContentID and children - DELETE from Parts where ContentID in(Select ContentID from @Children) - -- Delete ZContents associated with @ContentID and children - DELETE from ZContents where ContentID in(Select ContentID from @Children) - -- Disconnect Items from Each Other - DELETE from Items where ItemID in(Select ItemID from @Children) and PreviousID Is Not Null - -- Disconnect Items to be deleted from each other - Update Items set PreviousID = null where ItemID in (Select ItemID from @Children) and PreviousID Is Not Null - -- Delete Item Records - DELETE from Items where ItemID in(Select ItemID from @Children) - -- DELETE Contents - DELETE from Contents where ContentID in(Select ContentID from @Children) ---delete from itemaudits where itemid = @newitemid -delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) ---delete from contentaudits where contentid = (select contentid from items where itemid = @newitemid) -delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) - DELETE from DeleteLog where DeleteID = @DeleteID - IF( @@TRANCOUNT > 0 ) COMMIT - EXECUTE GetItem @NewItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemReplace Succeeded' -ELSE PRINT 'Procedure Creation: PasteItemReplace Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChronologyReport]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChronologyReport]; -/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 03/20/2012 17:50:44 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/* -select * from vefn_chronologyreport(2) where type > 0 order by contentid,auditid -*/ -/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 05/18/2011 11:20:48 ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE function [dbo].[vefn_ChronologyReport](@ProcItemID int, @DTS datetime) -returns @Report table -( -src int, -AuditID bigint, -ContentID int, -Number nvarchar(512), -Text nvarchar(max), -Type int, -FormatID int, -Config nvarchar(max), -DTS datetime, -UserID nvarchar(200), -DeleteStatus int, -ActionDTS datetime, -ItemDTS datetime, -LastAuditID int, -DeletedAuditID int -) -WITH EXECUTE AS OWNER -AS -BEGIN ---added rhm/jcb 20121218i -declare @tmpTable table -( - icontentid int primary key -) -insert into @tmpTable select icontentid from vefn_tblchilditems(@ProcItemID,@ProcItemID,1) ---added jcb 20111122 ---declare @dts datetime ---set @dts = (select dts from items where itemid = @ProcItemID ) ---set @dts = (SELECT .[dbo].[vefn_GetPreviousRevisionDTSByItemID] (@ProcItemID)) ---end added jcb 20111122 - insert into @Report - SELECT -1 src, - [AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid - where Number is not null ---added jcb 20111028_1827 -and ca.contentid != (select contentid from items where itemid = @procitemid) -and ca.contentid in (select icontentid from @tmpTable) ---end added jcb 20111028_1827 ---added jcb 20111122 ---and ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > (select dts from items where itemid = @ProcItemID )) -and ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > @dts) ---and ca.dts > (select dts from items where itemid = @ProcItemID ) -and ca.dts > @dts ---end added jcb 20111122 --- UNION --- SELECT ---2 src, --- cast(ident_current('contentaudits') + 1 as bigint) auditid ----- (select max(auditid) + 1 from contentaudits) [AuditID] ----- 0 [AuditID] --- ,ca.[ContentID] --- ,[Number] --- ,[Text] --- ,[Type] --- ,[FormatID] --- ,[Config] --- ,ca.[DTS] cadts --- ,ca.[UserID] --- ,ca.[DeleteStatus] --- ,ActionDTS --- ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS ---,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID ---,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID --- FROM tblContents ca ----- inner join tblitems ti on ca.contentid = ti.contentid ---WHERE ca.DeleteStatus = 0 AND -----added jcb 20111028_1827 ---ca.contentid != (select contentid from items where itemid = @procitemid) and -----end added jcb 20111028_1827 -----ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > (select dts from items where itemid = @ProcItemID )) -----added jcb 20111122 -----ca.ContentID in (SELECT [ContentID] FROM Contents where dts > (select dts from items where itemid = @ProcItemID )) ---ca.ContentID in (SELECT [ContentID] FROM Contents where dts > @dts) -----end added jcb 20111122 -----order by ca.DTS,ActionDTS - UNION - SELECT -3 src, - cast(ident_current('contentaudits') + 1 as bigint) auditid --- (select max(auditid) + 1 from contentaudits) [AuditID] --- 0 [AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM tblContents ca --- inner join tblitems ti on ca.contentid = ti.contentid -WHERE ca.DeleteStatus = 0 AND ---added jcb 20111028_1827 -ca.contentid != (select contentid from items where itemid = @procitemid) -and ca.contentid in (select icontentid from @tmpTable) ---end added jcb 20111028_1827 ---added jcb 20111122 ---ca.dts > (select dts from items where itemid = @ProcItemID ) -and (ca.dts > @dts or ca.actiondts > @dts) ---end added jcb 20111122 - UNION - SELECT distinct -5 src, --- cast(ident_current('contentaudits') + 1 as bigint) auditid --- (select max(auditid) + 1 from contentaudits) [AuditID] - ca.[AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid -WHERE ca.DeleteStatus > 0 ---added jcb 20111028_1827 - --ca.contentid != (select contentid from items where itemid = @procitemid) and ---end added jcb 20111028_1827 ---added jcb 20111122 ---ca.dts > (select dts from items where itemid = @ProcItemID ) -and ca.contentid in (select icontentid from @tmpTable) -and (ca.dts > @dts or ca.actiondts > @dts) ---end added jcb 20111122 -order by ca.DTS,ActionDTS - - insert into @Report - SELECT -4 src, - ca.[AuditID] - ,ca.[ContentID] - ,ca.[Number] - ,ca.[Text] - ,ca.[Type] - ,ca.[FormatID] - ,ca.[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ca.ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid - inner join @Report rpt on ca.contentid = rpt.contentid and ca.auditid = rpt.lastauditid -where ca.auditid not in (select auditid from @report) -and rpt.lastauditid is not null -and ca.contentid in (select icontentid from @tmpTable) - return -end -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_ChronologyReport Succeeded' -ELSE PRINT 'Function: vefn_ChronologyReport Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemSiblingAfter]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [PasteItemSiblingAfter]; -GO -/****** Object: StoredProcedure [dbo].[PasteItemSiblingAfter] Script Date: 03/21/2012 15:25:31 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[PasteItemSiblingAfter] -( - @ItemID int=null, @StartItemID int=null, -- ItemID is destination, StartItemID is top of copy - @Type int=null, @DTS datetime, @UserID nvarchar(100), - @NewItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0) - BEGIN - RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1) - RETURN - END - -- First make a copy of the input StartItemID - -- DestFormatID is the formatid for the destination parent's format - DECLARE @DestFormatID int - SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - -- Adjust previous field - DECLARE @NextID int - SELECT @NextID = [ItemID] - FROM [ITEMS] - WHERE [PreviousID]=@ItemID - IF @NextID is not null -- step after the copy point. Adjust it's previous to point to the new step - BEGIN - UPDATE [ITEMS] SET [PreviousID]=@NewItemID, [DTS]=@DTS, [UserID]=@UserID where [ItemID]=@NextID - END - UPDATE [ITEMS] SET [PreviousID]=@ItemID where [ItemID]=@NewItemID - UPDATE [CONTENTS] SET [Type]=@Type - FROM [CONTENTS] CC JOIN [ITEMS] ii ON CC.[ContentID]=II.[ContentID] - WHERE [ItemID]=@NewItemID - - - -- Check for Transitions that point to the Next Step - BEGIN - -- Get a list of Transitions which need to change children of @ItemID that point to @NextID - DECLARE @NextStepTransitions TABLE - ( - [TransitionID] int PRIMARY KEY, - [FromID] [int], - [ToID] [int], - [RangeID] [int], - [TranType] [int], - [Config] [nvarchar](max) - ) - Insert into @NextStepTransitions select * from vefn_NextStepTransitions(@NextID,@ItemID) - OPTION (MAXRECURSION 10000) - IF (SELECT COUNT(*) from @NextStepTransitions) > 0 -- Next Step Transitions - BEGIN - -- Update all transitions in the list to point to @newItemID - Update TT - Set TT.ToID = CASE TT.ToID WHEN @NextID THEN @NewItemID ELSE TT.ToID END, - TT.RangeID = CASE TT.RangeID WHEN @NextID THEN @NewItemID ELSE TT.RangeID END - From TRANSITIONS TT - JOIN @NextStepTransitions NS ON NS.TransitionID = TT.TransitionID - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,NS.TransitionID,NS.TranType,NS.ToID,NS.RangeID,@NextID,@NewItemID) - From CONTENTS CC - JOIN @NextStepTransitions NS ON NS.FromID = CC.ContentID - END - END - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Next Step Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@newItemID) OR RangeID IN(@newItemID)) - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@NextID) OR RangeID IN(@NextID)) - -- Transition Text gets updated in ItemInsertExt.cs - -delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) -delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) - IF( @@TRANCOUNT > 0 ) COMMIT - EXECUTE GetItem @NewItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemSiblingAfter Succeeded' -ELSE PRINT 'Procedure Creation: PasteItemSiblingAfter Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemSiblingBefore]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [PasteItemSiblingBefore]; -GO -/****** Object: StoredProcedure [dbo].[PasteItemSiblingBefore] Script Date: 03/21/2012 15:26:23 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[PasteItemSiblingBefore] -( - @ItemID int=null, @StartItemID int=null, - @Type int=null, @DTS datetime, @UserID nvarchar(100), - @NewItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0) - BEGIN - RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1) - RETURN - END - -- First make a copy of the input CopyStartID - -- DestFormatID is the formatid for the destination parent's format - DECLARE @DestFormatID int - SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - -- First adjust previous fields, may also have to do parts, if before first one in list. - DECLARE @PreviousID int, @ContentID int, @newLastChanged timestamp, @NewType int - SELECT @PreviousID = [PreviousID], @NewType=ISNULL(@Type,[Type]) - FROM [ITEMS] II - JOIN [CONTENTS] CC ON CC.[ContentID]=II.[CONTENTID] - WHERE [ItemID]=@ItemID - UPDATE [ITEMS] SET [PreviousID]=@NewItemID where [ItemID]=@ItemID - UPDATE [ITEMS] SET [PreviousID]=@PreviousID where [ItemID]=@NewItemID - UPDATE [CONTENTS] SET [Type]=@Type - FROM [CONTENTS] CC JOIN [ITEMS] ii ON CC.[ContentID]=II.[ContentID] - WHERE [ItemID]=@NewItemID - UPDATE [PARTS] SET [ItemID]=@NewItemID where [ItemID]=@ItemID - UPDATE [DOCVERSIONS] SET [ItemID] = @NewItemID where [ItemID]=@ItemID - - IF @PreviousID is null -- The step is replacing the first step - BEGIN - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NewItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TT.ToID = @ItemID OR TT.RangeID = @ItemID - -- Update transitions that pointed to @ItemID to point to @newItemID - Update TRANSITIONS - Set ToID = CASE ToID WHEN @ItemID THEN @NewItemID ELSE ToID END, - RangeID = CASE RangeID WHEN @ItemID THEN @NewItemID ELSE RangeID END - WHERE ToID = @ItemID OR RangeID = @ItemID - END - ELSE -- Check for Transitions that point to the Next Step - BEGIN - -- Get a list of Transitions which need to change children of @ItemID that point to @NextID - DECLARE @NextStepTransitions TABLE - ( - [TransitionID] int PRIMARY KEY, - [FromID] [int], - [ToID] [int], - [RangeID] [int], - [TranType] [int], - [Config] [nvarchar](max) - ) - Insert into @NextStepTransitions select * from vefn_NextStepTransitions(@ItemID,@PreviousID) - OPTION (MAXRECURSION 10000) - IF (SELECT COUNT(*) from @NextStepTransitions) > 0 -- Next Step Transitions - BEGIN - -- Update all transitions in the list to point to @newItemID - Update TT - Set TT.ToID = CASE TT.ToID WHEN @ItemID THEN @NewItemID ELSE TT.ToID END, - TT.RangeID = CASE TT.RangeID WHEN @ItemID THEN @NewItemID ELSE TT.RangeID END - From TRANSITIONS TT - JOIN @NextStepTransitions NS ON NS.TransitionID = TT.TransitionID - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,NS.TransitionID,NS.TranType,NS.ToID,NS.RangeID,@ItemID,@NewItemID) - From CONTENTS CC - JOIN @NextStepTransitions NS ON NS.FromID = CC.ContentID - END - END - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@ItemID,@NewItemID) OR RangeID IN(@ItemID,@NewItemID)) - -- Transition Text gets updated in ItemInsertExt.cs -delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) -delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) - IF( @@TRANCOUNT > 0 ) COMMIT - EXECUTE GetItem @NewItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemSiblingBefore Succeeded' -ELSE PRINT 'Procedure Creation: PasteItemSiblingBefore Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetMyChronology]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetMyChronology]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_GetMyChronology] Script Date: 11/07/2012 18:09:17 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetMyChronology](@ProcItemID int, @ItemID int, @IncludeDeletedChildren int, @DTS datetime) -RETURNS @Chrono TABLE -( -[AuditID] bigint, -[ContentID] int, -[Number] nvarchar(max), -[Text] nvarchar(max), -[Type] int, -[FormatID] int, -[Config] nvarchar(max), -[DTS] datetime, -[UserID] nvarchar(max), -[DeleteStatus] int, -[ActionDTS] datetime, -[ActionWhat] nvarchar(max), -[ActionWhen] datetime, -[Path] nvarchar(max), -ItemID int, -TypeName nvarchar(max), -ordinalpath nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -insert into @Chrono -select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath - from - ( - select - case - when lastauditid is null then 'Added' - when r.deletestatus > 0 then 'Deleted' - when lastauditid = -1 then 'Changed' - when DeletedAuditID is not null then 'Restored' --- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' - else 'Changed' - end actionwhat -,actiondts actionwhen --- ,case --- when lastauditid is null then dts --- when r.deletestatus > 0 then ActionDTS --- when lastauditid = -1 then dts --- when DeletedAuditID is not null then ActionDTS --- else dts --- end actionwhen -,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName - ,* - from vefn_tblchilditems (@ProcItemID,@ItemID,@IncludeDeletedChildren) t - inner join vefn_chronologyreport(@ProcItemID,@DTS) r - on t.icontentid = r.contentid --- where ActionDTS > procdts or dts > procdts - ) ah - order by OrdinalPath, contentid,auditid--actionwhen - RETURN -END -go -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetMyChronology] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetMyChronology] Error on Creation' -go - -/****** Object: StoredProcedure [dbo].[getContentAuditsChronologyByItemID] Script Date: 03/21/2012 15:58:26 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsChronologyByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [getContentAuditsChronologyByItemID]; -GO -/****** Object: StoredProcedure [getContentAuditsChronologyByItemID] ******/ -/* -getContentAuditsChronologyByItemID 10154,10154,0 -getContentAuditsChronologyByItemID 42,42,0 -getContentAuditsChronologyByItemID 9,9,0 -getContentAuditsChronologyByItemID 146,146,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsChronologyByItemID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin - select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) --- select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah --- order by OrdinalPath, contentid,auditid--actionwhen - RETURN -end -go --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [getContentAuditsChronologyByItemID] Succeeded' -ELSE PRINT 'StoredProcedure [getContentAuditsChronologyByItemID] Error on Creation' -go - -/****** Object: StoredProcedure [getContentAuditsSummaryByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsSummaryByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAuditsSummaryByItemID]; -GO - -/****** Object: StoredProcedure [getContentAuditsSummaryByItemID] ******/ -/* -getContentAuditsSummaryByItemID 146,146,0 -getContentAuditsSummaryByItemID 42,42,0 -getContentAuditsSummaryByItemID 9,9,0 -getContentAuditsSummaryByItemID 146,146,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsSummaryByItemID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin -DECLARE @Chrono TABLE -( -[AuditID] bigint, -[ContentID] int, -[Number] nvarchar(max), -[Text] nvarchar(max), -[Type] int, -[FormatID] int, -[Config] nvarchar(max), -[DTS] datetime, -[UserID] nvarchar(max), -[DeleteStatus] int, -[ActionDTS] datetime, -[ActionWhat] nvarchar(max), -[ActionWhen] datetime, -[Path] nvarchar(max), -ItemID int, -TypeName nvarchar(max), -ordinalpath nvarchar(max) -) -insert into @Chrono -select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) -select * from @Chrono -where AuditID is null OR AuditID in (select min(auditID) from @Chrono group by contentid UNION select max(auditID) from @Chrono group by contentid) -order by OrdinalPath, contentid,auditid ---select z.* from ---( ---select contentid,min(auditid) auditid from ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) x ---group by contentid ---) y ---inner join ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) z on y.contentid = z.contentid and y.auditid = z.auditid ---union ---select z.* from ---( ---select contentid,max(auditid) auditid from ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) x ---group by contentid ---) y ---inner join ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) z on y.contentid = z.contentid and y.auditid = z.auditid --- order by OrdinalPath, contentid,auditid--actionwhen - RETURN -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsSummaryByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getContentAuditsSummaryByItemID Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixSearchString]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FixSearchString]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_FixSearchString] Script Date: 03/26/2012 09:31:13 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/* -select ID,ss,.dbo.vefn_FixSearchString(ss) -from ( -select 1 ID,'*' ss union -select 2 ID,'50%' ss union -select 3 ID,'IF*' ss union -select 4 ID,'*then:' ss union -select 5 ID,'530`F' ss union -select 6 ID,'check' ss union -select 7 ID,'RCP*Cooling' ss union -select 8 ID,'14%[34%]' ss union -select 9 ID,'\*' ss union -select 10 ID,'\?' ss union -select 11 ID,'_' ss union -select 12 ID,'[' ss union -select 13 ID,']' ss union -select 14 ID,'%' ss union -select 15 ID,'_' ss union -select 16 ID,'-' ss union -select 17 ID,'%' ss union -select 18 ID,'C* - *' ss union -select 19 ID,'' ss union -select 20 ID,null ss -) tt order by ID -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FixSearchString](@SearchString nvarchar(MAX)) -RETURNS nvarchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN - -- This code adds % at the beginning and end if the beginning and end - -- of the search string if it does not have % at the beginning or end - Set @SearchString = replace(@SearchString,'[','[[]') - Set @SearchString = replace(@SearchString,'_','[_]') - Set @SearchString = replace(@SearchString,'%','[%]') - Set @SearchString = replace(@SearchString,'*','%') - Set @SearchString = replace(@SearchString,'?','_') - Set @SearchString = replace(@SearchString,'\%','*') - Set @SearchString = replace(@SearchString,'\_','?') - Set @SearchString = replace(@SearchString,'-','\u8209?') - Set @SearchString = replace(@SearchString,'\''A9','\u169?') -- copyright symbol - Set @SearchString = replace(@SearchString,'\''AE','\u174?') -- Register symbol - Set @SearchString = replace(@SearchString,'\\line ','\line ') -- newline - Set @SearchString = replace(@SearchString,'\\','\u9586?') -- use a double backslash to search for a backslash - IF(@SearchString like '[%]%') RETURN @SearchString - IF(@SearchString like '%[%]') RETURN @SearchString - Set @SearchString = replace('%' + @SearchString + '%','%%','%') - RETURN @SearchString -END -GO --- Display the status -IF (@@Error = 0) PRINT 'ScalerFunction [vefn_FixSearchString] Succeeded' -ELSE PRINT 'ScalerFunction [vefn_FixSearchString] Error on Creation' -go - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[restoreDeletedItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [restoreDeletedItem]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -restoreDeletedItem 10133,1,10130,2 -select dbo.ve_GetPartContentID(10133) -select dbo.ve_GetPartFromType(10133) -select itemid from parts where contentid = 10126 and fromtype = 6 -SELECT ItemID FROM PartAudits WHERE DeleteStatus = 1 - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[restoreDeletedItem] -( - @ItemID int, - @DeleteID int, - @CurrentID int, - @Level int -) - -WITH EXECUTE AS OWNER -AS - DECLARE @PreviousID int - declare @oldPreviousID int - DECLARE @NextID int - DECLARE @ContentID int - declare @fromtype int - IF @Level = 0 BEGIN - SET @NextID = @CurrentID - SELECT @PreviousID = PreviousID FROM Items WHERE ItemID = @CurrentID - END - IF @Level = 1 BEGIN - SELECT @NextID = ItemID FROM Items WHERE PreviousID = @CurrentID - SET @PreviousID = @CurrentID - END - SELECT @ContentID = dbo.[ve_GetPartContentID](@ItemID) - select @fromtype = dbo.[ve_GetPartFromType](@ItemID) - select @oldPreviousID = isnull(PreviousID,0) from tblItems where ItemID = @ItemID - if @level = 2 begin - select @NextID = itemid from parts where contentid = @contentid and fromtype = @fromtype - end - --restore parts from step being restored - UPDATE tblParts SET DeleteStatus = 0 WHERE ItemID IN (SELECT ItemID FROM PartAudits WHERE DeleteStatus = @DeleteID) ---print 'oldpreviousid: ' + cast(@oldpreviousid as varchar(10)) ---print 'currentid: ' + cast(@currentid as varchar(10)) - --restore of children in different order - if(@oldPreviousID != @CurrentID and @Level = 2) begin - update tblparts set deletestatus = 0, itemid = @itemid where contentid = @contentid and fromtype = @fromtype ---print 'special code' - end - UPDATE tblContents SET DeleteStatus = 0, ActionDTS = getdate() WHERE ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblItems SET DeleteStatus = 0,PreviousID = CASE WHEN ItemID = @ItemID THEN @PreviousID ELSE PreviousID END - WHERE ItemID IN (SELECT ItemID FROM ItemAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblGrids SET DeleteStatus = 0 WHERE ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblImages SET DeleteStatus = 0 WHERE ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblEntries SET DeleteStatus = 0 WHERE DocID IN (SELECT DocID FROM EntryAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblAnnotations SET DeleteStatus = 0, ActionDTS = getdate() WHERE deletestatus = @deleteid -- ItemID in (SELECT ItemID FROM ItemAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblROUsages SET DeleteStatus = 0 WHERE deletestatus = @deleteid --ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblTransitions SET DeleteStatus = 0 WHERE deletestatus = @deleteid --FromID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - IF @NextID IS NOT NULL BEGIN - UPDATE Items SET PreviousID = @ItemID WHERE ItemID = @NextID - UPDATE DocVersions SET ItemID = @ItemID WHERE ItemID = @NextID - IF @ContentID IS NOT NULL BEGIN - UPDATE Parts SET ItemID = @ItemID WHERE ItemID = @NextID and ContentID = @ContentID ---print 'old code' - END - END ---else --- begin ---update parts set itemid = @itemid where contentid = @contentid and fromtype = @fromtype --- end -RETURN -go --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: restoreDeletedItem Succeeded' -ELSE PRINT 'Procedure Creation: restoreDeletedItem Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_GetLastDelim] Script Date: 03/28/2012 17:58:48 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetLastDelim]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetLastDelim]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select .dbo.vefn_GetLastDelim(bozo) delim,bozo -from -( -select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using Backfill' bozo union -select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps' bozo union -select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps1' bozo union -select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps1.1' bozo union -select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps1.1.RNO..1' bozo union -select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps1.1.RNO..1.3' bozo -) ah -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetLastDelim](@SearchString nvarchar(MAX)) -RETURNS nvarchar(1) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @patstr nvarchar(7) - set @patstr = '%[' + char(7) + char(17) + '.]%' - declare @patidx bigint - set @patidx = patindex(@patstr,Reverse(@SearchString)) - if @patidx = 0 return ' ' - return substring(@SearchString,1 + len(@SearchString) - @patidx,1) -END -GO -IF (@@Error = 0) PRINT 'ScalerFunction [vefn_GetLastDelim] Succeeded' -ELSE PRINT 'ScalerFunction [vefn_GetLastDelim] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_tblChildItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_tblChildItems]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_tblChildItems] Script Date: 03/28/2012 17:43:20 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/* -declare @PreviousID as int -declare @ItemID as int -set @ItemID = 450 -select @PreviousID = PreviousID from items where ItemID = @ItemID - -Select * from Items where ItemID = @ItemID - -select * from Transitions -where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) -AND (ToID = @ItemID or RangeID = @ItemID) - -select CC.Text from Transitions TT -join contents CC on TT.FromID = CC.ContentID -where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) -AND (ToID = @ItemID or RangeID = @ItemID) - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_tblChildItems](@ProcItemID int, @ItemID int, @IncludeDeletedChildren int) -RETURNS @Children TABLE -( - ItemID int PRIMARY KEY, - IContentID int, - IDeleteStatus int, - ProcDTS datetime, - Path nvarchar(max), - OrdinalPath nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @path nvarchar(max) - declare @ppath nvarchar(max) - declare @ordinalpath nvarchar(max) - declare @pordinalpath nvarchar(max) - declare @ordinal int - declare @pitemid int - select @path = path,@ordinalpath = ordinalpath,@ordinal = ordinal,@pitemid = parentid from vefn_ProcedureByProcID(@ProcItemID) where itemid = @ItemID - if @pitemid = 0 begin - set @pordinalpath = '' - set @ppath = '' - end - else begin - select @ppath = path,@pordinalpath = ordinalpath from vefn_ProcedureByProcID(@ProcItemID) where itemid = @pitemID - end - declare @procdts datetime - select @procdts = dts from items where itemid = @ProcItemID - Declare @Delim char(1) - Set @Delim=char(7) - Declare @DelimNumber char(1) - Set @DelimNumber=char(17) - Declare @DelimStep char(1) - Set @DelimStep='.' - begin - with Itemz([Level], [ItemID], [ContentID], DeleteStatus, ProcDTS, PPath, [Path], [POrdinalPath], [OrdinalPath], [FromType], [Ordinal]) as ( - Select 0 [Level], [ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, - @ppath [PPath], - @path [Path], - @pordinalpath [POrdinalPath], - @ordinalpath [OrdinalPath], - 0 [FromType],@ordinal [Ordinal] - FROM [tblItems] I - --inner join tblContents C on C.ContentID=I.ContentID - where I.[ItemID]=@ItemID - Union All - -- Children - select [Level] + 1, I.[ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, - PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - when 8 then @DelimStep + 'SupInfo' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - when 8 then @DelimStep +'SupInfo' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + - case when I.deletestatus != 0 then 'Old ' else '' end + cast(1 as varchar(4)) - end end Path, - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001', - P.[FromType],0 - from Itemz Z - join tblParts P on P.ContentID = Z.ContentID - join tblItems I on I.ItemID = P.ItemID - inner join tblContents C on C.ContentID=I.ContentID - where @IncludeDeletedChildren = 1 or z.DeleteStatus = 0 - Union All - -- Children2 - select [Level] + 1, I.[ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, - PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - when 8 then @DelimStep + 'SupInfo' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - when 8 then @DelimStep +'SupInfo' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + - case when I.deletestatus != 0 then 'Old ' else '' end + cast(1 as varchar(4)) - end end Path, - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001', - P.[FromType],0 - from Itemz Z - join PartAudits P on P.ContentID = Z.ContentID - join tblItems I on I.ItemID = P.ItemID and i.PreviousID is null - inner join tblContents C on C.ContentID=I.ContentID - where @IncludeDeletedChildren = 1 or z.DeleteStatus >= 0 - -- Siblings - Union All - select [Level] , I.[ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, - PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + - case when I.deletestatus != 0 then 'Old ' else '' end + cast(Ordinal + 2 as varchar(4)) - end Path, - POrdinalPath, - POrdinalPath + right('00000' + cast(Z.[Ordinal] + 2 as varchar(5)), 5), - FromType,Z.[Ordinal] +1 - from Itemz Z - join tblItems I on I.PreviousID = Z.ItemID - inner join tblContents C on C.ContentID=I.ContentID - where Z.[Level] > 0 - ) - insert into @Children select distinct ItemID, ContentID, DeleteStatus, ProcDTS, Path, OrdinalPath from Itemz - OPTION (MAXRECURSION 10000) - END - RETURN -end -go -IF (@@Error = 0) PRINT 'TableFunction [vefn_tblChildItems] Succeeded' -ELSE PRINT 'TableFunction [vefn_tblChildItems] Error on Creation' -go - -/****** Object: StoredProcedure [dbo].[getAnnotationAuditsChronologyByItemID] Script Date: 04/02/2012 15:57:32 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationAuditsChronologyByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [getAnnotationAuditsChronologyByItemID]; -GO -/****** Object: StoredProcedure [getAnnotationAuditsChronologyByItemID] ******/ -/* -getAnnotationAuditsChronologyByItemID 13,13 -getAnnotationAuditsChronologyByItemID 30,8570 -getAnnotationAuditsChronologyByItemID 30,8513 -getAnnotationAuditsChronologyByItemID 30,8505 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE procedure [dbo].[getAnnotationAuditsChronologyByItemID] -( - @ProcItemID int, - @ItemID int, - @DTS datetime -) -WITH EXECUTE AS OWNER -AS -begin --- declare @dts datetime --- set @dts = (select dts from items where itemid = @procitemid) - declare @tci table - ( - ItemID int, - IContentID int, - IDeleteStatus int, - ProcDTS datetime, - Path nvarchar(max), - OrdinalPath nvarchar(max) - ) - insert into @tci - select * from vefn_tblchilditems(@ProcItemID,@ItemID,0) - select - case - when lastauditid is null and dts > itemdts then 'Added' - when deletestatus > 0 then 'Deleted' - when lastauditid = deletedauditid then 'Restored' - else 'Changed' - end ActionWhat - ,case - when lastauditid is null and dts > itemdts then dts - when deletestatus > 0 then ActionDTS - when lastauditid = deletedauditid then ActionDTS - else dts - end ActionWhen - ,* - from - ( - select - cast(ident_current('annotationaudits') + 1 as bigint) auditid - -- (select max(auditid) + 1 from annotationaudits) auditid - -- 0 auditid - ,aa.annotationid - ,aa.itemid - ,aa.typeid - ,aa.rtftext - ,aa.searchtext - ,aa.config - ,aa.dts - ,aa.userid - ,0 deletestatus - ,aa.ActionDTS - ,ii.contentid icontentid - ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid) LastAuditID - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and deletestatus > 0 and aa.dts = dts) DeletedAuditID -,tci.ordinalpath - from tblannotations aa - inner join items ii on aa.itemid = ii.itemid -join @tci tci on tci.itemid = ii.itemid - where aa.deletestatus = 0 - union - select - aa.auditid - ,aa.annotationid - ,aa.itemid - ,aa.typeid - ,aa.rtftext - ,aa.searchtext - ,aa.config - ,aa.dts - ,aa.userid - ,aa.deletestatus - ,aa.ActionDTS - ,ii.contentid icontentid - ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid ) LastAuditID - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid and deletestatus > 0 and aa.dts = dts) DeletedAuditID -,tci.ordinalpath - from annotationaudits aa - inner join items ii on aa.itemid = ii.itemid -join @tci tci on tci.itemid = ii.itemid - ) ah - where itemid in (select itemid from @tci) - and dts > @dts - --(select dts from versions where versionid = (select max(versionid) from revisions rr inner join versions vv on rr.revisionid = vv.revisionid - --inner join stages ss on vv.stageid = ss.stageid where itemid = @procitemid and ss.isapproved = 1)) - order by ordinalpath,annotationid,auditid--actionwhen -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemID Error on Creation' -GO - - - - - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[ve_GetFolderPath]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [dbo].[ve_GetFolderPath]; - -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -========================================================================================================== - Author: Rich Mark - Create Date: 01/01/2012 - Description: Returns the Folder Path for a specified Document Version using recursion - 08/20/2021 Jake Ropar: Reformatted and added With Execute as Owner statement - - Parameters: @VersionID Document Version ID - - Examples: Select VersionID,Name,dbo.ve_GetFolderPath(VersionID) from DocVersions order by VersionID; -========================================================================================================== - */ -Create Function [dbo].[ve_GetFolderPath] (@VersionID int) -Returns VarChar(Max) -With Execute as Owner -as -Begin - - Declare @Path VarChar(Max); - - With zFolders ([Level], FolderID, [Path]) - as ( - - Select 1 as 'Level', - dv.FolderID as 'FolderID', - Cast(dv.[Name] as VarChar(Max)) as 'Path' - From DocVersions dv with (NoLock) - Where dv.VersionID = @VersionID - - Union All - - Select f.ParentID - (Select ParentID from Folders where FolderID = f.ParentID) as 'Level', - f.ParentID as 'FolderID', - Cast(f.[Name] + char(7) + zf.[Path] as VarChar(Max)) as 'Path' - From Folders f with (NoLock) - inner join zFolders zf on f.FolderID = zf.FolderID - Where f.FolderID <> f.ParentID - - ) - Select @Path = zf.[Path] - From zFolders zf - Where zf.[Level] = 0; - - return @Path; - -End -Go - - -IF (@@Error = 0) PRINT 'Function: [vefn_GetUnitPrefix] Succeeded' -ELSE PRINT 'Function: [vefn_GetUnitPrefix] Error on Creation' -GO - - - - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[vefn_GetUnitPrefix]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [dbo].[vefn_GetUnitPrefix]; -GO - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -========================================================================================================== - Author: Rich Mark - Create Date: 01/01/2012 - Description: Returns the Unit Prefix from the specified Xml Configuration Data - 08/20/2021 Jake Ropar: Reformatted and added With Execute as Owner statement - - Parameters: @Config Xml Configuration Data - - Examples: Select 'DocVersions' Type, VersionID, Config, .dbo.vefn_GetUnitPrefix(config) UnitPrefix from DocVersions - UNION select 'Blank' Type, 0 VersionID, '' Config, .dbo.vefn_GetUnitPrefix('') UnitPrefix - UNION select 'Null' Type, 0 VersionID, null Config, .dbo.vefn_GetUnitPrefix(null) UnitPrefix - UNION select 'XML with' Type, 0 VersionID, '' Config, .dbo.vefn_GetUnitPrefix('') UnitPrefix - UNION select 'XML without' Type, 0 VersionID, '' Config, .dbo.vefn_GetUnitPrefix('') UnitPrefix - UNION select 'XML empty' Type, 0 VersionID, '' Config, .dbo.vefn_GetUnitPrefix('') UnitPrefix -========================================================================================================== - */ -Create Function [dbo].[vefn_GetUnitPrefix](@Config varchar(MAX)) -Returns VarChar(Max) -With Execute as Owner -as -Begin - - Declare @Xml xml; - Declare @UnitPrefix VarChar(Max); - - Set @Xml = Cast(@Config as xml) - - Set @UnitPrefix = (Select Replace(v.value('@ProcedureNumber', 'nvarchar(100)'),'#','') as 'UnitPrefix' From @XML.nodes('//Unit') as tmpXml(v)) - - Return IsNull(@UnitPrefix,''); - -End -Go - -IF (@@Error = 0) PRINT 'Function: [vefn_GetUnitPrefix] Succeeded' -ELSE PRINT 'Function: [vefn_GetUnitPrefix] Error on Creation' -GO - - - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[vefn_DocVersionSplit]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [dbo].[vefn_DocVersionSplit]; - -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -========================================================================================================== - Author: Rich Mark - Create Date: 01/01/2012 - Description: Returns a table of document version info from a comma delimited list of specified document version IDs - 08/20/2021 Jake Ropar: Add with (NoLock) statements to prevent table locking - - Parameters: @DocVersionList Comma delimited list of document version IDs (pass '' or null to retrieve all versions) - - Examples: select * from vefn_DocVersionSplit('1,4'); - select * from vefn_DocVersionSplit(null); - select * from vefn_DocVersionSplit(''); -========================================================================================================== - */ -Create Function [dbo].[vefn_DocVersionSplit](@DocVersionList varchar(MAX)) -Returns @IDs Table -( - VersionID Int Primary Key, - ItemID Int, - DVPath VarChar(Max), - UnitPrefix VarChar(MAX) -) -With Execute as Owner -as -Begin - - If(IsNull(@DocVersionList,'') = '') - Insert into @IDs - Select dv.VersionID, dv.ItemID, dbo.ve_GetFolderPath(dv.VersionID), dbo.vefn_GetUnitPrefix(dv.Config) - From DocVersions dv with (NoLock) Where dv.ItemID is not null; - Else - Insert into @IDs - Select t.ID, dv.ItemID, dbo.ve_GetFolderPath(dv.VersionID), .dbo.vefn_GetUnitPrefix(dv.config) - From dbo.vefn_SplitInt(@DocVersionList,',') as t - inner join DocVersions dv with (NoLock) on dv.VersionID = t.ID; - - Return; - -End -Go - -IF (@@Error = 0) PRINT 'Function: [vefn_DocVersionSplit] Succeeded' -ELSE PRINT 'Function: [vefn_DocVersionSplit] Error on Creation' -GO - - - - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[vefn_SiblingAndChildrenItemsNewByWord]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [dbo].[vefn_SiblingAndChildrenItemsNewByWord]; -GO - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -========================================================================================================== - Author: Rich Mark - Create Date: 01/01/2021 - Description: Returns all items mathcing the specified search critera, filtered by a list of specified document versions - 08/20/2021 Jake Ropar: Add with (NoLock) and Option (Recompile) statements to eliminate UI locking and improve performace - - Parameters: @DocVersionList Comma delimited list of document version IDs used to filter search results (pass '' or null to include all versions) - @UnitPrefix The unit prefix to use when building the item path - @SearchString Search string criteria - @SearchStringx Alternate search string criteria - @StepTypeList Comma delimited list of of step types used to filter search results (pass '' or null to include all step type sections) - - Examples: select Text from vefn_SiblingAndChildrenItemsNewByWord('194','','%[^a-z]red[^a-z]%', '%[^a-z]red[^a-z]%',''); - select Text from vefn_SiblingAndChildrenItemsNewByWord('194','','%[^a-zA-Z]step 25[^0-9a-zA-Z.vbpi:\\-]%','%[^a-zA-Z]step 25[^0-9a-zA-Z.vbpi:\\-]%',''); -========================================================================================================== - */ -Create Function [dbo].[vefn_SiblingAndChildrenItemsNewByWord](@DocVersionList VarChar(Max), @UnitPrefix VarChar(Max), @SearchString VarChar(Max), - @SearchStringx VarChar(Max), @StepTypeList VarChar(Max), - @includeLinks int, @includeRtfFormatting int , @includeSpecialCharacters int) -Returns @SiblingAndChildren Table -( - ILastChanged VarBinary(8), - ItemID int Primary Key, - DVPath nVarChar(Max), - [Path] nVarChar(Max), - FromType Int, - Ordinal Int, - ParentID Int, - PreviousID Int, - ContentID Int, - DTS DateTime, - UserID nVarChar(100), - pContentID Int, - pDTS DateTime, - pUserID nVarChar(100), - IsRNO Int, - [Text] nVarChar(Max), - DocAscii nVarChar(Max), - Number nVarChar(256), - CType Int, - CFormatID Int, - CConfig nVarChar(Max), - CDTS DateTime, - CUserID nVarChar(100), - CLastChanged VarBinary(8), - PLastChanged VarBinary(8) -) -With Execute as Owner -as -Begin - - -- Declare Local Variables - Declare @Delim Char(1); - Declare @DelimNumber Char(1); - Declare @DelimStep Char(1); - declare @TextPrefix nVarChar(1); - declare @TextSuffix nVarChar(1); - - -- Set Default Values - Set @Delim = Char(7); - Set @DelimNumber = Char(17); - Set @DelimStep = '.'; - Set @TextPrefix = ''; - Set @TextSuffix = ''; - - -- Check Input Parameters - If (@SearchString Like '[%]%') Set @TextPrefix = '~'; - if (@SearchString Like '%[%]') Set @TextSuffix = '~'; - - - With zItems (ILastChanged, ItemID, VersionID, [Path], FromType, Ordinal, ParentID, PreviousID, ContentID, DTS, UserID, pContentID, - pDTS, pUserID, IsRNO, [Text], Number, PPath, CType, CFormatID, CConfig, CDTS, CUserID, CLastChanged, PLastChanged) - as ( - - -- Parent Records - Select Cast(i.LastChanged as varbinary(8)) as 'ILastChanged', - i.ItemID as 'ItemID', - dv.VersionID as 'VersionID', - Cast((Case When (c.[Type] < 20000) Then @Delim + @UnitPrefix + IsNull(c.Number,'') + @DelimNumber + IsNull(c.[Text],'') Else '1' End) as nVarChar(Max)) as 'Path', - 0 as 'FromType', - 0 as 'Ordinal', - 0 as 'ParentID', - i.PreviousID as 'PreviousID', - i.ContentID as 'ContentID', - i.DTS as 'DTS', - i.UserID as 'UserID', - 0 as 'pContentID', - i.DTS as 'pDTS', - i.UserID as 'pUserID', - 0 as 'IsRNO', - c.[Text] as 'Text', - c.Number as 'Number', - Cast('' as nVarChar(Max)) as 'PPath', - c.Type as 'CType', - c.FormatID as 'CFormatID', - c.Config as 'CConfig', - c.DTS as 'CDTS', - c.UserID as 'CUserID', - Cast(c.LastChanged as VarBinary(8)) as 'CLastChanged', - Cast(0 as VarBinary(8)) as 'PLastChanged' - From Items i with (NoLock) - join Contents c with (NoLock) on c.ContentID = i.ContentID - join dbo.vefn_DocVersionSplit(@DocVersionList) dv on i.ItemID = dv.ItemID - - Union All - - -- Children Records - Select Cast(i.LastChanged as varbinary(8)) as 'ILastChanged', - i.ItemID as 'ItemID', - zi.VersionID as 'VersionID', - zi.Path + - Case (c.[Type]/10000) - When 0 Then @Delim + @UnitPrefix + IsNull(c.Number,'') + @DelimNumber + IsNull(c.Text,'') -- Procedure - When 1 Then @Delim + IsNull(c.Number,'') + @DelimNumber + IsNull(c.Text,'') -- Section - Else Case (p.FromType) - When 3 Then @DelimStep +'Caution' + @DelimStep + Cast(1 as varchar(4)) - When 4 Then @DelimStep +'Note' + @DelimStep + Cast(1 as varchar(4)) - When 5 Then @DelimStep +'RNO' + @DelimStep - When 7 Then @DelimStep +'Table' + @DelimStep + Cast(1 as varchar(4)) - When 8 Then @DelimStep +'SupInfo' + @DelimStep - Else Case When (zi.FromType < 3) Then @Delim Else @DelimStep End + Cast(1 as varchar(4)) - End - End as 'Path', - p.FromType as 'FromType', - 0 as 'Ordinal', - zi.ItemID as 'ParentID', - i.PreviousID as 'PreviousID', - i.ContentID as 'ContentID', - i.DTS as 'DTS', - i.UserID as 'UserID', - p.ContentID as 'pContentID', - p.DTS as 'pDTS', - p.UserID as 'pUserID', - Case When (p.FromType = 5) Then -1 Else 0 End as 'IsRNO', - c.Text as 'Text', - c.Number as 'Number', - zi.Path + - Case (c.[Type]/10000) - When 2 Then Case(p.FromType) - When 3 Then @DelimStep + 'Caution' - When 4 Then @DelimStep + 'Note' - When 8 Then @DelimStep + 'SupInfo' - Else '' End - Else '' - End as 'PPath', - c.[Type] as 'CType', - c.FormatID as 'CFormatID', - c.Config as 'CConfig', - c.DTS as 'CDTS', - c.UserID as 'CUserID', - Cast(c.LastChanged as varbinary(8)) as 'CLastChanged', - Cast(p.LastChanged as varbinary(8)) as 'PLastChanged' - From zItems zi - join Parts p with (NoLock) on p.ContentID = zi.ContentID - join Items i with (NoLock) on i.ItemID = p.ItemID - join Contents c with (NoLock) on c.ContentID = i.ContentID - - Union All - - -- Sibling Records - Select Cast(i.LastChanged as varbinary(8)) as 'ILastChanged', - i.ItemID as 'ItemID', - zi.VersionID as 'VersionID', - zi.PPath + - Case (c.[Type]/10000) - When 0 Then @Delim + @UnitPrefix + IsNull(c.Number,'') + @DelimNumber + IsNull(c.Text,'') -- Procedure - When 1 Then @Delim + IsNull(c.Number,'') + @DelimNumber + IsNull(c.Text,'') -- Section - Else Case When (dbo.vefn_GetLastDelim(zi.Path) = '.') Then @DelimStep Else @Delim End + Cast(zi.Ordinal + 2 as varchar(4)) - End as 'Path', - zi.FromType as 'FromType', - zi.Ordinal + 1 as 'Ordinal', - zi.ParentID as 'ParentID', - i.PreviousID as 'PreviousID', - i.ContentID as 'ContentID', - i.DTS as 'DTS', - i.UserID as 'UserID', - Null as 'pContentID', - Null as 'pDTS', - Null as 'pUserID', - 0 as 'IsRNO', - c.[text] as 'Text', - c.Number as 'Number', - zi.PPath as 'PPath', - c.[Type] as 'CType', - c.FormatID as 'CFormatID', - c.Config as 'CConfig', - c.DTS as 'CDTS', - c.UserID as 'CUserID', - Cast(c.LastChanged as varbinary(8)) as 'CLastChanged', - Cast(0 as varbinary(8)) as 'PLastChanged' - From zItems zi - join Items i with (NoLock) on i.PreviousID = zi.ItemID - join Contents c with (NoLock) on c.ContentID = i.ContentID - - ) - Insert Into @SiblingAndChildren - Select zi.ILastChanged, - zi.ItemID, - dv.DVPath, - zi.Path, - zi.FromType, - zi.Ordinal, - zi.ParentID, - zi.PreviousID, - zi.ContentID, - zi.DTS, - zi.UserID, - zi.pContentID, - zi.pDTS, - zi.pUserID, - zi.IsRNO, - zi.Text, - d.DocAscii, - zi.Number, - zi.CType, - zi.CFormatID, - zi.CConfig, - zi.DTS, - zi.CUserID, - zi.CLastChanged, - zi.PLastChanged - From zItems zi - join dbo.vefn_DocVersionSplit(@DocVersionList) dv on dv.VersionID = zi.VersionID - left join Entries e with (NoLock) on e.ContentID = zi.ContentID - left join Documents d with (NoLock) on d.DocID = e.DocID - -- B2022-082: use the vefn_RemoveExtraText to get rid of rtf commands before comparing text - Where (dbo.vefn_RemoveExtraText(@TextPrefix + zi.[Text] + @TextSuffix, @includeLinks, @includeRtfFormatting, @includeSpecialCharacters) - like @SearchString Or Replace(d.DocAscii, nChar(176), '\''B0') like @SearchString - Or dbo.vefn_RemoveExtraText(@TextPrefix + zi.[Text] + @TextSuffix, @includeLinks, @includeRtfFormatting, @includeSpecialCharacters) - like @SearchStringx Or Replace(d.DocAscii, nChar(176), '\''B0') like @SearchStringx) - And (IsNull(@StepTypeList,'') = '' or (dbo.vefn_AllSections(zi.CType) in (Select ID from dbo.vefn_SplitInt(@StepTypeList,',')))) - Option (Recompile, MaxRecursion 10000); - - Return; -End -Go - -IF (@@Error = 0) PRINT 'Function: vefn_SiblingAndChildrenItems Succeeded' -ELSE PRINT 'Function: vefn_SiblingAndChildrenItems Error on Creation' -GO - - - - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[FindAnnotations]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [FindAnnotations]; - -/****** Object: UserDefinedFunction [dbo].[FindAnnotations] Script Date: 09/28/2012 11:06:59 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select * from [FindAnnotations]('12','',0,'') -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[FindAnnotations](@AnnotationTypeList varchar(MAX), @SearchString varchar(MAX), @CaseSensitive int, @StepTypeList varchar(MAX)) -RETURNS @Results TABLE -( - AnnotationID int Primary Key -) -WITH EXECUTE AS OWNER -BEGIN - insert into @Results - select Distinct A.AnnotationID from Items I - join Contents C on I.ContentID = C.ContentID - left Join Parts P on P.ItemID = I.ItemID - join Annotations A on A.ItemID = I.ItemID - join vefn_AnnotationTypeSplit(@AnnotationTypeList) TT on TT.TypeID=A.TypeID -where - (isnull(@SearchString,'')='' - OR (@CaseSensitive = 1 AND A.SearchText like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) - OR (@CaseSensitive = 0 AND A.SearchText like @SearchString Collate SQL_Latin1_General_CP1_CI_AS)) - AND - ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) - or - ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - or - (@StepTypeList like '%20040%' AND isnull(P.FromType,0) = 5))) - - RETURN -END -GO -IF (@@Error = 0) PRINT 'Function: FindAnnotations Succeeded' -ELSE PRINT 'Function: FindAnnotations Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchAnnotationItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [vesp_SearchAnnotationItemAndChildren]; -GO -/* -exec vesp_SearchAnnotationItemAndChildren Null,Null,'1',Null,0,"3-" -exec vesp_SearchAnnotationItemAndChildren Null,Null,'2',Null,0 -exec vesp_SearchAnnotationItemAndChildren Null,Null,'3',Null,0 -exec vesp_SearchAnnotationItemAndChildren Null,Null,'4',Null,0 -exec vesp_SearchAnnotationItemAndChildren Null,Null,'5',Null,0 -exec vesp_SearchAnnotationItemAndChildren Null,Null,'',Null,0 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchAnnotationItemAndChildren] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), @AnnotationTypeList varchar(MAX), @SearchString nvarchar(MAX), @CaseSensitive as int, @UnitPrefix nvarchar(MAX)) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) -begin -with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], - [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, UnitPrefix) as ( - Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], - Cast('' as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, - 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - when 8 then @DelimStep + 'SupInfo' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - when 8 then @DelimStep +'SupInfo' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', UnitPrefix - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - ,PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), UnitPrefix - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 -) -select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged],AnnotationID SearchAnnotationID, SearchText, TT.Name AnnotationType, - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - left join Entries E on C.ContentID = E.ContentID - left join Documents D on E.DocID = D.DocID - join Annotations A on A.ItemID = I.ItemID - join vefn_AnnotationTypeSplit(@AnnotationTypeList) TT on TT.TypeID=A.TypeID -where - A.AnnotationID in(select AnnotationID from [FindAnnotations](@AnnotationTypeList, @SearchString, @CaseSensitive, @StepTypeList)) - order by DvPath,OrdinalPath -OPTION (MAXRECURSION 10000) -END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchAnnotationItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchAnnotationItemAndChildren Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [vesp_SearchItemAndChildren]; -GO -/* -exec vesp_SearchItemAndChildren '1,2,4','20007','#Link:Transition',1,0,0,0 -exec vesp_SearchItemAndChildren '1,2,4','20007','#Link:Transition',1,1,0,0 -exec vesp_SearchItemAndChildren '1,2,4','20007','#Link:Transition',1,2,0,0 -exec vesp_SearchItemAndChildren '4','','#Link:Refer',1,2,0,0 -exec vesp_SearchItemAndChildren '4','','200`F',0,1,0,0 -exec vesp_SearchItemAndChildren '4','10000','',0,0,0,0 -exec vesp_SearchItemAndChildren '4','','[0-9]`F',0,1,0,0 -exec vesp_SearchItemAndChildren '','','RCP',0,0,0,0 -exec vesp_SearchItemAndChildren '','','%',0,0,0,0 -exec vesp_SearchItemAndChildren '','20040','',0,0,0,0 -exec vesp_SearchItemAndChildren '','10000','XYZZY',0,0,0,0 -exec vesp_SearchItemAndChildren '','10000','XYZZY',1,0,0,0 -exec vesp_SearchItemAndChildren '','','%IF%',0,0,0,0 -exec vesp_SearchItemAndChildren '','','%IF%',1,0,0,0 -exec vesp_SearchItemAndChildren '','','%47%',1,0,0,0 -exec vesp_SearchItemAndChildren '','','%47%',1,0,0,1 -exec vesp_SearchItemAndChildren '','','condenser not av',0,0,0,0 -exec vesp_SearchItemAndChildren '','','(SG OR LHSI) AND DISPATCH',2,0,0,0 -exec vesp_SearchItemAndChildren '','','DISPATCH NEAR SG',2,0,0,0 -exec vesp_SearchItemAndChildren '','','PORV NEAR SG',2,0,0,0 -exec vesp_SearchItemAndChildren '','','CHECK NORMAL',0,0,0,0 -exec vesp_SearchItemAndChildren '','','turbine-driven',0,0,0,0 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchItemAndChildren] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), -@SearchString varchar(MAX), @CaseSensitive as int, @IncludeLinks as int, @IncludeRtfFormatting as int, @IncludeSpecialCharacters as int, @UnitPrefix as varchar(MAX)) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) -begin -with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], - [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, UnitPrefix) as ( - Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], - Cast('' as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, - 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - when 8 then @DelimStep + 'SupInfo' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - when 8 then @DelimStep +'SupInfo' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', UnitPrefix - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - ,PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), UnitPrefix - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 -) -select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - left join Entries E on C.ContentID = E.ContentID - left join Documents D on E.DocID = D.DocID - where - (isnull(@SearchString,'')='' - OR (@CaseSensitive = 1 AND .dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) - OR (@CaseSensitive = 0 AND .dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS) - OR (@CaseSensitive = 1 AND Replace(D.DocAscii,nchar(176),'\''B0') like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) - OR (@CaseSensitive = 0 AND Replace(D.DocAscii,nchar(176),'\''B0') like @SearchString Collate SQL_Latin1_General_CP1_CI_AS) - ) - AND - ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) - or - ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - or - (@StepTypeList like '%20040%' AND IsRNO = -1))) - order by DvPath,OrdinalPath -OPTION (MAXRECURSION 10000) -END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchItemAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SearchItemAndChildrenNew] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchItemAndChildrenNew]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [vesp_SearchItemAndChildrenNew]; -GO - -/* -exec vesp_SearchItemAndChildrenNew '1,2,4','20007','#Link:Transition',1,0,0,0 -exec vesp_SearchItemAndChildrenNew '1,2,4','20007','#Link:Transition',1,1,0,0 -exec vesp_SearchItemAndChildrenNew '1,2,4','20007','#Link:Transition',1,2,0,0 -exec vesp_SearchItemAndChildrenNew '4','','#Link:Refer',1,2,0,0 -exec vesp_SearchItemAndChildrenNew '4','','200`F',0,1,0,0 -exec vesp_SearchItemAndChildrenNew '4','10000','',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '4','','[0-9]`F',0,1,0,0 -exec vesp_SearchItemAndChildrenNew '1','','"RCP"',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','"RCP"',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','20040','',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','10000','XYZZY',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','10000','XYZZY',1,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%IF%',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%IF%',1,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%47%',1,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%47%',1,0,0,1 -exec vesp_SearchItemAndChildrenNew '','','condenser not av',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','(SG OR LHSI) AND DISPATCH',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','DISPATCH NEAR SG',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','PORV NEAR SG',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','CHECK NORMAL',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','(Resolved Transition Text)',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%turbine-driven%',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '37','','rcp',0,0,0,0,'3-' -- Wolf Creek sample -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2019 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchItemAndChildrenNew] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), -@SearchString varchar(MAX), @CaseSensitive as int, @IncludeLinks as int, @IncludeRtfFormatting as int, @IncludeSpecialCharacters as int, @UnitPrefix as varchar(MAX)) -WITH EXECUTE AS OWNER -AS -Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) -Declare @SearchStringx nvarchar(200) --kbr -set @SearchStringx = replace(@SearchString,'\u8209?','-') --JSJ B2016-209 not finding dashes in Word sections (FixSearchString converts '-' to '\u8209?') -if (@IncludeLinks + @IncludeRtfFormatting + @IncludeSpecialCharacters = 0) -begin -if (@CaseSensitive = 0) -Begin - select ZZ.DvPath, ZZ.Path, ZZ.[FromType],ZZ.[Ordinal], ZZ.[ParentID], ZZ.[ItemID],ZZ.[PreviousID],ZZ.[ContentID],ZZ.[DTS],ZZ.[UserID] - ,ZZ.[ILastChanged] - ,ZZ.[Number],ZZ.[Text],ZZ.[CType] [Type],ZZ.[CFormatID] [FormatID],ZZ.[CConfig] [Config],ZZ.[CDTS] ,ZZ.[CUserID] - ,ZZ.[cLastChanged], - zz.[pContentID], ZZ.[pDTS],ZZ.[pUserID], ZZ.[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ZZ.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ZZ.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ZZ.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ZZ.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ZZ.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ZZ.[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=ZZ.[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=ZZ.[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=ZZ.[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=ZZ.[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=ZZ.[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=ZZ.[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=ZZ.[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=ZZ.[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=ZZ.[ContentID]) [ZContentCount] -from vefn_SiblingAndChildrenItemsNew(@DocVersionList, @UnitPrefix, @SearchString, @SearchStringx,@StepTypeList) ZZ - --Join Items II on ZZ.ItemID=II.ItemID - --Left Join Parts PP on ZZ.PContentID=PP.ContentID and ZZ.FromType = PP.FromType - --Join Contents CC on CC.ContentID=ZZ.ContentID ---where ZZ.Text like @SearchString or zz.text like @SearchStringx-- ZZ.ContentID in (select ContentID from vefn_FindText(@DocVersionList,@SearchString,@CaseSensitive,@IncludeLinks,@IncludeRtfFormatting,@IncludeSpecialCharacters,@StepTypeList)) - order by DvPath - end - else - begin - select ZZ.DvPath, ZZ.Path, ZZ.[FromType],ZZ.[Ordinal], ZZ.[ParentID], ZZ.[ItemID],ZZ.[PreviousID],ZZ.[ContentID],ZZ.[DTS],ZZ.[UserID] - ,ZZ.[ILastChanged] - ,ZZ.[Number],ZZ.[Text],ZZ.[CType] [Type],ZZ.[CFormatID] [FormatID],ZZ.[CConfig] [Config],ZZ.[CDTS] ,ZZ.[CUserID] - ,ZZ.[cLastChanged], - zz.[pContentID], ZZ.[pDTS],ZZ.[pUserID], ZZ.[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ZZ.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ZZ.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ZZ.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ZZ.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ZZ.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ZZ.[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=ZZ.[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=ZZ.[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=ZZ.[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=ZZ.[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=ZZ.[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=ZZ.[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=ZZ.[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=ZZ.[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=ZZ.[ContentID]) [ZContentCount] -from vefn_SiblingAndChildrenItemsNew(@DocVersionList, @UnitPrefix, @SearchString, @SearchStringx,@StepTypeList) ZZ - --Join Items II on ZZ.ItemID=II.ItemID - --Left Join Parts PP on ZZ.PContentID=PP.ContentID and ZZ.FromType = PP.FromType - --Join Contents CC on CC.ContentID=ZZ.ContentID ---where ZZ.Text like @SearchString or zz.text like @SearchStringx-- ZZ.ContentID in (select ContentID from vefn_FindText(@DocVersionList,@SearchString,@CaseSensitive,@IncludeLinks,@IncludeRtfFormatting,@IncludeSpecialCharacters,@StepTypeList)) -where zz.text Collate SQL_Latin1_General_CP1_CS_AS like @SearchString or -zz.text Collate SQL_Latin1_General_CP1_CS_AS like @SearchStringx or --- docascii are the word sections -Replace(zz.DocAscii,nchar(176),'\''B0') Collate SQL_Latin1_General_CP1_CS_AS like @SearchString or -Replace(zz.DocAscii,nchar(176),'\''B0') Collate SQL_Latin1_General_CP1_CS_AS like @SearchStringx - order by DvPath - end - end -- no links - else -begin -- include linked text -if (@CaseSensitive = 0) -Begin - select ZZ.DvPath, ZZ.Path, ZZ.[FromType],ZZ.[Ordinal], ZZ.[ParentID], ZZ.[ItemID],ZZ.[PreviousID],ZZ.[ContentID],ZZ.[DTS],ZZ.[UserID] - ,ZZ.[ILastChanged] - ,ZZ.[Number],ZZ.[Text],ZZ.[CType] [Type],ZZ.[CFormatID] [FormatID],ZZ.[CConfig] [Config],ZZ.[CDTS] ,ZZ.[CUserID] - ,ZZ.[cLastChanged], - zz.[pContentID], ZZ.[pDTS],ZZ.[pUserID], ZZ.[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ZZ.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ZZ.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ZZ.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ZZ.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ZZ.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ZZ.[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=ZZ.[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=ZZ.[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=ZZ.[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=ZZ.[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=ZZ.[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=ZZ.[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=ZZ.[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=ZZ.[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=ZZ.[ContentID]) [ZContentCount] -from vefn_SiblingAndChildrenItemsNew(@DocVersionList, @UnitPrefix, @SearchString, @SearchStringx,@StepTypeList) ZZ - --Join Items II on ZZ.ItemID=II.ItemID - --Left Join Parts PP on ZZ.PContentID=PP.ContentID and ZZ.FromType = PP.FromType - --Join Contents CC on CC.ContentID=ZZ.ContentID ---where ZZ.Text like @SearchString or zz.text like @SearchStringx-- ZZ.ContentID in (select ContentID from vefn_FindText(@DocVersionList,@SearchString,@CaseSensitive,@IncludeLinks,@IncludeRtfFormatting,@IncludeSpecialCharacters,@StepTypeList)) -where .dbo.vefn_RemoveExtraText(zz.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) Collate SQL_Latin1_General_CP1_CI_AS like @SearchString or -.dbo.vefn_RemoveExtraText(zz.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) Collate SQL_Latin1_General_CP1_CI_AS like @SearchStringx or --- docascii are the word sections -Replace(zz.DocAscii,nchar(176),'\''B0') Collate SQL_Latin1_General_CP1_CI_AS like @SearchString or -Replace(zz.DocAscii,nchar(176),'\''B0') Collate SQL_Latin1_General_CP1_CI_AS like @SearchStringx - order by DvPath - end - else -- case sensitive - begin - select ZZ.DvPath, ZZ.Path, ZZ.[FromType],ZZ.[Ordinal], ZZ.[ParentID], ZZ.[ItemID],ZZ.[PreviousID],ZZ.[ContentID],ZZ.[DTS],ZZ.[UserID] - ,ZZ.[ILastChanged] - ,ZZ.[Number],ZZ.[Text],ZZ.[CType] [Type],ZZ.[CFormatID] [FormatID],ZZ.[CConfig] [Config],ZZ.[CDTS] ,ZZ.[CUserID] - ,ZZ.[cLastChanged], - zz.[pContentID], ZZ.[pDTS],ZZ.[pUserID], ZZ.[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ZZ.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ZZ.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ZZ.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ZZ.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ZZ.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ZZ.[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=ZZ.[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=ZZ.[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=ZZ.[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=ZZ.[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=ZZ.[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=ZZ.[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=ZZ.[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=ZZ.[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=ZZ.[ContentID]) [ZContentCount] -from vefn_SiblingAndChildrenItemsNew(@DocVersionList, @UnitPrefix, @SearchString, @SearchStringx,@StepTypeList) ZZ - --Join Items II on ZZ.ItemID=II.ItemID - --Left Join Parts PP on ZZ.PContentID=PP.ContentID and ZZ.FromType = PP.FromType - --Join Contents CC on CC.ContentID=ZZ.ContentID ---where ZZ.Text like @SearchString or zz.text like @SearchStringx-- ZZ.ContentID in (select ContentID from vefn_FindText(@DocVersionList,@SearchString,@CaseSensitive,@IncludeLinks,@IncludeRtfFormatting,@IncludeSpecialCharacters,@StepTypeList)) --- -where .dbo.vefn_RemoveExtraText(replace(zz.Text,'\''b0', '\''B0'),@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) Collate SQL_Latin1_General_CP1_CS_AS like replace(@SearchString,'\''b0', '\''B0') or -.dbo.vefn_RemoveExtraText(replace(zz.Text,'\''b0', '\''B0'),@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) Collate SQL_Latin1_General_CP1_CS_AS like replace(@SearchStringx,'\''b0', '\''B0') or --- docascii are the word sections -Replace(zz.DocAscii,nchar(176),'\''B0') Collate SQL_Latin1_General_CP1_CS_AS like @SearchString or -Replace(zz.DocAscii,nchar(176),'\''B0') Collate SQL_Latin1_General_CP1_CS_AS like @SearchStringx - order by DvPath - end - end -- include links - GO -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchItemAndChildrenNew Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchItemAndChildrenNew Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[tr_tblItems_Update]') AND OBJECTPROPERTY(id,N'IsTrigger') = 1) - DROP TRIGGER [tr_tblItems_Update]; - - /****** Object: Trigger [dbo].[tr_tblItems_Update] Script Date: 04/25/2012 14:09:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/****** Object: Trigger [tr_tblItems_Update] ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE trigger [dbo].[tr_tblItems_Update] on [dbo].[tblItems] for update as - begin - if exists (select * from inserted) - begin - if update(PreviousID) or update(ContentID) or update(UserID) or update(DeleteStatus) - begin - insert into ItemAudits(ItemID,PreviousID,ContentID,DTS,UserID,DeleteStatus) - select dd.ItemID,dd.PreviousID,dd.ContentID,dd.DTS,dd.UserID,dd.DeleteStatus from deleted dd - inner join inserted ii on dd.ItemID = ii.ItemID - where dd.deletestatus = 0 or ii.deletestatus != 0 - end - end - end -GO --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Trigger alteration: tr_tblItems_Update Succeeded' -ELSE PRINT 'Trigger alteration: tr_tblItems_Update Error on Alteration' -GO - -/****** Object: StoredProcedure [vesp_GetROUsagesByProcedure] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetROUsagesByProcedure]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetROUsagesByProcedure]; -GO - -/* -exec vesp_GetROUsagesByProcedure '1,2,4','20007','1:00010000019C,0001000002AE' -exec vesp_GetROUsagesByProcedure '1,2,4','','1:00010000019C,0001000002AE' -exec vesp_GetROUsagesByProcedure '1,2,4','20007','1:0001' -exec vesp_GetROUsagesByProcedure '1,2,4','20006','1' -exec vesp_GetROUsagesByProcedure '1,2,4','20006','' -exec vesp_GetROUsagesByProcedure '1,2,4',Null,Null -exec vesp_GetROUsagesByProcedure '1','','1:000700000124','' -exec vesp_GetROUsagesByProcedure '','','1:0007000001C9,000700000124', '' -exec vesp_SearchROItemAndChildren '1','','1:000700000124','' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetROUsagesByProcedure] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), @ROSearchString varchar(MAX), @UnitPrefix as varchar(MAX)) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -begin -with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], - [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, FoundROID) as ( - Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], - Cast('' as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, - 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, null - - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - when 8 then @DelimStep + 'SupInfo' - else '' end - else '' end - PPath, - --Path + case when Z.FromType < 3 then @Delim else @DelimStep end + case C.Type/10000 - Path + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - when 8 then @DelimStep +'SupInfo' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', - null - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - ,PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), - null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 -) -select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount], - RRU.ROID FoundROID - from ItemZ I - join Contents C on C.ContentID = I.ContentID -join (select contentid, ru.roid from ROusages RU -join vefn_SplitROSearch(@ROSearchString) RR on case when len(RU.ROID) = 12 then RU.ROID +'0000' else RU.ROID end - like RR.roid + '%' -union -select contentid, du.roid from DROusages DU -join entries ee on DU.DOCID = EE.DOCID -join vefn_SplitROSearch(@ROSearchString) RR on case when len(DU.ROID) = 12 then DU.ROID +'0000' else DU.ROID end like RR.roid + '%') RRU on RRU.ContentID = I.ContentID - AND - ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) - or - ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - or - (@StepTypeList like '%20040%' AND IsRNO = -1))) - order by DvPath,OrdinalPath /*having foundroid in ( select roid from vefn_SplitROSearch(@ROSearchString))*/ -OPTION (MAXRECURSION 10000) -END -END -GO -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetROUsagesByProcedure Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetROUsagesByProcedure Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[FindRoUsages]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [FindRoUsages]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -Declare @ROSearchString varchar(MAX) -set @ROSearchString='1:000200000089' -select * from FindRoUsages('1:000200000089') -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create FUNCTION [dbo].[FindRoUsages](@ROSearchString varchar(Max)) -RETURNS @Results TABLE -( - ContentID int Primary Key -) -WITH EXECUTE AS OWNER -BEGIN - insert into @Results - select ContentID from ROUsages RU - join vefn_SplitROSearch(@ROSearchString) RR - ON RR.RODBID = RU.RODBID and - RU.ROID like RR.ROID + '%' Collate SQL_Latin1_General_CP1_CI_AS - UNION - select ContentID from Entries EE - Join DROUsages RU on RU.DocID = EE.DocID - join vefn_SplitROSearch(@ROSearchString) RR - ON RR.RODBID = RU.RODBID and - case when len(RU.ROID) = 12 then RU.ROID +'0000' else RU.ROID end like RR.ROID + '%' Collate SQL_Latin1_General_CP1_CI_AS - RETURN -END -GO - -IF (@@Error = 0) PRINT 'Function: FindRoUsages Succeeded' -ELSE PRINT 'Function: FindRoUsages Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchROItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [vesp_SearchROItemAndChildren]; - -GO -/****** Object: StoredProcedure [dbo].[vesp_SearchROItemAndChildren] Script Date: 09/28/2012 09:02:50 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/* -exec vesp_SearchROItemAndChildren '1,2,4','20007','1:00010000019C,0001000002AE','' -exec vesp_SearchROItemAndChildren '1,2,4','','1:00010000019C,0001000002AE','' -exec vesp_SearchROItemAndChildren '1,2,4','20007','1:0001','' -exec vesp_SearchROItemAndChildren '1,2,4','20006','1','' -exec vesp_SearchROItemAndChildren '1,2,4','20006','','' -exec vesp_SearchROItemAndChildren '',Null,Null,'XXX-','' -exec vesp_SearchROItemAndChildren '1','','1:000200000089','' -exec vesp_SearchROItemAndChildren '1','','1:00010000019c','' -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchROItemAndChildren] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), @ROSearchString varchar(MAX), @UnitPrefix as varchar(MAX)) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -begin -with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], - [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, UnitPrefix) as ( - Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], - Cast('' as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, - 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix - - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - when 8 then @DelimStep + 'SupInfo' - else '' end - else '' end - PPath, - --Path + case when Z.FromType < 3 then @Delim else @DelimStep end + case C.Type/10000 - Path + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - when 8 then @DelimStep +'SupInfo' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', UnitPrefix - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - ,PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), UnitPrefix - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 -) -select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - left join Entries E on C.ContentID = E.ContentID - left join Documents D on E.DocID = D.DocID - where - I.ContentID in(select ContentID from FindROUsages(@ROSearchString)) - AND - ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) - or - ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - or - (@StepTypeList like '%20040%' AND IsRNO = -1))) - order by DvPath,OrdinalPath -OPTION (MAXRECURSION 10000) -END -END -GO - -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchROItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchROItemAndChildren Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranFrom]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsTranFrom]; -GO -/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranFrom] Script Date: 10/03/2012 10:06:38 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsTranFrom] -WITH EXECUTE AS OWNER -AS -begin - -Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=I.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=I.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=I.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=I.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=I.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=I.[ItemID]) [Transition_ToIDCount] -from Items I -join Transitions T on I.ContentID = T.FromID -END -GO - -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranFrom Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsTranFrom Error on Creation' -GO - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranTo]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsTranTo]; -GO -/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranTo] Script Date: 10/03/2012 10:08:03 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsTranTo] -WITH EXECUTE AS OWNER -AS -begin -with Itemz(ItemID, ContentID, PreviousID, [Type]) as ( - Select Distinct ItemID, C.ContentID, PreviousID, C.Type - FROM [Items] I - Join Contents C on C.ContentID = I.ContentID - JOIN Transitions T on t.ToID = I.ItemID or t.RangeID = I.ItemID - --where [ItemID]=@ItemID -Union ALL --- Parent - select I.ItemID,I.ContentID, I.PreviousID, C.Type - from Itemz Z - join Parts P on P.ItemID = Z.ItemID - join Items I on I.ContentID = P.ContentID - Join Contents C on C.ContentID = I.ContentID --- Previous -Union ALL - select I.ItemID,I.ContentID, I.PreviousID, C.Type - from Itemz Z - join Items I on Z.PreviousID = I.ItemID - Join Contents C on C.ContentID = I.ContentID - where Z.Type >= 10000 -) -Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=Z.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=Z.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=Z.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=Z.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=Z.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=Z.[ItemID]) [Transition_ToIDCount] -from Itemz Z join Items I on I.ItemID = Z.ItemID -OPTION (MAXRECURSION 10000) -END -GO - -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranTo Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsTranTo Error on Creation' -GO - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranFromAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsTranFromAndContent]; -GO -/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranFromAndContent] Script Date: 10/03/2012 10:52:31 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsTranFromAndContent] -WITH EXECUTE AS OWNER -AS -begin - -Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] -from Items I Join Contents C on I.ContentID = C.ContentID -join Transitions T on I.ContentID = T.FromID -END -GO -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranFromAndContent Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsTranFromAndContent Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranToAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsTranToAndContent]; -GO -GO -/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranToAndContent] Script Date: 10/03/2012 10:08:17 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsTranToAndContent] -WITH EXECUTE AS OWNER -AS -begin -with Itemz(ItemID, ContentID, PreviousID, [Type]) as ( - Select Distinct ItemID, C.ContentID, PreviousID, C.Type - FROM [Items] I - Join Contents C on C.ContentID = I.ContentID - JOIN Transitions T on t.ToID = I.ItemID or t.RangeID = I.ItemID - --where [ItemID]=@ItemID -Union ALL --- Parent - select I.ItemID,I.ContentID, I.PreviousID, C.Type - from Itemz Z - join Parts P on P.ItemID = Z.ItemID - join Items I on I.ContentID = P.ContentID - Join Contents C on C.ContentID = I.ContentID --- Previous -Union ALL - select I.ItemID,I.ContentID, I.PreviousID, C.Type - from Itemz Z - join Items I on Z.PreviousID = I.ItemID - Join Contents C on C.ContentID = I.ContentID - where Z.Type >= 10000 -) -Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] -from Itemz Z -Join Items I on Z.ItemID = I.ItemID -Join Contents C on I.ContentID = C.ContentID -OPTION (MAXRECURSION 10000) -END -GO - -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranToAndContent Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsTranToAndContent Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_SiblingAndChildrenItemsByProc] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingAndChildrenItemsByProc]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SiblingAndChildrenItemsByProc]; -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_tblChildItems] Script Date: 05/18/2011 11:20:48 ******/ -/* -select * from vefn_SiblingAndChildrenItemsByProc(30) II -join -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SiblingAndChildrenItemsByProc](@ProcID int) -RETURNS @SiblingAndChildren TABLE -( - [ItemID] int PRIMARY KEY - , [DVPath] nvarchar(max) - , [Path] nvarchar(max) - , [Level] int - , [FromType] int - , [Ordinal] int - , [ParentID] int - , [PreviousID] int - , [ContentID] int - , [DTS] datetime - , [UserID] nvarchar(100) - , [pContentID] int - , [pDTS] datetime - , [pUserID] nvarchar(100) - , [IsRNO] int - --- , [PPath] nvarchar(max) --- , [POrdinalPath] nvarchar(max) - , [OrdinalPath] nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -BEGIN -with Itemz([ItemID], [DVPath], [Level], [ParentID], [Ordinal], [PreviousID], [FromType], [ContentID], [DTS], [UserID],[pContentID], - [pDTS],[pUserID],PPath, [Path], [IsRNO], [POrdinalPath], [OrdinalPath]) as ( - Select [I].[ItemID], '' DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], - Cast('' as nvarchar(max)) [PPath], - Cast(Case when C.Type < 20000 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) [Path], - 0 IsRNO, Cast('' as nvarchar(max)) [POrdinalPath], Cast('0001' as nvarchar(max)) [OrdinalPath] - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - WHERE I.[ItemID] = @ProcID -Union All --- Children - select I.[ItemID], DVPath, [Level] + 1,Z.ItemID,0, I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID], - P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - when 8 then @DelimStep + 'SupInfo' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - when 8 then @DelimStep +'SupInfo' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001' - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select I.[ItemID], DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID] - ,null,null,null, - PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' THEN @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('00000' + cast(Z.[Ordinal] + 2 as varchar(5)), 5) - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 - -) -insert into @SiblingAndChildren -select I.[ItemID], [DvPath], [Path], I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID], - [pContentID],[pDTS],[pUserID],[IsRNO]/*,[PPath],[POrdinalPath]*/,[OrdinalPath] - from ItemZ I -OPTION (MAXRECURSION 10000) -END -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingAndChildrenItemsByProc Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SiblingAndChildrenItemsByProc Error on Creation' -GO - - -/****** Object: StoredProcedure [vefn_RemoveRange] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_RemoveRange]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_RemoveRange]; -GO - -/* -SELECT ContentID, text, [dbo].[vefn_RemoveRange](text,'') StrippedText -from contents -where contentid in (select top 25 ContentID from contents where text like '%[[]END>%') - -select top 25 * from contents where text like '%[[]END>%' - -SELECT ContentID, [dbo].[vefn_RemoveRange](text,'') StrippedText -from contents -where contentid =189 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_RemoveRange](@text nvarchar(MAX),@startToken nvarchar(MAX), @endToken nvarchar(MAX)) -RETURNS varchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @index int - DECLARE @index2 int - DECLARE @lenStartToken int - DECLARE @lenEndToken int - DECLARE @lastIndex int - SET @lenStartToken = len(@startToken) - SET @lenEndToken = len(@endToken) - SET @index = CHARINDEX(@startToken , @text) - SET @lastIndex = -1 - while (@index != 0) - BEGIN - SET @index2 = CHARINDEX(@endToken , @text, @index + @lenStartToken) - if (@index2>0) - SET @text = substring(@text,1,@index-1) + substring(@text,@index2+@lenEndToken,len(@text)) - SET @lastIndex = @index - SET @index = CHARINDEX(@startToken , @text) - if (@index = @lastIndex) SET @index = 0 - END - RETURN @text -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_RemoveRange Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_RemoveRange Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetPath] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetPath]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetPath]; -GO - -/* -select ItemID, CC.Type, dbo.ve_GetPath(ItemID) -from Items II join Contents CC on II.ContentID = CC.ContentID -where ItemID in(111,265,266,267) -*/ --- drop function ve_GetPath -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetPath] (@ItemID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN --- declare @STructID int ---set @StructID=11 -declare @Path varchar(max); -with Itemz(ItemCount,ItemID,PreviousID,FromType,CType,Number,Text,PPath, Path) as ( - Select 1,ItemID,PreviousID,0,C.Type/10000,C.Number,C.Text, - Cast(Case when C.Type < 20000 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') else '' end as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path - from Items I - join Contents C on I.ContentID = C.ContentID - where ItemID=@ItemID - Union All --- siblings - Select ItemCount+1,I.PreviousID,II.PreviousID,0,C.Type/10000,Z.Number,Z.Text,PPath,cast(ItemCount + 1 as nvarchar(4)) + PPath - from Items I - join Contents C on I.ContentID = C.ContentID - Join Items II on II.ItemID = I.PreviousID - Join Itemz Z on I.ItemID=Z.ItemID - where I.PreviousID != 0 - Union All --- children - select 1,I.ItemID,I.PreviousID,P.FromType,C.Type/10000,C.Number,C.Text, - case C.Type/10000 - when 0 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') - when 1 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') +'`' + cast(ItemCount + 0 as varchar(4)) - else - case P.FromType - when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(4)) - when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(4)) - when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(4)) - when 4 then '`Note`' + cast(ItemCount + 0 as varchar(4)) - when 5 then '`RNO`' - when 7 then '`Table`' - when 8 then '`SupInfo`' - else '`' + cast(ItemCount + 0 as varchar(4)) - end end + PPath PPath, - --'1' + - case C.Type/10000 - when 0 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') - when 1 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') +'`' + cast(ItemCount + 0 as varchar(4)) - else - case P.FromType - when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(4)) - when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(4)) - when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(4)) - when 4 then '`Note`' + cast(ItemCount + 0 as varchar(4)) - when 5 then '`RNO' - when 7 then '`Table' - when 8 then '`SupInfo' - else '`' + cast(ItemCount + 0 as varchar(4)) - end end + PPath Path - - from Parts P - join Items I on I.ContentID = P.ContentID - join Contents C on I.ContentID = C.ContentID - join Itemz Z on P.ItemID=Z.ItemID -) -select @Path = path From Itemz where ItemCount=1 and CType=0 -OPTION (MAXRECURSION 10000) -return @Path -END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetPath Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetPath Error on Creation' -GO - - -/****** Object: StoredProcedure [vefn_ProcedureByProcID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ProcedureByProcID]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ProcedureByProcID]; -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_ProcedureByProcID] Script Date: 05/18/2011 11:20:48 ******/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create FUNCTION [dbo].[vefn_ProcedureByProcID](@ProcID int) -RETURNS @SiblingAndChildren TABLE -( - [ItemID] int PRIMARY KEY - , [DVPath] nvarchar(max) - , [Path] nvarchar(max) - , [Level] int - , [FromType] int - , [Ordinal] int - , [ParentID] int - , [PreviousID] int - , [ContentID] int - , [DTS] datetime - , [UserID] nvarchar(100) - , [pContentID] int - , [pDTS] datetime - , [pUserID] nvarchar(100) - , [IsRNO] int - --- , [PPath] nvarchar(max) --- , [POrdinalPath] nvarchar(max) - , [OrdinalPath] nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -BEGIN -insert into @SiblingAndChildren - Select -[I].[ItemID] -, '' DVPath -, Cast(Case when C.Type < 20000 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) [Path] -,0 [Level] -,0 [FromType] -, 0 [Ordinal] -, 0 [ParentID] -, [PreviousID] -,[I].[ContentID] -,[I].[DTS] -,[I].[UserID] - ,0 [pContentID] -,[I].[DTS] [pDTS] -, [I].[UserID] [pUserID] -,0 IsRNO - , Cast('0001' as nvarchar(max)) [OrdinalPath] - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - WHERE I.[ItemID] = @ProcID -END -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ProcedureByProcID Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_ProcedureByProcID Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindContentText] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindContentText]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindContentText]; -GO - -/* -SELECT * From vefn_FindContentText('1','%RCP%') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindContentText]( -@DocVersionList nvarchar(MAX) -,@SearchString varchar(MAX) -,@IncludeLinks as int -,@IncludeRtfFormatting as int -,@IncludeSpecialCharacters as int) -RETURNS @FoundContents TABLE -( - ContentID int PRIMARY KEY - ,Type int - ,Text varchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @Dashes varchar(25) -set @Dashes = '\u8209?' -if(@SearchString not like '%\u8209?%') -BEGIN -set @Dashes='-' -END -IF(ISNULL(@DocVersionList,'')='') - BEGIN - INSERT INTO @FoundContents -- Do a case insensitive search - select ContentID,Type,Text from contents - where replace(.dbo.vefn_RemoveExtraText(Replace([Text],'-','\u8209?'),@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters),'\u8209?',@Dashes) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS - --where .dbo.vefn_RemoveExtraText(Replace(Replace([Text],'-','\u8209?'),'\','\u9586?'),@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS --- where Replace([Text],'-','\u8209?') like @SearchString Collate SQL_Latin1_General_CP1_CI_AS - --where Replace(Replace([Text],'-','\u8209?'),'\u160?',' ') like @SearchString Collate SQL_Latin1_General_CP1_CI_AS - END -ELSE - BEGIN - INSERT INTO @FoundContents -- Do a case insensitive search - select ContentID,Type,Text from contents - where [ContentID] in (select [ContentID] from vefn_DVContent(@DocVersionList)) - -- bug fix B2014-056 and B2014-102 now use vefn_RemoveExtraText which fixes searching for hard spaces and finding procedure text when it is bolded (or italics or underlined etc) - AND Replace(.dbo.vefn_RemoveExtraText(Replace([Text],'-','\u8209?'),@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters),'\u8209?',@Dashes) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS - --AND .dbo.vefn_RemoveExtraText(Replace(Replace([Text],'-','\u8209?'),'\','\u9586?'),@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS - --AND Replace([Text],'-','\u8209?') like @SearchString Collate SQL_Latin1_General_CP1_CI_AS - --AND Replace(Replace([Text],'-','\u8209?'),'\u160?',' ') like @SearchString Collate SQL_Latin1_General_CP1_CI_AS - END - -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindContentText Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindContentText Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindText] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindText]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindText]; -GO - -/* -SELECT * From vefn_FindText('8','Dog',1,0,0,1,'') -SELECT * From vefn_FindText('1','turbine\u8209?driven',0,0,0,0,'') -SELECT * From vefn_FindText('1','trip',0,0,0,0,'') -select * from vefn_FindText('1','',0,0,0,1,'20010,20008') -select * from vefn_FindText('1',null,0,0,0,1,'20010,20008') -select * from vefn_FindText('1',' ',0,0,0,1,'20010,20008') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindText]( -@DocVersionList nvarchar(MAX) -,@SearchString varchar(MAX) -,@CaseSensitive as int -,@IncludeLinks as int -,@IncludeRtfFormatting as int -,@IncludeSpecialCharacters as int -,@StepTypeList varchar(MAX)) -RETURNS @FoundContents TABLE -( - ContentID int PRIMARY KEY -) -WITH EXECUTE AS OWNER -AS -BEGIN -Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) -IF isnull(@SearchString,'%')='%' - BEGIN - insert into @FoundContents - select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C - where(isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) - or (dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - END -ELSE - BEGIN - Declare @SearchStringx nvarchar(200) --kbr - --set @SearchStringx = replace(@SearchString,'-','\u8209?') --kbr - --set @SearchStringx = replace(replace(@SearchString,'-','\u8209?'),'\','\u9586?') --kbr - set @SearchStringx = replace(@SearchString,'\u8209?','-') --JSJ B2016-209 not finding dashes in Word sections (FixSearchString converts '-' to '\u8209?') - IF @CaseSensitive = 0 -- Not Case Sensitive - BEGIN - insert into @FoundContents - select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchString,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) C - where - (.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS) - AND ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) - or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - UNION -- B2016-209 to find dashes in word sections - select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchStringx,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) C - where - (.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchStringx Collate SQL_Latin1_General_CP1_CI_AS) - AND ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) - or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - UNION - select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C - join Entries E on C.ContentID = E.ContentID - join Documents D on E.DocID = D.DocID - where - (Replace(D.DocAscii,nchar(176),'\''B0') like @SearchString OR Replace(D.DocAscii,nchar(176),'\''B0') like @SearchStringx Collate SQL_Latin1_General_CP1_CI_AS) - AND - ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) - or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - END - ELSE - BEGIN - IF @CaseSensitive = 1 -- Case Sensitive - BEGIN - insert into @FoundContents - select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchString,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) C - where - -- B2019-023 moved placement of Collate SQL_Latin1_CP1_CS_AS to before each like statement to enable case sensitive in Word sections - (.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) Collate SQL_Latin1_General_CP1_CS_AS like @SearchString) - AND ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) - or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - UNION - select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchStringx,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) C - where - (.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) Collate SQL_Latin1_General_CP1_CS_AS like @SearchStringx) - AND ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) - or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - - UNION -- B2016-209 to find dashes in word sections - select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C - join Entries E on C.ContentID = E.ContentID - join Documents D on E.DocID = D.DocID - where - (Replace(D.DocAscii,nchar(176),'\''B0') Collate SQL_Latin1_General_CP1_CS_AS like @SearchString OR Replace(D.DocAscii,nchar(176),'\''B0') Collate SQL_Latin1_General_CP1_CS_AS like @SearchStringx) - AND - ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) - or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - END - END -END -RETURN -END - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindText Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindText Error on Creation' -GO - --- THIS IS STUFF THAT WE FIXED IN PROMS2010.SQL AND PUT IN HERE ALSO -/****** Object: StoredProcedure [getItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemAndChildren]; -GO - --- getItemAndChildren 111 -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemAndChildren] (@ItemID int) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged] from ItemZ I - join Contents C on C.ContentID = I.ContentID - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: getItemAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [getItemNextAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemNextAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemNextAndChildren]; -GO - --- getItemNextAndChildren 111 -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemNextAndChildren] (@ItemID int) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged] from ItemZ I - join Contents C on C.ContentID = I.ContentID - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemNextAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: getItemNextAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetSiblingCount] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetSiblingCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetSiblingCount]; -GO - -/* -select top 5 CC.Number,CC.Text,Type,ItemID, dbo.ve_GetSiblingCount(ItemID) HLStepCount -from Contents CC -Join Parts PP on PP.ContentID = CC.ContentID -where CC.Type >= 10000 and CC.Type < 20000 -order by dbo.ve_GetSiblingCount(ItemID) desc - -select top 5 CC.Number,CC.Text,Type,ItemID, dbo.ve_GetSiblingCount(ItemID) SectionCount -from Contents CC -Join Parts PP on PP.ContentID = CC.ContentID -where CC.Type < 10000 -order by dbo.ve_GetSiblingCount(ItemID) desc - -select top 5 CC.Text,Type,ItemID, dbo.ve_GetSiblingCount(ItemID) SubStepCount -from Contents CC -Join Parts PP on PP.ContentID = CC.ContentID -where CC.Type >= 20000 -order by dbo.ve_GetSiblingCount(ItemID) desc - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetSiblingCount] (@ItemID int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN -declare @Count int; -with Itemz([Direction], [ItemID], [PreviousID]) as ( - Select 0 Direction,[ItemID], [PreviousID] - FROM [Items] - where [ItemID]=@ItemID --- Siblings Previous -Union All - select -1 Direction,I.[ItemID], I.[PreviousID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.Direction <= 0 --- Siblings Next -Union All - select 1 Direction,I.[ItemID], I.[PreviousID] - from Itemz Z - join Items I on I.ItemID = Z.PreviousID - where Z.Direction >= 0 -) -Select @Count = Count(*) from Itemz -OPTION (MAXRECURSION 10000) -return @Count END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetSiblingCount Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetSiblingCount Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_AllHighLevelSteps] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AllHighLevelSteps]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_AllHighLevelSteps]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_AllHighLevelSteps]() -RETURNS @HighLevelStepTransitions TABLE -( - ParentID int - ,ItemID int PRIMARY KEY - ,Ordinal int - ,Path varchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM (select II.ItemID ParentID, PP.ItemID, PreviousID, II.ContentID, II.DTS, II.UserID, II.LastChanged from Items II -Join Contents CC on II.ContentID = CC.ContentID -Join Parts PP on PP.ContentID = II.ContentID and FromType = 6 -where CC.Type = 10000) TT --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - --where Z.[Level] > 0 -) -Insert into @HighLevelStepTransitions -select [ParentID],ItemID,Ordinal,dbo.ve_GetPath([ItemID]) Path -from Itemz -Order by ParentID,ItemID -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_AllHighLevelSteps Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_AllHighLevelSteps Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_AllHighLevelStepTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AllHighLevelStepTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_AllHighLevelStepTransitions]; -GO - -/* -select * from vefn_AllHighLevelStepTransitions() -where ExternalTransitions > 0 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_AllHighLevelStepTransitions]() -RETURNS @HighLevelStepTransitions TABLE -( - ParentID int - ,ItemID int PRIMARY KEY - ,Ordinal int - ,Path varchar(max) - ,TransCount int - ,ExternalTransitions int - ,ExternalChildTransitions int - ,InternalTransitions int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM (select II.ItemID ParentID, PP.ItemID, PreviousID, II.ContentID, II.DTS, II.UserID, II.LastChanged from Items II -Join Contents CC on II.ContentID = CC.ContentID -Join Parts PP on PP.ContentID = II.ContentID and FromType = 6 -where CC.Type = 10000) TT --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - --where Z.[Level] > 0 -) -Insert into @HighLevelStepTransitions -select [ParentID],ItemID,Ordinal,dbo.ve_GetShortPath([ItemID]) Path,(Select Count(*) from Transitions where ToID=ItemID OR RangeID=ItemID ) TransCount -,(Select count(*) from vefn_FindExternalTransitions(ItemID)) ExternalTransitions -,(Select count(*) from vefn_FindExternalChildTransitions(ItemID)) ExternalChildTransitions -,(Select count(*) from vefn_FindInternalTransitions(ItemID)) InternalTransitions -from Itemz -where (Select Count(*) from Transitions where ToID=ItemID OR RangeID=ItemID ) > 0 -OR(Select count(*) from vefn_FindExternalTransitions(ItemID)) > 0 -OR(Select count(*) from vefn_FindInternalTransitions(ItemID)) > 0 -Order by ParentID,ItemID -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_AllHighLevelStepTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_AllHighLevelStepTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_ChildItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChildItems]; -GO - -/* -declare @PreviousID as int -declare @ItemID as int -set @ItemID = 450 -select @PreviousID = PreviousID from items where ItemID = @ItemID - -Select * from Items where ItemID = @ItemID - -select * from Transitions -where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) -AND (ToID = @ItemID or RangeID = @ItemID) - -select CC.Text from Transitions TT -join contents CC on TT.FromID = CC.ContentID -where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) -AND (ToID = @ItemID or RangeID = @ItemID) - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_ChildItems](@ItemID int) -RETURNS @Children TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ItemID], [ContentID]) as ( - Select 0 [Level], [ItemID], [ContentID] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1, I.[ItemID], I.[ContentID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] , I.[ItemID], I.[ContentID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children select ItemID, ContentID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_ChildItems Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_ChildItemsRange] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildItemsRange]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChildItemsRange]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_ChildItemsRange](@StartItemID int, @EndItemID int, @DestFormat int) -RETURNS @Children TABLE -( -ItemID int PRIMARY KEY, -ContentID int, -FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @FormatID int -SELECT @FormatID = isnull(@DestFormat,.dbo.vefn_GetInheritedFormat(@StartItemID,1)) -BEGIN -with Itemz([Level], [ItemID], [ContentID], [FormatID], [FoundEnd]) as ( -Select 0 [Level], [ItemID], I.[ContentID], IsNull(C.[FormatID], @FormatID), case [ItemID] when @EndItemID then 1 else 0 end [FoundEnd] -FROM [Items] I -JOIN [Contents] C on I.ContentID = C.ContentID -where [ItemID]=@StartItemID -Union All --- Children -select [Level] + 1, I.[ItemID], I.[ContentID], IsNull(C.[FormatID], Z.[FormatID]), case I.[ItemID] when @EndItemID then 1 else 0 end [FoundEnd] -from Itemz Z -join Parts P on P.ContentID = Z.ContentID -join Items I on I.ItemID = P.ItemID -JOIN [Contents] C on I.ContentID = C.ContentID --- Siblings -Union All -select [Level] , I.[ItemID], I.[ContentID], IsNull(C.[FormatID], Z.[FormatID]), case I.[ItemID] when @EndItemID then 1 else 0 end [FoundEnd] -from Itemz Z -join Items I on I.PreviousID = Z.ItemID -JOIN [Contents] C on I.ContentID = C.ContentID -where FoundEnd = 0 -) -insert into @Children select ItemID, ContentID, FormatID from Itemz -OPTION (MAXRECURSION 10000) - -END -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildItemsRange Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_ChildItemsRange Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_ChildrenItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildrenItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChildrenItems]; -GO - -/* -select * from Transitions -where (ToID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) OR (RangeID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) -AND NOT (FromID in(Select ContentID From dbo.vefn_ChildrenItems(185,184))) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_ChildrenItems](@ItemID int, @ParentID int) -RETURNS @Children TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children select ItemID, ContentID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildrenItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_ChildrenItems Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindAffectedTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindAffectedTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindAffectedTransitions]; -GO - -/* -select top 1 * from items order by itemid desc -Select -FromID,.dbo.ve_GetPathFromContentID(FromID) ContentPath -,ToID,dbo.ve_GetPath(ToID) ToPath -,RangeID,dbo.ve_GetPath(RangeID) RangePath -,cc.Text -from vefn_FindAffectedTransitions(2102) ttz -join transitions tt on ttz.TransitionID = tt.TransitionID ---join items ii on ii.ItemID = tt.fromID -join contents cc on tt.FromID = cc.contentid -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindAffectedTransitions](@ItemID int) -RETURNS @Transitions TABLE -( - TransitionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -declare @Type int -select @Type = CC.Type from Contents CC Join Items II ON II.ContentID = CC.ContentID Where ItemID = @ItemID -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- All Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where @Type >= 20000 OR Z.[Level] > 0 -- This would limit the siblings to the siblings of the children and not the initial ItemID -) -, Itemz2([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID --- All Siblings -Union All - select [Level] ,Z.[Ordinal] -1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz2 Z - join Items I on Z.PreviousID = I.ItemID - where @Type >= 20000 OR Z.[Level] > 0 -- This would limit the siblings to the siblings of the children and not the initial ItemID -) -insert into @Transitions -select TransitionID from Transitions TT -where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) -UNION -select TransitionID from Transitions TT -JOIN Itemz2 on ToID=ItemID and RangeID=ItemID and IsRange = 2 -OPTION (MAXRECURSION 10000) -END -RETURN -END - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindAffectedTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindAffectedTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindExternalChildTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindExternalChildTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindExternalChildTransitions]; -GO - -/* -Select * from vefn_FindExternalChildTransitions(185) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindExternalChildTransitions](@ItemID int) -RETURNS @Children TABLE -( - FromItemID int, - ToID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @ChildList AS TABLE - ( - ItemID INT PRIMARY KEY, - ContentID INT, - Level INT - ) -INSERT INTO @ChildList SELECT * FROM vefn_ChildItemz(@ItemID) -insert into @Children -select ItemID [FromItemID], case when TT.ToID in(select ItemID from @ChildList) then TT.ToID else TT.RangeID end [ToID] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID in(select ItemID from @ChildList where Level > 0) OR RangeID in(select ItemID from @ChildList where Level > 0)) -AND FromID not in(Select ContentID from @ChildList) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindExternalChildTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindExternalChildTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindExternalTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindExternalTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindExternalTransitions]; -GO - -/* -Select * from vefn_FindExternalTransitions(185) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindExternalTransitions](@ItemID int) -RETURNS @Children TABLE -( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL -) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @ChildList AS TABLE - ( - ItemID INT PRIMARY KEY, - ContentID INT, - Level INT - ) -INSERT INTO @ChildList SELECT * FROM vefn_ChildItemz(@ItemID) -insert into @Children -select ItemID [FromItemID], TT.[TransitionID], TT.[FromID], TT.[ToID], TT.[RangeID], TT.[Config] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID in(select ItemID from @ChildList) OR RangeID in(select ItemID from @ChildList)) -AND FromID not in(Select ContentID from @ChildList) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindExternalTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindExternalTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_ChildItemz] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildItemz]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChildItemz]; -GO - -/* -Select * from vefn_ChildItemz(185) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2015 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_ChildItemz](@ItemID int) -RETURNS @Children TABLE -( - ItemID int PRIMARY KEY, - ContentID int, - Level int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ItemID], [ContentID]) as ( - Select 0 [Level], [ItemID], [ContentID] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1, I.[ItemID], I.[ContentID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] , I.[ItemID], I.[ContentID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children select ItemID, ContentID, Level from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildItemz Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_ChildItemz Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindInternalTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindInternalTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindInternalTransitions]; -GO - -/* -Select * from vefn_FindInternalTransitions(185) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindInternalTransitions](@ItemID int) -RETURNS @Children TABLE -( - FromItemID int, - ToID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children -select ItemID [FromItemID], case when TT.ToID in(select ItemID from Itemz) then TT.ToID else TT.RangeID end [ToID] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) -AND FromID in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindInternalTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindInternalTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindInternalTransitionsForCopy] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindInternalTransitionsForCopy]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindInternalTransitionsForCopy]; -GO - -/* -Select * from vefn_FindInternalTransitionsForCopy(10277) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindInternalTransitionsForCopy](@ItemID int) -RETURNS @Transitions TABLE -( - TransitionID int, - FromID int, - TranType int, - ToID int, - RangeID int, - OldTransition int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Transitions -select TransitionID, FromID, TT.TranType, TT.ToID, TT.RangeID, CAST(TT.Config as int) --case when TT.ToID in(select ItemID from Itemz) then TT.ToID else TT.RangeID end [ToID] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) -AND FromID in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindInternalTransitionsForCopy Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindInternalTransitionsForCopy Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetInheritedFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetInheritedFormat]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetInheritedFormat]; -GO - -/* Samples -Select TranType, .dbo.vefn_GetInheritedFormat(355) TransFormat - from(Select 1 TranType UNION Select 2 TranType UNION Select 3 TranType UNION - Select 4 TranType UNION Select 5 TranType UNION Select 6 TranType UNION - Select 7 TranType UNION Select 8 TranType UNION Select 9 TranType UNION Select 10 TranType) TT - -Select top 25 ItemID, TranType, .dbo.vefn_GetInheritedFormat(ItemID) TransFormat - From Transitions TR - Join Items II on II.ContentID = TR.FromID - -*/ -/* - local is a 'boolean' (0=false, 1=true) to state whether to look at the item itself or - only its parent -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetInheritedFormat] (@ItemID int, @local int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @FormatID as int - -- First get the Active Format - begin - with Itemz([Level], [PreviousID], [ItemID], [ParentID], [FolderID], [FormatID]) as ( - Select 0 [Level], [PreviousID], [ItemID], null, null, - case when @local = 1 then (Select FormatID from Contents CC where [CC].[ContentID] = [II].[ContentID]) - else null end FormatID - FROM [Items] II - where [ItemID]=@ItemID - Union All - -- Parent Item - select [Level] + 1, I.[PreviousID], I.[ItemID], null, null, C.FormatID - from Itemz Z - join Parts P on P.ItemID = Z.ItemID - join Items I on I.ContentID = P.ContentID - join Contents C on C.ContentID = P.ContentID - where Z.FormatID is null - -- Siblings Item - Union All - select [Level] , I.[PreviousID] , I.[ItemID], null, null, Z.FormatID - from Itemz Z - join Items I on Z.PreviousID = I.ItemID - where Z.FormatID is null - Union All - -- DocVersion From Item - select [Level] + 1, null, null, DV.FolderID, null, DV.FormatID - from Itemz Z - join DocVersions DV on DV.ItemID = Z.ItemID - where Z.FormatID is null - Union All - -- Folders - select [Level] + 1, null, null, FF.ParentID, FF.FolderID, FF.FormatID - from Itemz Z - join Folders FF on FF.FolderID = Z.ParentID and FF.ParentID <> FF.FolderID - where Z.FormatID is null - ) - Select @FormatID = FormatID from Itemz ZZ Where FormatID is not null - OPTION (MAXRECURSION 10000) - END - RETURN @FormatID -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetInheritedFormat Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_GetInheritedFormat Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_HighLevelStepTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_HighLevelStepTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_HighLevelStepTransitions]; -GO - -/* -select * from vefn_HighLevelStepTransitions(105,104) -where TransCount > 0 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_HighLevelStepTransitions](@ItemID int, @ParentID int) -RETURNS @HighLevelStepTransitions TABLE -( - ParentID int - ,ItemID int PRIMARY KEY - ,Path varchar(max) - ,TransCount int - ,ExternalTransitions int - ,InternalTransitions int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - --where Z.[Level] > 0 -) -Insert into @HighLevelStepTransitions -select [ParentID],ItemID,dbo.ve_GetPath([ItemID]) ,(Select Count(*) from Transitions where ToID=ItemID OR RangeID=ItemID ) TransCount -,(Select count(*) from vefn_FindExternalTransitions(ItemID)) ExternalTransitions -,(Select count(*) from vefn_FindInternalTransitions(ItemID)) InternalTransitions -from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_HighLevelStepTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_HighLevelStepTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_SiblingChildrenItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingChildrenItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SiblingChildrenItems]; -GO - -/* -select * from Transitions -where (ToID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) OR (RangeID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) -AND NOT (FromID in(Select ContentID From dbo.vefn_ChildrenItems(185,184))) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SiblingChildrenItems](@ItemID int) -RETURNS @SiblingChildren TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 as [pContentID],[DTS] As [pDTS], [UserID] As [pUserID], [LastChanged] As [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] as [pContentID],P.[DTS] As [pDTS],P.[UserID] As [pUserID],P.[LastChanged] As [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -insert into @SiblingChildren select ItemID, ContentID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingChildrenItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SiblingChildrenItems Error on Creation' -GO - -/****** Object: Table Function [vefn_SiblingItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SiblingItems]; -GO - -/* -select * from Transitions -where (ToID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) OR (RangeID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) -AND NOT (FromID in(Select ContentID From dbo.vefn_ChildrenItems(185,184))) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SiblingItems](@ItemID int, @ParentID int) -RETURNS @Siblings TABLE -( - ItemID int PRIMARY KEY, - ContentID int, - Ordinal int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -insert into @Siblings select ItemID, ContentID, Ordinal from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SiblingItems Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_CleanUpItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_CleanUpItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_CleanUpItems]; -GO - -/* -select *, .dbo.ve_GetParts(ContentID,6) SubSteps from items -where contentid in(select contentid from contents where text like 'DISPATCH operator to open breaker%') - - -select * from items -where itemid in(298,299,436,440) - -select itemid from items -where previousid is null and itemid not in (select itemid from parts) - ---select * from contents where text like 'foldout cip%' - -select count(*) from parts -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE procedure [dbo].[vesp_CleanUpItems] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - BEGIN -with Itemz(ItemID) as( -select itemid from items -where previousid is null -and itemid not in(1) -and itemid not in (select itemid from parts) -UNION ALL -select ii.itemid from items ii join itemz zz on zz.itemid = ii.previousid -) -delete from items where itemid in (select itemid from itemz) -OPTION (MAXRECURSION 10000) - END - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_CleanUpItems Succeeded' -ELSE PRINT 'Procedure Creation: vesp_CleanUpItems Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListChildren]; -GO - --- vesp_ListChildren 17 --- drop procedure [getItemAndChildren] -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListChildren] (@ItemID int) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListChildren Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListContentPath] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListContentPath]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListContentPath]; -GO - --- vesp_ListContentPath 148 -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create PROCEDURE [dbo].[vesp_ListContentPath] - ( - @ContentID int - ) -WITH EXECUTE AS OWNER -AS -BEGIN -with ContentZ(BaseID,ContentID,ItemID,Number,Text,Item,Level,PreviousID) as ( - Select II.ItemID,CC.ContentID,II.ItemID,CC.Number,CC.Text,1,1,II.PreviousID - from Items II join Contents CC on CC.ContentID=II.ContentID where @ContentID=II.ContentID - Union All --- - Select BaseID,CC.ContentID,II.ItemID,CC.Number,CC.Text,ZZ.Item+1,ZZ.Level,II.PreviousID - FROM ContentZ ZZ - Join Items II on II.ItemID = ZZ.PreviousID - Join Contents CC on II.ContentID = CC.ContentID - where ZZ.PreviousID is not null - Union All - Select BaseID,CC.ContentID,II.ItemID,CC.Number,CC.Text,1,ZZ.Level+1,II.PreviousID - FROM ContentZ ZZ - Join Parts PP on ZZ.ItemID = PP.ItemID - Join Contents CC on PP.ContentID = CC.ContentID - Join Items II on II.ContentID = CC.ContentID - where ZZ.PreviousID is null --and ZZ.ItemID in(717,715,711,662) -) -Select ZZ.BaseID,ZZ.Level,MaxItem,ZZ.Number,ZZ.Text from ContentZ ZZ -join (select BaseID, Level, max(item) MaxItem from ContentZ group by BaseID,Level) T1 on T1.BaseID=ZZ.BaseID and T1.Level = ZZ.Level -where Item=1 -order by ZZ.BaseID,ZZ.Level Desc, Item Desc -OPTION (MAXRECURSION 10000) -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListContentPath Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListContentPath Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemAndChildren]; -GO - --- vesp_ListItemAndChildren 1,0 --- drop procedure [vesp_ListItemAndChildren] -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemAndChildren] (@ItemID int, @ParentID int) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemAndChildren Error on Creation' -GO - --- THIS IS STUFF THAT WE FIXED IN PROMStoCM.SQL AND PUT IN HERE ALSO -/****** Object: StoredProcedure [getItemAuditsByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemAuditsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemAuditsByItemID]; -GO - -/* -getitemauditsbyitemid 10183 - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemAuditsByItemID] -( - @ItemID int -) - -WITH EXECUTE AS OWNER -AS -/* - with Itemz([AuditType],[Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 'root' [AuditType], 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]= @ItemID - Union All - -- Children - select 'chld' [AuditType], [Level] + 2,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - -- Siblings - Union All - select 'sibl' [AuditType], [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 - ) -*/ - -select * from -( - --get deleted previous item - select 0 Level,ia.*,dbo.[ve_GetPartType](@ItemID) ItemType from - itemaudits ia - inner join itemaudits iaa on ia.itemid = iaa.previousid - where iaa.itemid = @ItemID - and ia.itemid not in (select itemid from items where itemid = ia.itemid) - and ia.deletestatus in (select max(deletestatus) from itemaudits where itemid = ia.itemid) - union - --get deleted next item -/* - select 1 Level,ia.*,@itemtype ItemType from itemaudits ia - where ia.previousid = @ItemID - and ia.itemid not in (select itemid from items where itemid = ia.itemid) - and ia.deletestatus in (select max(deletestatus) from itemaudits where itemid = ia.itemid) -*/ - select 1 Level, - ia.[AuditID], - ia.[ItemID], - ia.[PreviousID], - ia.[ContentID], - ia.[DTS], - ia.[UserID], - ti.[DeleteStatus] -,dbo.[ve_GetPartType](@ItemID) ItemType - from itemaudits ia - inner join tblitems ti on ia.itemid = ti.itemid - where ia.previousid = @ItemID - and ti.deletestatus > 0 -and ia.dts = ti.dts - union - --get chillins - select 2 Level,ia.*, -case -when pa.fromtype = 1 then 'Procedure' -when pa.fromtype = 2 then 'Section' -when pa.fromtype = 3 then 'Caution' -when pa.fromtype = 4 then 'Note' -when pa.fromtype = 5 then 'RNO' -when pa.fromtype = 6 then 'Step' -when pa.fromtype = 7 then 'Table' -else 'Unknown' -end itemtype - from itemaudits ia - inner join partaudits pa on ia.itemid = pa.itemid - inner join items ii on pa.contentid = ii.contentid - where ii.itemid = @ItemID - and ia.itemid not in (select itemid from items where itemid = ia.itemid) - and ia.deletestatus in (select max(deletestatus) from itemaudits where itemid = ia.itemid) -) ia -order by deletestatus desc -OPTION (MAXRECURSION 10000) ---select * from itemz order by parentid,ordinal - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemAuditsByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getItemAuditsByItemID Error on Creation' -GO - --- THIS IS STUFF THAT WE FIXED IN PROMStoAPPR.SQL AND PUT IN HERE ALSO -/****** Object: StoredProcedure [vefn_FindExternalFromTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindExternalFromTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindExternalFromTransitions]; -GO - -/* -Select * from vefn_FindExternalFromTransitions(185) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create FUNCTION [dbo].[vefn_FindExternalFromTransitions](@ItemID int) -RETURNS @Children TABLE -( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children -select ItemID [FromItemID], TT.[TransitionID], TT.[FromID], TT.[ToID], TT.[RangeID], TT.[Config] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID not in(select ItemID from Itemz) OR RangeID not in(select ItemID from Itemz)) -AND FromID in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindExternalFromTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindExternalFromTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getAnnotationAuditsChronologyByItemIDandUnitID] Script Date: 10/10/2012 14:45:33 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationAuditsChronologyByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotationAuditsChronologyByItemIDandUnitID]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/****** Object: StoredProcedure [getAnnotationAuditsChronologyByItemIDandUnitID] ******/ -/* -getAnnotationAuditsChronologyByItemIDandUnitID 13,13,1 -getAnnotationAuditsChronologyByItemIDandUnitID 30,8570,1 -getAnnotationAuditsChronologyByItemIDandUnitID 1,1,1 -getAnnotationAuditsChronologyByItemIDandUnitID 30,8505,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create procedure [dbo].[getAnnotationAuditsChronologyByItemIDandUnitID] -( - @ProcItemID int, - @ItemID int, - @UnitID int, - @DTS datetime -) -WITH EXECUTE AS OWNER -AS -begin --- declare @dts datetime --- set @dts = (select dts from items where itemid = @procitemid) - declare @tci table - ( - ItemID int, - IContentID int, - IDeleteStatus int, - ProcDTS datetime, - Path nvarchar(max), - OrdinalPath nvarchar(max) - ) - insert into @tci - select * from vefn_tblchilditems(@ProcItemID,@ItemID,0) - select - case - when lastauditid is null and dts > itemdts then 'Added' - when deletestatus > 0 then 'Deleted' - when lastauditid = deletedauditid then 'Restored' - else 'Changed' - end ActionWhat - ,case - when lastauditid is null and dts > itemdts then dts - when deletestatus > 0 then ActionDTS - when lastauditid = deletedauditid then ActionDTS - else dts - end ActionWhen - ,* - from - ( - select - cast(ident_current('annotationaudits') + 1 as bigint) auditid - -- (select max(auditid) + 1 from annotationaudits) auditid - -- 0 auditid - ,aa.annotationid - ,aa.itemid - ,aa.typeid - ,aa.rtftext - ,aa.searchtext - ,aa.config - ,aa.dts - ,aa.userid - ,0 deletestatus - ,aa.ActionDTS - ,ii.contentid icontentid - ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid) LastAuditID - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and deletestatus > 0 and aa.dts = dts) DeletedAuditID -,tci.ordinalpath - from tblannotations aa - inner join items ii on aa.itemid = ii.itemid -join @tci tci on tci.itemid = ii.itemid - where aa.deletestatus = 0 - union - select - aa.auditid - ,aa.annotationid - ,aa.itemid - ,aa.typeid - ,aa.rtftext - ,aa.searchtext - ,aa.config - ,aa.dts - ,aa.userid - ,aa.deletestatus - ,aa.ActionDTS - ,ii.contentid icontentid - ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid ) LastAuditID - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid and deletestatus > 0 and aa.dts = dts) DeletedAuditID -,tci.ordinalpath - from annotationaudits aa - inner join items ii on aa.itemid = ii.itemid -join @tci tci on tci.itemid = ii.itemid - ) ah - where itemid in (select itemid from vefn_tblchilditems (@procitemid,@itemid,0)) - and dts > @dts - and (dbo.ve_GetItemDerivedApplicability(ItemID) = '-1' or ',' + dbo.ve_GetItemDerivedApplicability(ItemID) + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%') - --(select dts from versions where versionid = (select max(versionid) from revisions rr inner join versions vv on rr.revisionid = vv.revisionid - --inner join stages ss on vv.stageid = ss.stageid where itemid = @procitemid and ss.isapproved = 1)) - order by ordinalpath,annotationid,auditid--actionwhen -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemIDandUnitID Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemIDandUnitID Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getContentAuditsChronologyByItemIDandUnitID] Script Date: 10/10/2012 12:48:39 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsChronologyByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAuditsChronologyByItemIDandUnitID]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/****** Object: StoredProcedure [getContentAuditsChronologyByItemIDandUnitID] ******/ -/* -getContentAuditsChronologyByItemIDandUnitID 10154,10154,0,1 -getContentAuditsChronologyByItemIDandUnitID 42,42,0,1 -getContentAuditsChronologyByItemIDandUnitID 1,1,0,1 -getContentAuditsChronologyByItemIDandUnitID 146,146,1,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsChronologyByItemIDandUnitID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @UnitID int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin - select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) --- select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah - where dbo.ve_GetItemDerivedApplicability(ItemID) = '-1' or ',' + dbo.ve_GetItemDerivedApplicability(ItemID) + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%' --- order by OrdinalPath, contentid,auditid--actionwhen - RETURN -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsChronologyByItemIDandUnitID Succeeded' -ELSE PRINT 'Procedure Creation: getContentAuditsChronologyByItemIDandUnitID Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getContentAuditsSummaryByItemIDandUnitID] Script Date: 10/10/2012 12:56:01 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsSummaryByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAuditsSummaryByItemIDandUnitID]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/****** Object: StoredProcedure [getContentAuditsSummaryByItemIDandUnitID] ******/ -/* -getContentAuditsSummaryByItemIDandUnitID 146,146,0,1 -getContentAuditsSummaryByItemIDandUnitID 42,42,0,1 -getContentAuditsSummaryByItemIDandUnitID 1,1,0,1 -getContentAuditsSummaryByItemIDandUnitID 146,146,1,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create PROCEDURE [dbo].[getContentAuditsSummaryByItemIDandUnitID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @UnitID int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin - DECLARE @ProcId Int - Set @ProcID = @ProcedureItemID - DECLARE @Apples TABLE - ( - ProcID int, - ItemId int, - ContentID int Primary Key, - Apple nvarchar(255), - DerApple nvarchar(255) - ) ---Build Applicabilty table for the specified Procedure ID - BEGIN - with Itemz([Level],[Apple],[DerApple],[ParApple],[ItemID], [ContentID]) as - (Select 0 - ,xMasterSlave.value('@Applicability','nvarchar(255)') Apple - ,IsNull(xMasterSlave.value('@Applicability','nvarchar(255)'),dbo.ve_getItemDerivedApplicability(@ProcID)) DerApple - ,cast(dbo.ve_getItemDerivedApplicability(@ProcID) as nvarchar(255)) ParApple - ,[II].[ItemID], [II].[ContentID] - FROM [Items] II - JOIN (Select ContentID, cast(config as XML) xConfig FROM Contents) CC ON II.ContentID = CC.ContentID - outer apply xConfig.nodes('//MasterSlave') tMasterSlave(xMasterSlave) - Where II.[ItemID] = @ProcID - Union All - -- Children - select ZZ.Level + 1 Level - ,xMasterSlave.value('@Applicability','nvarchar(255)') Apple - ,IsNull(xMasterSlave.value('@Applicability','nvarchar(255)'),ZZ.DerApple) DerApple - ,ZZ.DerApple ParApple - , II.[ItemID], II.[ContentID] - from Itemz ZZ - join Parts PP on PP.ContentID = ZZ.ContentID - join Items II on II.ItemID = PP.ItemID - JOIN (Select ContentID, cast(config as XML) xConfig FROM Contents) CC ON II.ContentID = CC.ContentID - outer apply xConfig.nodes('//MasterSlave') tMasterSlave(xMasterSlave) - Union All - -- Siblings - select ZZ.Level - ,xMasterSlave.value('@Applicability','nvarchar(255)') Apple - ,IsNull(xMasterSlave.value('@Applicability','nvarchar(255)'),ZZ.ParApple) DerApple - ,ZZ.ParApple - , II.[ItemID], II.[ContentID] - from Itemz ZZ - join Items II on II.PreviousID = ZZ.ItemID - JOIN (Select ContentID, cast(config as XML) xConfig FROM Contents) CC ON II.ContentID = CC.ContentID - outer apply xConfig.nodes('//MasterSlave') tMasterSlave(xMasterSlave) - Where Level >= 1 - ) - insert into @Apples - select @ProcID ProcID, ItemID, ContentID, Apple, DerApple--, [ItemID], [ContentID] - from ItemZ II - OPTION (MAXRECURSION 10000) -END - - -DECLARE @Chrono TABLE -( -[AuditID] bigint, -[ContentID] int, -[Number] nvarchar(max), -[Text] nvarchar(max), -[Type] int, -[FormatID] int, -[Config] nvarchar(max), -[DTS] datetime, -[UserID] nvarchar(max), -[DeleteStatus] int, -[ActionDTS] datetime, -[ActionWhat] nvarchar(max), -[ActionWhen] datetime, -[Path] nvarchar(max), -ItemID int, -TypeName nvarchar(max), -ordinalpath nvarchar(max) -) - --- Use the Applicability Table to limit Items included in the list of changes -insert into @Chrono -select Distinct VC.* from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) VC -Left JOIN @Apples AA ON AA.ContentID = VC.ContentID -Where aa.ContentID is null or AA.DerApple = '-1' or ',' + AA.DerApple + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%' - -Declare @Audits TABLE -( -AuditID int primary key -) --- Create a Unique list of Minimum and Maximum AuditIDs for Each ContentID -insert into @Audits -select min(auditID) from @Chrono group by contentid UNION select max(auditID) from @Chrono group by contentid --- Return the List Of Changes with the first Audit Record and the Last Audit Record -select * from @Chrono -where AuditID is null OR AuditID in (select AuditID from @Audits) -order by OrdinalPath, contentid,auditid - - RETURN -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsSummaryByItemIDandUnitID Succeeded' -ELSE PRINT 'Procedure Creation: getContentAuditsSummaryByItemIDandUnitID Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getCurrentRevisionByItemIDandUnitID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[getCurrentRevisionByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [dbo].[getCurrentRevisionByItemIDandUnitID]; -GO - -/****** Object: StoredProcedure [dbo].[getCurrentRevisionByItemIDandUnitID] Script Date: 06/22/2012 16:58:12 ******/ -/* -getCurrentRevisionByItemID 41 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getCurrentRevisionByItemIDandUnitID] -( - @ItemID int, - @UnitID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [Revisions].[RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] -inner join -( -select top 1 revisionid,mxvid from -( -select rr.revisionid,max(vv.versionid) mxvid -from items ii -inner join revisions rr on ii.itemid = rr.itemid -inner join versions vv on rr.revisionid = vv.revisionid -inner join stages ss on vv.stageid = ss.stageid -cross apply rr.config.nodes('Config/Applicability') t1(r1) -where ss.isapproved = 1 -and ii.itemid = @ItemID -and r1.value('@Index','int') = @UnitID -group by rr.revisionid -union -select null,null -) ds -order by mxvid desc -) rr on [Revisions].revisionid = rr.revisionid --- WHERE [ItemID] = @ItemID --- ORDER BY [RevisionID] DESC - RETURN -GO -IF (@@Error = 0) PRINT 'StoredProcedure [getCurrentRevisionByItemIDandUnitID] Succeeded' -ELSE PRINT 'StoredProcedure [getCurrentRevisionByItemIDandUnitID] Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getDocumentByLibDoc] Script Date: 01/30/2012 14:08:10 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocumentByLibDoc]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocumentByLibDoc]; -GO - --- [dbo].[getDocumentByLibDoc] 'DOC_0000',4 --- [dbo].[getDocumentByLibDoc] 'DOC_0000',3 --- [dbo].[getDocumentByLibDoc] 'DOC_0000',2 --- [dbo].[getDocumentByLibDoc] 'DOC_0000',1 -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocumentByLibDoc] - -( - @LibDoc varchar(12), - @VersionID int -) -WITH EXECUTE AS OWNER -AS - DECLARE @DocID int - select @DocID = docid - from - ( - select - distinct ah.docid,.dbo.vefn_GetVersionIDByItemID(ii.itemid) versionid - from - ( - select dd.docid,ofn.value('@OriginalFileName','varchar(20)') origfilename,dts - from (select docid,cast(config as xml) xconfig,dts from documents) dd - cross apply xconfig.nodes('//History') t1(ofn) - ) ah - inner join entries ee on ah.docid = ee.docid - inner join items ii on ee.contentid = ii.itemid - where origfilename = @LibDoc + '.LIB' - ) ah - where versionid = @VersionID - --- from (select docid,cast(config as xml) xconfig from documents) ah --- cross apply xconfig.nodes('//Config/History') t1(roc) --- where roc.value('@OriginalFileName','varchar(12)') = @LibDoc + '.LIB' - - SELECT - [DocID], - [LibTitle], - [DocContent], - [DocAscii], - [Config], - [DTS], - [UserID], - [LastChanged], - [FileExtension], - (SELECT COUNT(*) FROM [DROUsages] WHERE [DROUsages].[DocID]=[Documents].[DocID]) [DROUsageCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[DocID]=[Documents].[DocID]) [EntryCount], - (SELECT COUNT(*) FROM [Pdfs] WHERE [Pdfs].[DocID]=[Documents].[DocID]) [PdfCount] - FROM [Documents] - WHERE [DocID]=@DocID - - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [RODbs].[ROName] [RODb_ROName], - [RODbs].[FolderPath] [RODb_FolderPath], - [RODbs].[DBConnectionString] [RODb_DBConnectionString], - [RODbs].[Config] [RODb_Config], - [RODbs].[DTS] [RODb_DTS], - [RODbs].[UserID] [RODb_UserID] - FROM [DROUsages] - JOIN [RODbs] ON - [RODbs].[RODbID]=[DROUsages].[RODbID] - WHERE - [DROUsages].[DocID]=@DocID - - - SELECT - [Entries].[ContentID], - [Entries].[DocID], - [Entries].[DTS], - [Entries].[UserID], - [Entries].[LastChanged], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [Entries] - JOIN [Contents] ON - [Contents].[ContentID]=[Entries].[ContentID] - WHERE - [Entries].[DocID]=@DocID - - - SELECT - [Pdfs].[DocID], - [Pdfs].[DebugStatus], - [Pdfs].[TopRow], - [Pdfs].[PageLength], - [Pdfs].[LeftMargin], - [Pdfs].[PageWidth], - [Pdfs].[PageCount], - [Pdfs].[DocPdf], - [Pdfs].[DTS], - [Pdfs].[UserID], - [Pdfs].[LastChanged] - FROM [Pdfs] - WHERE - [Pdfs].[DocID]=@DocID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocumentByLibDoc Succeeded' -ELSE PRINT 'Procedure Creation: getDocumentByLibDoc Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[getRevisionByItemIDandRevisionNumberAndUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID]; -GO - -/****** Object: StoredProcedure [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID] Script Date: 06/25/2012 23:05:17 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID] - -( - @ItemID int, - @RevisionNumber nvarchar(50), - @UnitID int -) -WITH EXECUTE AS OWNER -AS -declare @RevisionID int -set @RevisionID = (select revisionid from revisions rr cross apply rr.config.nodes('//Applicability') t1(r1) where itemid = @itemid and revisionnumber = @RevisionNumber and r1.value('@Index','int') = @UnitID) - SELECT - [RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] - WHERE [RevisionID]=@RevisionID - - SELECT - [Checks].[CheckID], - [Checks].[RevisionID], - [Checks].[StageID], - [Checks].[ConsistencyChecks], - [Checks].[DTS], - [Checks].[UserID], - [Checks].[LastChanged], - [Stages].[Name] [Stage_Name], - [Stages].[Description] [Stage_Description], - [Stages].[IsApproved] [Stage_IsApproved], - [Stages].[DTS] [Stage_DTS], - [Stages].[UserID] [Stage_UserID] - FROM [Checks] - JOIN [Stages] ON - [Stages].[StageID]=[Checks].[StageID] - WHERE - [Checks].[RevisionID]=@RevisionID - - - SELECT - [Versions].[VersionID], - [Versions].[RevisionID], - [Versions].[StageID], - [Versions].[DTS], - [Versions].[UserID], - [Versions].[LastChanged], - [Versions].[PDF], - [Versions].[SummaryPDF], - [Stages].[Name] [Stage_Name], - [Stages].[Description] [Stage_Description], - [Stages].[IsApproved] [Stage_IsApproved], - [Stages].[DTS] [Stage_DTS], - [Stages].[UserID] [Stage_UserID] - FROM [Versions] - JOIN [Stages] ON - [Stages].[StageID]=[Versions].[StageID] - WHERE - [Versions].[RevisionID]=@RevisionID - - RETURN -GO -IF (@@Error = 0) PRINT 'StoredProcedure [getRevisionByItemIDandRevisionNumberAndUnitID] Succeeded' -ELSE PRINT 'StoredProcedure [getRevisionByItemIDandRevisionNumberAndUnitID] Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getRevisionsByItemIDandUnitID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[getRevisionsByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [dbo].[getRevisionsByItemIDandUnitID]; -GO - -/****** Object: StoredProcedure [dbo].[getRevisionsByItemIDandUnitID] Script Date: 06/26/2012 16:22:32 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRevisionsByItemIDandUnitID] -( - @ItemID int, - @UnitID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] -cross apply config.nodes('//Applicability') t1(r1) - WHERE [ItemID] = @ItemID -and r1.value('@Index','int') = @UnitID -and (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) > 0 - ORDER BY [RevisionID] DESC - RETURN -GO -IF (@@Error = 0) PRINT 'StoredProcedure [getRevisionsByItemIDandUnitID] Succeeded' -ELSE PRINT 'StoredProcedure [getRevisionsByItemIDandUnitID] Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_GetItemApplicability] Script Date: 03/28/2012 17:58:48 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetItemApplicability]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetItemApplicability]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetItemApplicability] (@ItemID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @apple varchar(max) - select @apple = r2.value('@Applicability','varchar(max)') - from - ( - select itemid,cast(config as xml) xconfig from items ii join contents cc on ii.contentid = cc.contentid - ) t1 - outer apply xconfig.nodes('//MasterSlave') t2(r2) - where itemid = @ItemID - return @apple -END -GO -IF (@@Error = 0) PRINT 'ScalerFunction [vefn_GetItemApplicability] Succeeded' -ELSE PRINT 'ScalerFunction [vefn_GetItemApplicability] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ParentItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ParentItems]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_ParentItems] Script Date: 10/12/2012 16:12:01 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/* -select * from [dbo].[vefn_ParentItems](212) -select * from [dbo].[vefn_ParentItems](48) -select * from [dbo].[vefn_ParentItems](49) -select * from [dbo].[vefn_ParentItems](50) -select * from [dbo].[vefn_ParentItems](51) -select * from [dbo].[vefn_ParentItems](52) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_ParentItems](@ItemID int) -RETURNS @Parents TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Relationship], [ItemID], [ContentID], [PreviousID]) as ( - Select 1 [Relationship], [ItemID], [ContentID], [PreviousID] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Parents - select 2 [Relationship], I.[ItemID], I.[ContentID], I.[PreviousID] - from Itemz Z - join Parts P on P.ItemID = Z.ItemID - join Items I on I.ContentID = P.ContentID --- Siblings -Union All - select 0 [Relationship] , I.[ItemID], I.[ContentID], I.[PreviousID] - from Itemz Z - join Items I on Z.PreviousID = I.ItemID -) -insert into @Parents select ItemID, ContentID from Itemz where Relationship > 0 -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_ParentItems Succeeded' -ELSE PRINT 'Function: vefn_ParentItems Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetItemDerivedApplicability]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetItemDerivedApplicability]; -GO - -/****** Object: UserDefinedFunction [dbo].[ve_GetItemDerivedApplicability] Script Date: 10/13/2012 00:57:34 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select [dbo].[ve_GetItemDerivedApplicability](48) -select [dbo].[ve_GetItemDerivedApplicability](49) -select [dbo].[ve_GetItemDerivedApplicability](50) -select [dbo].[ve_GetItemDerivedApplicability](51) -select [dbo].[ve_GetItemDerivedApplicability](52) ---Prairie Island -select [dbo].[ve_GetItemDerivedApplicability](29544) [ParentChild] -select [dbo].[ve_GetItemDerivedApplicability](123816) [ParentChild] -select [dbo].[ve_GetItemDerivedApplicability](125916) [ParentChild] -select [dbo].[ve_GetItemDerivedApplicability](26955) [NonParentChild] -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetItemDerivedApplicability] (@ItemID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @apple varchar(max) - select @apple = dbo.ve_getitemapplicability(@ItemID) - if @apple is null - begin - declare @ParentID int - select @ParentID = dbo.ve_getparentitem(@ItemID) - if @parentid is not null - set @apple = dbo.ve_GetItemDerivedApplicability(@ParentID) - else - begin - select @apple = coalesce(@apple + ',','') + r2.value('@index','varchar(max)') from - (select cast(config as xml) xconfig from docversions - where versionid = dbo.vefn_GetVersionIDByItemID(@ItemID)) ah - cross apply xconfig.nodes('//Slave') t2(r2) - if(@apple is null) -- Non PC P/C Item - BEGIN -- Get maximum Applicabilty - declare @n int - select @n=max(xSlave.value('@index','int')) from ( - select versionID, Cast(config as xml) xConfig from DocVersions) t1 - cross apply xconfig.nodes('//Slave') tSlave(xSlave) - if(@n is not null) - begin -- Build a list based upon the maximum - with cte(ii) as (select 1 ii union all select ii+1 from cte where ii < @n) - select @apple = coalesce(@apple+',','') + cast(ii as varchar(max)) from cte - end - if(@apple is null)Set @Apple='' - END - end - end - return @apple -END -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: ve_GetItemDerivedApplicability Succeeded' -ELSE PRINT 'Function: ve_GetItemDerivedApplicability Error on Creation' -GO -------- - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetItemAppliedApplicability]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetItemAppliedApplicability]; -GO - -/****** Object: UserDefinedFunction [dbo].[ve_GetItemAppliedApplicability] Script Date: 09/17/2018 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select [dbo].[ve_GetItemAppliedApplicability](48) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2018 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetItemAppliedApplicability] (@ItemID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @apple varchar(max) - select @apple = dbo.ve_getitemapplicability(@ItemID) - if(@apple is null)Set @Apple='' - /*** - begin - declare @ParentID int - select @ParentID = dbo.ve_getparentitem(@ItemID) - if @parentid is not null - set @apple = dbo.ve_GetItemDerivedApplicability(@ParentID) - else - begin - select @apple = coalesce(@apple + ',','') + r2.value('@index','varchar(max)') from - (select cast(config as xml) xconfig from docversions - where versionid = dbo.vefn_GetVersionIDByItemID(@ItemID)) ah - cross apply xconfig.nodes('//Slave') t2(r2) - if(@apple is null) -- Non PC P/C Item - BEGIN -- Get maximum Applicabilty - declare @n int - select @n=max(xSlave.value('@index','int')) from ( - select versionID, Cast(config as xml) xConfig from DocVersions) t1 - cross apply xconfig.nodes('//Slave') tSlave(xSlave) - if(@n is not null) - begin -- Build a list based upon the maximum - with cte(ii) as (select 1 ii union all select ii+1 from cte where ii < @n) - select @apple = coalesce(@apple+',','') + cast(ii as varchar(max)) from cte - end - if(@apple is null)Set @Apple='' - END - end - end - ***/ - return @apple -END -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: ve_GetItemDerivedApplicability Succeeded' -ELSE PRINT 'Function: ve_GetItemDerivedApplicability Error on Creation' -GO - -------- -/****** Object: UserDefinedFunction [dbo].[vefn_GetParentItem] Script Date: 03/28/2012 17:58:48 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetParentItem]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetParentItem]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetParentItem] (@ItemID int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @ParentID int; -WITH Itemz([ItemID],[IsFound]) as -( -select ii.itemid,0 from items ii where ii.itemid = @ItemID -union all -select ii.previousid,0 from items ii -join itemz zz on ii.itemid = zz.itemid -where ii.previousid is not null -and zz.isfound = 0 -union all -select ii.itemid,1 -from parts pp -join itemz zz on pp.itemid = zz.itemid -join items ii on ii.contentid = pp.contentid -) -select top 1 @ParentID = itemid from itemz -where isfound = 1 OPTION (MAXRECURSION 10000) -RETURN @ParentID -END -GO - -IF (@@Error = 0) PRINT 'ScalerFunction [vefn_GetParentItem] Succeeded' -ELSE PRINT 'ScalerFunction [vefn_GetParentItem] Error on Creation' -go - -/****** Object: UserDefinedFunction [dbo].[vefn_CanTransitionBeCreated] Script Date: 10/14/2012 02:03:30 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CanTransitionBeCreated]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_CanTransitionBeCreated]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select dbo.vefn_CanTransitionBeCreated(49,51) -select dbo.vefn_CanTransitionBeCreated(51,49) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_CanTransitionBeCreated](@fromID int, @toID int) RETURNS int -AS BEGIN - declare @rv int - declare @tCount int - declare @uCount int - set @rv = 0 - select @tCount = count(*) from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') - select @uCount = count(*) from - ( - select * from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@fromID),',') - union - select * from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') - ) ah - if (@tCount = 0) or (@tCount >= @uCount) begin - set @rv = 1 - end - return @rv -END -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_CanTransitionBeCreated Succeeded' -ELSE PRINT 'Function: vefn_CanTransitionBeCreated Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_GetVersionIDByItemID] Script Date: 02/03/2012 16:48:32 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionIDByItemID]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetVersionIDByItemID]; -GO - -/* -select dbo.vefn_GetVersionIDByItemID(41) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create function [dbo].[vefn_GetVersionIDByItemID] -(@ItemID int) -returns int -as begin - declare @VersionID int; - with itemz - ( - itemid,previousid,versionid - ) as - ( - select itemid,previousid,null - from items ii - join contents cc on ii.contentid = cc.contentid - where itemid = @ItemID - --siblins - union all - select ii.itemid,ii.previousid,null - from items ii - join contents cc on ii.contentid = cc.contentid - join itemz zz on zz.previousid = ii.itemid - where zz.versionid is null - --chillins - union all - select ii.itemid,ii.previousid,null - from parts pp - join items ii on ii.contentid = pp.contentid - join contents cc on ii.contentid = cc.contentid - join itemz zz on zz.itemid = pp.itemid - where zz.versionid is null - --docversions - union all - select 0,0,dv.versionid - from docversions dv - join itemz zz on dv.itemid = zz.itemid - where zz.versionid is null - ) - select @VersionID = versionid from itemz zz - where versionid is not null - OPTION (MAXRECURSION 10000) - return @VersionID -end -GO --- Display the status of Func creation -IF (@@Error = 0) PRINT 'Function Creation: vefn_GetVersionIDByItemID Succeeded' -ELSE PRINT 'Function Creation: vefn_GetVersionIDByItemID Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_WillTransitionBeValidFrom] Script Date: 10/16/2012 18:17:37 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_WillTransitionBeValidFrom]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_WillTransitionBeValidFrom]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select dbo.vefn_WillTransitionBeValidFrom(194,'2') -select dbo.vefn_WillTransitionBeValidFrom(216,'2') -select dbo.vefn_WillTransitionBeValidFrom(246,'2') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_WillTransitionBeValidFrom](@toID int, @newAppl varchar(max)) RETURNS int -AS BEGIN - declare @rv int - declare @tCount int - declare @uCount int - set @rv = 0 - select @tCount = count(*) from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') - select @uCount = count(*) from - ( - select * from vefn_SplitInt(@newAppl,',') - union - select * from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') - ) ah - if @tCount >= @uCount begin - set @rv = 1 - end - return @rv -END -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_WillTransitionBeValidFrom Succeeded' -ELSE PRINT 'Function: vefn_WillTransitionBeValidFrom Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_WillTransitionBeValidTo] Script Date: 10/16/2012 18:20:23 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_WillTransitionBeValidTo]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_WillTransitionBeValidTo]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select dbo.vefn_WillTransitionBeValidTo(10617,'2') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_WillTransitionBeValidTo](@toID int, @newAppl varchar(max)) RETURNS int -AS BEGIN - declare @rv int - declare @tCount int - declare @uCount int - set @rv = 0 - select @tCount = count(*) from vefn_SplitInt(@newAppl,',') - select @uCount = count(*) from - ( - select * from vefn_SplitInt(@newAppl,',') - union - select * from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') - ) ah - if @tCount >= @uCount begin - set @rv = 1 - end - return @rv -END -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_WillTransitionBeValidTo Succeeded' -ELSE PRINT 'Function: vefn_WillTransitionBeValidTo Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[vesp_CanTransitionBeCreated] Script Date: 10/15/2012 14:37:32 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_CanTransitionBeCreated]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_CanTransitionBeCreated]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -exec vesp_CanTransitionBeCreated 46,180 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_CanTransitionBeCreated] -( - @fromItemID int, - @toItemID int -) -AS BEGIN - select dbo.vefn_CanTransitionBeCreated(@fromItemID,@toItemID) Status, - dbo.ve_GetItemDerivedApplicability(@fromItemID) fromAppl, - dbo.ve_GetItemDerivedApplicability(@toItemID) toAppl, - dbo.ve_GetShortPath(@fromItemID) fromStep, - dbo.ve_GetShortPath(@toItemID) toStep -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_CanTransitionBeCreated Succeeded' -ELSE PRINT 'Procedure Creation: vesp_CanTransitionBeCreated Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[vesp_ListItemAndChildrenByUnit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[vesp_ListItemAndChildrenByUnit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [dbo].[vesp_ListItemAndChildrenByUnit]; -GO - -/****** Object: StoredProcedure [dbo].[vesp_ListItemAndChildrenByUnit] Script Date: 05/02/2012 23:16:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - --- vesp_ListItemAndChildrenByUnit 29546,0,'8' --- drop procedure [vesp_ListItemAndChildren] -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemAndChildrenByUnit] (@ItemID int, @ParentID int, @UnitID varchar(max)) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([apple],[Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 1 [apple],0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select case when s1.value('@Applicability','varchar(max)') is null or ',' + s1.value('@Applicability','varchar(max)') + ',' like '%,' + @UnitID + ',%' then 1 else 0 end apple -,[Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join (select ContentID,cast(Config as xml) xConfig from Contents) C on C.ContentID = I.ContentID - outer apply C.xConfig.nodes('//MasterSlave') m1(s1) -where Z.[Apple] = 1 --- Siblings -Union All - select case when s1.value('@Applicability','varchar(max)') is null or ',' + s1.value('@Applicability','varchar(max)') + ',' like '%,' + @UnitID + ',%' then 1 else 0 end apple -,[Level] ,Z.[ParentID], -case when Z.[Apple] = 1 then Z.[Ordinal] +1 else Z.[Ordinal] end, I.[ItemID], -case when Z.[Apple] = 1 then I.[PreviousID] else Z.[PreviousID] end, [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join (select ContentID,cast(Config as xml) xConfig from Contents) C on C.ContentID = I.ContentID - outer apply C.xConfig.nodes('//MasterSlave') m1(s1) - where Z.[Level] > 0 -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - CASE WHEN I.ItemID IN (SELECT ParentID FROM ItemZ WHERE apple = 1) THEN (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) ELSE 0 END [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID -where i.apple = 1 - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Procedure Creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemAndChildrenByUnit Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemAndChildrenByUnit Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[vesp_WillTransitionsBeValid] Script Date: 10/15/2012 14:37:32 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_WillTransitionsBeValid]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_WillTransitionsBeValid]; -GO -/* -dbo.vesp_WillTransitionsBeValid 10616,'2' -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [DBO].[vesp_WillTransitionsBeValid] -( - @ItemID int, - @NewAppl varchar(max) -) -WITH EXECUTE AS OWNER -AS BEGIN - select *, dbo.ve_GetShortPath(@ItemID) SrcStep, dbo.ve_GetShortPath(myitemid) TgtStep - from - ( - select tt.toid MyItemID, dbo.vefn_WillTransitionBeValidFrom(tt.toid,@NewAppl) Valid, @NewAppl SrcAppl, dbo.ve_GetItemDerivedApplicability(tt.toid) TgtAppl - from transitions tt - inner join items ii on tt.fromid = ii.contentid - where fromid in (select contentid from dbo.vefn_childitems(@ItemID)) - union - select ii.itemid MyItemID, dbo.vefn_WillTransitionBeValidTo(ii.itemid,@NewAppl) Valid, dbo.ve_GetItemDerivedApplicability(ii.itemid) SrcAppl, @NewAppl TgtAppl - from transitions tt - inner join items ii on tt.fromid = ii.contentid - where toid in (select itemid from dbo.vefn_childitems(@ItemID)) - ) ah - where Valid = 0 -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_WillTransitionsBeValid Succeeded' -ELSE PRINT 'Procedure Creation: vesp_WillTransitionsBeValid Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[vefn_NextCount] Script Date: 02/05/2013 11:58:00 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_NextCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP Function [vefn_NextCount]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create FUNCTION [dbo].[vefn_NextCount](@ItemID int) -RETURNS Int -WITH EXECUTE AS OWNER -AS -BEGIN -declare @Count int; -with Itemz([NextCnt], [ItemID], [PreviousID]) as ( - Select 0 [NextCnt], [ItemID], [PreviousID] - FROM [Items] - where [ItemID]=@ItemID --- Siblings -Union All - select Z.[NextCnt] +1, I.[ItemID], I.[PreviousID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -Select @Count = Count(*) from Itemz -OPTION (MAXRECURSION 10000) -RETURN @Count -END -GO -IF (@@Error = 0) PRINT 'Function Creation: vefn_NextCount Succeeded' -ELSE PRINT 'Function Creation: vefn_NextCount Error on Creation' -GO -/****** Object: StoredProcedure [vesp_ListItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItems]; -GO - ---vesp_ListItems 1 - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItems] -( -@ItemID int = 0 -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz(knt, ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged]) as ( - Select 0 knt, ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged] - from Items - where ItemID=@ItemID - Union All --- - Select Z.knt + 1,C.ItemID,C.PreviousID,C.ContentID,C.[DTS],C.[UserID],C.[LastChanged] - from Items C - Join Itemz Z on C.PreviousID=Z.ItemID -) -Select ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[Itemz].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[Itemz].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[Itemz].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[Itemz].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[Itemz].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[Itemz].[ItemID]) [Transition_ToIDCount] -from Itemz order by knt -OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItems Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItems Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListItemsAndContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsAndContent]; -GO - ---vesp_ListItemsAndContent 1 - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsAndContent] -( -@ItemID int = 0 -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz(knt, ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged]) as ( - Select 0 knt, ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged] - from Items - where ItemID=@ItemID - Union All --- - Select z.knt + 1, I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged] - from Items I - Join Itemz Z on I.PreviousID=Z.ItemID -) -Select I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] -from Itemz I Join Contents C on I.ContentID = C.ContentID Order by knt -OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsAndContent Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsAndContent Error on Creation' -GO -/****** Object: StoredProcedure [vesp_SortProcedures] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SortProcedures]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SortProcedures]; -GO - -/* -select versionid, ff.folderid, ff.name,itemid -from docversions dv -join folders ff on dv.folderid=ff.folderid - -Westinghouse Data -exec vesp_SortProcedures 1 -- Abnormal Procedures ---exec vesp_SortProcedures 4 -- Emergency Operating Procedures - Rev 2 -exec vesp_SortProcedures 5 -- System Operating Procedures -exec vesp_SortProcedures 6 -- Maintenance, Test, Inspection, Surveillance Procedures ---exec vesp_SortProcedures 7 -- Severe Accident Management Guidelines ---exec vesp_SortProcedures 8 -- Emergency Response Guidelines -exec vesp_SortProcedures 9 -- General Operating Procedures -exec vesp_SortProcedures 11 -- Post 72-Hour Procedures 103811 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SortProcedures]( @VersionID int ) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @TopID int - select @TopID = ItemID from DocVersions where versionID = @VersionID - DECLARE @Procs TABLE - ( - ItemID int PRIMARY KEY, - ProcNum nvarchar(255) - ) - DECLARE @Organize TABLE - ( - ItemID int PRIMARY KEY, - NewPreviousID int - ) - DECLARE @NewTopID as int - INSERT INTO @Procs select ZZ.ItemID, isnull(Replace(CC.Number,'\u8209?','-'),'') + ':' + substring('0000000000000000' + cast(ItemID as varchar(16)), 1+ len( cast(ItemID as varchar(16))), 16) ProcNum from vefn_SiblingItems(@TopID,0) ZZ Join Contents CC on CC.ContentID = ZZ.ContentID - --INSERT INTO @Procs select ZZ.ItemID, isnull(Replace(Replace(CC.Number,'\u8209?','-'),'\','\u9586?'),'') + ':' + substring('0000000000000000' + cast(ItemID as varchar(16)), 1+ len( cast(ItemID as varchar(16))), 16) ProcNum from vefn_SiblingItems(@TopID,0) ZZ Join Contents CC on CC.ContentID = ZZ.ContentID - --select * from @Procs order by ProcNum + cast(ItemID as nvarchar(max)) - select top 1 @NewTopID = ItemID from @Procs order by ProcNum - INSERT INTO @Organize - select ItemID, (select top 1 ItemID from @Procs P2 where P1.ProcNum > P2.ProcNum order by P2.ProcNum DESC ) NewPreviousID - from @Procs P1 order by isnull(ProcNum,'') + cast(ItemID as nvarchar(max)) - --select * from @Organize - Update DocVersions Set ItemID = @NewTopID where versionID = @VersionID - Update II Set II.PreviousID = ZZ.NewPreviousID - from Items II join @Organize ZZ On II.ItemID = ZZ.ItemID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SortProcedures Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SortProcedures Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_RemoveExtraText] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_RemoveExtraText]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_RemoveExtraText]; -GO - -/* -select text, .dbo.vefn_RemoveExtraText(text,2,0,0) StrippedText from Contents where ContentID=373 -select text, .dbo.vefn_RemoveExtraText(text,1,0,0) StrippedText from Contents where ContentID=373 -select text, .dbo.vefn_RemoveExtraText(text,0,0,0) StrippedText ,.dbo.vefn_FirstLink(text,0), PATINDEX('%[' + nchar(9516) + nchar(9574) + char(21) + ']%' , text) from Contents where ContentID=373 -select .dbo.vefn_RemoveExtraText('\b Bold\b0',0,0,0) -select .dbo.vefn_RemoveExtraText('\b Bold\b0',0,1,0) -select .dbo.vefn_RemoveExtraText('A\u1?B\u12?C\u123?D\u1234?E',0,0,0) -select .dbo.vefn_RemoveExtraText('A\u1?B\u12?C\u123?D\u1234?E',0,0,1) -*/ - - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_RemoveExtraText](@text nvarchar(MAX),@includeLink int, @includeRtfFormatting int , @includeSpecialCharacters int) -RETURNS varchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @index int -DECLARE @index2 int --- Replace Hard Hyphen with Hyphen -SET @text = replace(@text,'\u8209?','-') ---SET @text = replace(replace(@text,'\u8209?','-'),'\u9586?','\') --- Replace Hard Space with Space --- commenting out the bottom two lines will fix the global search for hard space bug (B2014-056) ---SET @text = replace(@text,'\u160?',' ') ---set @text = replace(@text,nchar(160),' ') --- Strip Links -IF @includeLink = 0 -- Remove Links - SET @text = [dbo].[vefn_RemoveRange](@text,'') -IF @includeLink < 2 -- Remove Comments - SET @text = [dbo].[vefn_RemoveRange](@text,'\v' ,'\v0') -if(@includeRtfFormatting=0) - -- Remove Rtf Formatting - BEGIN - -- B2022-082: underline/bold of word removes space between 2 words so was not finding cases - SET @text = Replace(@text, '\ulnone\b0 ', ''); - SET @text = Replace(@text, '\b0\ulnone ', ''); - SET @text = Replace(@text, '\b0 ', ''); - SET @text = Replace(@text, '\b ', ''); - SET @text = Replace(@text, '\ulnone ', ''); - SET @text = Replace(@text, '\ul0 ', ''); - SET @text = Replace(@text, '\ul ', ''); - SET @text = Replace(@text, '\i0 ', ''); - SET @text = Replace(@text, '\i ', ''); - SET @text = Replace(@text, '\super ', ''); - SET @text = Replace(@text, '\sub ', ''); - SET @text = Replace(@text, '\nosupersub ', ''); - SET @text = Replace(@text, '\up2 ', ''); - SET @text = Replace(@text, '\up0 ', ''); - SET @text = Replace(@text, '\up3 ', ''); - SET @text = Replace(@text, '\dn2 ', ''); - SET @text = Replace(@text, '\dn3 ', ''); - SET @text = Replace(@text, '\b0', ''); - SET @text = Replace(@text, '\b', ''); - SET @text = Replace(@text, '\ul0', ''); - SET @text = Replace(@text, '\ul', ''); - SET @text = Replace(@text, '\i0', ''); - SET @text = Replace(@text, '\i', ''); - SET @text = Replace(@text, '\super', ''); - SET @text = Replace(@text, '\sub', ''); - SET @text = Replace(@text, '\nosupersub', ''); - SET @text = Replace(@text, '\up2', ''); - SET @text = Replace(@text, '\up0', ''); - SET @text = Replace(@text, '\up3', ''); - SET @text = Replace(@text, '\dn2', ''); - SET @text = Replace(@text, '\dn3', ''); - END -if(@includeSpecialCharacters=0) - -- Remove Special Characters - BEGIN - SET @index = PATINDEX('%\u[0-9]?%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+4,len(@text)) - SET @index = PATINDEX('%\u[0-9]?%',@text) - END - SET @index = PATINDEX('%\u[0-9][0-9]?%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+5,len(@text)) - SET @index = PATINDEX('%\u[0-9][0-9]?%',@text) - END - SET @index = PATINDEX('%\u[0-9][0-9][0-9]?%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+6,len(@text)) - SET @index = PATINDEX('%\u[0-9][0-9][0-9]?%',@text) - END - SET @index = PATINDEX('%\u[0-9][0-9][0-9][0-9]?%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+7,len(@text)) - SET @index = PATINDEX('%\u[0-9][0-9][0-9][0-9]?%',@text) - END - SET @index = PATINDEX('%\''[0-9A-Fa-f][0-9A-Fa-f]%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+4,len(@text)) - SET @index = PATINDEX('%\''[0-9A-Fa-f][0-9A-Fa-f]%',@text) - END - - END - -- Replace Hyphen with Hard Hyphen -SET @text = replace(@text,'-','\u8209?') ---SET @text = replace(replace(@text,'-','\u8209?'),'\','\u9586?') - -RETURN @text -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_RemoveExtraText Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_RemoveExtraText Error on Creation' -GO - - -/****** Object: Table Function [vefn_FindSpecialChars] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindSpecialChars]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindSpecialChars]; -GO - -/* - -select * from vefn_FindSpecialChars('\u160?\ulnone \u8209?') - -select MIN(ContentID) MinContentID,Count(*) HowMany,UChar SpecialChar from Contents -cross apply vefn_FindSpecialChars(text) SC -where text like '%\u[0-9]%' -group by UChar - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindSpecialChars](@text varchar(MAX)) -RETURNS @SpecialChars TABLE -( - uchar varchar(10) -) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @index1 int - DECLARE @index2 int - SET @index1 = -1 - SET @index1 = PATINDEX('%\u[0-9]%' , @text) - WHILE (@index1 > 0) - BEGIN - SET @index2 = CHARINDEX('?' , @text, @index1 + 3) - if @index2 > 0 - BEGIN - INSERT INTO @SpecialChars VALUES (substring(@text,@index1,1 + @index2-@index1)) - SET @Text = substring(@text,@index2 + 1,len(@text)) - END - SET @index1 = PATINDEX('%\u[0-9]%' , @text) - END - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindSpecialChars Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindSpecialChars Error on Creation' -GO - -/****** Object: Table Function [vefn_FindSpecialChars2] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindSpecialChars2]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindSpecialChars2]; -GO - -/* - -select * from vefn_FindSpecialChars2(nchar(255) + nchar(8209) + nchar(160)) - -select MIN(ContentID) MinContentID,Count(*) HowMany,UChar SpecialChar from Contents -cross apply vefn_FindSpecialChars2(text) SC -group by UChar - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindSpecialChars2](@text nvarchar(MAX)) -RETURNS @SpecialChars TABLE -( - uchar int -) -WITH EXECUTE AS OWNER -AS -BEGIN - WHILE (len(@text) > 0) - BEGIN - if(unicode(@text) > 127) - INSERT INTO @SpecialChars VALUES (unicode(@text)) - SET @Text = substring(@text,2,len(@text)) - END - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindSpecialChars2 Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindSpecialChars2 Error on Creation' -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[MoveItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [MoveItem]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[MoveItem](@ItemID int, @Index int) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @ItemsChanged TABLE - ( - ItemID int Primary Key - ) - DECLARE @Siblings TABLE - ( - ItemID int PRIMARY KEY, - Ordinal int - ) - DECLARE @OldPreviousID int - SELECT @OldPreviousID = PreviousID FROM [Items] where ItemID = @ItemID - DECLARE @OldNextID int - SELECT @OldNextID = ItemID FROM [Items] where PreviousID = @ItemID - insert into @Siblings select * from vefn_AllSiblingItems(@ItemID) - DECLARE @NewNextID int - SELECT @NewNextID = ItemID from @Siblings where Ordinal = @index - DECLARE @NewPreviousID int - SELECT @NewPreviousID = ItemID from @Siblings where Ordinal = @index -1 - --PRINT '****************************************************************' - --PRINT '@ItemID = ' + isnull(Cast( @ItemID as varchar(20)),'{null}') - --PRINT '@OldPreviousID = ' + isnull(Cast( @OldPreviousID as varchar(20)),'{null}') - --PRINT '@OldNextID = ' + isnull(Cast( @OldNextID as varchar(20)),'{null}') - --PRINT '@NewPreviousID = ' + isnull(Cast( @NewPreviousID as varchar(20)),'{null}') - --PRINT '@NewNextID = ' + isnull(Cast( @NewNextID as varchar(20)),'{null}') - Update Items set PreviousID = @NewPreviousID where ItemID = @ItemID - Insert INTO @ItemsChanged Select @ItemID - IF @OldNextID is not Null - BEGIN - Update Items set PreviousID = @OldPreviousID where ItemID = @OldNextID - Insert INTO @ItemsChanged Select @OldNextID - END - IF @NewNextID is not Null - BEGIN - Update Items set PreviousID = @ItemID where ItemID = @NewNextID - Insert INTO @ItemsChanged Select @NewNextID - END - IF @OldPreviousID is null - BEGIN - Update Parts set ItemID = @OldNextID where ItemID = @ItemID - Update DocVersions set ItemID = @OldNextID where ItemID = @ItemID - END - IF @NewPreviousID is null - BEGIN - Update Parts set ItemID = @ItemID where ItemID = @NewNextID - Update DocVersions set ItemID = @ItemID where ItemID = @NewNextID - END - SELECT - ii.[ItemID], - [PreviousID], - ii.[ContentID], - ii.[DTS], - ii.[UserID], - ii.[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ii.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ii.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ii.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ii.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ii.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ii.[ItemID]) [Transition_ToIDCount] - FROM [Items] ii - WHERE ItemID in (Select ItemID from @ItemsChanged) - IF( @@TRANCOUNT > 0 ) - BEGIN - PRINT 'COMMIT' - COMMIT - END -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) - BEGIN - PRINT 'ROLLBACK' - ROLLBACK -- Only rollback if top level - END - ELSE IF( @@TRANCOUNT > 1 ) - BEGIN - PRINT 'COMMIT' - COMMIT -- Otherwise commit. Top level will rollback - END - EXEC vlnErrorHandler -END CATCH -GO -IF (@@Error = 0) PRINT 'Procedure Creation: MoveItem Succeeded' -ELSE PRINT 'Procedure Creation: MoveItem Error on Creation' -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AllSiblingItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_AllSiblingItems]; -GO -/* -DECLARE @ItemID int -select @ItemID = ItemID from DocVersions where VersionID = 1 -Select * from vefn_AllSiblingItems(@ItemID) order by Ordinal -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_AllSiblingItems](@ItemID int) -RETURNS @Siblings TABLE -( - ItemID int, - Ordinal int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([ItemID], [PreviousID], [Ordinal]) as ( - Select [ItemID], [PreviousID], case when [PreviousID] is null then 0 else -1 end - FROM [Items] - where [ItemID]=@ItemID --- Previous Siblings -Union All - select I.[ItemID], I.[PreviousID] ,case when I.[PreviousID] is null then 0 else Z.[Ordinal] -1 end - from Itemz Z - join Items I on I.ItemID = Z.PreviousID - where Z.Ordinal < 0 --- Next Siblings -Union All - select I.[ItemID], I.[PreviousID] ,Z.[Ordinal] +1 - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.Ordinal >= 0 -) -insert into @Siblings select ItemID, Ordinal from Itemz Where Ordinal >= 0 -OPTION (MAXRECURSION 10000) -RETURN -END - -GO -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_AllSiblingItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_AllSiblingItems Error on Creation' -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_JustSiblingItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_JustSiblingItems]; -GO -/* -DECLARE @ItemID int -select @ItemID = ItemID from DocVersions where VersionID = 1 -Select * from vefn_JustSiblingItems(@ItemID) order by Ordinal - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_JustSiblingItems](@FirstItemID int) -RETURNS @Siblings TABLE -( - ItemID int PRIMARY KEY, - Ordinal int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([ItemID],[Ordinal]) as ( - Select [ItemID],0 - FROM [Items] - where [ItemID]=@FirstItemID --- Siblings -Union All - select I.[ItemID],Z.[Ordinal] +1 - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -insert into @Siblings select ItemID, Ordinal from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_JustSiblingItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_JustSiblingItems Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ResetFolderManualOrder] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ResetFolderManualOrder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ResetFolderManualOrder]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ResetFolderManualOrder] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION -update fld - set Fld.ManualOrder =Fld.MyRow -from (Select ROW_NUMBER() OVER(Partition by ParentID Order BY FolderID) MyRow,* from folders ) fld - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ResetFolderManualOrder Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ResetFolderManualOrder Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ResetFolderManualOrderAlphabetical] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ResetFolderManualOrderAlphabetical]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ResetFolderManualOrderAlphabetical]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ResetFolderManualOrderAlphabetical] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION -update fld - set Fld.ManualOrder =Fld.MyRow -from (Select case when FolderID <> ParentID then ROW_NUMBER() OVER(Partition by ParentID Order BY Name) else 0 end MyRow,* from folders) fld - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ResetFolderManualOrderAlphabetical Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ResetFolderManualOrderAlphabetical Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[tr_Documents_Delete]') AND OBJECTPROPERTY(id,N'IsTrigger') = 1) - DROP TRIGGER [tr_Documents_Delete]; - - /****** Object: Trigger [dbo].[tr_Documents_Delete] Script Date: 03/28/2013 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/****** Object: Trigger [tr_Documents_Delete] ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE trigger [dbo].[tr_Documents_Delete] on [dbo].[Documents] instead of delete as - begin - update ii set DeleteStatus = Isnull((select max(DeleteID) from DeleteLog where SPID = @@spid),-1), DTS = getdate(), - UserID = IsNull((select top 1 UserID from DeleteLog where SPID = @@spid order by deleteid desc),ii.UserID) - from tblDocuments ii inner join deleted dd on dd.DocID = ii.DocID - insert into DocumentAudits(DocID,LibTitle,DocContent,DocAscii,Config,DTS,UserID,FileExtension,DeleteStatus) - select ii.DocID,ii.LibTitle,ii.DocContent,ii.DocAscii,ii.Config,ii.DTS,ii.UserID,ii.FileExtension,ii.DeleteStatus - from tblDocuments ii inner join deleted dd on dd.DocID = ii.DocID - where ii.DeleteStatus != 0 - end -GO --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Trigger alteration: tr_Documents_Delete Succeeded' -ELSE PRINT 'Trigger alteration: tr_Documents_Delete Error on Alteration' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetVersionItems]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_GetVersionItems] ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -Select * from vefn_GetVersionItems('') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetVersionItems](@DocVersionList varchar(MAX)) -RETURNS @VersionItems TABLE -( - VersionID int, - ItemID int, - ContentID int primary key -) -WITH EXECUTE AS OWNER -AS -BEGIN - BEGIN - with Itemz([VersionID], [ItemID], [ContentID]) as - (Select DV.VersionID, [I].[ItemID], [I].[ContentID] - FROM [Items] I - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] - Union All - -- Children - select Z.VersionID, I.[ItemID], I.[ContentID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - Union All - -- Siblings - select Z.VersionID, I.[ItemID], I.[ContentID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - ) - insert into @VersionItems - select VersionID, [ItemID], [ContentID] - from ItemZ I - --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) - OPTION (MAXRECURSION 10000) - END -RETURN -END - -go -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetVersionItems] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetVersionItems] Error on Creation' - -/****** Object: StoredProcedure [getAffectedRoUsages] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAffectedRoUsages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAffectedRoUsages]; -GO - -/* -getAffectedROUsages 1, '00010000019c0000', 'KBR Test', 'Changed', 'KBR' -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAffectedRoUsages] -( - @RODbID int, - @ROID nvarchar(16), - @RODesc nvarchar(MAX), - @Command nvarchar(10), - @UserID nvarchar(100), - @VersionList nvarchar(MAX) -) -WITH EXECUTE AS OWNER -AS - BEGIN - DECLARE @JustThisVersion TABLE - ( - ContentID int primary key - ) - Insert INTO @JustThisVersion - SELECT Distinct ContentID From vefn_GetVersionItems(@VersionList) - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - -- Add "Verification Required" Annotation for each ROUsage - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Referenced Object (' + @RODesc + ') ' + @Command,@UserID - FROM Items where CONTENTID in (SELECT ContentID FROM ROUSAGES - where RODbID = @RODbID AND ROID = @ROID AND ContentID in (select ContentID from @JustThisVersion)) - SELECT - [RoUsages].[ROUsageID], - [RoUsages].[ContentID], - [RoUsages].[ROID], - [RoUsages].[Config], - [RoUsages].[DTS], - [RoUsages].[UserID], - [RoUsages].[LastChanged], - [RoUsages].[RODbID], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [RoUsages] - JOIN [Contents] ON - [Contents].[ContentID]=[RoUsages].[ContentID] - WHERE - [RoUsages].[RODbID]=@RODbID AND [RoUsages].[ROID]=@ROID - AND [Contents].ContentID in (select ContentID from @JustThisVersion) -END -RETURN - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAffectedRoUsages Succeeded' -ELSE PRINT 'Procedure Creation: getAffectedRoUsages Error on Creation' -GO - -/****** Object: StoredProcedure [getAffectedDRoUsages] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAffectedDRoUsages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAffectedDRoUsages]; -GO - -/* -getAffectedDROUsages 1, '00010000019c0000', 'KBR Test', 'Changed', 'KBR','' -getAffectedDROUsages 1, '000300003D8E', 'KBR Test', 'Changed', 'KBR','' - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAffectedDRoUsages] -( - @RODbID int, - @ROID nvarchar(16), - @RODesc nvarchar(MAX), - @Command nvarchar(10), - @UserID nvarchar(100), - @VersionList nvarchar(max) -) -WITH EXECUTE AS OWNER -AS - BEGIN - DECLARE @JustThisVersion TABLE - ( - ContentID int primary key - ) - Insert INTO @JustThisVersion - SELECT Distinct ContentID From vefn_GetVersionItems(@VersionList) - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - DECLARE @DRoUsages TABLE - ( - DRoUsageID int primary key - ) - Insert INTO @DRoUsages - select DRoUsageID from DRoUsages where ROID like substring(@ROID,1,12) + '%' AND dbo.vefn_CompareROIDS(ROID,@ROID) > 0 - - -- Add "Verification Required" Annotation for each ROUsage - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Referenced Object (' + @RODesc + ') ' + @Command,@UserID - FROM Items where CONTENTID in (SELECT ContentID - FROM (select dr.* from DRoUsages dr join @DRoUsages dd on dr.DRoUsageid = dd.DRoUsageid) DR - JOIN Entries EE on EE.DocID = DR.DocID - where RODbID = @RODbID AND ContentID in (select ContentID from @JustThisVersion)) - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [Documents].[LibTitle] [Document_LibTitle], - [Documents].[DocContent] [Document_DocContent], - [Documents].[DocAscii] [Document_DocAscii], - [Documents].[Config] [Document_Config], - [Documents].[DTS] [Document_DTS], - [Documents].[UserID] [Document_UserID], - [Documents].[FileExtension] [Document_FileExtension] - FROM [DRoUsages] - JOIN [Documents] ON - [Documents].[DocID]=[DROUsages].[DocID] - WHERE - [DRoUsages].[DRoUsageID] in (select DRoUsageid from @DRoUsages) - AND [Documents].[DocID] in (select EE.DocID from Entries EE where ContentID in (select ContentID from @JustThisVersion)) - RETURN - END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAffectedDRoUsages Succeeded' -ELSE PRINT 'Procedure Creation: getAffectedDRoUsages Error on Creation' -GO - -/****** Object: StoredProcedure [deleteAnnotationType] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAnnotationType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteAnnotationType]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteAnnotationType] - -( - @TypeID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [tblAnnotations] - WHERE [TypeID]=@TypeID - DELETE [AnnotationTypes] - WHERE [TypeID] = @TypeID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteAnnotationType Succeeded' -ELSE PRINT 'Procedure Creation: deleteAnnotationType Error on Creation' -GO - -/****** Object: StoredProcedure [getJustFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getJustFormat]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getJustFormat] - -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [FormatID], - [ParentID], - [Name], - [Description], - [Data], - [GenMac], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] - FROM [Formats] - WHERE [FormatID]=@FormatID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getJustFormat Succeeded' -ELSE PRINT 'Procedure Creation: getJustFormat Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_TurnChangeManagerOFF] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_TurnChangeManagerOFF]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_TurnChangeManagerOFF]; -GO -/****** Object: StoredProcedure [dbo].[vesp_TurnChangeManagerOFF] Script Date: 03/20/2012 16:02:54 ******/ -/* -exec vesp_TurnChangeManagerOFF -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_TurnChangeManagerOFF] WITH EXECUTE AS OWNER AS -BEGIN - DECLARE @cmd VARCHAR(MAX) - SET @cmd = 'DISABLE TRIGGER tr_Annotations_Delete ON Annotations' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Contents_Delete ON Contents' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Documents_Delete ON Documents' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Entries_Delete ON Entries' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_GridAudits_insert ON GridAudits' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Grids_Delete ON Grids' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Images_Delete ON Images' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Items_Delete ON Items' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Parts_Delete ON Parts' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_ROUsages_Delete ON ROUsages' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblAnnotations_Update ON tblAnnotations' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblContents_Update ON tblContents' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblDocuments_Update ON tblDocuments' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblEntries_Update ON tblEntries' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblGrids_Update ON tblGrids' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblImages_Update ON tblImages' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblItems_Update ON tblItems' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblParts_Update ON tblParts' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblROUsages_Update ON tblROUsages' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblTransitions_Update ON tblTransitions' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Transitions_Delete ON Transitions' - EXEC (@cmd) - PRINT '***** Change Manager has been turned OFF *****' -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_TurnChangeManagerOFF Succeeded' -ELSE PRINT 'Procedure Creation: vesp_TurnChangeManagerOFF Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_TurnChangeManagerON] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_TurnChangeManagerON]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_TurnChangeManagerON]; -GO -/****** Object: StoredProcedure [dbo].[vesp_TurnChangeManagerON] Script Date: 03/20/2012 16:02:54 ******/ -/* -exec vesp_TurnChangeManagerON -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_TurnChangeManagerON] WITH EXECUTE AS OWNER AS -BEGIN - DECLARE @cmd VARCHAR(MAX) - SET @cmd = 'ENABLE TRIGGER tr_Annotations_Delete ON Annotations' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Contents_Delete ON Contents' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Documents_Delete ON Documents' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Entries_Delete ON Entries' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_GridAudits_insert ON GridAudits' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Grids_Delete ON Grids' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Images_Delete ON Images' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Items_Delete ON Items' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Parts_Delete ON Parts' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_ROUsages_Delete ON ROUsages' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblAnnotations_Update ON tblAnnotations' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblContents_Update ON tblContents' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblDocuments_Update ON tblDocuments' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblEntries_Update ON tblEntries' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblGrids_Update ON tblGrids' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblImages_Update ON tblImages' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblItems_Update ON tblItems' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblParts_Update ON tblParts' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblROUsages_Update ON tblROUsages' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblTransitions_Update ON tblTransitions' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Transitions_Delete ON Transitions' - EXEC (@cmd) - PRINT '***** Change Manager has been turned ON *****' -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_TurnChangeManagerON Succeeded' -ELSE PRINT 'Procedure Creation: vesp_TurnChangeManagerON Error on Creation' -GO -/****** Object: TableFunction [vefn_FindROUsageIDs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindROUsageIDs]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindROUsageIDs]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindROUsageIDs](@ContentAuditID int) -RETURNS @IDs TABLE -( - ROUsageID int PRIMARY KEY, - ROUsageAction char(3) -) -WITH EXECUTE AS OWNER -AS -BEGIN - - DECLARE @ContentID int - DECLARE @text varchar(max) - SELECT @ContentID = ContentID,@text = Text FROM ContentAudits WHERE AuditID = @ContentAuditID - DECLARE @index1 int - DECLARE @index2 int - DECLARE @tid varchar(max) - DECLARE @trid int - WHILE (LEN(@text) > 0) - BEGIN - SET @index1 = CHARINDEX('#Link:ReferencedObject' , @text) - IF (@index1 > 0) - BEGIN - SET @text = RIGHT(@text, (LEN(@text) - (22 + @index1))) - SET @index1 = CHARINDEX(' ', @text) - SET @tid = LTRIM(LEFT(@text, @index1)) - SET @trid = CAST(@tid AS INT) - IF EXISTS (SELECT ROUsageID FROM tblROUsages WHERE ROUsageID = @trid AND DeleteStatus < 0) - INSERT INTO @IDs VALUES (@trid, 'ADD') - ELSE - INSERT INTO @IDs VALUES (@trid, NULL) - END - ELSE - SET @text = '' - END - INSERT INTO @IDs SELECT tt.ROUsageID,'DEL' FROM tblROUsages tt LEFT JOIN @IDs ti ON tt.ROUsageID = ti.ROUsageID WHERE tt.ContentID = @ContentID - AND ti.ROUsageID IS NULL - DELETE FROM @IDs WHERE ROUsageAction IS NULL - RETURN -END -GO --- Display the status of func creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindROUsageIDs Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindROUsageIDs Error on Creation' -GO -/****** Object: TableFunction [vefn_GetVersionFormatItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionFormatItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetVersionFormatItems]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetVersionFormatItems](@DocVersionList varchar(MAX)) -RETURNS @VersionItems TABLE -( - VersionID int, - ItemID int, - ContentID int primary key, - FormatID int, - ParentFormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - BEGIN - with Itemz([VersionID], [ItemID], [ContentID], [FormatID], [ParentFormatID]) as - (Select DV.VersionID, [I].[ItemID], [I].[ContentID], - isnull(C.[FormatID],isnull(DV2.[FormatID],isnull(F.[FormatID],P.[FormatID]))), - isnull(DV2.[FormatID],isnull(F.[FormatID],P.[FormatID])) - FROM [Items] I - JOIN vefn_DocVersionSplit(@DocVersionList) DV ON I.[ItemID] = DV.[ItemID] - join docversions DV2 on DV.[VersionID] = DV2.[VersionID] - join folders F on DV2.[FolderID] = F.[FolderID] - join folders P on P.[FolderID] = F.[ParentID] - join Contents C on I.ContentID = C.ContentID - - Union All - -- Children - select Z.VersionID, I.[ItemID], I.[ContentID], isnull(C.[FormatID],Z.[FormatID]), Z.[FormatID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on I.ContentID = C.ContentID - Union All - -- Siblings - select Z.VersionID, I.[ItemID], I.[ContentID], isnull(C.[FormatID],Z.[ParentFormatID]), Z.[ParentFormatID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on I.ContentID = C.ContentID - ) - insert into @VersionItems - select VersionID, [ItemID], [ContentID], [FormatID], [ParentFormatID] - from ItemZ I - --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) - OPTION (MAXRECURSION 10000) - END -RETURN -END -GO --- Display the status of func creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetVersionFormatItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetVersionFormatItems Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDRoUsagesByROIDsAndVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDRoUsagesByROIDsAndVersions]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDRoUsagesByROIDsAndVersions] -( - @ROIDs nvarchar(MAX), - @Versions nvarchar(MAX) -) -WITH EXECUTE AS OWNER -AS - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [Documents].[LibTitle] [Document_LibTitle], - [Documents].[DocContent] [Document_DocContent], - [Documents].[DocAscii] [Document_DocAscii], - [Documents].[Config] [Document_Config], - [Documents].[DTS] [Document_DTS], - [Documents].[UserID] [Document_UserID], - [Documents].[FileExtension] [Document_FileExtension] - FROM [DRoUsages] - JOIN vefn_SplitROSearch(@ROIDs) SS - ON [DRoUsages].RODBID = SS.[RODBID] and [DRoUsages].[ROID] like SS.[ROID] + '%' - JOIN [Documents] ON - [Documents].[DocID]=[DROUsages].[DocID] - Where [Documents].[DocID] in - (Select Distinct [DocID] from [ENTRIES] - JOIN [VEFN_GetVersionItems](@Versions) VV ON [Entries].ContentID = VV.ContentID) - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDRoUsagesByROIDsAndVersions Succeeded' -ELSE PRINT 'Procedure Creation: getDRoUsagesByROIDsAndVersions Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsagesByROIDsAndVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoUsagesByROIDsAndVersions]; -GO - -CREATE PROCEDURE [dbo].[getRoUsagesByROIDsAndVersions] -( - @ROIDs nvarchar(MAX), - @Versions nvarchar(MAX) -) -WITH EXECUTE AS OWNER -AS - SELECT - [RoUsages].[ROUsageID], - [RoUsages].[ContentID], - [RoUsages].[ROID], - [RoUsages].[Config], - [RoUsages].[DTS], - [RoUsages].[UserID], - [RoUsages].[LastChanged], - [RoUsages].[RODbID], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [RoUsages] - JOIN vefn_SplitROSearch(@ROIDs) SS - ON [RoUsages].RODBID = SS.[RODBID] and [RoUsages].[ROID] like SS.[ROID] + '%' - JOIN [Contents] ON - [Contents].[ContentID]=[RoUsages].[ContentID] - JOIN [VEFN_GetVersionItems](@Versions) VV ON [Contents].ContentID = VV.ContentID - RETURN -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsagesByROIDsAndVersions Succeeded' -ELSE PRINT 'Procedure Creation: getRoUsagesByROIDsAndVersions Error on Creation' -GO - -/****** Object: TableFunction [vefn_GetROTokens] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetROTokens]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetROTokens]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION [dbo].[vefn_GetROTokens](@text varchar(MAX)) -RETURNS @Tokens TABLE -( - Token varchar(MAX) -) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @index int -SET @index = -1 -DECLARE @indexb int -DECLARE @indexc int -DECLARE @indexd int -DECLARE @indexNext int -DECLARE @indexReturn int -WHILE (LEN(@text) > 0) - BEGIN - SET @index = PATINDEX('%<[A-Z]-%' , @text) - SET @indexb = PATINDEX('%<[A-Z][A-Z0-9]-%' , @text) - if((@index=0 and @indexb>0) or (@indexb > 0 and @index > @indexb)) - SET @index = @indexb - SET @indexc = PATINDEX('%<[A-Z][A-Z][A-Z0-9]-%' , @text) - if((@index=0 and @indexc>0) or (@indexc > 0 and @index > @indexc)) - SET @index = @indexc - SET @indexd = PATINDEX('%<[A-Z][A-Z][A-Z][A-Z0-9]-%' , @text) - if((@index=0 and @indexd>0) or (@indexd > 0 and @index > @indexd)) - SET @index = @indexd - IF @index = 0 - BREAK - SET @indexNext = @index + CHARINDEX('<' , substring(@text,@index+1,len(@text))) - IF @IndexNext=@index - SET @IndexNext = len(@text)+ 3 - SET @indexReturn = @index + CHARINDEX(char(13) , substring(@text,@index+1,len(@text))) - IF @IndexReturn=@index - SET @IndexReturn = len(@text)+3 - DECLARE @index2 int - SET @index2 = @index + CHARINDEX('>' , substring(@text,@index,len(@text))) - if @index2 = @index - BREAK - if(@index2 > @indexNext or @index2 > @indexReturn) - SET @text = RIGHT(@text, (LEN(@text) - @index)) - else - BEGIN - INSERT INTO @Tokens VALUES (substring(@text, @index,@index2-@index)) - if(len(@text) > @index2) - SET @text = substring(@text, @index2 , len(@text)) - else - SET @Text = '' - END - END - RETURN -END -GO --- Display the status of func creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetROTokens Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetROTokens Error on Creation' -GO - -/****** Object: TableFunction [vefn_GetVersionNames] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionNames]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetVersionNames]; -GO - --- --- select * from vefn_GetVersionNames() --- - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION [dbo].[vefn_GetVersionNames]() -RETURNS @Versions TABLE -( - VersionID int primary Key, - GrandParentName nvarchar(100), - ParentName nvarchar(100), - FolderName nvarchar(100) -) -WITH EXECUTE AS OWNER -AS -BEGIN - INSERT INTO @Versions - select versionid,gf.name GrandParentName, pf.name ParentName, ff.name FolderName - from docversions dv - Join folders ff on ff.FolderID = DV.FolderID - Join folders pf on pf.FolderID = ff.parentID - Join folders gf on gf.FolderID = pf.parentid - RETURN -END -GO --- Display the status of func creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetVersionNames Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetVersionNames Error on Creation' -GO - - - - --- =========================================== End of Functions and Procedures - --- Turn off Auto Close and Auto Shrink -declare @CMD varchar(max) -set @CMD = 'ALTER DATABASE [' + db_name() +'] SET AUTO_CLOSE OFF' -exec(@CMD) -GO -declare @CMD varchar(max) -set @CMD = 'ALTER DATABASE [' + db_name() +'] SET AUTO_SHRINK OFF' -exec(@CMD) -GO - ---added by JCB for Security and MultiUser support ---ALTER TABLE Sessions add MachineName and ProcessID columns if they do not exist -IF COL_LENGTH('Sessions','MachineName') IS NULL - ALTER TABLE Sessions ADD [MachineName] [nvarchar](100) NOT NULL,[ProcessID] [int] NOT NULL; -GO ---ALTER TABLE Sessions change DTSActivity column to not null -ALTER TABLE sessions ALTER COLUMN [DTSActivity] [datetime] NOT NULL -GO ---ALTER TABLE Sessions set DTSActivity column default value to getdate() -IF OBJECT_ID('DF_Sessions_DTSActivity', 'D') IS NULL - ALTER TABLE sessions ADD CONSTRAINT [DF_Sessions_DTSActivity] DEFAULT (getdate()) for [DTSActivity]; -GO - -/****** Object: StoredProcedure [purgeData] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[purgeData]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [purgeData]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[purgeData] - -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - delete from [AnnotationAudits] - dbcc checkident([AnnotationAudits],reseed,0) - delete from [Applicabilities] - dbcc checkident([Applicabilities],reseed,0) - delete from [ApplicableStructures] - delete from [Assignments] - dbcc checkident([Assignments],reseed,0) - delete from [Associations] - dbcc checkident([Associations],reseed,0) - delete from [Checks] - dbcc checkident([Checks],reseed,0) - delete from [ContentAudits] - dbcc checkident([ContentAudits],reseed,0) - delete from [DeleteLog] - dbcc checkident([DeleteLog],reseed,0) - delete from [Details] - dbcc checkident([Details],reseed,0) - delete from [DocumentAudits] - dbcc checkident([DocumentAudits],reseed,0) - delete from [DocVersions] - dbcc checkident([DocVersions],reseed,0) - delete from [DROUsages] - dbcc checkident([DROUsages],reseed,0) - delete from [EntryAudits] - dbcc checkident([EntryAudits],reseed,0) - delete from [Figures] - dbcc checkident([Figures],reseed,0) - delete from [Folders] - dbcc checkident([Folders],reseed,0) - delete from [GridAudits] - dbcc checkident([GridAudits],reseed,0) - delete from [ImageAudits] - dbcc checkident([ImageAudits],reseed,0) - delete from [ItemAudits] - dbcc checkident([ItemAudits],reseed,0) - delete from [Memberships] - dbcc checkident([Memberships],reseed,0) - delete from [PartAudits] - dbcc checkident([PartAudits],reseed,0) - delete from [Pdfs] - delete from [Permissions] - dbcc checkident([Permissions],reseed,0) - delete from [ROFsts] - dbcc checkident([ROFsts],reseed,0) - delete from [ROImages] - dbcc checkident([ROImages],reseed,0) - delete from [Roles] - dbcc checkident([Roles],reseed,0) - delete from [ROUsageAudits] - dbcc checkident([ROUsageAudits],reseed,0) - delete from [tblAnnotations] - dbcc checkident([tblAnnotations],reseed,0) - delete from [tblEntries] - delete from [tblGrids] - delete from [tblImages] - delete from [tblParts] - delete from [tblROUsages] - dbcc checkident([tblROUsages],reseed,0) - delete from [TransitionAudits] - dbcc checkident([TransitionAudits],reseed,0) - delete from [Users] - dbcc checkident([Users],reseed,0) - delete from [Versions] - dbcc checkident([Versions],reseed,0) - delete from [ZContents] - delete from [ZTransitions] - delete from [AnnotationTypes] - dbcc checkident([AnnotationTypes],reseed,0) - delete from [Connections] - dbcc checkident([Connections],reseed,0) - delete from [Groups] - dbcc checkident([Groups],reseed,0) - delete from [Revisions] - dbcc checkident([Revisions],reseed,0) - delete from [RODbs] - dbcc checkident([RODbs],reseed,0) - delete from [Stages] - dbcc checkident([Stages],reseed,0) - delete from [tblDocuments] - dbcc checkident([tblDocuments],reseed,0) - delete from [tblTransitions] - dbcc checkident([tblTransitions],reseed,0) - delete from [tblItems] - dbcc checkident([tblItems],reseed,0) - delete from [tblContents] - dbcc checkident([tblContents],reseed,0) - delete from [Formats] - dbcc checkident([Formats],reseed,0) - delete from [Sessions] - dbcc checkident([Sessions],reseed,0) - delete from [Owners] - dbcc checkident([Owners],reseed,0) - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: purgeData Succeeded' -ELSE PRINT 'Procedure Creation: purgeData Error on Creation' -GO - -/****** Object: StoredProcedure [getSessions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getSessions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getSessions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getSessions] - -WITH EXECUTE AS OWNER -AS - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID], - (select convert(bigint,max(lastchanged)) from contents) LastContentChange - FROM [Sessions] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getSessions Succeeded' -ELSE PRINT 'Procedure Creation: getSessions Error on Creation' -GO - -/****** Object: StoredProcedure [updateSession] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateSession]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateSession] - -( - @SessionID int, - @UserID nvarchar(100), - @DTSDtart datetime, - @DTSEnd datetime=null, - @DTSActivity datetime, - @LastChanged timestamp, - @MachineName nvarchar(100), - @ProcessID int, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Sessions] - SET - [UserID]=@UserID, - [DTSDtart]=@DTSDtart, - [DTSEnd]=@DTSEnd, - [DTSActivity]=@DTSActivity, - [MachineName]=@MachineName, - [ProcessID]=@ProcessID - WHERE [SessionID]=@SessionID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Sessions] WHERE [SessionID]=@SessionID) - RAISERROR('Session record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Session has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Sessions] WHERE [SessionID]=@SessionID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateSession Succeeded' -ELSE PRINT 'Procedure Creation: updateSession Error on Creation' -GO - -/****** Object: StoredProcedure [addSession] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addSession]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addSession] - -( - @UserID nvarchar(100), - @DTSDtart datetime, - @DTSEnd datetime=null, - @DTSActivity datetime, - @MachineName nvarchar(100), - @ProcessID int, - @newSessionID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Sessions] - ( - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [MachineName], - [ProcessID] - ) - VALUES - ( - @UserID, - @DTSDtart, - @DTSEnd, - @DTSActivity, - @MachineName, - @ProcessID - ) - SELECT @newSessionID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Sessions] WHERE [SessionID]=@newSessionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addSession Succeeded' -ELSE PRINT 'Procedure Creation: addSession Error on Creation' -GO - -/****** Object: StoredProcedure [deleteSession] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteSession]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteSession] - -( - @SessionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Sessions] - WHERE [SessionID] = @SessionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteSession Succeeded' -ELSE PRINT 'Procedure Creation: deleteSession Error on Creation' -GO - -/****** Object: StoredProcedure [getSession] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getSession]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getSession] - -( - @SessionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID], - (select convert(bigint,max(lastchanged)) from contents) LastContentChange - FROM [Sessions] - WHERE [SessionID]=@SessionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getSession Succeeded' -ELSE PRINT 'Procedure Creation: getSession Error on Creation' -GO - -/****** Object: StoredProcedure [existsSession] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsSession]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsSession] - -( - @SessionID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Sessions] WHERE [SessionID]=@SessionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsSession Succeeded' -ELSE PRINT 'Procedure Creation: existsSession Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SessionCleanup] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionBegin]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SessionBegin]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SessionBegin] - -( - @UserID nvarchar(100), - @MachineName nvarchar(100), - @ProcessID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - -- Cleanup Old Records before checking for Owner Records - --delete old closed sessions - DELETE FROM Sessions WHERE UserID = @UserID and DTSEnd is not null - --delete old owners from inactive sessions - DELETE FROM Owners WHERE SessionID in (SELECT SessionID FROM Sessions WHERE UserID = @UserID and DTSEnd is null and DTSActivity < DATEADD(minute, -5, getdate())) - DELETE FROM Owners WHERE SessionID in (SELECT SessionID FROM Sessions WHERE DTSEnd is null and DTSActivity < DATEADD(minute, -15, getdate())) - --delete inactive sessions where last activity is before 15 minutes ago - DELETE FROM Sessions WHERE UserID = @UserID and DTSEnd is null and DTSActivity < DATEADD(minute, -5, getdate()) - DELETE FROM Sessions WHERE DTSEnd is null and DTSActivity < DATEADD(minute, -15, getdate()) - DELETE FROM Owners WHERE SessionID not in (SELECT SessionID FROM Sessions) - DECLARE @oCount int - SELECT @oCount = count(*) FROM Owners WHERE OwnerType = 4 - IF @oCount > 0 BEGIN - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID], - (select convert(bigint,max(lastchanged)) from contents) LastContentChange - FROM [Sessions] - WHERE [SessionID]=0 - END - ELSE BEGIN - INSERT INTO [Sessions]([UserID],[MachineName],[ProcessID]) - VALUES (@UserID, @MachineName, @ProcessID) - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID], - (select convert(bigint,max(lastchanged)) from contents) LastContentChange - FROM [Sessions] - WHERE [SessionID]=SCOPE_IDENTITY() - IF( @@TRANCOUNT > 0 ) COMMIT - END -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionBegin Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SessionBegin Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SessionPing] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionPing]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SessionPing]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SessionPing] -( - @SessionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - --update active session dtsactivity value - UPDATE Sessions SET DTSActivity = getdate() WHERE SessionID = @SessionID -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionPing Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SessionPing Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SessionPing] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionEnd]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SessionEnd]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SessionEnd] -( - @SessionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - --delete unclosed owners for session being closed - DELETE FROM Owners WHERE SessionID = @SessionID - --update active session dtsend value - UPDATE Sessions SET DTSEnd = getdate() WHERE SessionID = @SessionID -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionEnd Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SessionEnd Error on Creation' -GO - -/****** Object: StoredProcedure [getOwners] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwners]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getOwners]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwners] - -WITH EXECUTE AS OWNER -AS - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - [LastChanged] - FROM [Owners] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwners Succeeded' -ELSE PRINT 'Procedure Creation: getOwners Error on Creation' -GO - -/****** Object: StoredProcedure [getOwnersBySessionID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnersBySessionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getOwnersBySessionID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwnersBySessionID] -( - @SessionID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - [LastChanged] - FROM [Owners] - WHERE [SessionID] = @SessionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwnersBySessionID Succeeded' -ELSE PRINT 'Procedure Creation: getOwnersBySessionID Error on Creation' -GO - -/****** Object: StoredProcedure [updateOwner] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateOwner]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateOwner] - -( - @OwnerID int, - @SessionID int, - @OwnerType tinyint, - @OwnerItemID int, - @DTSStart datetime, - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Owners] - SET - [SessionID]=@SessionID, - [OwnerType]=@OwnerType, - [OwnerItemID]=@OwnerItemID, - [DTSStart]=@DTSStart - WHERE [OwnerID]=@OwnerID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Owners] WHERE [OwnerID]=@OwnerID) - RAISERROR('Owner record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Owner has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Owners] WHERE [OwnerID]=@OwnerID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateOwner Succeeded' -ELSE PRINT 'Procedure Creation: updateOwner Error on Creation' -GO - -/****** Object: StoredProcedure [addOwner] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addOwner]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addOwner] - -( - @SessionID int, - @OwnerType tinyint, - @OwnerItemID int, - @DTSStart datetime, - @newOwnerID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Owners] - ( - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart] - ) - VALUES - ( - @SessionID, - @OwnerType, - @OwnerItemID, - @DTSStart - ) - SELECT @newOwnerID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Owners] WHERE [OwnerID]=@newOwnerID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addOwner Succeeded' -ELSE PRINT 'Procedure Creation: addOwner Error on Creation' -GO - -/****** Object: StoredProcedure [deleteOwner] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteOwner]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteOwner] - -( - @OwnerID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Owners] - WHERE [OwnerID] = @OwnerID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteOwner Succeeded' -ELSE PRINT 'Procedure Creation: deleteOwner Error on Creation' -GO - -/****** Object: StoredProcedure [getOwner] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getOwner]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwner] - -( - @OwnerID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - [LastChanged] - FROM [Owners] - WHERE [OwnerID]=@OwnerID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwner Succeeded' -ELSE PRINT 'Procedure Creation: getOwner Error on Creation' -GO - -/****** Object: StoredProcedure [existsOwner] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsOwner]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsOwner] - -( - @OwnerID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Owners] WHERE [OwnerID]=@OwnerID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsOwner Succeeded' -ELSE PRINT 'Procedure Creation: existsOwner Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SessionCanCheckOutItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionCanCheckOutItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SessionCanCheckOutItem]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -exec dbo.vesp_SessionCanCheckOutItem 17012,0 -exec dbo.vesp_SessionCanCheckOutItem 17066,0 -exec dbo.vesp_SessionCanCheckOutItem 17119,0 -exec dbo.vesp_SessionCanCheckOutItem 554,1 -exec dbo.vesp_SessionCanCheckOutItem 13,2 -exec dbo.vesp_SessionCanCheckOutItem 8,2 -exec dbo.vesp_SessionCanCheckOutItem 2,2 -exec dbo.vesp_SessionCanCheckOutItem 9,3 -*/ -CREATE PROCEDURE [dbo].[vesp_SessionCanCheckOutItem] -( - @ObjectID int, - @ObjectType int -) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @CheckOuts TABLE - ( - SessionID int - ) - --look to see if anyone else has a session. if they do, then cannot check out - DECLARE @sCount int - SELECT @sCount = count(*) FROM Sessions - IF @ObjectType = 4 BEGIN - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID], - (select convert(bigint,max(lastchanged)) from contents) LastContentChange - FROM [Sessions] - WHERE DTSEnd IS NULL - END - ELSE - BEGIN - DECLARE @ObjectAndEnhancedIDs Table - ( - ObjectID int - ) - IF @ObjectType = 0 BEGIN - INSERT INTO @ObjectAndEnhancedIDs - select ItemID from vefn_GetEnhancedProcedures(@ObjectID) - END - ELSE IF @ObjectType = 2 BEGIN - INSERT INTO @ObjectAndEnhancedIDs - select VersionID from vefn_GetEnhancedDocVersions(@ObjectID) - END - ELSE IF @ObjectType = 3 BEGIN - INSERT INTO @ObjectAndEnhancedIDs - select FolderID from vefn_GetEnhancedFolders(@ObjectID) - END - ELSE BEGIN - INSERT INTO @ObjectAndEnhancedIDs select @ObjectID - END - INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners - WHERE OwnerItemID in (select ObjectID from @ObjectAndEnhancedIDs) AND OwnerType = @ObjectType - IF @ObjectType = 2 - BEGIN - with ItemZ (VersionID,ItemID,PreviousID,SessionID) - as( - --> Procedure Owners - select null,II.ItemID, PreviousID, SessionID - from Owners OO - Join Items II on OO.OwnerItemID= II.ItemID - Where OO.OwnerType=0 - UNION ALL --> Document Owners - select null,II.ItemID, PreviousID, SessionID - from Owners OO - Join Entries EE ON OO.OwnerItemID = EE.DocID - Join Items II on EE.ContentID= II.ContentID - Where OO.OwnerType=1 - UNION ALL --> Previous Owners - Select null, ii.ItemID, ii.PreviousID,ZZ.SessionID From ItemZ ZZ - Join Items II ON II.ItemID = ZZ.PreviousID - Where ZZ.VersionID IS NULL and ZZ.PreviousID IS NOT NULL - UNION ALL -- Parts Owners - Select null, II.ItemID, II.PreviousID, ZZ.SessionID - from ItemZ ZZ - Join Parts PP ON PP.ItemID = ZZ.ItemID - Join Items II ON II.ContentID = PP.ContentID - Where ZZ.VersionID IS NULL - UNION ALL -- Version Owners - Select DV.VersionID,null,null,ZZ.SessionID From ItemZ ZZ - Join DocVersions DV ON ZZ.ItemID = DV.ItemID - Where ZZ.VersionID IS NULL AND ZZ.PreviousID IS NULL - ) - --Select Distinct 'Phase 2b' Result, * from Itemz - INSERT INTO @CheckOuts - Select DIstinct SessionID from ItemZ - where VersionID in(select ObjectID FROM @ObjectAndEnhancedIDs) - OPTION (MAXRECURSION 10000) -- B2017-144 Crash on Maximum Recursion - END - --look to see if object type is folder that no part of folder passed is checked out - IF @ObjectType = 3 BEGIN - with ItemZ (VersionID,ItemID,PreviousID,SessionID) - as( - --> Procedure Owners - select null,II.ItemID, PreviousID, SessionID - from Owners OO - Join Items II on OO.OwnerItemID= II.ItemID - Where OO.OwnerType=0 - UNION ALL --> Document Owners - select null,II.ItemID, PreviousID, SessionID - from Owners OO - Join Entries EE ON OO.OwnerItemID = EE.DocID - Join Items II on EE.ContentID= II.ContentID - Where OO.OwnerType=1 - UNION ALL --> Previous Owners - Select null, ii.ItemID, ii.PreviousID,ZZ.SessionID From ItemZ ZZ - Join Items II ON II.ItemID = ZZ.PreviousID - Where ZZ.VersionID IS NULL and ZZ.PreviousID IS NOT NULL - UNION ALL -- Parts Owners - Select null, II.ItemID, II.PreviousID, ZZ.SessionID - from ItemZ ZZ - Join Parts PP ON PP.ItemID = ZZ.ItemID - Join Items II ON II.ContentID = PP.ContentID - Where ZZ.VersionID IS NULL - UNION ALL -- Version Owners - Select DV.VersionID,null,null,ZZ.SessionID From ItemZ ZZ - Join DocVersions DV ON ZZ.ItemID = DV.ItemID - Where ZZ.VersionID IS NULL AND ZZ.PreviousID IS NULL - ) - --Select Distinct 'Phase 2b' Result, * from Itemz - INSERT INTO @CheckOuts - Select DIstinct SessionID from ItemZ - where VersionID in(select ObjectID FROM @ObjectAndEnhancedIDs) - OPTION (MAXRECURSION 10000) -- B2017-144 Crash on Maximum Recursion - END - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID], - (select convert(bigint,max(lastchanged)) from contents) LastContentChange - FROM [Sessions] - WHERE [SessionID] IN (SELECT SessionID FROM @CheckOuts) - END -END -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionCanCheckOutItem Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SessionCanCheckOutItem Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SessionCheckOutItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionCheckOutItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SessionCheckOutItem]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SessionCheckOutItem] -( - @SessionID int, - @ItemID int, - @ItemType int, - @OwnerID int OUTPUT -) -WITH EXECUTE AS OWNER -AS -BEGIN - INSERT INTO Owners (SessionID, OwnerItemID, OwnerType) VALUES (@SessionID, @ItemID, @ItemType) - SELECT @OwnerID = SCOPE_IDENTITY() -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionCheckOutItem Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SessionCheckOutItem Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SessionCheckInItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionCheckInItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SessionCheckInItem]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SessionCheckInItem] -( - @OwnerID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - DELETE FROM Owners WHERE OwnerID = @OwnerID -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionCheckInItem Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SessionCheckInItem Error on Creation' -GO - -/****** Object: StoredProcedure [getOwnerByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnerByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getOwnerByItemID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwnerByItemID] - -( - @ItemID int, - @ItemType int -) -WITH EXECUTE AS OWNER -AS - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - [LastChanged] - FROM [Owners] - WHERE [OwnerItemID]=@ItemID AND [OwnerType]=@ItemType - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwnerByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getOwnerByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getOwnerBySessionIDandVersionID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnerBySessionIDandVersionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getOwnerBySessionIDandVersionID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwnerBySessionIDandVersionID] - -( - @SessionID int, - @VersionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - [LastChanged] - FROM [Owners] oo - INNER JOIN - ( - SELECT 0 ObjectType,ItemID ObjectID FROM dbo.vefn_GetVersionItems(@VersionID) - UNION - SELECT 1 ObjectType,ee.DocID ObjectID FROM dbo.vefn_GetVersionItems(@VersionID) vi - INNER JOIN Contents cc ON vi.ContentID = cc.ContentID - INNER JOIN Entries ee ON vi.ContentID = ee.ContentID - UNION - SELECT 2 ObjectType, @VersionID ObjectID - ) tt ON oo.OwnerType = tt.ObjectType and oo.OwnerItemID = tt.ObjectID - WHERE [SessionID] = @SessionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwnerBySessionIDandVersionID Succeeded' -ELSE PRINT 'Procedure Creation: getOwnerBySessionIDandVersionID Error on Creation' -GO - -/****** Object: StoredProcedure [getUserByUserID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getUserByUserID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getUserByUserID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getUserByUserID] - -( - @UserID varchar(100) -) -WITH EXECUTE AS OWNER -AS - SELECT - [UID], - [UserID], - [FirstName], - [MiddleName], - [LastName], - [Suffix], - [CourtesyTitle], - [PhoneNumber], - [CFGName], - [UserLogin], - [UserName], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Memberships] WHERE [Memberships].[UID]=[Users].[UID]) [MembershipCount] - FROM [Users] - WHERE [UserID]=@UserID - - SELECT - [Memberships].[UGID], - [Memberships].[UID], - [Memberships].[GID], - [Memberships].[StartDate], - [Memberships].[EndDate], - [Memberships].[Config], - [Memberships].[DTS], - [Memberships].[UsrID], - [Memberships].[LastChanged], - [Groups].[GroupName] [Group_GroupName], - [Groups].[GroupType] [Group_GroupType], - [Groups].[Config] [Group_Config], - [Groups].[DTS] [Group_DTS], - [Groups].[UsrID] [Group_UsrID] - FROM [Memberships] - JOIN [Groups] ON - [Groups].[GID]=[Memberships].[GID] - JOIN [Users] ON [Memberships].[UID] = [Users].[UID] - WHERE - [Users].[UserID]=@UserID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getUserByUserID Succeeded' -ELSE PRINT 'Procedure Creation: getUserByUserID Error on Creation' -GO - ---need to check to see if security is already defined. if not then do this stuff -declare @aCount int -select @aCount = count(*) from assignments -if @aCount = 0 -begin ---clean up security related tables - EXEC sp_executesql N' - delete from [Assignments]' - EXEC sp_executesql N' - dbcc checkident([Assignments],reseed,0)' - EXEC sp_executesql N' - delete from [Memberships]' - EXEC sp_executesql N' - dbcc checkident([Memberships],reseed,0)' - EXEC sp_executesql N' - delete from [Permissions]' - EXEC sp_executesql N' - dbcc checkident([Permissions],reseed,0)' - EXEC sp_executesql N' - delete from [Roles]' - EXEC sp_executesql N' - dbcc checkident([Roles],reseed,0)' - EXEC sp_executesql N' - delete from [Users]' - EXEC sp_executesql N' - dbcc checkident([Users],reseed,0)' - EXEC sp_executesql N' - delete from [Groups]' - EXEC sp_executesql N' - dbcc checkident([Groups],reseed,0)' - - --define Roles - EXEC sp_executesql N' - insert into Roles (Name,Title,DTS,UsrID) values - (''Administrator'',''Manage Generic Data;Manage Security;Edit RO Values,Create FST,Update RO Values;Update Formats;PROMS Settings;Create/Update/Delete Folders,DocVersions,Procedures,Sections,Steps,All Annotations'',getdate(),''VEPROMS'')' - EXEC sp_executesql N' - insert into Roles (Name,Title,DTS,UsrID) values - (''Set Administrator'',''Edit RO Values,Create FST,Update RO Values;Create/Update/Delete Folders,DocVersions,Procedures,Sections,Steps,All Set Annotations'',getdate(),''VEPROMS'')' - EXEC sp_executesql N' - insert into Roles (Name,Title,DTS,UsrID) values - (''Writer'',''Create/Update/Delete Procedures,Sections,Steps,All Set Annotations'',getdate(),''VEPROMS'')' - EXEC sp_executesql N' - insert into Roles (Name,Title,DTS,UsrID) values - (''Reviewer'',''Create/Update/Delete User Annotations'',getdate(),''VEPROMS'')' - EXEC sp_executesql N' - insert into Roles (Name,Title,DTS,UsrID) values - (''RO Editor'',''Edit RO Values,Create FST'',getdate(),''VEPROMS'')' - - --define Permissions for Roles - EXEC sp_executesql N' - declare @rid int; - select @rid = rid from roles where name = ''Administrator''; - insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values - (@rid,1,3,15,0,getdate(),getdate(),''VEPROMS'')' - EXEC sp_executesql N' - declare @rid int; - select @rid = rid from roles where name = ''Set Administrator''; - insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values - (@rid,2,3,15,0,getdate(),getdate(),''VEPROMS'')' - EXEC sp_executesql N' - declare @rid int; - select @rid = rid from roles where name = ''Writer''; - insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values - (@rid,4,3,15,0,getdate(),getdate(),''VEPROMS'')' - EXEC sp_executesql N' - declare @rid int; - select @rid = rid from roles where name = ''Reviewer''; - insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values - (@rid,7,3,15,0,getdate(),getdate(),''VEPROMS'')' - EXEC sp_executesql N' - declare @rid int; - select @rid = rid from roles where name = ''RO Editor''; - insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values - (@rid,3,3,15,0,getdate(),getdate(),''VEPROMS'')' - - --define adminstrator Group - EXEC sp_executesql N' - insert into groups (groupname,dts,usrid) - select name + ''s'',getdate(),''VEPROMS'' from roles where name = ''Administrator''' - - --define administrator Assignment - EXEC sp_executesql N' - insert into assignments (gid,rid,folderid,startdate,dts,usrid) - select gg.gid,rr.rid,1,getdate(),getdate(),''VEPROMS'' from roles rr inner join groups gg on rr.name + ''s'' = gg.groupname' - EXEC sp_executesql N' - print ''MultiUser and Security Created''' -end -else begin - EXEC sp_executesql N' - print ''MultiUser and Security Exists''' -end -GO - ---added jcb 1st round fixes multiuser and security testting ---ALTER TABLE Groups change GroupName column to 100 characters -ALTER TABLE groups ALTER COLUMN [GroupName] [nvarchar](100) NOT NULL -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ResetSecurity]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ResetSecurity]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ResetSecurity] -AS -BEGIN - DELETE FROM [Memberships] - DELETE FROM [Assignments] WHERE [AID] != 1 - DELETE FROM [Groups] WHERE [GID] != 1 - DELETE FROM [Users] - DECLARE @gid VARCHAR(10) - SELECT @gid = x1.value('@Group','varchar(10)') - FROM - ( - SELECT folderid,CAST(config as xml) xconfig FROM folders ff WHERE ff.folderid = 1 - ) ah - CROSS APPLY xconfig.nodes('//Security') t1(x1) - UPDATE folders SET config = replace(config,'Security Group="' + @gid + '"','Security Group="1"') WHERE folderid = 1 -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ResetSecurity Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ResetSecurity Error on Creation' -GO - -/****** Object: StoredProcedure [getRevisionsByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRevisionsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRevisionsByItemID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRevisionsByItemID] -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] - WHERE [ItemID] = @ItemID -and (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) > 0 - ORDER BY [RevisionID] DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRevisionsByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getRevisionsByItemID Error on Creation' -GO -/****** Object: StoredProcedure [getRoUsagesForDocVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsagesForDocVersion]') AND OBJECTPROPERTY - -(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoUsagesForDocVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRoUsagesForDocVersion] -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ROUsageID], - rr.[ContentID], - [ROID], - [Config], - [DTS], - [UserID], - [LastChanged], - [RODbID] - FROM [RoUsages] rr - INNER JOIN vefn_getversionitems(@VersionID) vi on rr.contentid = vi.contentid - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsagesForDocVersion Succeeded' -ELSE PRINT 'Procedure Creation: getRoUsagesForDocVersion Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListTables3] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListTables3]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListTables3]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE procedure [dbo].[vesp_ListTables3] -WITH EXECUTE AS OWNER -AS -begin -select o.name TableName,c.name ColumnName, -case c.system_type_id - when 56 then 'int' - when 231 then 'nvarchar' - when 165 then 'varbinary' - when 167 then 'varchar' - when 239 then 'nchar' - when 175 then 'char' - when 61 then 'datetime' - when 104 then 'bit' - when 48 then 'TinyInt' - when 127 then 'BigInt' - when 241 then 'Xml' - when 62 then 'float' - when 189 then 'timestamp' - else '???' + cast(c.system_type_id as varchar(10)) end ItemType, -case c.system_type_id - when 56 then '0' - when 231 then case c.max_length when -1 then 'Max' else cast(c.max_length/2 as varchar(10)) end - when 165 then case c.max_length when -1 then 'Max' else cast(c.max_length as varchar(10)) end - when 167 then case c.max_length when -1 then 'Max' else cast(c.max_length as varchar(10)) end - when 239 then case c.max_length when -1 then 'Max' else cast(c.max_length/2 as varchar(10)) end - when 175 then case c.max_length when -1 then 'Max' else cast(c.max_length as varchar(10)) end - when 61 then '0' - when 104 then '0' - when 48 then '0' - when 189 then '0' - else '0' end ItemSize, - - case when c.is_nullable=1 then 'Yes' else '' end AllowNulls, - case when c.is_identity=1 then 'Identity' else dc.definition end DefaultValue, - x.value Description -from sys.objects o -join sys.columns c on o.object_id=c.object_id -left join sysconstraints cn on o.object_id=cn.id and c.column_id=cn.colid -left join sys.default_constraints dc on dc.object_id = cn.constid -left join sys.extended_properties x on x.major_id = o.OBJECT_ID AND x.minor_id=c.column_id AND x.Name='MS_Description' -where o.type='U' -order by o.name,c.column_id -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListTables3 Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListTables3 Error on Creation' -GO - -/****** Object: StoredProcedure [getOwnersByVersionID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnersByVersionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getOwnersByVersionID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwnersByVersionID] -( - @VersionID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - oo.[LastChanged] - FROM [Owners] oo - JOIN vefn_GetVersionItems(@VersionID) vi ON oo.OwnerItemID = vi.ItemID - WHERE oo.OwnerType = 0 - UNION - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - oo.[LastChanged] - FROM [Owners] oo - JOIN [Entries] ee on oo.OwnerItemID = ee.DocID - JOIN vefn_GetVersionItems(@VersionID) vi on ee.ContentID = vi.ContentID - WHERE oo.OwnerType = 1 - UNION - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - oo.[LastChanged] - FROM [Owners] oo - WHERE oo.OwnerType = 2 - AND oo.OwnerItemID = @VersionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwnersByVersionID Succeeded' -ELSE PRINT 'Procedure Creation: getOwnersByVersionID Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CompareROIDs]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_CompareROIDs]; -/****** Object: UserDefinedFunction [dbo].[vefn_CompareROIDs] Script Date: 07/21/2014 17:50:44 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create function [DBO].[vefn_CompareROIDs] (@roid1 varchar(16), @roid2 varchar(16)) -returns int -as begin - declare @len1 int - declare @len2 int - if @roid1 = @roid2 - return 1 - set @len1 = len(@roid1) - set @len2 = len(@roid2) - if @len1 = @len2 - begin - if @len1 = 16 and substring(@roid1,13,4) = '0000' and substring(@roid2,13,4) = '0041' - return 2 - if @len1 = 16 and substring(@roid2,13,4) = '0000' and substring(@roid1,13,4) = '0041' - return 3 - return 0 - end - if substring(@roid1,1,12) = substring(@roid2,1,12) - return 4 - return 0 -end -GO --- Display the status of ScalarFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_CompareROIDs Succeeded' -ELSE PRINT 'Function: vefn_CompareROIDs Error on Creation' -GO - -/****** Object: Index [IX_tblContentsForCopy] Script Date: 8/26/2014 8:55:16 PM ******/ -IF NOT EXISTS (SELECT * FROM dbo.sysindexes WHERE name = 'IX_tblContentsForCopy') -BEGIN -CREATE NONCLUSTERED INDEX [IX_tblContentsForCopy] ON [dbo].[tblContents] -( - [DTS] ASC, - [UserID] ASC, - [Type] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -END -GO - -/****** Object: Index [IX_tblItemsForCopy1] Script Date: 8/27/2014 5:26:31 PM ******/ -IF NOT EXISTS (SELECT * FROM dbo.sysindexes WHERE name = 'IX_tblItemsForCopy1') -BEGIN -CREATE NONCLUSTERED INDEX [IX_tblItemsForCopy1] ON [dbo].[tblItems] -( - [ContentID] ASC, - [DTS] ASC, - [UserID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -END -GO - -/****** Object: Index [IX_tblItemsForCopy2] Script Date: 8/27/2014 5:26:37 PM ******/ -IF NOT EXISTS (SELECT * FROM dbo.sysindexes WHERE name = 'IX_tblItemsForCopy2') -BEGIN -CREATE NONCLUSTERED INDEX [IX_tblItemsForCopy2] ON [dbo].[tblItems] -( - [PreviousID] ASC, - [DTS] ASC, - [UserID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -END -GO - -/****** Object: Index [IX_contentsLastChanged] Script Date: 3/21/2017 11:24:00 AM ******/ -IF EXISTS (SELECT * FROM dbo.sysIndexes WHERE name like 'IX_contentsLastChanged') - DROP INDEX [IX_ContentsLastChanged] ON [dbo].[tblContents]; -GO -CREATE NONCLUSTERED INDEX [IX_contentsLastChanged] ON [dbo].[tblContents] -( - [DeleteStatus] ASC, - [LastChanged] DESC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -PRINT 'Added IX_contentsLastChanged Index. Speeds up session queries' -GO - -/****** Object: StoredProcedure [CopyItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[CopyItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [CopyItemAndChildren]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[CopyItemAndChildren] -( - @StartItemID INT, - @DestFormatID INT, - @UserID NVARCHAR(100), - @NewStartItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - ---+-----------------------------------------------------------------+ ---& BEGIN TRANSACTION to make these changes temporary & ---+-----------------------------------------------------------------+ - BEGIN TRANSACTION - if exists (select * from tblitems where itemid = @StartItemID and DeleteStatus !=0) - BEGIN - RAISERROR ('###Cannot Paste Step###This step has been deleted',16,1) - RETURN - END -DECLARE @Children AS TABLE -( - ItemID INT PRIMARY KEY, - NewItemID INT, - ContentID INT, - NewContentID INT, - FormatID INT, - NewFormatID INT -) -DECLARE @NewDocuments AS TABLE -( - DocID INT PRIMARY KEY, - NewDocID INT -) --- Locals -DECLARE @DTS DATETIME -- DTS of all New Items -DECLARE @StartContentID INT -Select @StartContentID = ContentID from Items where ItemID = @StartItemID -SET @DTS = GETDATE() -- Get the current Date and Time --- Get a list of all of the Items to be copied based upon StartItemID and EndItemID --- If the StartItemID = EndItemID then it is a single item and it's children -INSERT INTO @Children SELECT ItemID,ItemID,ContentID,ContentID,FormatID,FormatID FROM vefn_ChildItemsRange(@StartItemID,@StartItemID,null) --- <<< Copy Contents >>> --- Create new content rows to match the existing rows. Set the type to the Current ContentID temporarily --- so that the new content rows can be associated with the existing content rows. -INSERT INTO Contents - ([Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID]) - select CASE when [ContentID] = @StartContentID and [Type]<20000 then 'Copy Of ' + [Number] else [Number] end, - [Text],[ContentID],[FormatID],[Config],@DTS,@UserID - from Contents where ContentID in(Select ContentID from @Children) --- Update the @Children with the NewConentIDs ---print 'A ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -UPDATE NN set NN.NewContentID = CC.ContentID -From Contents CC -Join @Children NN on NN.ContentID = CC.Type AND CC.DTS = @DTS and CC.UserID = @UserID --- Reset the Type column in the Contents table with the Type column from the original Records. ---print 'B ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -DECLARE @SourceType INT -Select @SourceType = Type from Contents where ContentID = @StartContentID -if @SourceType = 0 - BEGIN - UPDATE CC set CC.Type = CC2.Type, CC.DTS = CC2.DTS, CC.UserID = CC2.UserID - From Contents CC - Join @Children NN on NN.NewContentID = CC.ContentID - Join Contents CC2 on NN.ContentID = CC2.ContentID - END -else - BEGIN -UPDATE CC set CC.Type = CC2.Type -From Contents CC -Join @Children NN on NN.NewContentID = CC.ContentID -Join Contents CC2 on NN.ContentID = CC2.ContentID - END ---print 'B1 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Contents are done - -- SELECT * From Contents where DTS = @DTS and UserID = @UserID --- <<< Copy Grids >>> -INSERT INTO [Grids]([ContentID],[Data],[Config],[DTS],[UserID]) - SELECT NN.[NewContentID],[Data],[Config],@DTS,@UserID - FROM [Grids] GG Join @Children NN on GG.ContentID = NN.ContentID --- <<< Copy Images >>> ---print 'B2 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -INSERT INTO [Images]([ContentID],[ImageType],[FileName],[Data],[Config],[DTS],[UserID]) - SELECT NN.[NewContentID],[ImageType],[FileName],[Data],[Config],@DTS,@UserID - FROM [Images] II Join @Children NN on II.ContentID = NN.ContentID --- Create new item rows based upon the current item rows and the @Children table, with the NewContentIDs ---print 'B3 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -INSERT INTO [Items] ([PreviousID],[ContentID],[DTS],[UserID]) - SELECT II.[PreviousID], -- Leave the PreviousID as is for now - NN.NewContentID, @DTS, @UserID - from @Children NN - join Items II on II.ContentID = NN.ContentID --- Update the @Children with the NewItemIDs ---print 'B4 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -UPDATE NN set NN.NewItemID = II.ItemID -From Items II -Join @Children NN on NN.NewContentID = II.ContentID AND II.DTS = @DTS and II.UserID = @UserID -DECLARE @NewItemID int -SELECT @NewItemID = NewItemID - FROM @Children - WHERE ItemID = @StartItemID ---print 'B5 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -UPDATE NN SET NN.[NewFormatID] = CC.[FormatID] - FROM @Children NN - Join vefn_ChildItemsRange(@NewItemID,@NewItemID,@DestFormatID) CC - ON NN.NewItemID = CC.ItemID --- The @Children table is now complete - --SELECT * From @Children --- Update the PreviousID in the new Item rows, to the new ItemIDs based upon the old ItemIDs ---print 'B6 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -Update II Set II.[PreviousID] = NN.NewItemID -from Items II -Join @Children NN on NN.ItemID = II.PreviousID AND II.DTS = @DTS and II.UserID = @UserID --- Get the new ItemIDs based upon the old ItemIDs -SELECT @NewStartItemID = NewItemID from @Children where ItemID = @StartItemID ---SELECT @NewEndItemID = NewItemID from @Children where ItemID = @EndItemID --- Set the PreviousID for the starting Item to null temporarily. --- This will be adjusted based upon where the step is inserted. ---print 'B7 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -Update Items Set PreviousID = null where ItemID = @NewStartItemID -if @SourceType = 0 - BEGIN - UPDATE II SET II.DTS = II2.DTS, II.UserID = II2.UserID - From Items II - Join @Children NN on NN.NewItemID = II.ItemID - Join Items II2 on NN.ItemID = II2.ItemID - WHERE NN.ItemID = @StartItemID - END ---print 'C ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Items are done - --SELECT * From Items where DTS = @DTS and UserID = @UserID --- <<< Copy Parts >>> -INSERT INTO [Parts] ([ContentID],[FromType],[ItemID],[DTS],[UserID]) -Select NNF.NewContentID,[FromType],NNT.NewItemID, @DTS, @UserID from Parts PP -JOIN @Children NNF on PP.ContentID = NNF.ContentID -JOIN @Children NNT on PP.ItemID = NNT.ItemID ---print 'D ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Parts are done - -- SELECT * From Parts where DTS = @DTS and UserID = @UserID --- <<< Copy Annotations >>> -INSERT INTO [Annotations] ([ItemID],[TypeID],[RtfText],[SearchText],[Config],[DTS],[UserID]) - Select NewItemID, TypeID, RtfText, SearchText, Config, @DTS, @UserID - from Annotations AA Join @Children NN on AA.ItemID = NN.ItemID ---print 'E ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Annotations are done - -- SELECT * From Annotations where DTS = @DTS and UserID = @UserID --- <<< Copy Documents and Entries>>> --- logic to create Entries for Library Documents -INSERT INTO [Entries] ([ContentID],[DocID],[DTS],[UserID]) - SELECT NN.[NewContentID],EE.[DocID],@DTS,@UserID - FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID - JOIN [Documents] DD on EE.[DocID] = DD.[DocID] and Isnull(LibTitle,'') <> '' --- Logic to create new documents for any documents used that do not have libtitles -INSERT INTO [Documents] ([LibTitle],[DocContent],[DocAscii],[Config],[DTS],[UserID],[FileExtension]) - OUTPUT CAST(INSERTED.[LibTitle] as INT),INSERTED.[DocID] INTO @NewDocuments - SELECT str(DD.[DocID]),[DocContent],[DocAscii],[Config],@DTS,@UserID,[FileExtension] - FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID - JOIN [Documents] DD on EE.[DocID] = DD.[DocID] and Isnull(LibTitle,'') = '' -UPDATE DD SET LibTitle = '' - FROM Documents DD JOIN @NewDocuments ND on DD.[DocID] = ND.[NewDocID] - where DTS = @DTS and UserID = @UserID ---print 'F ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Documents are Done - -- SELECT * From Documents where DTS = @DTS and UserID = @UserID --- Logic to create entries for these newly created documents -INSERT INTO [Entries] ([ContentID],[DocID],[DTS],[UserID]) - SELECT NN.[NewContentID],ND.[NewDocID],@DTS,@UserID - FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID - JOIN @NewDocuments ND on EE.[DocID] = ND.[DocID] --- Logic to Create DROUsages for these newly created documents -INSERT INTO [DROUsages] ([DocID],[ROID],[Config],[DTS],[UserID],[RODbID]) - SELECT ND.[NewDocID],[ROID],[Config],@DTS,@UserID,[RODbID] - FROM [DROUsages] RR - JOIN @NewDocuments ND on RR.[DocID] = ND.[DocID] - ---print 'G ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Entries are done - -- SELECT * From Entries EE JOIN Documents DD on ee.DocID = DD.DocID where EE.DTS = @DTS and EE.UserID = @UserID --- <<< Copy RoUsages >>> -INSERT INTO [RoUsages] ([ContentID],[ROID],[Config],[DTS],[UserID],[RODbID]) - SELECT NN.[NewContentID],CAST([ROUsageID] as nvarchar(16)),[Config],@DTS,@UserID,[RODbID] - FROM [RoUsages] RR Join @Children NN on RR.ContentID = NN.ContentID --- Update content records for newly copied records to use correct RO usage ids in the RO tags -DECLARE @RowsAffected int -SET @RowsAffected=1 -WHILE @RowsAffected > 0 -BEGIN - UPDATE CC SET [TEXT] = C2.NewText - FROM CONTENTS CC - JOIN (SELECT C1.ContentID, .dbo.vefn_FixROText(C1.Text, CAST([ROID] as int), [ROUsageID]) NewText - FROM CONTENTS C1 - JOIN @Children NN on C1.ContentID = NN.NewContentID - JOIN RoUsages RO on NN.NewContentID = RO.ContentID where Len([ROID]) < 12) C2 ON CC.ContentID = C2.ContentID - WHERE [TEXT] <> C2.NewText - SET @RowsAffected = @@RowCount -END --- Update grid records for newly copied records to use correct RO usage ids in the RO tags -SET @RowsAffected=1 -WHILE @RowsAffected > 0 -BEGIN - UPDATE GG SET [Data] = G2.NewData - FROM GRIDS GG - JOIN (SELECT G1.ContentID, .dbo.vefn_FixROData(G1.Data, CAST([ROID] as int), [ROUsageID]) NewData - FROM GRIDS G1 - JOIN @Children NN on G1.ContentID = NN.NewContentID - JOIN RoUsages RO on NN.NewContentID = RO.ContentID where Len([ROID]) < 12) G2 ON GG.ContentID = G2.ContentID - WHERE Cast([Data] as nvarchar(max)) <> cast(G2.NewData as nvarchar(max)) - SET @RowsAffected = @@RowCount -END -UPDATE RON SET [ROID] = ROO.[ROID] - FROM RoUsages RON - JOIN @Children NN on RON.ContentID = NN.NewContentID - JOIN RoUsages ROO on CAST(RON.ROID as int) = ROO.RoUsageID - where Len(RON.[ROID]) < 12 ---print 'H ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- RoUsages are done - -- SELECT * From RoUsages where DTS = @DTS and UserID = @UserID - --- <<< Copy Transtions >>> --- Note that the inserted record has the 'TranType' field set to old transitionid. This is done --- so that the next step can replace the old transitionid with the new transitionid in the --- content record's transition tokens. The TranType gets reset after the content records are --- updated. --- Also note that the 'toid/rangeid' may need converted to newly copied ids or may not. If it's --- not a range, then it always is converted to new, if there is a new. If it's a range, both --- the toid & the rangeid must be new in order for the conversion to be correct. You cannot --- have part of the range pointing to the new and part of the range pointing to the original --- locations. - -INSERT INTO .[dbo].[Transitions] ([FromID],[ToID],[RangeID],[IsRange],[TranType],[Config],[DTS],[UserID]) - SELECT NNF.[NewContentID], - -- if both toid & range are null, use the original toid & rangeid - CASE WHEN NNT.[NewItemID] is null or NNR.[NewItemID] is null THEN [ToID] ELSE NNT.[NewItemID] END, - CASE WHEN NNT.[NewItemID] is null or NNR.[NewItemID] is null THEN [RangeID] ELSE NNR.[NewItemID] END, - [IsRange],[TransitionID],[Config],@DTS,@UserID - FROM .[dbo].[Transitions] TT - JOIN @Children NNF on TT.[FromID] = NNF.[ContentID] - LEFT JOIN @Children NNT on TT.[ToID] = NNT.[ItemID] - LEFT JOIN @Children NNR on TT.[RangeID] = NNR.[ItemID] ---print 'H1 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- -- Update content records for newly copied records to use correct TransitionIDs in the Transition tags -SET @RowsAffected=1 -WHILE @RowsAffected > 0 -BEGIN -UPDATE CC SET [TEXT] = C2.NewText - FROM CONTENTS CC - JOIN (SELECT C1.ContentID, .dbo.vefn_FixTransitionTextForCopy(C1.Text, TRO.TransitionID, TRO.TranType, TRO.[ToID], TRO.[RangeID],TR.[TransitionID], TR.[ToID], TR.[RangeID], .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType)) NewText - FROM CONTENTS C1 - JOIN @Children NN on C1.ContentID = NN.NewContentID - JOIN Transitions TR on NN.NewContentID = TR.FromID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID) C2 ON CC.ContentID = C2.ContentID - WHERE [TEXT] <> C2.NewText - SET @RowsAffected = @@RowCount -END ---print 'H2 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) ---set nocount off --- -- Update grid records for newly copied records to use correct TransitionIDs in the Transition tags -declare @grids table -( -contentid int primary key, -data xml -) -insert into @grids select gg.contentid,gg.data from GRIDS GG - where gg.contentid in (select nn.newcontentid from - @Children NN - JOIN Transitions TR on NN.NewContentID = TR.FromID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID) ---print 'H2.1 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) ---select * from @grids -SET @RowsAffected=1 -WHILE @RowsAffected > 0 -BEGIN -UPDATE GG SET [DATA] = G2.NewData - FROM @GRIDS GG - JOIN (SELECT G1.ContentID, .dbo.vefn_FixTransitionDataForCopy(G1.Data, TRO.TransitionID, TRO.TranType, TRO.[ToID], TRO.[RangeID],TR.[TransitionID], TR.[ToID], TR.[RangeID], .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType)) NewData - FROM @GRIDS G1 - JOIN @Children NN on G1.ContentID = NN.NewContentID - JOIN Transitions TR on NN.NewContentID = TR.FromID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID) G2 ON GG.ContentID = G2.ContentID - WHERE Cast([DATA] as nvarchar(max)) <> CAST(G2.NewData as nvarchar(max)) - SET @RowsAffected = @@RowCount -END ---print 'H2.2 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -update GG set data = g1.data from Grids gg join @grids g1 on gg.contentid = g1.contentid ---print 'H3 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) ---set nocount on --- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition whose transition format changes -INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT NN.NewItemID, @typeID,'Verify Transition Format',@UserID - FROM Transitions TR - JOIN @Children NN on TR.FromID = NN.NewContentID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID - WHERE .dbo.vefn_CompareTranFormat(NN.FormatID, NN.NewFormatID, TRO.TranType) <> 0 ---print 'H4 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -UPDATE TR SET TR.[TranType] = .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType) - FROM Transitions TR - JOIN @Children NN on TR.FromID = NN.NewContentID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID ---print 'H5 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Transitions are done - -- SELECT * From Transitions where DTS = @DTS and UserID = @UserID ---print 'Z ' + cast(datediff(s,@dts,getdate()) as varchar(100)) ---foldouts fixing code -if exists (select * from contents where contentid in (select newcontentid from @children) and config like '%FloatingFoldout%') -begin - --insert into #mytemp - select cc.contentid,xsteps.value('@FloatingFoldout','int') oldfoldoutid,(select newitemid - from @children - where itemid = xsteps.value('@FloatingFoldout','int')) newfoldoutid,xconfig - into #mytemp - from (select *,cast(config as xml) xconfig from contents where contentid in (select newcontentid from @children)) cc - cross apply xconfig.nodes('Config/Step') tsteps(xsteps) - --build @cmd string - declare @cmd nvarchar(max) - declare cmds cursor for - select distinct 'update #mytemp set xconfig.modify(''replace value of (Config/Step/@FloatingFoldout)[1] with "' - + cast(newfoldoutid as varchar(10)) - + '"'') where xconfig.value(''(Config/Step/@FloatingFoldout)[1]'',''int'') = ' - + cast(oldfoldoutid as varchar(10)) - from #mytemp - --execute cursor over rows - open cmds - fetch next from cmds into @cmd - while @@fetch_status = 0 - begin - exec sp_executesql @cmd - fetch next from cmds into @cmd - end - close cmds - deallocate cmds - --actually update contents - update cc set config = cast(xconfig as varchar(max)) from contents cc join #mytemp mt on cc.contentid = mt.contentid - --get rid of #mytemp - drop table #mytemp -end ---end foldouts fixing code ---section start -DECLARE @NewContentID int -Select @NewContentID = NewContentID from @Children where ItemID = @StartItemID -DECLARE @Config varchar(max) -DECLARE @XConfig xml -select @Config = config from contents where contentid = @NewContentID -select @XConfig = cast(@Config as xml) -if @Config like '%SectionStart%' begin - DECLARE @SectionStart int - select @SectionStart = xproc.value('@SectionStart','int') from @xconfig.nodes('Config/Procedure') tproc(xproc) - DECLARE @NewSectionStart int - select @NewSectionStart = newitemid from @children where itemid = @SectionStart - DECLARE @cmd2 nvarchar(max) - set @cmd2 = ' - declare @XConfig xml; - set @XConfig = cast(''' + @Config + ''' as xml); - set @XConfig.modify(''replace value of (Config/Procedure/@SectionStart)[1] with "' + cast(@NewSectionStart as nvarchar(10)) + '"''); - update contents set config = cast(@XConfig as varchar(max)) where contentid = ' + cast(@NewContentID as nvarchar(10)) + ';' - exec sp_executesql @cmd2 -end ---end section start - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -go --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: CopyItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: CopyItemAndChildren Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_removeUnUsedFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_removeUnUsedFormat]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2021 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_removeUnUsedFormat] -( - @Name nvarchar(100) -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - declare @tbl Table( - removeid int) - declare @baseid int - insert into @tbl select formatid from formats where name like @name - - -- get the format id of the base format - select @baseid = formatid from formats where name = 'base' - - -- assign deleted format with the base format - update folders set FormatID = @baseid where FormatID in (select removeid from @tbl) - update DocVersions set FormatID = @baseid where FormatID in (select removeid from @tbl) - update tblContents set FormatID = @baseid where FormatID in (select removeid from @tbl) - -- delete the contentAudits records that use the deleted format - delete ContentAudits where FormatID in (select removeid from @tbl) - -- delete the record out of formats - delete Formats where FormatID in (select removeid from @tbl) - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY - -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of remove format -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_removeUnUsedFormat] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_removeUnUsedFormat] Error on Creation' -go - - --- remove un-used formats -exec vesp_removeUnUsedFormat 'WPS%' -exec vesp_removeUnUsedFormat 'WPB%' -exec vesp_removeUnUsedFormat 'VCBEPP%' -exec vesp_removeUnUsedFormat 'BNPPdev%' -exec vesp_removeUnUsedFormat 'BNPPgop%' -exec vesp_removeUnUsedFormat 'BNPPckl%' - -PRINT 'Kewaunee, Point Beach, un-used Summer, Barakah Deviation, Barakah GOP (sample), Barakah Checklist formats removed' -GO - -/****** Object: StoredProcedure [CopyItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DeleteItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [DeleteItemAndChildren]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[DeleteItemAndChildren] -( - @ItemID int, - @UserID AS VARCHAR(100) -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - declare @DeleteID int - DECLARE @ContentID AS INT - DECLARE @NextItemID AS INT - DECLARE @PreviousItemID AS INT - DECLARE @ExternalChildCount AS INT - DECLARE @ExternalCount AS INT - DECLARE @ItemType AS INT - DECLARE @Path AS VARCHAR(MAX) - DECLARE @Children AS TABLE - ( - ItemID INT PRIMARY KEY, - ContentID INT - ) - DECLARE @ExternalTrans TABLE - ( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL - ) - SET NOCOUNT ON - SELECT @ContentID = ContentID, @PreviousItemID = PreviousID FROM Items WHERE ItemID = @ItemID - SELECT @NextItemID = ItemID FROM Items WHERE PreviousID = @ItemID - SET @Path = [dbo].[ve_GetShortPath](@ItemID) - - SELECT @ExternalCount = count(*) FROM vefn_FindExternalTransitions(@ItemID) where rangeid = toid or toid = @ItemID - IF @ExternalCount > 0 AND @NextItemID is null - BEGIN - RAISERROR ('###Cannot Delete Item###Step %d has External Transitions and has no next step - (%s)',16,1,@ItemID,@Path) - RETURN - END - - IF @ExternalCount > 0 AND @ItemType < 10000 - BEGIN - RAISERROR ('###Cannot Delete Item###Procedure %d has External Transitions to Procedure - (%s)',16,1,@ItemID,@Path) - RETURN - END - - SELECT @ExternalChildCount = count(*) FROM vefn_FindExternalChildTransitions(@ItemID) - SELECT @ItemType = Type FROM Contents Where ContentID = @ContentID - -- Check to see if External Transitions point to the current item - IF @ExternalChildCount > 0 - BEGIN - RAISERROR ('###Cannot Delete Item###Step %d has External Transitions to it''s children - (%s)',16,1,@ItemID,@Path) - RETURN - END - --deletelog - INSERT INTO DeleteLog (UserID) values (@UserID) - Select @DeleteID = SCOPE_IDENTITY() - --end deletelog - -- Get list of Children - INSERT INTO @Children SELECT * FROM vefn_ChildItems(@ItemID) - -- UPDATE PreviousID in Items WHERE ItemID = @NextItemID - UPDATE Items SET PreviousID = @PreviousItemID WHERE ItemID=@NextItemID - -- UPDATE DocVersion - UPDATE DocVersions SET ItemID=@NextItemID where ItemID = @ItemID - -- UPDATE Parts - IF @NextItemID is not NULL -- Remove Part Record - BEGIN - UPDATE PARTS SET ItemID = @NextItemID where ItemID=@ItemID - END - ELSE - BEGIN - DELETE FROM Parts WHERE ItemID=@ItemID - END - -- Get external transitions that point to the specified Item - -- These will need to be adjusted to point to the next Item. - INSERT INTO @ExternalTrans SELECT * FROM vefn_FindExternalTransitions(@ItemID); - DECLARE @typeID int -- AnnotationType - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add 'Verification Required' annotions for transtions that point to different step - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where ItemID in (SELECT FromItemID FROM @ExternalTrans) - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NextItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID != @ItemID or RangeID = ToID) - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@PreviousItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID = @ItemID and RangeID != ToID) - -- Update transitions that point to @ItemID to Point to @NextItemID - UPDATE TRANSITIONS - SET ToID = case when ToID = @ItemID then @NextItemID else ToID END, - RangeID = case when RangeID = @ItemID then @NextItemID else RangeID END - WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID != @ItemID or RangeID = ToID) - UPDATE TRANSITIONS - SET ToID = case when ToID = @ItemID then @NextItemID else ToID END, - RangeID = case when RangeID = @ItemID then @PreviousItemID else RangeID END - WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID = @ItemID and RangeID != ToID) - -- Delete Annotations for @ItemID and children - DELETE from Annotations where ItemID in(Select ItemID from @Children) - -- Delete Details associated with @ContentID and children - DELETE from Details where ContentID in(Select ContentID from @Children) - -- Delete Grids associated with @ContentID and children - DELETE from Grids where ContentID in(Select ContentID from @Children) - -- Delete Images associated with @ContentID and children - DELETE from Images where ContentID in(Select ContentID from @Children) - -- Delete Entries associated with @ContentID and children - DELETE from Entries where ContentID in(Select ContentID from @Children) - -- Delete ROUsages associated with @ContentID and children - DELETE from RoUsages where ContentID in(Select ContentID from @Children) - -- Delete ZTransitions records associated with @ContentID and children - DELETE FROM ZTransitions where TransitionID - in(SELECT TransitionID from Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID) - -- Delete Transitions associated with @ContentID and children - DELETE FROM Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID - -- Delete Parts associated with @ContentID and children - DELETE from Parts where ContentID in(Select ContentID from @Children) - -- Delete ZContents associated with @ContentID and children - DELETE from ZContents where ContentID in(Select ContentID from @Children) - -- Disconnect Items from Each Other - DELETE from Items where ItemID in(Select ItemID from @Children) and PreviousID Is Not Null - -- Disconnect Items to be deleted from each other - Update Items set PreviousID = null where ItemID in (Select ItemID from @Children) and PreviousID Is Not Null - -- Delete Item Records - DELETE from Items where ItemID in(Select ItemID from @Children) - -- Remove Previously deleted transitions - DELETE from tblTransitions where deletestatus = -1 and FromID in(SELECT ContentID FROM @Children) - -- Remove Previously deleted rousages - DELETE from tblrousages where deletestatus = -1 and contentID in(SELECT ContentID FROM @Children) - -- DELETE Contents - DELETE from Contents where ContentID in(Select ContentID from @Children) - --purge deletelog - DELETE from DeleteLog where DeleteID = @DeleteID - --end purge deletelog - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: DeleteItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: DeleteItemAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FixTransitionDataForCopy] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixTransitionDataForCopy]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FixTransitionDataForCopy]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FixTransitionDataForCopy] -(@data XML,@TransitionID int,@TranType int,@OldToID int,@OldRangeID int, @NewID int, @NewToID int, @NewRangeID int, @NewTranType int) -RETURNS XML -WITH EXECUTE AS OWNER -AS -BEGIN - - -- Build Search String and Replace String - DECLARE @offset int - DECLARE @lookFor nvarchar(MAX) - DECLARE @replaceWith nvarchar(MAX) - DECLARE @text nvarchar(MAX) - SET @text = Cast(@data as nvarchar(max)) - SET @lookFor = '#Link:Transition:' + ltrim(str(@TranType)) + ' ' + ltrim(str(@TransitionID)) - SET @offset = CHARINDEX(@lookFor,@text) - if(@offset = 0) - BEGIN - - SET @lookFor = '#Link:TransitionRange:' + ltrim(str(@TranType)) + ' ' + ltrim(str(@TransitionID)) - SET @offset = CHARINDEX(@lookFor,@text) - SET @replaceWith = '#Link:TransitionRange:' + ltrim(str(@NewTranType)) + ' ' + ltrim(str(@NewID)) - + ' ' + ltrim(str(@NewToID)) + ' ' + ltrim(str(@NewRangeID)) - SET @lookFor = @lookFor + ' ' + ltrim(str(@OldToID)) + ' ' + ltrim(str(@OldRangeID)) - END - ELSE - BEGIN - SET @replaceWith = '#Link:Transition:' + ltrim(str(@NewTranType)) + ' ' + ltrim(str(@NewID)) - + ' ' + ltrim(str(@NewToID)) - SET @lookFor = @lookFor + ' ' + ltrim(str(@OldToID)) - END - return Cast(replace(@text,@lookFor,@replaceWith) as XML) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FixTransitionDataForCopy Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_FixTransitionDataForCopy Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FixROData] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixROData]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FixROData]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create FUNCTION [dbo].[vefn_FixROData] -(@data XML,@ROUsageID int,@NewROUsageID int) -RETURNS XML -WITH EXECUTE AS OWNER -AS -BEGIN - -- Build Search String and Replace String - DECLARE @lookFor varchar(MAX) - DECLARE @replaceWith varchar(MAX) - SET @lookFor = '#Link:ReferencedObject:' + ltrim(str(@ROUsageID)) + ' ' - SET @replaceWith = '#Link:ReferencedObject:' + ltrim(str(@NewROUsageID)) + ' ' - return CAST(replace(CAST(@data AS NVarChar(max)),@lookFor,@replaceWith) AS XML) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FixROData Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_FixROData Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_GetVersionProcedureItems] Script Date: 1/5/2015 3:58:49 PM ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionProcedureItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetVersionProcedureItems]; -GO -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO - -/* -Select * from vefn_GetVersionProcedureItems('') where procid = 63589 -Select * from vefn_GetVersionProcedureItems('1') where procid = 63589 -Select * from vefn_GetVersionProcedureItems('4') where procid = 63589 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetVersionProcedureItems](@DocVersionList varchar(MAX)) -RETURNS @VersionItems TABLE -( - VersionID int, - ProcID int, - ItemID int primary key, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - BEGIN - with Itemz([VersionID], ProcID, [ItemID], [ContentID]) as - (Select DV.VersionID, DV.ItemID ProcID, [I].[ItemID], [I].[ContentID] - FROM [Items] I - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] - Union All - -- Children - select Z.VersionID, Z.ProcID, I.[ItemID], I.[ContentID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - Union All - -- Siblings - select Z.VersionID, case when z.ProcID = z.ItemID then I.ItemID else Z.ProcID end ProcID, I.[ItemID], I.[ContentID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - ) - insert into @VersionItems - select VersionID, ProcID, [ItemID], [ContentID] - from ItemZ I - --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) - OPTION (MAXRECURSION 10000) - END -RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction vefn_GetVersionProcedureItems Succeeded' -ELSE PRINT 'TableFunction vefn_GetVersionProcedureItems Error on Creation' - -/****** Object: StoredProcedure [getTransitionSearchResults] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchTransitions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [dbo].[vesp_SearchTransitions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/****** Object: StoredProcedure [dbo].[vesp_SearchTransitions] Script Date: 1/7/2015 6:15:17 PM ******/ -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO -/* -exec vesp_searchtransitions '1,2,4,6,7,11,12',6,'' -*/ - -CREATE PROCEDURE [dbo].[vesp_SearchTransitions] -( - @DocVersionList varchar(max), - @TranType int, - @TranCategory varchar(20), - -- added stepTypeList to fix bug B2015-055 - allows transition search in specified step elements - @StepTypeList varchar(MAX) -) -WITH EXECUTE AS OWNER -AS -BEGIN - Declare @Delim char(1) - Set @Delim=char(7) - Declare @DelimNumber char(1) - Set @DelimNumber=char(17) - Declare @DelimStep char(1) - Set @DelimStep='.' - declare @itmp table - ( - vid int, - pid int, - iid int primary key, - cid int - ) - declare @ctmp table - ( - vid int, - pid int, - iid int, - cid int primary key - ) - declare @ttmp table - ( - itemid int, - dvpath varchar(max), - UnitPrefix varchar(MAX) - ) - insert into @itmp select * from vefn_getversionprocedureitems(@DocVersionList) - insert into @ctmp select * from @itmp - if @TranType = -1 and @TranCategory = '' begin - insert into @ttmp - select ii.ItemID,dv.DVPath,dv.UnitPrefix - from vefn_DocVersionSplit(@DocVersionList) dv - join @ctmp ct on dv.VersionID = ct.vid - join Items ii on ct.cid = ii.ContentID - join Transitions tt on ii.ContentID = tt.FromID - end else if @TranType > -1 and @TranCategory = '' begin - insert into @ttmp - select ii.ItemID,dv.DVPath,dv.UnitPrefix - from vefn_DocVersionSplit(@DocVersionList) dv - join @ctmp ct on dv.VersionID = ct.vid - join Items ii on ct.cid = ii.ContentID - join Transitions tt on ii.ContentID = tt.FromID - where tt.TranType = @TranType - end else if @TranType = -1 and @TranCategory != '' begin - insert into @ttmp - select ii.ItemID,dv.DVPath,dv.UnitPrefix - from vefn_DocVersionSplit(@DocVersionList) dv - join @ctmp ct on dv.VersionID = ct.vid - join Items ii on ct.cid = ii.ContentID - join Transitions tt on ii.ContentID = tt.FromID - join @itmp it on tt.ToID = it.iid - where case when it.vid = ct.vid then case when it.pid = ct.pid then 'Internal' else 'External' end else 'Outside' end = @TranCategory - end else begin - insert into @ttmp - select ii.ItemID,dv.DVPath,dv.UnitPrefix - from vefn_DocVersionSplit(@DocVersionList) dv - join @ctmp ct on dv.VersionID = ct.vid - join Items ii on ct.cid = ii.ContentID - join Transitions tt on ii.ContentID = tt.FromID - join @itmp it on tt.ToID = it.iid - where tt.TranType = @TranType and case when it.vid = ct.vid then case when it.pid = ct.pid then 'Internal' else 'External' end else 'Outside' end = @TranCategory - end - BEGIN - with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], - [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, UnitPrefix) as ( - Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], - Cast('' as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, - 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] - Union All --- Children - select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - when 8 then @DelimStep + 'SupInfo' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - when 8 then @DelimStep +'SupInfo' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', UnitPrefix - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID - Union All --- Siblings - select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - ,PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), UnitPrefix - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - ) - SELECT - tt.dvpath,Z.Path, - I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - FROM Itemz Z - join [Items] I on Z.ItemID = I.ItemID - join @ttmp tt on I.ItemID = tt.itemid - join Contents C on C.ContentID = I.ContentID - left join Parts P on i.ItemID = P.ItemID - -- Where clase added for bug fix B2015-055 to allow transition search within selected step elements - Where - ((isnull(@StepTypeList,'') = '' /*and dbo.vefn_AllSections(C.Type)>=10000*/) - or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - OPTION (MAXRECURSION 10000) - RETURN - END -END -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchTransitions Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchTransitions Error on Creation' -GO - -/****** Object: TableFunction [vefn_GetVersionFormatSections] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionFormatSections]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetVersionFormatSections]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetVersionFormatSections](@DocVersionList varchar(MAX)) -RETURNS @VersionItems TABLE -( - VersionID int, - ItemID int, - ContentID int primary key, - FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - BEGIN - with Itemz([VersionID], [ItemID], [ContentID], [FormatID], [ParentFormatID]) as - (Select DV.VersionID, [I].[ItemID], [I].[ContentID], - isnull(C.[FormatID],isnull(DV2.[FormatID],isnull(F.[FormatID],P.[FormatID]))), - isnull(DV2.[FormatID],isnull(F.[FormatID],P.[FormatID])) - FROM [Items] I - JOIN vefn_DocVersionSplit(@DocVersionList) DV ON I.[ItemID] = DV.[ItemID] - join docversions DV2 on DV.[VersionID] = DV2.[VersionID] - join folders F on DV2.[FolderID] = F.[FolderID] - join folders P on P.[FolderID] = F.[ParentID] - join Contents C on I.ContentID = C.ContentID - - Union All - -- Children - select Z.VersionID, I.[ItemID], I.[ContentID], isnull(C.[FormatID],Z.[FormatID]), Z.[FormatID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on I.ContentID = C.ContentID - where c.Type < 20000 - Union All - -- Siblings - select Z.VersionID, I.[ItemID], I.[ContentID], isnull(C.[FormatID],Z.[ParentFormatID]), Z.[ParentFormatID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on I.ContentID = C.ContentID - ) - insert into @VersionItems - select VersionID, [ItemID], [ContentID], [FormatID] - from ItemZ I - --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) - OPTION (MAXRECURSION 10000) - END -RETURN -END -GO --- Display the status of func creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetVersionFormatSections Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetVersionFormatSections Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetFormatVersions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetFormatVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [dbo].[vesp_GetFormatVersions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/****** Object: StoredProcedure [dbo].[vesp_GetFormatVersions] Script Date: 1/7/2015 6:15:17 PM ******/ -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO -CREATE PROCEDURE [dbo].[vesp_GetFormatVersions] -WITH EXECUTE AS OWNER -AS -BEGIN - select ff.Name + ' - ' + ff.Description Title,vfi.FormatID,vn.VersionID - from vefn_GetVersionNames() vn - join vefn_GetVersionFormatSections('') vfi on vn.VersionID = vfi.VersionID - join Formats ff on vfi.FormatID = ff.FormatID - group by ff.Name + ' - ' + ff.Description,vfi.formatid,vn.VersionID - return -END -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetFormatVersions Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetFormatVersions Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetTranTypesByFormatID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetTranTypesByFormatID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [dbo].[vesp_GetTranTypesByFormatID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/****** Object: StoredProcedure [dbo].[vesp_GetTranTypesByFormatID] Script Date: 1/7/2015 6:15:17 PM ******/ -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO -/* -vesp_GetTranTypesByFormatID 102 -*/ -CREATE PROCEDURE [dbo].[vesp_GetTranTypesByFormatID] -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @t1 table - ( - formatid int, - transindex int, - transmenu varchar(max) - ) - declare @t2 table - ( - transindex int, - formatid int - ) - insert into @t1 - select ff.formatid,r1.value('@Index','int') transindex, r1.value('@TransMenu','varchar(max)') transmenu - from Formats ff - cross apply ff.Data.nodes('//TransTypes') t1(r1) - where ff.FormatID = @FormatID - union - select ff.formatid,r1.value('@Index','int') transindex, r1.value('@TransMenu','varchar(max)') transmenu - from Formats ff - cross apply ff.Data.nodes('//TransTypes') t1(r1) - where ff.FormatID = 1 - insert into @t2 - select transindex,max(formatid) formatid from @t1 group by transindex - select t1.transindex,t1.transmenu - from @t1 t1 - join @t2 t2 on t1.formatid = t2.formatid and t1.transindex = t2.transindex - order by t1.transindex - RETURN -END -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetTranTypesByFormatID Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetTranTypesByFormatID Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetTransitionReportData] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetTransitionReportData]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [dbo].[vesp_GetTransitionReportData]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/****** Object: StoredProcedure [dbo].[vesp_GetTransitionReportData] Script Date: 1/7/2015 6:15:17 PM ******/ -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO -/* -vesp_GetTransitionReportData 5, 6078 -*/ -CREATE PROCEDURE [dbo].[vesp_GetTransitionReportData] -( - @VersionID int, - @ProcedureID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @itmp table - ( - vid int, - pid int, - iid int primary key, - cid int - ) - declare @ctmp table - ( - vid int, - pid int, - iid int, - cid int primary key - ) - declare @ttmp table - ( - tid int primary key - ) - insert into @itmp select * from vefn_getversionprocedureitems('') - insert into @ctmp select * from @itmp - insert into @ttmp - select tt.TransitionID from Transitions tt join @ctmp ct on tt.FromID = ct.cid join @itmp it on tt.ToID = it.iid - where ct.pid = @ProcedureID or it.pid = @ProcedureID - --internal - select 1 level,tt.*, - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] - from Transitions tt - join @ttmp tp on tt.TransitionID = tp.tid - join @ctmp ct on tt.FromID = ct.cid - join @itmp it on tt.ToID = it.iid - where ct.vid = it.vid and ct.pid = @ProcedureID and it.pid = @ProcedureID - --external from - union - select 2 level,tt.*, - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] - from Transitions tt - join @ttmp tp on tt.TransitionID = tp.tid - join @ctmp ct on tt.FromID = ct.cid - join @itmp it on tt.ToID = it.iid - where ct.vid = it.vid and ct.pid = @ProcedureID and it.pid != @ProcedureID - --external to - union - select 3 level,tt.*, - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] - from Transitions tt - join @ttmp tp on tt.TransitionID = tp.tid - join @ctmp ct on tt.FromID = ct.cid - join @itmp it on tt.ToID = it.iid - where ct.vid = it.vid and ct.pid != @ProcedureID and it.pid = @ProcedureID - --outside from - union - select 4 level,tt.*, - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] - from Transitions tt - join @ttmp tp on tt.TransitionID = tp.tid - join @ctmp ct on tt.FromID = ct.cid - join @itmp it on tt.ToID = it.iid - where ct.vid != it.vid and ct.pid = @ProcedureID-- and ii.ItemID not in (select iid from @itmp) - --outside to - union - select 5 level,tt.*, - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] - from Transitions tt - join @ttmp tp on tt.TransitionID = tp.tid - join @itmp it on tt.ToID = it.iid - join @ctmp ct on tt.FromID = ct.cid - where ct.vid != it.vid and it.pid = @ProcedureID --and ii.ContentID not in (select cid from @ctmp) - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetTransitionReportData Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetTransitionReportData Error on Creation' -GO - - -/****** Object: StoredProcedure [PasteItemChild] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemChild]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [PasteItemChild]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2015 - Volian Enterprises, Inc. All rights reserved. - -Copies & Pastes into a level above the copied item, for example copied item is step pasted into a section. - -Example test: - -declare @NewItemID int -declare @dts datetime -set @newitemid = 0 -set @dts = getdate() -exec PasteItemChild 1493,484,20041,2,@dts,'KATHY',@NewItemID output - -*****************************************************************************/ - -CREATE PROCEDURE [dbo].[PasteItemChild] -( - @ItemID int=null, @StartItemID int=null, -- ItemID is destination, StartItemID is top of copy - @Type int=null, @FromType int=null, @DTS datetime, @UserID nvarchar(100), -- Type is step/section type for content record, fromtype is for parts - @NewItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0) - BEGIN - RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1) - RETURN - END - -- First make a copy of the input StartItemID - -- DestFormatID is the formatid for the destination parent's format - DECLARE @DestFormatID int - SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - -- print 'testing PasteItemChild 1 ' + cast(dbo.ve_GetTransitionErrorCount() as varchar(20)) - DECLARE @ChildID int, @ContentID int, @ParentContentID int, @LastChanged timestamp - , @newLastChanged timestamp, @Error int, @Rowcount int, @ChildDeleted int - SELECT @ChildID = pp.[ItemID],@ParentContentID = ii.ContentID, @LastChanged = pp.LastChanged - FROM [ITEMS] ii - LEFT JOIN [PARTS] pp on pp.ContentID=ii.ContentID and pp.FromType=@FromType - WHERE ii.[ItemID]=@ItemID - IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[tblParts]') AND OBJECTPROPERTY(id,N'IsTable') = 1) - BEGIN - SELECT @ChildDeleted = pp.[ItemID],@ParentContentID = ii.ContentID, @LastChanged = pp.LastChanged - FROM [ITEMS] ii - LEFT JOIN [tblPARTS] pp on pp.ContentID=ii.ContentID and pp.FromType=@FromType - WHERE ii.[ItemID]=@ItemID and pp.DeleteStatus > 0 - END - -- No existing child - Add Parts record. Note that don't need to update any transition records if no existing children - IF @ChildID is null - BEGIN - IF @ChildDeleted is not null - DELETE FROM [tblParts] WHERE ItemID = @ChildDeleted - EXECUTE AddPart @ParentContentID, @FromType, @newItemID, @DTS, @UserID, @newLastChanged output - END - ELSE -- Children exist: Update existing Parts record and adjust transition records that may have pointed to 1st child. - BEGIN - EXECUTE UpdatePart @ParentContentID, @FromType, @newItemID, @DTS, @UserID, @LastChanged, @newLastChanged output - UPDATE [Items] SET [PreviousID]=@newItemID WHERE [ItemID]=@ChildID - - -- Update content records for the transitions, this only fixes the link portion. Code fixes the text. - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ChildID,@newItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TT.ToID = @ChildID OR TT.RangeID = @ChildID - -- Update transitions that pointed to @ItemID to point to @newItemID - Update TRANSITIONS - Set ToID = CASE ToID WHEN @ChildID THEN @newItemID ELSE ToID END, - RangeID = CASE RangeID WHEN @ChildID THEN @newItemID ELSE RangeID END - WHERE ToID = @ChildID OR RangeID = @ChildID - END - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - -- I don't expect to see any transitions that point to @ChildID. They should have changed in - -- the update above to point to @newItemID. This is here for consistency with the other insert - -- stored procedures - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@ChildID,@newItemID) OR RangeID IN(@ChildID,@newItemID)) - -- Transition Text gets updated in ItemInsertExt.cs - IF( @@TRANCOUNT > 0 ) COMMIT - PRINT 'Child Added ' + ltrim(str(@newItemID)) - EXECUTE GetItem @newItemID - delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) - delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemChild Succeeded' -ELSE PRINT 'Procedure Creation: PasteItemChild Error on Creation' -GO - - -/****** Object: StoredProcedure [PasteDocVersionChild] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteDocVersionChild]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [PasteDocVersionChild]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2014 - Volian Enterprises, Inc. All rights reserved. - -Copies & Pastes into a docversion that does NOT have any existing procedures. - -Example test: - -declare @NewItemID int -declare @dts datetime -set @newitemid = 0 -set @dts = getdate() -exec PasteDocVersionChild 5,30,@dts,'KATHY',@NewItemID output - -*****************************************************************************/ -CREATE PROCEDURE [dbo].[PasteDocVersionChild] -( - @VersionID int=null, @StartItemID int=null, -- VersionID is destination (docversion), StartItemID is top of copy (i.e. procedure) - @DTS datetime, @UserID nvarchar(100), - @ThisVersionID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - if not exists (select * from DocVersions where versionid = @VersionID) - BEGIN - RAISERROR ('###Cannot Paste Procedure###This document version has been deleted in another session',16,1) - RETURN - END - -- First make a copy of the input StartItemID (Procedure) - -- DestFormatID is the formatid for the destination parent's format - DECLARE @NewItemID int - DECLARE @DestFormatID int - SET @ThisVersionID = @VersionID - SET @DestFormatID = .dbo.vefn_GetDocVersionInheritedFormat(@VersionID) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - UPDATE [DOCVERSIONS] SET [ItemID] = @NewItemID where [VersionID]=@VersionID - IF( @@TRANCOUNT > 0 ) COMMIT - PRINT 'Child Added ' + ltrim(str(@newItemID)) - EXECUTE GetDocVersion @ThisVersionID - delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) - delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteDocVersionChild Succeeded' -ELSE PRINT 'Procedure Creation: PasteDocVersionChild Error on Creation' -GO - - -/****** Object: StoredProcedure [vefn_GetDocVersionInheritedFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetDocVersionInheritedFormat]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetDocVersionInheritedFormat]; -GO - -CREATE FUNCTION [dbo].[vefn_GetDocVersionInheritedFormat] (@VersionID int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @FormatID as int - -- First get format for the input doc version - begin - with Itemz([Level], [VersionID], [FolderID], [ParentID], [FormatID]) as ( - -- DocVersion From Item - select 0 [Level], DV.VersionID, DV.FolderID, null, DV.FormatID - from DocVersions DV - where [VersionID] = @VersionID - Union All - -- Folders - select [Level] + 1, null, FF.ParentID, FF.FolderID, FF.FormatID - from Itemz Z - join Folders FF on FF.FolderID = Z.ParentID and FF.ParentID <> FF.FolderID - where Z.FormatID is null - ) - Select @FormatID = FormatID from Itemz ZZ Where FormatID is not null - OPTION (MAXRECURSION 10000) - END - RETURN @FormatID -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetDocVersionInheritedFormat Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_GetDocVersionInheritedFormat Error on Creation' -GO - -/*********the following funcion is for debugging copy/paste where transition text in content records does not get updated */ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetTransitionErrorCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetTransitionErrorCount]; -/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 03/20/2012 17:50:44 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select dbo.ve_GetTransitionErrorCount () -print 'testing ' + cast(dbo.ve_GetTransitionErrorCount() as varchar(20)) -*/ - -CREATE FUNCTION [dbo].[ve_GetTransitionErrorCount] () RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @Count int -select @Count = count(*) from ( -select dbo.ve_GetShortPathFromContentId(contentid) location, * from ( -select contentid, text, tt.*, -case when text like '%'+ case when tt.toid = tt.rangeid and tt.IsRange = 0 -then -'#Link:Transition:' + cast(TranType as nvarchar(2)) + -' ' + cast(TransitionID as nvarchar(10)) + ' ' + cast(ToID as nvarchar(10)) + '%' -else -'#Link:TransitionRange:' + cast(TranType as nvarchar(2)) + -' ' + cast(TransitionID as nvarchar(10)) + ' ' + cast(ToID as nvarchar(10)) + ' ' + cast(RangeID as nvarchar(10))+ '%' -end then 'matches' else 'different' end ContentMatchesTrans, -case when text like '%'+ -'#Link:TransitionRange:' + cast(TranType as nvarchar(2)) + -' ' + cast(TransitionID as nvarchar(10)) + ' ' + cast(ToID as nvarchar(10)) + ' ' + cast(RangeID as nvarchar(10))+ '%' -then 'matches' else 'different' end ContentMatchesRangeTrans -from Contents cc -join transitions tt on tt.fromid = cc.contentid) mm -where ContentMatchesTrans = 'different') mm -return @Count -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetTransitionErrorCount Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetTransitionErrorCount Error on Creation' -GO - ---added by JCB for storing procedure xml for approved version ---ALTER TABLE Versions add ApprovedXML if it does not exist -IF COL_LENGTH('Versions','ApprovedXML') IS NULL - ALTER TABLE Versions ADD [ApprovedXML] [NVARCHAR](MAX) NULL; -GO - -/****** Object: StoredProcedure [addVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addVersion] - -( - @RevisionID int, - @StageID int, - @PDF varbinary(MAX)=null, - @SummaryPDF varbinary(MAX)=null, - @ApprovedXML nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(200), - @newVersionID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Versions] - ( - [RevisionID], - [StageID], - [PDF], - [SummaryPDF], - [ApprovedXML], - [DTS], - [UserID] - ) - VALUES - ( - @RevisionID, - @StageID, - @PDF, - @SummaryPDF, - @ApprovedXML, - @DTS, - @UserID - ) - SELECT @newVersionID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Versions] WHERE [VersionID]=@newVersionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addVersion Succeeded' -ELSE PRINT 'Procedure Creation: addVersion Error on Creation' -GO - -/****** Object: StoredProcedure [getVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getVersion] - -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [VersionID], - [RevisionID], - [StageID], - [PDF], - [SummaryPDF], - [ApprovedXML], - [DTS], - [UserID], - [LastChanged] - FROM [Versions] - WHERE [VersionID]=@VersionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getVersion Succeeded' -ELSE PRINT 'Procedure Creation: getVersion Error on Creation' -GO - -/****** Object: StoredProcedure [getVersions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getVersions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getVersions] - -WITH EXECUTE AS OWNER -AS - SELECT - [VersionID], - [RevisionID], - [StageID], - [PDF], - [SummaryPDF], - [ApprovedXML], - [DTS], - [UserID], - [LastChanged] - FROM [Versions] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getVersions Succeeded' -ELSE PRINT 'Procedure Creation: getVersions Error on Creation' -GO - -/****** Object: StoredProcedure [getVersionsByRevisionID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersionsByRevisionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getVersionsByRevisionID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getVersionsByRevisionID] - -( - @RevisionID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Versions].[VersionID], - [Versions].[RevisionID], - [Versions].[StageID], - [Versions].[PDF], - [Versions].[SummaryPDF], - [Versions].[ApprovedXML], - [Versions].[DTS], - [Versions].[UserID], - [Versions].[LastChanged], - [Stages].[Name] [Stage_Name], - [Stages].[Description] [Stage_Description], - [Stages].[IsApproved] [Stage_IsApproved], - [Stages].[DTS] [Stage_DTS], - [Stages].[UserID] [Stage_UserID] - FROM [Versions] - JOIN [Stages] ON - [Stages].[StageID]=[Versions].[StageID] - WHERE - [Versions].[RevisionID]=@RevisionID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getVersionsByRevisionID Succeeded' -ELSE PRINT 'Procedure Creation: getVersionsByRevisionID Error on Creation' -GO - -/****** Object: StoredProcedure [getVersionsByStageID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersionsByStageID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getVersionsByStageID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getVersionsByStageID] - -( - @StageID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Versions].[VersionID], - [Versions].[RevisionID], - [Versions].[StageID], - [Versions].[PDF], - [Versions].[SummaryPDF], - [Versions].[ApprovedXML], - [Versions].[DTS], - [Versions].[UserID], - [Versions].[LastChanged], - [Revisions].[ItemID] [Revision_ItemID], - [Revisions].[TypeID] [Revision_TypeID], - [Revisions].[RevisionNumber] [Revision_RevisionNumber], - [Revisions].[RevisionDate] [Revision_RevisionDate], - [Revisions].[Notes] [Revision_Notes], - [Revisions].[Config] [Revision_Config], - [Revisions].[DTS] [Revision_DTS], - [Revisions].[UserID] [Revision_UserID] - FROM [Versions] - JOIN [Revisions] ON - [Revisions].[RevisionID]=[Versions].[RevisionID] - WHERE - [Versions].[StageID]=@StageID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getVersionsByStageID Succeeded' -ELSE PRINT 'Procedure Creation: getVersionsByStageID Error on Creation' -GO - -/****** Object: StoredProcedure [updateVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateVersion] - -( - @VersionID int, - @RevisionID int, - @StageID int, - @PDF varbinary(MAX)=null, - @SummaryPDF varbinary(MAX)=null, - @ApprovedXML nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(200), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Versions] - SET - [RevisionID]=@RevisionID, - [StageID]=@StageID, - [PDF]=@PDF, - [SummaryPDF]=@SummaryPDF, - [ApprovedXML]=@ApprovedXML, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [VersionID]=@VersionID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Versions] WHERE [VersionID]=@VersionID) - RAISERROR('Version record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Version has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Versions] WHERE [VersionID]=@VersionID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateVersion Succeeded' -ELSE PRINT 'Procedure Creation: updateVersion Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetDisconnectedItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetDisconnectedItems]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_GetDisconnectedItems] ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - --- select * from vefn_GetDisconnectedItems() - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION [dbo].[vefn_GetDisconnectedItems]() -RETURNS @DiscItems TABLE -( - ItemID int primary Key, - ContentID int, - UNIQUE (ContentID) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @UsedItems Table - ( itemid int primary key, contentid int) - insert into @UsedItems - Select ItemID, ContentID from vefn_GetVersiontblItems('') - insert into @DiscItems - select itemid,ii.contentid from ( - Select ItemID,ii.ContentID from tblItems II - where ItemID not in(select ItemID from @UsedItems)) ii - Join Contents CC ON CC.ContentID = II.ContentID - And CC.Type is not null - UNION - Select ItemId, ContentID from vefn_GetZeroFromType() - RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetDisconnectedItems] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetDisconnectedItems] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_TransitionsToDisconnected]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_TransitionsToDisconnected]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_TransitionsToDisconnected] ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - --- select * from vefn_TransitionsToDisconnected('1') - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION dbo.vefn_TransitionsToDisconnected(@DocVersionList nvarchar(MAX)) -RETURNS @Transitions TABLE -( - [TransitionID] int primary key - ,[FromID] int - ,[ToID] int - ,[RangeID] int - ,[IsRange] int - ,[TranType] int - ,[Config] nvarchar(max) - ,[DTS] datetime - ,[UserID] nvarchar(100) - ,UNIQUE(FromID,TransitionID) - ,UNIQUE(ToID,TransitionID) -) -WITH EXECUTE AS OWNER -AS -BEGIN - insert into @Transitions - select [TransitionID],[FromID],[ToID],[RangeID],[IsRange],[TranType],[Config],[DTS],[UserID] - from Transitions tt - join vefn_GetVersionItems(@DocVersionList) vi on tt.FromID = vi.ContentID - join vefn_GetDisconnectedItems() di on tt.ToID = di.ItemID - RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_TransitionsToDisconnected] Succeeded' -ELSE PRINT 'TableFunction [vefn_TransitionsToDisconnected] Error on Creation' -GO - -/****** Object: StoredProcedure [getTransitionsToDisconnected] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransitionsToDisconnected]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getTransitionsToDisconnected]; -GO - -/* -exec getTransitionsToDisconnected -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getTransitionsToDisconnected] -( - @DocVersionList nvarchar(MAX) -) -WITH EXECUTE AS OWNER -AS - SELECT - TT.[TransitionID], - TT.[FromID], - TT.[ToID], - TT.[RangeID], - TT.[IsRange], - TT.[TranType], - TT.[Config], - TT.[DTS], - TT.[UserID], - TT.[LastChanged], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=TT.[TransitionID]) [ZTransitionCount] - from transitions tt - join vefn_TransitionsToDisconnected(@DocVersionList) td on tt.TransitionID = td.TransitionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getTransitionsToDisconnected Succeeded' -ELSE PRINT 'Procedure Creation: getTransitionsToDisconnected Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetNonEditableItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetNonEditableItems]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_GetNonEditableItems] ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - --- select * from vefn_GetNonEditableItems() - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION [DBO].[vefn_GetNonEditableItems]() -RETURNS @NonEditItems TABLE -( - ItemID int primary Key, - ContentID int, - UNIQUE (ContentID) -) -WITH EXECUTE AS OWNER -AS -BEGIN - insert into @NonEditItems - select ii.ItemID,ah.ContentID - from - ( - select cast(Config as xml) xconfig,ContentID from Contents where ContentID in - ( - select p1.ContentID from Parts p1 - join Parts p2 on p1.ContentID = p2.ContentID - where p1.FromType = 2 and p2.FromType = 6 - ) - and Config like '%edit%' - ) ah - cross apply xconfig.nodes('//SubSection') tSubsection(xSubsection) - join Items ii on ah.ContentID = ii.ContentID - where isnull(xSubsection.value('@Edit','varchar(1)'),'N') = 'N' - RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetNonEditableItems] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetNonEditableItems] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_TransitionsToNonEditable]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_TransitionsToNonEditable]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_TransitionsToNonEditable] ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - --- select * from vefn_TransitionsToNonEditable('1') - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION dbo.vefn_TransitionsToNonEditable(@DocVersionList nvarchar(MAX)) -RETURNS @Transitions TABLE -( - [TransitionID] int primary key - ,[FromID] int - ,[ToID] int - ,[RangeID] int - ,[IsRange] int - ,[TranType] int - ,[Config] nvarchar(max) - ,[DTS] datetime - ,[UserID] nvarchar(100) - ,UNIQUE(FromID,TransitionID) - ,UNIQUE(ToID,TransitionID) -) -WITH EXECUTE AS OWNER -AS -BEGIN - insert into @Transitions - select [TransitionID],[FromID],[ToID],[RangeID],[IsRange],[TranType],[Config],[DTS],[UserID] - from Transitions tt - join vefn_GetVersionItems(@DocVersionList) vi on tt.FromID = vi.ContentID - join vefn_GetNonEditableItems() di on tt.ToID in (select ItemID from vefn_StepChildItems(di.ItemID)) - RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_TransitionsToNonEditable] Succeeded' -ELSE PRINT 'TableFunction [vefn_TransitionsToNonEditable] Error on Creation' -GO - -/****** Object: StoredProcedure [getTransitionsToNonEditable] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransitionsToNonEditable]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getTransitionsToNonEditable]; -GO - -/* -exec getTransitionsToNonEditable '8' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getTransitionsToNonEditable] -( - @DocVersionList nvarchar(MAX) -) -WITH EXECUTE AS OWNER -AS - SELECT - TT.[TransitionID], - TT.[FromID], - TT.[ToID], - TT.[RangeID], - TT.[IsRange], - TT.[TranType], - TT.[Config], - TT.[DTS], - TT.[UserID], - TT.[LastChanged], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=TT.[TransitionID]) [ZTransitionCount] - from transitions tt - join vefn_TransitionsToNonEditable(@DocVersionList) td on tt.TransitionID = td.TransitionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getTransitionsToNonEditable Succeeded' -ELSE PRINT 'Procedure Creation: getTransitionsToNonEditable Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_StepChildItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_StepChildItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_StepChildItems]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_StepChildItems](@ItemID int) -RETURNS @Children TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ItemID], [ContentID]) as ( - Select 0 [Level], [ItemID], [ContentID] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1, I.[ItemID], I.[ContentID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID and (Z.Level > 0 or p.FromType = 6) - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] , I.[ItemID], I.[ContentID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children select ItemID, ContentID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_StepChildItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_StepChildItems Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustStage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [getJustStage]; -GO -/****** Object: StoredProcedure [dbo].[getJustStage] ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create PROCEDURE [dbo].[getJustStage] -( - @StageID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [StageID], - [Name], - [Description], - [IsApproved], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[StageID]=[Stages].[StageID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[StageID]=[Stages].[StageID]) [VersionCount] - FROM [Stages] - WHERE [StageID]=@StageID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getJustStage Succeeded' -ELSE PRINT 'Procedure Creation: getJustStage Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_DeletePDFs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_DeletePDFs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_DeletePDFs]; -GO - -/* -exec vesp_DeletePDFs -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_DeletePDFs] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE FROM [Pdfs] - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_DeletePDFs Succeeded' -ELSE PRINT 'Procedure Creation: vesp_DeletePDFs Error on Creation' -GO - -/****** Object: StoredProcedure [getROImageByRODbID_FileName] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getROImagesByRODbID_FileName]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getROImagesByRODbID_FileName]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getROImagesByRODbID_FileName] -( - @RODbID int, - @FileName nvarchar(255) -) -WITH EXECUTE AS OWNER -AS - SELECT - [ImageID], - [RODbID], - [FileName], - [Content], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ImageID]=[ROImages].[ImageID]) [FigureCount] - FROM [ROImages] - WHERE [RODbID]=@RODbID AND [FileName]=@FileName Order By [DTS] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getROImagesByRODbID_FileName Succeeded' -ELSE PRINT 'Procedure Creation: getROImagesByRODbID_FileName Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetDisconnectedItemsCount] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetDisconnectedItemsCount]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetDisconnectedItemsCount]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetDisconnectedItemsCount] -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) HowMany FROM vefn_GetDisconnectedItems() - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetDisconnectedItemsCount Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetDisconnectedItemsCount Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetNonEditableItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetNonEditableItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE vesp_GetNonEditableItems; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetNonEditableItems] -WITH EXECUTE AS OWNER -AS - SELECT - I.[ItemID], - I.[PreviousID], - I.[ContentID], - I.[DTS], - I.[UserID], - I.[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount] - FROM [Items] I - JOIN vefn_GetNonEditableItems() NE on I.ItemID = NE.ItemID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetNonEditableItems Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetNonEditableItems Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetDatabaseSessions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetDatabaseSessions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE vesp_GetDatabaseSessions; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetDatabaseSessions] -WITH EXECUTE AS OWNER -AS - select t1.SessionID,t1.UserID,t1.MachineName,t1.OwnerTypeName,t1.HowMany,t1.Status, - t2.FolderName,t2.GrandParentName,t2.ParentName,t2.ItemPath,t2.DTSStart from - ( - select ss.SessionID,UserID,MachineName,ISNULL(OwnerType,0) OwnerType,ISNULL(OwnerTypeName,'Nothing') OwnerTypeName,ISNULL(HowMany,0) HowMany, - case when DATEDIFF(SECOND,DTSActivity,GETDATE()) > 60 then 'IN-ACTIVE (' + CAST(DATEDIFF(SECOND,DTSActivity,GETDATE()) as varchar(10)) + ' Seconds)' else 'Active' end Status - from Sessions ss - left join - (select SessionID,OwnerType,case OwnerType when 0 then 'Procedure' when 1 then 'Document' when 2 then 'Working Draft' else 'Database' end OwnerTypeName,count(*) HowMany from Owners group by SessionID,OwnerType) oo on ss.SessionID = oo.SessionID - where ss.DTSEnd is null - ) t1 - left join - ( - select oo.SessionID,oo.OwnerID,oo.DTSStart,oo.OwnerType, - dbo.ve_GetShortPath(oo.OwnerItemID) ItemPath, - vn.FolderName,vn.GrandParentName,vn.ParentName - from Owners oo - join vefn_GetVersionItems('') vi on oo.OwnerItemID = vi.ItemID - join vefn_GetVersionNames() vn on vi.VersionID = vn.VersionID - where oo.OwnerType = 0 - union - select distinct oo.SessionID,oo.OwnerID,oo.DTSStart,oo.OwnerType, - case when isnull(LibTitle,'') = '' then dbo.ve_getshortpathfromcontentid(ee.contentid) else 'Library Document: ' + LibTitle end ItemPath, - vn.FolderName,vn.GrandParentName,vn.ParentName - from Owners oo - join Documents dd on oo.OwnerItemID = dd.DocID - join Entries ee on oo.OwnerItemID = ee.DocID - join vefn_GetVersionItems('') vi on ee.ContentID = vi.ContentID - join vefn_GetVersionNames() vn on vi.VersionID = vn.VersionID - where oo.OwnerType = 1 - union - select oo.SessionID,oo.OwnerID,oo.DTSStart,oo.OwnerType, - dv.Name ItemPath,vn.FolderName,vn.GrandParentName,vn.ParentName - from Owners oo - join DocVersions dv on oo.OwnerItemID = dv.VersionID - join vefn_GetVersionNames() vn on dv.VersionID = vn.VersionID - where oo.OwnerType = 2 - ) t2 on t1.SessionID = t2.SessionID and t1.OwnerType = t2.OwnerType - order by t1.SessionID,t1.OwnerType - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetDatabaseSessions Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetDatabaseSessions Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListContentsAfterLastChanged] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListContentsAfterLastChanged]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE vesp_ListContentsAfterLastChanged; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListContentsAfterLastChanged] -( - @LastChanged timestamp -) -WITH EXECUTE AS OWNER -AS -BEGIN - SELECT - cc.[ContentID], - cc.[Number], - cc.[Text], - cc.[Type], - cc.[FormatID], - cc.[Config], - cc.[DTS], - cc.[UserID], - cc.[LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=cc.[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=cc.[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=cc.[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=cc.[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=cc.[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=cc.[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=cc.[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=cc.[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=cc.[ContentID]) [ZContentCount] - FROM [Contents] cc - WHERE cc.LastChanged > @LastChanged - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListContentsAfterLastChanged Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListContentsAfterLastChanged Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListContentsAfterLastChanged2] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListContentsAfterLastChanged2]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE vesp_ListContentsAfterLastChanged2; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListContentsAfterLastChanged2] -( - @LastChanged bigint, - @UserID nvarchar(100) -) -WITH EXECUTE AS OWNER -AS -BEGIN - SELECT - cc.[ContentID], - CONVERT(bigint,cc.[LastChanged]) LastContentChange - FROM [Contents] cc - WHERE CONVERT(bigint,cc.LastChanged) > @LastChanged --- AND cc.UserID != @UserID - ORDER BY LastChanged - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListContentsAfterLastChanged2 Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListContentsAfterLastChanged2 Error on Creation' -GO - -/****** Object: StoredProcedure[getOwnerBySessionIDandFolderID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnerBySessionIDandFolderID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE getOwnerBySessionIDandFolderID; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2015 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwnerBySessionIDandFolderID] -( - @SessionID int, - @FolderID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @VersionID int - SELECT @VersionID = VersionID from DocVersions WHERE FolderID = @FolderID - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - [LastChanged] - FROM [Owners] oo - INNER JOIN - ( - -- 0 is procedures - SELECT 0 ObjectType,ItemID ObjectID FROM dbo.vefn_GetVersionItems(@VersionID) - UNION - -- 1 is documents - SELECT 1 ObjectType,ee.DocID ObjectID FROM dbo.vefn_GetVersionItems(@VersionID) vi - INNER JOIN Contents cc ON vi.ContentID = cc.ContentID - INNER JOIN Entries ee ON vi.ContentID = ee.ContentID - UNION - -- 2 is DocVersions - SELECT 2 ObjectType, @VersionID ObjectID - UNION - -- 3 is Folders - SELECT 3 ObjectType, @FolderID ObjectID - ) tt ON oo.OwnerType = tt.ObjectType and oo.OwnerItemID = tt.ObjectID - WHERE [SessionID] = @SessionID - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwnerBySessionIDandFolderID Succeeded' -ELSE PRINT 'Procedure Creation: getOwnerBySessionIDandFolderID Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListItemsAfterLastChanged] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsAfterLastChanged]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE vesp_ListItemsAfterLastChanged; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsAfterLastChanged] -( - @LastChanged bigint, - @UserID nvarchar(100) -) -WITH EXECUTE AS OWNER -AS -BEGIN - SELECT - isnull(dbo.ve_GetParentItem(ii.[ItemID]),0) ParentID,MAX(CONVERT(bigint,ii.[LastChanged])) LastItemChange - FROM [Items] ii - WHERE CONVERT(bigint,ii.LastChanged) > @LastChanged --- AND cc.UserID != @UserID - GROUP BY dbo.ve_GetParentItem(ii.[ItemID]) - ORDER BY MAX(CONVERT(bigint,ii.[LastChanged])) - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsAfterLastChanged Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsAfterLastChanged Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetShortPath] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetShortPath]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetShortPath]; -GO - -/* -select ItemID, CC.Type, dbo.ve_GetPath(ItemID) -from Items II join Contents CC on II.ContentID = CC.ContentID -where ItemID in(111,265,266,267) -*/ --- drop function ve_GetPath -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetShortPath] (@ItemID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN --- declare @STructID int ---set @StructID=11 -declare @Path varchar(max); -with Itemz(ItemCount,ItemID,PreviousID,FromType,CType,Number,Text,PPath, Path) as ( - Select 1,ItemID,PreviousID,0,C.Type/10000,C.Number,C.Text, - Cast(Case when C.Type < 20000 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) else '' end as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) else '1' end as nvarchar(max)) Path - from Items I - join Contents C on I.ContentID = C.ContentID - where ItemID=@ItemID - Union All --- siblings - Select ItemCount+1,I.PreviousID,II.PreviousID,0,C.Type/10000,Z.Number,Z.Text,PPath,cast(ItemCount + 1 as nvarchar(4)) + PPath - from Items I - join Contents C on I.ContentID = C.ContentID - Join Items II on II.ItemID = I.PreviousID - Join Itemz Z on I.ItemID=Z.ItemID - where I.PreviousID != 0 - Union All --- children - select 1,I.ItemID,I.PreviousID,P.FromType,C.Type/10000,C.Number,C.Text, - case C.Type/10000 - when 0 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) - when 1 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) +'`' + cast(ItemCount + 0 as varchar(4)) - else - case P.FromType - when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(4)) - when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(4)) - when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(4)) - when 4 then '`Note`' + cast(ItemCount + 0 as varchar(4)) - when 5 then '`RNO`' - when 7 then '`Table`' - when 8 then '`SupInfo`' - else '`' + cast(ItemCount + 0 as varchar(4)) - end end + PPath PPath, - --'1' + - case C.Type/10000 - when 0 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) - when 1 then '`' + [dbo].[ve_GetShortPart](C.Number,C.Text) +'`' + cast(ItemCount + 0 as varchar(4)) - else - case P.FromType - when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(4)) - when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(4)) - when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(4)) - when 4 then '`Note`' + cast(ItemCount + 0 as varchar(4)) - when 5 then '`RNO' - when 7 then '`Table' - when 8 then '`SupInfo' - else '`' + cast(ItemCount + 0 as varchar(4)) - end end + PPath Path - - from Parts P - join Items I on I.ContentID = P.ContentID - join Contents C on I.ContentID = C.ContentID - join Itemz Z on P.ItemID=Z.ItemID -) -select @Path = path From Itemz where ItemCount=1 and CType=0 -OPTION (MAXRECURSION 10000) -return REPLACE(REPLACE(@Path,'\u8209?','-'),'u9586?','\\') -END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetShortPath Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetShortPath Error on Creation' -GO -/****** Object: StoredProcedure [addROImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addROImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE addROImage; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addROImage] - -( - @RODbID int, - @FileName nvarchar(255), - @Content varbinary(MAX), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newImageID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - IF exists(select * from ROImages where @rodbid = rodbid and @FileName=FileName and @DTS = DTS) - BEGIN - select @newImageID = ImageID from ROImages where @rodbid = rodbid and @FileName=FileName and @DTS = DTS - END - ELSE - BEGIN - INSERT INTO [ROImages] - ( - [RODbID], - [FileName], - [Content], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @RODbID, - @FileName, - @Content, - @Config, - @DTS, - @UserID - ) - SELECT @newImageID= SCOPE_IDENTITY() - END - SELECT @newLastChanged=[LastChanged] - FROM [ROImages] WHERE [ImageID]=@newImageID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -IF (@@Error = 0) PRINT 'Procedure Creation: addROImage Succeeded' -ELSE PRINT 'Procedure Creation: addROImage Error on Creation' -GO -PRINT '20150808 Improved performance for delete procedure' - -/****** Object: UserDefinedFunction [dbo].[vefn_GetEnhancedFolders] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedFolders]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetEnhancedFolders]; -GO - -/* -select * from vefn_GetEnhancedFolders(11) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION dbo.[vefn_GetEnhancedFolders](@FolderID as int) -RETURNS @AllValues TABLE -( - FolderID int PRIMARY KEY, - [Type] int, - [Name] varchar(100), - VersionID int -) - -WITH EXECUTE AS OWNER -AS -BEGIN - -INSERT INTO @AllValues -select DISTINCT ddenh.folderid, xxEnhanced.value('@Type', 'int') xxType, xxEnhanced.value('@Name', 'varchar(20)') xxName, - xxEnhanced.value('@VersionID', 'int') xxVersionID from - (select *, cast(config as xml) xconfig from docversions) dv - cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) - join (select *, cast(config as xml) xconfig from docversions) - denh on xEnhanced.value('@VersionID', 'int') = denh.VersionID - cross apply denh.xconfig.nodes('//Enhanced') ttEnhanced(xxEnhanced) - join (select *, cast(config as xml) xconfig from docversions) - ddenh on xxEnhanced.value('@VersionID', 'int') = ddenh.VersionID - where denh.FolderID = @FolderID or dv.folderid = @FolderID - - RETURN -END -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetEnhancedFolders Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetEnhancedFolders Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_GetEnhancedDocVersions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedDocVersions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetEnhancedDocVersions]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select * from vefn_GetEnhancedDocVersions(6) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION dbo.[vefn_GetEnhancedDocVersions](@VersionID as int) -RETURNS @AllValues TABLE -( - VersionID int PRIMARY KEY, - [Type] int, - [Name] varchar(100), - FolderID int -) - -WITH EXECUTE AS OWNER -AS -BEGIN - -INSERT INTO @AllValues -select DISTINCT xxEnhanced.value('@VersionID', 'int') xxVersionID, xxEnhanced.value('@Type', 'int') xxType, - xxEnhanced.value('@Name', 'varchar(20)') xxName, ddenh.folderid from - (select *, cast(config as xml) xconfig from docversions) dv - cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) - join (select *, cast(config as xml) xconfig from docversions) - denh on xEnhanced.value('@VersionID', 'int') = denh.VersionID - cross apply denh.xconfig.nodes('//Enhanced') ttEnhanced(xxEnhanced) - join (select *, cast(config as xml) xconfig from docversions) - ddenh on xxEnhanced.value('@VersionID', 'int') = ddenh.VersionID - where denh.VersionID = @VersionID or dv.VersionID = @VersionID - - RETURN -END -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetEnhancedDocVersions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetEnhancedDocVersions Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_GetEnhancedProcedures] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedProcedures]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION vefn_GetEnhancedProcedures; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION dbo.[vefn_GetEnhancedProcedures](@ItemID int) -RETURNS @VersionItems TABLE -( - VersionID int, - ItemID int primary key, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - with ItemZ(ItemId, EnhID, Level) as - (Select ItemID,xEnhanced.value('@ItemID','int') EnhID, 0 from Items II Join (Select ContentID, cast(config as xml) xconfig From Contents) - CC On CC.ContentID = II.ContentID outer apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) Where ItemID = @ItemID - Union ALL - Select II.ItemID,xEnhanced.value('@ItemID','int') EnhID, ZZ.Level+1 from Items II Join ItemZ ZZ on ZZ.EnhID = II.ItemID - Join (Select ContentID, cast(config as xml) xconfig From Contents) CC On CC.ContentID = II.ContentID - outer apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) Where zz.Level < 2) - INSERT INTO @VersionItems - Select distinct dbo.vefn_GetVersionIDByItemID(ZZ.ItemID) VersionID, ZZ.ItemID, II.ContentID from ItemZ ZZ Join Items II on II.ItemID = ZZ.ItemID - OPTION (MAXRECURSION 10000) - RETURN -END -GO - --- Display the status -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetEnhancedProcedures Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetEnhancedProcedures Error on Creation' -GO - -PRINT '20160106 Enhanced Documents' - -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionTblItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetVersionTblItems]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_GetVersionTblItems] ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -Select * from vefn_GetVersionTblItems('') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetVersionTblItems](@DocVersionList varchar(MAX)) -RETURNS @VersionItems TABLE -( - VersionID int, - ItemID int, - ContentID int primary key -) -WITH EXECUTE AS OWNER -AS -BEGIN - BEGIN - with Itemz([VersionID], [ItemID], [ContentID]) as - (Select DV.VersionID, [I].[ItemID], [I].[ContentID] - FROM [tblItems] I - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] - Union All - -- Children - select Z.VersionID, I.[ItemID], I.[ContentID] - from Itemz Z - join tblParts P on P.ContentID = Z.ContentID - join tblItems I on I.ItemID = P.ItemID - Union All - -- Siblings - select Z.VersionID, I.[ItemID], I.[ContentID] - from Itemz Z - join tblItems I on I.PreviousID = Z.ItemID - ) - insert into @VersionItems - select VersionID, [ItemID], [ContentID] - from ItemZ I - --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) - OPTION (MAXRECURSION 10000) - END -RETURN -END - -go -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetVersionTblItems] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetVersionTblItems] Error on Creation' - -GO -/****** Object: StoredProcedure [addROImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_PurgeDisconnectedData]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE vesp_PurgeDisconnectedData; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_PurgeDisconnectedData] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - delete from tblParts where FromType=0 - declare @UsedItems Table - ( itemid int primary key, contentID int ) - insert into @UsedItems - Select ItemID, ContentID from vefn_GetVersiontblItems('') - - select 'Working Drafts' Query, FolderName,Dv.* from DocVersions DV - JOIN VEFN_GetVersionNames() VN ON DV.VersionID = VN.VersionID - - declare @DiscItems Table - ( itemid int primary key, ContentID int) - insert into @DiscItems - Select ItemID, II.ContentID from tblItems II - Join tblContents CC ON CC.ContentID = II.ContentID - where ItemID not in(select ItemID from @UsedItems) - And CC.Type is not null - - delete from [Checks] where RevisionID in (select RevisionID from Revisions where ItemID in (select itemid from @DiscItems)) - delete from [Versions] where RevisionID in (select RevisionID from Revisions where ItemID in (select itemid from @DiscItems)) - delete from [Revisions] where ItemID in (select itemid from @DiscItems) - delete from [AnnotationAudits] where ItemID in (select itemid from @DiscItems) - delete from [ItemAudits] where ItemID in (select itemid from @DiscItems) - delete from [tblParts] where ItemID in (select itemid from @DiscItems) - delete from [DocVersions] where ItemID in (select itemid from @DiscItems) - delete from [PartAudits] where ItemID in (select itemid from @DiscItems) - delete from [tblAnnotations] where ItemID in (select itemid from @DiscItems) - - delete from [Details] where contentID in (select contentid from @DiscItems) - delete from [ZContents] where contentID in (select contentid from @DiscItems) - delete from [tblGrids] where contentID in (select contentid from @DiscItems) - delete from [tblImages] where contentID in (select contentid from @DiscItems) - delete from [ContentAudits] where contentID in (select contentid from @DiscItems) - delete from [tblROUsages] where contentID in (select contentid from @DiscItems) - delete from [EntryAudits] where contentID in (select contentid from @DiscItems) - delete from [tblEntries] where contentID in (select contentid from @DiscItems) - delete from [GridAudits] where contentID in (select contentid from @DiscItems) - delete from [ImageAudits] where contentID in (select contentid from @DiscItems) - delete from [ItemAudits] where contentID in (select contentid from @DiscItems) - delete from [tblParts] where contentID in (select contentid from @DiscItems) - delete from [PartAudits] where contentID in (select contentid from @DiscItems) - delete from [ROUsageAudits] where contentID in (select contentid from @DiscItems) - delete from [ztransitions] where transitionid in(select transitionid from [tblTransitions] where fromid in (select contentid from @DiscItems)) - delete from [ztransitions] where transitionid in(select transitionid from [tblTransitions] where toid in (select itemid from @DiscItems)) - delete from [ztransitions] where transitionid in(select transitionid from [tblTransitions] where rangeid in (select itemid from @DiscItems)) - delete from [tblTransitions] where fromid in (select contentid from @DiscItems) - delete from [tblTransitions] where toid in (select itemid from @DiscItems) - delete from [tblTransitions] where rangeid in (select itemid from @DiscItems) - delete from [tblItems] where PreviousID in (select itemid from @DiscItems) - delete from [tblItems] where ItemID in (select itemid from @DiscItems) - delete from [tblItems] where contentID in (select contentid from @DiscItems) - delete from [tblContents] where contentID in (select contentid from @DiscItems) - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_PurgeDisconnectedData Succeeded' -ELSE PRINT 'Procedure Creation: vesp_PurgeDisconnectedData Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'ClearCBOverrideForProcedure') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE ClearCBOverrideForProcedure; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE PROCEDURE [dbo].ClearCBOverrideForProcedure -( - @ItemID int=null -) -WITH EXECUTE AS OWNER -AS -begin -DECLARE @CBConfigs TABLE -( -[ContentID] int, -xConfig xml -) -insert into @CBConfigs select ContentID, cast(Config as xml) xConfig -from Contents where config like '%CBOverride%' and contentid in (select icontentid from vefn_tblchilditems(@ItemID,@ItemID,0)) - -Update @CBConfigs Set xConfig.modify('delete //@CBOverride') From @CBConfigs -Update @CBConfigs Set xConfig.modify('delete //Step[not(node())and not(./@*)]') From @CBConfigs - -UPDATE CC SET config = cast(xconfig as varchar(max)) -FROM CONTENTS CC -Join @CBConfigs CB on cc.contentid = cb.contentid -where cc.contentid in (select contentid from @CBConfigs) - -SELECT - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM [Contents] - where contentid in (select contentid from @CBConfigs) -end -go - --- Display the status of ClearCBOverrideForProcedure -IF (@@Error = 0) PRINT 'StoredProcedure [ClearCBOverrideForProcedure] Succeeded' -ELSE PRINT 'StoredProcedure [ClearCBOverrideForProcedure] Error on Creation' -go -PRINT '20160126 Improved performance for checkouts' -PRINT '20160226 11:00 SQL Code Version ' - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_PurgeEnhanced]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_PurgeEnhanced]; -GO -/* -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_PurgeEnhanced] - -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - declare @Enh TABLE - ( - ID int, - xConfig xml - ) - insert into @Enh - SELECT VersionID,xConfig FROM (Select cast(config as xml) xconfig,* from DocVersions) t1 - Cross Apply xconfig.nodes('//Enhanced[1]') tEnhanced(xEnhanced) - - Update @Enh Set xConfig.modify('delete //Enhanced') From @Enh - Update DV Set Config = cast(xconfig as varchar(max)) From Docversions DV - Join @Enh EE ON EE.ID = DV.VersionID - - --select * from @Enh - - delete from @enh - - insert into @enh - SELECT ContentID,xConfig FROM (Select cast(config as xml) xconfig,* from Contents) t1 - Cross Apply xconfig.nodes('//Enhanced[1]') tEnhanced(xEnhanced) - - Update @Enh Set xConfig.modify('delete //Enhanced') From @Enh - Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC - Join @Enh EE ON EE.ID = CC.ContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_PurgeEnhanced] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_PurgeEnhanced] Error on Creation' -go - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ConvertEnhancedDocVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ConvertEnhancedDocVersions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ConvertEnhancedDocVersions] -( - @svid int, - @enhvid int, - @enhid int, - @enhttl varchar(255), - @enhx int, - @enhtok varchar(1) -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION ---print 'BGDV-1' -update docversions set config = replace(config,'>', - '>') - where VersionID =@svid ---print 'BGDV-2' -update docversions set config = replace(config,'>', - '>') - where VersionID =@enhvid - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_ConvertEnhancedDocVersions] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_ConvertEnhancedDocVersions] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ConvertEnhancedItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ConvertEnhancedItems]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ConvertEnhancedItems] -( - @svid int, - @bvid int, - @dvid int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION -declare @EnhItems TABLE -( - ItemID int, - ContentID int, - SrcConfig1 varchar(255), - SrcConfig2 varchar(255), - ProcName varchar(8), - RecID varchar(8), - BGItemID int, - BGContentID int, - BGConfig varchar(255), - DVItemID int, - DVContentID int, - DVConfig varchar(255) -) --- Procedures -Insert into @EnhItems -select VI.ItemID, VI.ContentID - ,case when vibg.itemid is null then '' else '' end - ,case when vidv.itemid is null then '' else '' end - , VI.ProcName,null RecID -, VIBG.ItemID BGItemID, VIBG.ContentID BGContentID, case when vibg.itemid is null then '' else '' end -, VIDV.ItemID DVItemID, VIDV.ContentID DVContentID, case when vidv.itemid is null then '' else '' end -from vefn_GetOldEnhancedProcs(@svid) VI -Left Join vefn_GetOldEnhancedProcs(@bvid) VIBG ON VI.ProcName = VIBG.ProcName -Left Join vefn_GetOldEnhancedProcs(@dvid) VIDV ON VI.ProcName = VIDV.ProcName -WHERE VIBG.ItemID is not null or VIDV.ItemID is not null ---Sections and Steps -Insert into @EnhItems -select VI.ItemID, VI.ContentID - ,case when vibg.itemid is null then '' else '' end - ,case when vidv.itemid is null then '' else '' end - , VI.ProcName,VI.RecID -, VIBG.ItemID BGItemID, VIBG.ContentID BGContentID, case when vibg.itemid is null then '' else '' end -, VIDV.ItemID DVItemID, VIDV.ContentID DVContentID, case when vidv.itemid is null then '' else '' end -from vefn_GetOldEnhancedItems(@svid) VI -Left Join vefn_GetOldEnhancedItems(@bvid) VIBG ON VI.ProcName = VIBG.ProcName AND '0L' + substring(VI.RecID,3,6) = VIBG.RecID -Left Join vefn_GetOldEnhancedItems(@dvid) VIDV ON VI.ProcName = VIDV.ProcName AND '0L' + substring(VI.RecID,3,6) = VIDV.RecID -WHERE VIBG.ItemID is not null or VIDV.ItemID is not null - ---select * from @EnhItems - -Declare @EnhEach Table -( - ContentID int primary key, - Change1 varchar(255), - Change2 varchar(255) -) -insert into @EnhEach -Select EI.ContentID,EI.SrcConfig1,EI.srcConfig2 -from @EnhItems EI -Join Contents CC ON CC.ContentID = EI.ContentID - -insert into @EnhEach -Select EI.bgContentID,EI.BGConfig,null -from @EnhItems EI -Join Contents CC ON CC.ContentID = EI.bgContentID - -insert into @EnhEach -Select EI.dvContentID,EI.DVConfig,null -from @EnhItems EI -Join Contents CC ON CC.ContentID = EI.dvContentID - -Update CC -Set Config = cast(cast(Replace(Replace(Config,'>' + Change1 +'' + isnull(Change2,'') +' 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_ConvertEnhancedItems] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_ConvertEnhancedItems] Error on Creation' -go - - --- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedLinks]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetEnhancedLinks]; -GO - - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetEnhancedLinks]() -RETURNS @Enhanced TABLE -( - svid int, - bvid int, - dvid int -) -WITH EXECUTE AS OWNER -AS -BEGIN -declare @tbl table -( - FolderName varchar(255), - VersionID int, - ItemID int, - ContentID int, - ProcName varchar(10), - LinkType varchar(4), - RecID int, - ShortName varchar(20) -) - - -insert into @tbl -select vn.FolderName,VI.VersionID, VI.ItemID, t1.ContentID, ProcName, case substring(RecIDText,2,1) when '0' then 'None' when 'L' then 'Link' else substring(RecIDText,2,1) end LinkType -, cast(substring(RecIDText,3,6) as int) RecID, ff.ShortName -from (select cc.Contentid - -, xHistory.value('@ProcName','varchar(20)') ProcName, xHistory.value('@RecID','varchar(20)') RecIDText -from (select *, cast(config as xml) xconfig from contents) cc -cross apply xconfig.nodes('//History') tHistory(xHistory)) t1 -Join vefn_getversionItems('') vi on t1.contentID = vi.contentID -JOIN VEFN_GetVersionNames() VN ON VI.VersionID = VN.VersionID -JOIN DocVersions DV ON VI.VersionID = DV.VersionID -Join Folders FF ON FF.FolderID = DV.FolderID - - - -DECLARE @LinkCounts TABLE -( - EnhancedID int, - LinkFolder varchar(255), - LinkShortName varchar(20), - SourceID int, - SourceFolder varchar(255), - SourceShortName varchar(20), - HowMany int, - AllLinks int -) -insert into @LinkCounts -select t3.*,t4.HowMany AllLinks from (select t1.versionID EnhancedID, t1.FolderName LinkFolder, t1.ShortName LinkShortName, t2.VersionID SourceID, t2.FolderName SourceFolder, T2.ShortName SourceShortName, Count(*) HowMany from -(select * from @tbl where LinkType = 'Link') t1 -join (select * from @tbl where LinkType != 'Link') t2 on t1.ProcName = t2.ProcName and T1.RecID = T2.RecID -group by t1.versionID, t1.FolderName, T1.ShortName, t2.versionID, t2.FolderName, t2.ShortName) t3 -Join -(select FolderName LinkFolder, 'All' SourceFolder, count(*) HowMany from @tbl where LinkType = 'Link' -group by FolderName) t4 on t3.LinkFolder = t4.linkfolder -Order By LinkFolder, T3.HowMany Desc - ---print '---3---' ---select * from @LinkCounts -declare @LinkSummary TABLE -( - EnhancedID int, - LinkFolder varchar(255), - LinkShortName varchar(25), - SourceID int, - SourceFolder varchar(255), - SourceShortName varchar(25), - HowMany int, - AllLinks int, - RowNo int -) -begin -WITH TOP3 AS ( - SELECT *, ROW_NUMBER() - over ( - PARTITION BY [EnhancedID] - order by [HowMany] DESC - ) AS RowNo - FROM @LinkCounts -) -insert into @linkSummary -SELECT * FROM TOP3 WHERE RowNo <= 1 -end - -declare @myXML xml -set @myXML=cast(' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -' as xml) -declare @linktbl TABLE -( -Plant VARCHAR(25), -LinkType VARCHAR(25), -FolderFrom VARCHAR(25), -FolderTo VARCHAR(25) -) -insert into @linktbl -select -xLink.value('@Plant','varchar(25)') Plant -,xLink.value('@Type','varchar(25)') LinkType -,xLink.value('@From','varchar(25)') FolderFrom -,xLink.value('@To','varchar(25)') FolderTo -from @myxml.nodes('//Link') tLink(xLink) - -declare @LnkPaths table -( - Plant VarChar(20), - FolderFrom Varchar(20), - Background Varchar(20), - Deviation Varchar(20) -) -Insert into @LnkPaths -select distinct plant,FolderFrom -, (select min(FolderTo) from @linktbl lt1 - where lt1.plant=lt.plant and lt1.folderfrom = lt.folderfrom - and lt1.linktype='bck.lnk') Background -, (select min(FolderTo) from @linktbl lt1 -where lt1.plant=lt.plant and lt1.folderfrom = lt.folderfrom and lt1.linktype='dvt.lnk') Deviation - from @linktbl lt -where LinkType in('BCK.LNK','DVT.LNK') - -insert into @Enhanced -select isnull(SourceID,0) svid,isnull(BackgroundID,0) bvid,isnull(DeviationID,0) dvid from (select Plant -,T1.SourceID,FolderFrom -,isnull(BackgroundID,LS1.EnhancedID) BackgroundID,BackGround -,isnull(DeviationID, LS2.EnhancedID) DeviationID, Deviation - from (select distinct Plant, -(select Min(VersionID) from DocVersions dv Join Folders ff on dv.folderid = ff.folderid where ShortName = FolderFrom and ff.title like '%' + plant + '%') SourceID, -FolderFrom, -(select Min(VersionID) from DocVersions dv Join Folders ff on dv.folderid = ff.folderid where ShortName = Background and ff.title like '%' + plant + '%') BackgroundID, -Background, -(select Min(VersionID) from DocVersions dv Join Folders ff on dv.folderid = ff.folderid where ShortName = Deviation and ff.title like '%' + plant + '%') DeviationID, -Deviation - from - @LnkPaths where Plant IN(Select Distinct Plant from @LnkPaths LP -Join Folders FF ON FF.Title Like '%' + Plant + '%')) T1 -left Join @LinkSummary LS1 ON T1.SourceID = LS1.SourceID AND LS1.LinkShortName like '%.BCK' -left Join @LinkSummary LS2 ON T1.SourceID = LS2.SourceID AND LS2.LinkShortName like '%.DVT' -Where T1.SourceID is not null) T2 -where BackgroundID is not null or DeviationID is not null -Return -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetEnhancedLinks] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetEnhancedLinks] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetOldEnhancedProcs]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetOldEnhancedProcs]; -GO -/* - --- Byron -USE VEPROMS_BYR -select VI.ItemID, VI.ContentID, VI.ProcName -, VIBG.ItemID BGItemID, VIBG.ContentID BGContentID -, VIDV.ItemID DVItemID, VIDV.ContentID DVContentID -from vefn_GetOldEnhancedProcs(6) VI -Left Join vefn_GetOldEnhancedProcs(8) VIBG ON VI.ProcName = VIBG.ProcName -Left Join vefn_GetOldEnhancedProcs(9) VIDV ON VI.ProcName = VIDV.ProcName -USE MASTER - --- Catawba -USE VEPROMS_CNS -select VI.ItemID, VI.ContentID, VI.ProcName -, VIBG.ItemID BGItemID, VIBG.ContentID BGContentID -, VIDV.ItemID DVItemID, VIDV.ContentID DVContentID -from vefn_GetOldEnhancedProcs(7) VI -Left Join vefn_GetOldEnhancedProcs(12) VIBG ON VI.ProcName = VIBG.ProcName -Left Join vefn_GetOldEnhancedProcs(0) VIDV ON VI.ProcName = VIDV.ProcName -USE MASTER - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetOldEnhancedProcs](@VersionID as int) -RETURNS @Enhanced TABLE -( - ItemID int, - ContentID int, - ProcName varchar(8) -) -WITH EXECUTE AS OWNER -AS -BEGIN - insert into @Enhanced - select ItemID,ContentID,ProcName From ( - select ItemID,CC.ContentID - ,xHistory.value('@ProcName','varchar(8)') ProcName - ,row_Number() over(partition by xHistory.value('@ProcName','varchar(8)') order by ItemID) RowOrder - from (select ContentID, cast(config as xml) xConfig from Contents where Type = 0 ) CC - Cross Apply xConfig.nodes('//History') tHistory(xHistory) - JOIN VEFN_GETVERSIONITEMS(cast(@VersionID as varchar(12))) VI ON VI.CONTENTID = CC.CONTENTID - --JOIN VEFN_GetVersionNames() VN ON VI.VersionID = VN.VersionID - )T1 Where rowOrder = 1 -Return -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetOldEnhancedProcs] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetOldEnhancedProcs] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetOldEnhancedItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetOldEnhancedItems]; -GO -/* - -select count(*) from vefn_GetOldEnhancedItems(6) -select count(*) from vefn_GetOldEnhancedItems(8) where RecID like '0l%' -select count(*) from vefn_GetOldEnhancedItems(9) where RecID like '0l%' - - --- Byron -USE VEPROMS_BYR -select VI.ItemID, VI.ContentID, VI.ProcName,VI.RecID -, VIBG.ItemID BGItemID, VIBG.ContentID BGContentID -, VIDV.ItemID DVItemID, VIDV.ContentID DVContentID -from vefn_GetOldEnhancedItems(6) VI -Left Join vefn_GetOldEnhancedItems(8) VIBG ON VI.ProcName = VIBG.ProcName AND '0L' + substring(VI.RecID,3,6) = VIBG.RecID -Left Join vefn_GetOldEnhancedItems(9) VIDV ON VI.ProcName = VIDV.ProcName AND '0L' + substring(VI.RecID,3,6) = VIDV.RecID -WHERE VIBG.ItemID is not null or VIDV.ItemID is not null -USE MASTER - --- Catawba -USE VEPROMS_CNS -select VI.ItemID, VI.ContentID, VI.ProcName, VI.RecID -, VIBG.ItemID BGItemID, VIBG.ContentID BGContentID -, VIDV.ItemID DVItemID, VIDV.ContentID DVContentID -from vefn_GetOldEnhancedItems(7) VI -Left Join vefn_GetOldEnhancedItems(12) VIBG ON VI.ProcName = VIBG.ProcName AND '0L' + substring(VI.RecID,3,6) = VIBG.RecID -Left Join vefn_GetOldEnhancedItems(0) VIDV ON VI.ProcName = VIDV.ProcName AND '0L' + substring(VI.RecID,3,6) = VIDV.RecID -WHERE VIBG.ItemID is not null --or VIDV.ItemID is not null -USE MASTER - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetOldEnhancedItems](@VersionID as int) -RETURNS @Enhanced TABLE -( - ItemID int, - ContentID int, - ProcName varchar(8), - RecID varchar(8), - Primary Key (ProcName,RecID) -) -WITH EXECUTE AS OWNER -AS -BEGIN - insert into @Enhanced - select ItemID, ContentID,ProcName,RecID From ( - select VI.ItemID, CC.ContentID - ,xHistory.value('@ProcName','varchar(8)') ProcName - ,xHistory.value('@RecID','varchar(8)') RecID - ,row_Number() over(partition by xHistory.value('@ProcName','varchar(8)'), xHistory.value('@RecID','varchar(8)') order by VI.ItemID) RowOrder - from (select ContentID, cast(config as xml) xConfig from Contents where Type != 0 ) CC - Cross Apply xConfig.nodes('//History') tHistory(xHistory) - JOIN VEFN_GETVERSIONPROCEDUREITEMS(cast(@VersionID as varchar(12))) VI ON VI.CONTENTID = CC.CONTENTID - --Where ProcID in(select ItemID from vefn_GetOldEnhancedProcs(@VersionID)) - JOIN vefn_GetOldEnhancedProcs(@VersionID) vep on vi.ProcID = VEP.ItemID AND xHistory.value('@ProcName','varchar(8)')= vep.ProcName - --JOIN VEFN_GetVersionNames() VN ON VI.VersionID = VN.VersionID - )T1 Where rowOrder = 1 -Return -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetOldEnhancedItems] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetOldEnhancedItems] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ConvertEnhanced]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ConvertEnhanced]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ConvertEnhanced] -( - @svid int, - @bvid int, - @dvid int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - IF( @svid != 0 AND @bvid != 0) -- Background DocVersions - exec vesp_ConvertEnhancedDocVersions @svid,@bvid,1,'Background',6,'B' - IF( @svid != 0 AND @dvid != 0) -- Deviation DocVersions - exec vesp_ConvertEnhancedDocVersions @svid,@dvid,2,'Deviation',20,'D' - IF( @svid != 0 AND ( @bvid != 0 OR @dvid != 0)) -- Enhanced Items - exec vesp_ConvertEnhancedItems @svid, @bvid, @dvid - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_ConvertEnhanced] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_ConvertEnhanced] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ConvertAllEnhanced]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ConvertAllEnhanced]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ConvertAllEnhanced] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - declare @svid int - declare @bvid int - declare @dvid int - declare @source varchar(255) - declare @background varchar(255) - declare @deviation varchar(255) - Exec vesp_PurgeEnhanced - Print 'Purge Enhanced' - declare enh cursor for select * from vefn_GetEnhancedLinks() - open enh - fetch next from enh into @svid,@bvid,@dvid - while @@fetch_status = 0 - begin - SELECT @SOURCE = FOLDERNAME FROM vefn_GetVersionNames() where VersionID = @svid - SELECT @Background = FOLDERNAME FROM vefn_GetVersionNames() where VersionID = @bvid - SELECT @Deviation = FOLDERNAME FROM vefn_GetVersionNames() where VersionID = @dvid - Print 'Converting ' + @Source + ' => ' + isnull(@Background,'N/A') + ' => ' + isnull(@Deviation, 'N/A') - Exec vesp_ConvertEnhanced @svid,@bvid,@dvid - fetch next from enh into @svid,@bvid,@dvid - end - close enh - deallocate enh - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_ConvertAllEnhanced] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_ConvertAllEnhanced] Error on Creation' -go -PRINT 'Added Enhanced Document Conversion Code' - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetNewEnhancedData]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetNewEnhancedData]; -GO -/* -select * from vefn_GetNewEnhancedData(28825) -*/ -/****** Object: Table Function [vefn_GetNewEnhancedData] ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetNewEnhancedData]( @ItemID int, @EnhType int) -RETURNS @OldEnhancedData TABLE -( - ItemID int, - ContentID int, - EItemID int, - EType int -) -WITH EXECUTE AS OWNER -AS -BEGIN - insert into @OldEnhancedData -select ii.ItemId,cc.ContentID - , xEnhanced.value('@ItemID','int') EItemID - , xEnhanced.value('@Type','int') EType from (Select *, cast(config as xml) xConfig from contents) CC -Join Items II ON II.ContentID = CC.ContentID -cross Apply xConfig.nodes('//Enhanced[@Type=sql:variable("@EnhType")]') tEnhanced(xEnhanced) -where ItemID = @ItemID -return -END -GO - -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetNewEnhancedData] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetNewEnhancedData] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetOldEnhancedData]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetOldEnhancedData]; -GO -/* -select * from vefn_GetOldEnhancedData(28825) -*/ -/****** Object: Table Function [vefn_GetOldEnhancedData] ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetOldEnhancedData]( @ItemID int) -RETURNS @OldEnhancedData TABLE -( - ItemID int, - ContentID int, - ProcName nvarchar(10), - RecID nvarchar(10) -) -WITH EXECUTE AS OWNER -AS -BEGIN - insert into @OldEnhancedData -select ii.ItemId,cc.ContentID - , xHistory.value('@ProcName','nvarchar(10)') ProcName - , xHistory.value('@RecID','nvarchar(10)') RecID from (Select *, cast(config as xml) xConfig from contents) CC -Join Items II ON II.ContentID = CC.ContentID -cross Apply xConfig.nodes('//History') tHistory(xHistory) -where ItemID = @ItemID -return -END -GO - -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetOldEnhancedData] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetOldEnhancedData] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedItemsAndChildren]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetEnhancedItemsAndChildren]; -GO -/****** Object: Table Function [vefn_GetEnhancedItemsAndChildren] *****/ -/* -select * from vefn_GetEnhancedItemsAndChildren(17013,1) -select * from vefn_GetEnhancedItemsAndChildren(17067,0) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetEnhancedItemsAndChildren](@ProcID int,@EnhType int) -RETURNS @VersionItems TABLE -( - [Level] int, - [FromType] int, - [Ordinal] int, - [ParentID] int, - [ItemID] int primary key, - [PreviousID] int, - [ContentID] int, - [Number] varchar(250), - [Text] NVARCHAR(MAX), - [Type] INT, - [FormatID] int, - [EItemID] int, - [EType] int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]=@ProcID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - --join (select * from Items where ContentID Not in(Select ContentID from entries)) I on I.ItemID = P.ItemID - where p.fromtype in(2,3,4) -- Sections, Cautions, Notes - or (z.FromType = 2 and p.FromType=6) -- High Level Step --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @versionitems -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID], C.[Number],C.[Text],C.[Type] -, C.[FormatID] -, xEnhanced.value('@ItemID','int') EItemID -, xEnhanced.value('@Type','int') EType from ItemZ I - join (select * , cast(config as xml) xConfig from Contents) C on C.ContentID = I.ContentID - -- sql:variable("@EnhType") allows a variable to be used in a xPath query to limit - -- the results to Enhanced Nodes that have type = - outer apply xConfig.nodes('//Enhanced[@Type=sql:variable("@EnhType")]') tEnhanced(xEnhanced) - where I.ContentID not in (select contentid from entries) - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) - RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetEnhancedItemsAndChildren] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetEnhancedItemsAndChildren] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedIssues]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetEnhancedIssues]; -GO -/****** Object: Table Function [vefn_GetEnhancedIssues] ******/ -/* -select * from vefn_getEnhancedIssues1(17066) -select * from vefn_getEnhancedIssues1(17067) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION [dbo].[vefn_GetEnhancedIssues]( @EnhancedID int) -RETURNS @EnhancedIssues TABLE -( - SourceID int, - [sNumber] varchar(250), - [sText] NVARCHAR(MAX), - [sType] INT, - [sProcName] NVARCHAR(10), - [sRecID] NVARCHAR(10), - EnhanceID int, - [eNumber] varchar(250), - [eeText] NVARCHAR(MAX), - [eType] INT, - [eProcName] NVARCHAR(10), - [eRecID] NVARCHAR(10), - Status varchar(10) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @SourceID as int - select @SourceID = xEnhanced.value('@ItemID','int') from (select cast(config as xml) xConfig from contents - where contentID in(select ContentID from Items where ItemID = @EnhancedID)) CC - cross apply xConfig.nodes('//Enhanced') tEnhanced(xEnhanced) - declare @Type int - select @Type = xEnhanced.value('@Type','int') from (select cast(config as xml) xConfig from contents - where contentID in(select ContentID from Items where ItemID = @SourceID)) CC - cross apply xConfig.nodes('//Enhanced') tEnhanced(xEnhanced) where xEnhanced.value('@ItemID','int') = @EnhancedID - Insert into @EnhancedIssues - select vcs.ItemID SourceID, vcs.[Number] sNumber, vcs.[Text] sText, vcs.[Type] sType,sod.ProcName sProcName,sod.RecID sRecID - , vce.ItemID EnhancedID, vce.[Number] eNumber, vce.[Text] eText, vce.[Type] eType,eod.ProcName sProcName ,eod.RecID eRecID - , case - when ISNULL(eod.RecID,'00') like '0L%' and vcs.itemid is null then 'Delete' - when vcs.itemid is null then 'Unlinked' - when vce.itemid is null then 'Insert' - when ISNULL(vcs.text,'') != isnull(vce.Text,'') then 'Different' - else 'Same' end Status - from vefn_GetEnhancedItemsAndChildren(@SourceID,@Type) vcs - full Join vefn_GetEnhancedItemsAndChildren(@EnhancedID,0) vce on vcs.EItemID = vce.ItemID - outer apply vefn_GetOldEnhancedData(vcs.ItemID) sod - outer apply vefn_GetOldEnhancedData(vce.ItemID) eod - RETURN -END -GO - -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetEnhancedIssues] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetEnhancedIssues] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedIssueCount]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetEnhancedIssueCount]; -GO -/****** Object: Table Function [vefn_GetEnhancedIssueCount] ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetEnhancedIssueCount]( @EnhancedID int) -RETURNS @EnhancedIssueCount TABLE -( - Deleted int, - Inserted int, - Changed int, - Same int, - Unlinked int -) -WITH EXECUTE AS OWNER -AS -BEGIN - insert into @EnhancedIssueCount - select sum(case Status when 'Delete' then 1 else 0 end) Deleted - , sum(case Status when 'Insert' then 1 else 0 end) Inserted - , sum(case Status when 'Different' then 1 else 0 end) Changed - , sum(case Status when 'Same' then 1 else 0 end) Same - , sum(case Status when 'Unlinked' then 1 else 0 end) Unlinked - from vefn_GetEnhancedIssues(@EnhancedID) - RETURN -END -GO - -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetEnhancedIssueCount] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetEnhancedIssueCount] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetEnhancedDocuments]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetEnhancedDocuments]; -GO -/****** Object: Table Function [vefn_GetEnhancedDocuments] ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - - -CREATE FUNCTION [dbo].[vefn_GetEnhancedDocuments]() -RETURNS @EnhancedDocuments TABLE -( - VersionID int, - FolderName varchar(250), - ItemID int, - ProcNum varchar(250), - ProcName varchar(1000), - EnhType int, - EnhItemID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -insert into @EnhancedDocuments -select VN.VersionID,VN.FolderName, VI.ItemID -, replace(cc.Number,'\u8209?','-') ProcNum, replace(cc.Text,'\u8209?','-') ProcName ---, replace(replace(cc.Number,'\u8209?','-'),'\u9586?','\') ProcNum, replace(replace(cc.Text,'\u8209?','-'),'\u9586?','\') ProcName -, xEnhanced.value('@Type','int') EnhType, xenhanced.value('@ItemID','int') EnhItemID ---, xEnhanced.query('.') qEnhanced -from (select *, cast(config as xml) xconfig from Contents Where config like '%Enhanced%' and Type =0) CC -JOIN VEFN_GetVersionItems('') VI ON VI.ContentID = CC.ContentID -JOIN VEFN_GetVersionNames() VN ON VI.VersionID = VN.VersionID -cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) -where xEnhanced.value('@Type','int') > 0 -return -END -GO - -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetEnhancedDocuments] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetEnhancedDocuments] Error on Creation' -GO - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListUnlinkedItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListUnlinkedItems]; -GO -/* Sample -vesp_ListUnlinkedItems 28825,1 -vesp_ListUnlinkedItems 28827,1 -vesp_ListUnlinkedItems 29245,1 -vesp_ListUnlinkedItems 12217,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListUnlinkedItems] -( - @ItemID int, - @EnhType int -) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @EItemID int - set @EItemID = (select top 1 VIS.EItemID from vefn_AllSiblingItems(@ItemID)--Find All Siblings - outer apply vefn_GetNewEnhancedData(ItemID,@EnhType) VIS -- That are Linked - where EitemID is not null) - - if @EItemID is null - BEGIN - select @EItemID = epp.ItemID - from (select * from Parts where ItemID in(select itemID from vefn_AllSiblingItems(@ItemID)))SPP -- FindParent - JOIN ITEMS SII ON sPP.ContentID = sII.ContentID -- Get Parent Content ID - outer apply vefn_GetNewEnhancedData(SII.ItemID,@EnhType) VIS -- Get Enhanced ID for Parent - JOIN ITEMS EII ON VIS.EItemID = EII.ItemID -- Get Enhanced Parent Content ID - JOIN PARTS EPP ON EPP.ContentID = EII.ContentID and SPP.FromType = epp.FromType -- Get first Child - END - if @EItemID is null - BEGIN - select @EItemID = DV2.ItemID from (select *,cast(config as xml) xconfig from DocVersions - where ItemID in(select itemID from vefn_AllSiblingItems(@ItemID))) SDV -- Source DocVersion - cross apply (select * from vefn_GetEnhancedDocVersions(SDV.VersionID) where @EnhType = Type) EDV -- Enhanced DocVersion - Join DocVersions DV2 ON DV2.VersionID = EDV.VersionID -- First Procedure - END - Select ItemID,PreviousID,II.ContentID,II.[DTS],II.[UserID],II.[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[II].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[II].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[II].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[II].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[II].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[II].[ItemID]) [Transition_ToIDCount] - from Items II - Left Join Entries EE ON II.ContentID = EE.ContentID - where ItemID In (select SIB.ItemID from vefn_AllSiblingItems(@EItemID) SIB - outer apply vefn_GetNewEnhancedData(ItemID,0) VIE - Where VIE.EItemID is null) - and EE.ContentID is null -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_ListUnlinkedItems] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_ListUnlinkedItems] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsToRefresh]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsToRefresh]; -GO -/* Sample -vesp_ListItemsToRefresh 17078 -vesp_ListItemsToRefresh 17066 -vesp_ListItemsToRefresh 17083 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsToRefresh] -( - @ProcID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - Select ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[II].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[II].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[II].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[II].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[II].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[II].[ItemID]) [Transition_ToIDCount] - from Items II where ItemID In (select EnhanceID from vefn_GetEnhancedIssues(@ProcID) - where Status ='Different') -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_ListItemsToRefresh] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_ListItemsToRefresh] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_PurgeEnhancedItemsAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_PurgeEnhancedItemsAndChildren]; -GO -/* -vesp_PurgeEnhancedItemsAndChildren 43092 -- caution -vesp_PurgeEnhancedItemsAndChildren 43090 -- step/caution -vesp_PurgeEnhancedItemsAndChildren 43089 -- section -vesp_PurgeEnhancedItemsAndChildren 17067 -- procedure -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_PurgeEnhancedItemsAndChildren](@EnhanceID int) - -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - declare @SourceID int - select @SourceID=EItemID from VEFN_GetNewEnhancedData(@EnhanceID,0) - DECLARE @EnhType int - select @EnhType = xEnhanced.value('@Type','int') - from (select *, cast(config as xml) xConfig from Contents where ContentID in (Select ContentID from ITEMS where ItemID = @SourceID)) CC - cross apply xconfig.nodes('//Enhanced[@ItemID=sql:variable("@EnhanceID")]') tEnhanced(xEnhanced) - declare @Enh1 TABLE - ( - ID int, - xConfig xml - ) - insert into @Enh1 - select CC.ContentID, CC.xConfig from (select *, cast(config as xml) xConfig from Contents) CC - JOIN vefn_ChildItems(@SourceID) VCI ON VCI.ContentID = CC.ContentID - cross apply VEFN_GetNewEnhancedData(VCI.itemid,@EnhType) VEN - - Update @Enh1 Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh1 - - - declare @Enh2 TABLE - ( - ID int, - xConfig xml - ) - insert into @Enh2 - select CC.ContentID, CC.xConfig from (select *, cast(config as xml) xConfig from Contents) CC - JOIN vefn_ChildItems(@EnhanceID) VCI ON VCI.ContentID = CC.ContentID - cross apply VEFN_GetNewEnhancedData(VCI.itemid,0) VEN - set @EnhType=0 - Update @Enh2 Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh2 - - Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC - Join @Enh1 EE ON EE.ID = CC.ContentID - Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC - Join @Enh2 EE ON EE.ID = CC.ContentID - - SELECT [ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM [Contents] where ContentID in (Select ID From @Enh1 UNION Select ID From @Enh2) - - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_PurgeEnhancedItemsAndChildren] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_PurgeEnhancedItemsAndChildren] Error on Creation' -go - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetNonEnhancedDocVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetNonEnhancedDocVersions]; -GO -CREATE PROCEDURE [dbo].[vesp_GetNonEnhancedDocVersions] - -WITH EXECUTE AS OWNER -AS -BEGIN -SELECT - [VersionID], - [FolderID], - [VersionType], - [Name], - [Title], - [ItemID], - [FormatID], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Associations] WHERE [Associations].[VersionID]=dv.[VersionID]) [AssociationCount] - FROM (select *, cast(config as xml) xconfig from [DocVersions] ) dv - outer apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) - Where xEnhanced is null -return -END -GO - -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_GetNonEnhancedDocVersions] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_GetNonEnhancedDocVersions] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_PurgeEnhancedDocVersionsAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_PurgeEnhancedDocVersionsAndChildren]; -GO -/* -vesp_PurgeEnhancedDocVersionsAndChildren 8 -- Background -vesp_PurgeEnhancedDocVersionsAndChildren 9 -- Deviation -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_PurgeEnhancedDocVersionsAndChildren](@EnhanceID int) -- @EnhanceID -- Enhanced VersionID -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - declare @SourceID int -- Source VersionID - select @SourceID = xEnhanced.value('@VersionID','int') from (select *, cast(config as xml) xconfig from DocVersions) DV - cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) - where VersionID = @EnhanceID - DECLARE @EnhType int - select @EnhType = xEnhanced.value('@Type','int') - from (select *, cast(config as xml) xConfig from DocVersions where VersionID = @SourceID) DV - cross apply xconfig.nodes('//Enhanced[@VersionID=sql:variable("@EnhanceID")]') tEnhanced(xEnhanced) - -- Fix DocVersion Records - declare @Enh TABLE - ( - ID int, - xConfig xml - ) - insert into @Enh - select DV.VersionID,DV.xConfig - from (select *, cast(config as xml) xConfig from DocVersions where VersionID in(@SourceID,@EnhanceID)) DV - Update @Enh Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh - Update @Enh Set xConfig.modify('delete //Enhanced[@Type="0"]') From @Enh - declare @Enh1 TABLE - ( - ID int, - xConfig xml - ) - insert into @Enh1 -- Links to Enhanced from Source - select CC.ContentID, xConfig from (select *, cast(config as xml) xConfig from Contents) CC - JOIN VEFN_GetVersionItems(cast(@SourceID as varchar(25))) VI ON VI.ContentID = CC.ContentID - cross apply VEFN_GetNewEnhancedData(VI.itemid,@EnhType) VEN - Update @Enh1 Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh1 - - declare @Enh2 TABLE - ( - ID int, - xConfig xml - ) - insert into @Enh2 -- Links to Enhanced from Source - select CC.ContentID, xConfig from (select *, cast(config as xml) xConfig from Contents) CC - JOIN VEFN_GetVersionItems(cast(@EnhanceID as varchar(25))) VI ON VI.ContentID = CC.ContentID - cross apply VEFN_GetNewEnhancedData(VI.itemid,0) VEN - set @EnhType=0 - Update @Enh2 Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh2 - - Update DV Set Config = cast(xConfig as varchar(max)) From DocVersions DV -- Remove Links from DocVersions - Join @Enh EE ON EE.ID = DV.VersionID - Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC -- Remove Links from Source - Join @Enh1 EE ON EE.ID = CC.ContentID - Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC -- Remove Links from Enhanced - Join @Enh2 EE ON EE.ID = CC.ContentID - - SELECT [ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM [Contents] where ContentID in (Select ID From @Enh1 UNION Select ID From @Enh2) - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_PurgeEnhancedDocVersionsAndChildren] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_PurgeEnhancedDocVersionsAndChildren] Error on Creation' -go - --- AddToPromsFixes_Convert16to32 -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetOldEnhancedProcItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetOldEnhancedProcItems]; -GO -/* - -select * from vefn_GetOldEnhancedProcItems(17012) -select * from vefn_GetOldEnhancedProcItems(17066) - -select * from vefn_GetOldEnhancedProcItems(17012) VE -join vefn_GetOldEnhancedProcItems(17066) VS on ve.Procname = vs.ProcName and substring(VE.RecID,3,8) = substring(VS.RecID,3,8) - -select * from vefn_GetOldEnhancedProcItems(17014) -select * from vefn_GetOldEnhancedProcItems(17015) -select * from vefn_GetOldEnhancedProcItems(17029) -select * from vefn_GetOldEnhancedProcItems(17033) -select * from vefn_GetOldEnhancedProcItems(17045) -select * from vefn_GetOldEnhancedProcItems(99043) - - - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetOldEnhancedProcItems](@ItemID as int) -RETURNS @Enhanced TABLE -( - ItemID int, - ContentID int, - ProcName varchar(255), - RecID varchar(10) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @ProcNum varchar(255) - select @ProcNum = replace(Number,'\u8209?','-') from contents CC - --select @ProcNum = replace(replace(Number,'\u8209?','-'),'\u9586?','\') from contents CC - join Items II on II.ContentID = CC.ContentID - Where ItemID = @ItemID - Begin - with Itemz([FromType], [Level], [ItemID], [ContentID]) as ( - Select 1 [FromType], 0 [Level], [ItemID], [ContentID] - FROM [Items] - where [ItemID]=@ItemID - Union All -- Children - select P.FromType, [Level] + 1, I.[ItemID], I.[ContentID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - where Z.FromType <= 2 - or P.FromType in (3,4) - Union All -- Siblings - select Z.FromType, [Level] , I.[ItemID], I.[ContentID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 - ) - Insert into @Enhanced - select ItemID,ContentID,ProcName,RecID from ( select II.ItemID,II.ContentID - , isnull(xHistory.value('@ProcName','varchar(255)'),@ProcNum) ProcName - , xHistory.value('@RecID','varchar(255)') RecID - , Row_Number() over (partition by isnull(xHistory.value('@ProcName','varchar(255)'),@ProcNum) - , xHistory.value('@RecID','varchar(255)') order by ItemID) RowOrder - from Itemz II - Join (select *, Cast(config as xml) xConfig from Contents) CC ON CC.ContentID = II.ContentID - Cross Apply xConfig.nodes('//History') tHistory(xHistory) - ) T1 - where RowOrder = 1 - OPTION (MAXRECURSION 10000) - END - RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetOldEnhancedProcItems] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetOldEnhancedProcItems] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_Get16to32EnhancedProcItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_Get16to32EnhancedProcItems]; -GO -/* - -select * from vefn_Get16to32EnhancedProcItems(17012,17066,1) - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_Get16to32EnhancedProcItems](@SourceID int, @EnhanceID int, @EnhType int) -RETURNS @EnhItems TABLE -( - SrcItemID int, - SrcContentID int, - SrcConfig varchar(255), - ProcName varchar(255), - RecID varchar(8), - EnhItemID int, - EnhContentID int, - EnhConfig varchar(255), - EnhProcName varchar(255), - EnhRecID varchar(8) -) -BEGIN -Insert into @EnhItems-- Procedures -select @SourceID SrcItemID, (select ContentID from Items Where ItemID = @SourceID) SrcContentID - ,'' SrcConfig - ,isnull(VSO.ProcName,replace(CCS.Number,'\u8209?','-')) SrcProcName, null SrcRecID - --,isnull(VSO.ProcName,replace(replace(CCS.Number,'\u8209?','-'),'\u9586?','\')) SrcProcName, null SrcRecID - ,@EnhanceID EnhItemID, (select ContentID from Items Where ItemID = @EnhanceID) EnhContentID - ,'' EnhConfig - ,isnull(VEO.ProcName ,replace(CCE.Number,'\u8209?','-')) EnhProcNam, null EnhRecID - --,isnull(VEO.ProcName ,replace(replace(CCE.Number,'\u8209?','-'),'\u9586?','\')) EnhProcNam, null EnhRecID -From vefn_GetOldEnhancedData(@SourceID) VSO -cross apply vefn_GetOldEnhancedData(@EnhanceID) VEO -JOIN Contents CCS ON VSO.ContentID = CCs.ContentID -JOIN Contents CCE ON VEO.ContentID = CCE.ContentID - -Insert into @EnhItems--Sections and Steps -select VS.ItemID, VS.ContentID - ,'' SrcConfig - ,VS.ProcName SrcProcName, VS.RecID RecID - ,VE.ItemID EnhItemID, VE.ContentID EnhContentID - ,'' EnhConfig - ,VE.ProcName EnhProcName, VE.RecID EnhRecID - from vefn_GetOldEnhancedProcItems(@SourceID) VS -join vefn_GetOldEnhancedProcItems(@EnhanceID) VE on ve.Procname = vs.ProcName and substring(VE.RecID,2,8) = 'L' + substring(VS.RecID,3,8) ---select * from @EnhItems -RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_Get16to32EnhancedProcItem] Succeeded' -ELSE PRINT 'TableFunction [vefn_Get16to32EnhancedProcItem] Error on Creation' -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_Get16BitEnhancedContents]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_Get16BitEnhancedContents]; -GO -/* - -vesp_Get16BitEnhancedContents 17012,17066,1 - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_Get16BitEnhancedContents](@SourceID int, @EnhanceID int, @EnhType int) -- @EnhanceID -- Enhanced VersionID -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @EnhItems TABLE - ( - SrcItemID int, - SrcContentID int, - SrcConfig varchar(255), - ProcName varchar(255), - RecID varchar(8), - EnhItemID int, - EnhContentID int, - EnhConfig varchar(255), - EnhProcName varchar(255), - EnhRecID varchar(8) - ) - Insert into @EnhItems - select * from vefn_Get16to32EnhancedProcItems(@SourceID,@EnhanceID,@EnhType) - - SELECT [ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM [Contents] where ContentID in (Select SrcContentID from @EnhItems union Select EnhContentID from @EnhItems) - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_Get16BitEnhancedContents] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_Get16BitEnhancedContents] Error on Creation' -go - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_Convert16to32EnhancedContents]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_Convert16to32EnhancedContents]; -GO -/* - -vesp_Convert16to32EnhancedContents 17012,17066,1 - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_Convert16to32EnhancedContents](@SourceID int, @EnhanceID int, @EnhType int) -- @EnhanceID -- Enhanced VersionID -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @EnhItems TABLE - ( - SrcItemID int, - SrcContentID int, - SrcConfig varchar(255), - ProcName varchar(255), - RecID varchar(8), - EnhItemID int, - EnhContentID int, - EnhConfig varchar(255), - EnhProcName varchar(255), - EnhRecID varchar(8) - ) - Insert into @EnhItems - select * from vefn_Get16to32EnhancedProcItems(@SourceID,@EnhanceID,@EnhType) - - Update CC - Set Config = cast(cast(Replace(Config,'>' + SrcConfig +'' + EnhConfig +' 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_Convert16to32EnhancedContents] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_Convert16to32EnhancedContents] Error on Creation' -go - -PRINT 'Enhanced Document Synchronization code.' - -/****** Object: StoredProcedure [vesp_GetUnusedRoFstsCount] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetUnusedRoFstsCount]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetUnusedRoFstsCount]; -GO - -/* -exec vesp_GetUnusedRoFstsCount -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetUnusedRoFstsCount] -WITH EXECUTE AS OWNER -AS - Select COUNT(*) HowMany From ROFSTS where ROFstID not in(Select ROFSTID from Associations) - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetUnusedRoFstsCount Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetUnusedRoFstsCount Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetUnusedRoFstsCount] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetUnusedFiguresCount]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetUnusedFiguresCount]; -GO - -/* -exec vesp_GetUnusedFiguresCount -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetUnusedFiguresCount] -WITH EXECUTE AS OWNER -AS - Select COUNT(*) HowMany from Figures where ROFstID not in(Select ROFSTID from Associations) - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetUnusedFiguresCount Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetUnusedFiguresCount Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_RemoveUnusedRoFstsAndFigures]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_RemoveUnusedRoFstsAndFigures]; -GO -/* -vesp_RemoveUnusedRoFstsAndFigures -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_RemoveUnusedRoFstsAndFigures] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - Delete From Figures where ROFstID not in(Select ROFSTID from Associations) - Delete From ROFSTS where ROFstID not in(Select ROFSTID from Associations) - IF (@@TRANCOUNT > 0) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_RemoveUnusedRoFstsAndFigures] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_RemoveUnusedRoFstsAndFigures] Error on Creation' -go - - -/****** Object: StoredProcedure [vesp_GetUnusedROAssociationsCount] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetUnusedROAssociationsCount]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetUnusedROAssociationsCount]; -GO - -/* -exec vesp_GetUnusedROAssociationsCount -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetUnusedROAssociationsCount] -WITH EXECUTE AS OWNER -AS - --SELECT COUNT(*) HowMany FROM vefn_GetDisconnectedItems() -begin - with cte as ( - Select *, Row_Number() over (partition by VersionID order by associationID ) MyRank from Associations - ) - select count(*) HowMany from CTE where MyRank > 1 -end -RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetUnusedROAssociationsCount Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetUnusedROAssociationsCount Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_CleanUpROAssociations] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_CleanUpROAssociations]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_CleanUpROAssociations]; -GO -/* -vesp_CleanUpROAssociations -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2016 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_CleanUpROAssociations] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - BEGIN - with cte as ( - Select *, Row_Number() over (partition by VersionID order by associationID ) MyRank from Associations - ) - delete CTE where MyRank > 1 - END -IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_CleanUpROAssociations] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_CleanUpROAssociations] Error on Creation' -go - -/****** Object: StoredProcedure [addPdf] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addPdf]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addPdf]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addPdf] - -( - @DocID int, - @DebugStatus int, - @TopRow int, - @PageLength int, - @LeftMargin int, - @PageWidth int, - @PageCount float, - @DocPdf varbinary(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - IF not exists(select * FROM [Pdfs] WHERE [DocID]=@DocID AND [DebugStatus]=@DebugStatus AND [TopRow]=@TopRow AND [PageLength]=@PageLength AND [LeftMargin]=@LeftMargin AND [PageWidth]=@PageWidth) - BEGIN - INSERT INTO [Pdfs] - ( - [DocID], - [DebugStatus], - [TopRow], - [PageLength], - [LeftMargin], - [PageWidth], - [PageCount], - [DocPdf], - [DTS], - [UserID] - ) - VALUES - ( - @DocID, - @DebugStatus, - @TopRow, - @PageLength, - @LeftMargin, - @PageWidth, - @PageCount, - @DocPdf, - @DTS, - @UserID - ) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Pdfs] WHERE [DocID]=@DocID AND [DebugStatus]=@DebugStatus AND [TopRow]=@TopRow AND [PageLength]=@PageLength AND [LeftMargin]=@LeftMargin AND [PageWidth]=@PageWidth - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addPdf Succeeded' -ELSE PRINT 'Procedure Creation: addPdf Error on Creation' -GO -/****** Object: Index [IX_itemsLastChanged] Script Date: 3/21/2017 11:24:00 AM ******/ -IF EXISTS (SELECT * FROM dbo.sysIndexes WHERE name like 'IX_ItemsLastChanged') - DROP INDEX [IX_ItemsLastChanged] ON [dbo].[tblItems]; -GO -CREATE NONCLUSTERED INDEX [IX_ItemsLastChanged] ON [dbo].[tblItems] -( - [DeleteStatus] ASC, - [LastChanged] DESC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO -PRINT 'Added IX_ItemsLastChanged Index. Speeds up session queries' -GO - -/****** Object: StoredProcedure [getJustROImage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustROImage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getJustROImage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE PROCEDURE [dbo].[getJustROImage] - -( - @ImageID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ImageID], - [RODbID], - [FileName], - [Content], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Figures] WHERE [Figures].[ImageID]=[ROImages].[ImageID]) [FigureCount] - FROM [ROImages] - WHERE [ImageID]=@ImageID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getJustROImage Succeeded' -ELSE PRINT 'Procedure Creation: getJustROImage Error on Creation' -GO -/****** Object: StoredProcedure [deleteAllDocVersionPdfs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAllDocVersionPdfs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteAllDocVersionPdfs]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteAllDocVersionPdfs] - -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Pdfs] - WHERE [DocID] IN(select EE.DocID from vefn_GetVersionItems(cast(@VersionID as varchar(20))) VI - Join Entries EE ON EE.ContentID= VI.ContentID) - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteAllDocVersionPdfs Succeeded' -ELSE PRINT 'Procedure Creation: deleteAllDocVersionPdfs Error on Creation' -GO -/****** Object: StoredProcedure [addFiguresByROFstIDandImageIDs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addFiguresByROFstIDandImageIDs]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addFiguresByROFstIDandImageIDs]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addFiguresByROFstIDandImageIDs] -( - @ROFstID int, - @ImageIDs varchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Figures] - ( [ROFstID] - ,[ImageID] - ,[Config] - ,[DTS] - ,[UserID] - ) - select distinct FF.ROFstID, II.ID ImageID, '' Config, FF.DTS, FF.UserID from ROFsts FF - , vefn_SplitInt(@ImageIDs,',') II - where ROFstID=@ROFstID and II.ID not in (select ImageID from Figures where ROFstID = @ROFstID) - - SELECT [FigureID] - ,[ROFstID] - ,[ImageID] - ,[Config] - ,[DTS] - ,[UserID] - ,[LastChanged] - FROM [Figures] - WHERE [ROFstID]=@ROFstID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addFiguresByROFstIDandImageIDs Succeeded' -ELSE PRINT 'Procedure Creation: addFiguresByROFstIDandImageIDs Error on Creation' -GO - - -/****** Object: StoredProcedure [vesp_FixHyphens] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_FixHyphens]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_FixHyphens]; -GO - -/* -exec vesp_DeletePDFs -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_FixHyphens] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - Update Contents set Text = Replace(Replace(Replace(Replace(Replace(Replace(Replace(Text,'\emdash','\u8209?'),'\endash','\u8209?'),'\u8213?','\u8209?'),'\u8212?','\u8209?'),'\u8211?','\u8209?'),'\u8210?','\u8209?'),'\u8208?','\u8209?') - where Text Like '%\u8208?%' or Text Like '%\u8210?%' or Text Like '%\u8211?%' or Text Like '%\u8212?%' or Text Like '%\u8213?%' or Text Like '%\endash%' or Text Like '%\emdash%' - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_FixHyphens Succeeded' -ELSE PRINT 'Procedure Creation: vesp_FixHyphens Error on Creation' -GO - -/****** Object: StoredProcedure [getUsers] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getUsers]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getUsers]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getUsers] - -WITH EXECUTE AS OWNER -AS - SELECT - [UID], - [UserID], - [FirstName], - [MiddleName], - [LastName], - [Suffix], - [CourtesyTitle], - [PhoneNumber], - [CFGName], - [UserLogin], - [UserName], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Memberships] WHERE [Memberships].[UID]=[Users].[UID]) [MembershipCount] - FROM [Users] ORDER BY UserID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getUsers Succeeded' -ELSE PRINT 'Procedure Creation: getUsers Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetZeroFromType]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetZeroFromType]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_GetZeroFromType] ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -Select * from vefn_GetZeroFromType() -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetZeroFromType]() -RETURNS @DiscItems TABLE -( - ItemID int primary Key, - ContentID int, - UNIQUE (ContentID) -) -WITH EXECUTE AS OWNER -AS -BEGIN -with ItemZ (BaseID, ItemID, ContentID) as -(Select PP.ContentID BaseID, II.ItemID, II.ContentID from Items II -Join Parts PP ON PP.ItemID = II.ItemID -where FromType = 0 -Union All - -- Children - select z.BaseID, I.[ItemID], I.[ContentID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - Union All - -- Siblings - select z.BaseID, I.[ItemID], I.[ContentID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - ) - --select *, dbo.ve_GetShortPath(ItemID) Location from ItemZ - insert into @DiscItems - Select ItemID, ContentID from ItemZ - RETURN -END - -go -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetZeroFromType] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetZeroFromType] Error on Creation' - -GO - --- B2017-227 Added code to support Export/Import of Enhanced Documents - - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/****** Object: Trigger [tr_tblContents_Update] ******/ -ALTER trigger [dbo].[tr_tblContents_Update] on [dbo].[tblContents] for update as - begin - if exists (select * from inserted) - begin - if update(Number) or update(Text) or update(Type) or update(FormatID) or update(DeleteStatus) - begin - insert into ContentAudits(ContentID,Number,Text,Type,FormatID,Config,DTS,UserID,DeleteStatus,ActionDTS) - select dd.ContentID,dd.Number,dd.Text,dd.Type,dd.FormatID,dd.Config,dd.DTS,dd.UserID,dd.DeleteStatus,dd.ActionDTS - from deleted dd - inner join inserted ii on dd.ContentID = ii.ContentID - where dd.Text not like '%' --- Insert Export Node into the Source and Enhanced DocVersion records -Update DV set Config = Replace(Cast(xConfig as nvarchar(max)),'',@ExportNode + '') -from DocVersions DV -Join @DV DV2 on DV2.VersionID = DV.VersionID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_BuildDocVersionExport] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_BuildDocVersionExport] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'vesp_BuildContentsExport') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_BuildContentsExport]; -GO -/* -select Count(*) AuditsBefore from ContentAudits -select top 5 CC.ContentID, xExport.query('.') qExport from (select *, Cast(config as xml) xconfig from Contents) CC -cross apply xconfig.nodes('//Export') tExport(xExport) -EXEC [vesp_BuildContentsExport] 13 -select Count(*) AuditsAfter from ContentAudits -select top 5 CC.ContentID, xExport.query('.') qExport from (select *, Cast(config as xml) xconfig from Contents) CC -cross apply xconfig.nodes('//Export') tExport(xExport) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - --- Add Unique IDs for Each Enhanced Link in the Contents records - -CREATE PROCEDURE [dbo].[vesp_BuildContentsExport](@SourceID int) - -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - -- Update the DocVersion Records as the Content records are being saved with the Export node - Exec vesp_BuildDocVersionExport @SourceID - -- Create a list of Source and Enhanced VersionIDs - declare @VersionList varchar(max) -select @VersionList = Coalesce(@VersionList+',','') + cast(VersionId as varchar(10)) from ( -select VersionID from DocVersions DV -where VersionID = @SourceID -Union -select VersionID from (Select *, Cast(config as xml) xConfig from DocVersions) DV -cross apply xConfig.nodes('//Enhanced[@VersionID=sql:variable("@SourceID")]') tEnhanced(xEnhanced)) T1 --- Temporary table of ContentID and config as XML for record in the Specified DocVersion VersionIDs that have Export Nodes -Declare @Config TABLE -( - ContentID int, - xConfig xml -) --- Build the temporary table -Insert into @Config -select CC.ContentID, xconfig from (select *, cast(config as xml) xConfig from Contents) CC -JOIN VEFN_GetVersionItems(@VersionList) VI ON VI.ContentID = CC.ContentID -cross Apply xConfig.nodes('//Export') tExport(xExport) --- Delete the existing Export nodes so that the new nodes can be added. -update @Config Set xConfig.modify('delete //Export') From @Config --- Update the Config field in the Content records with the old Export node removed. -update CC set Config = cast(xConfig as NVarchar(max)) from Contents CC -join @Config C1 ON C1.ContentID = CC.ContentID --- Temporary table with new link nodes -Declare @NewLinkData TABLE -( - ContentID int, - EContentID int, - ItemLink int, - LinkNode nvarchar(250) -) --- The following code build the Export node based upon Dense_Rank() which is similar to a record count --- only it is based upon the Source ItemID and returns a unique integer value -insert into @NewLinkData -select distinct t1.ContentID, II.ContentID EContentID -, DENSE_RANK() Over (Order by t1.ItemID) ItemLink -, '' LinkNode -From ( -select ItemID, vi.VersionID, VI.ContentID, xEnhanced.query('.') qEnhanced -,xEnhanced.value('@Type','int') EType -,xEnhanced.value('@ItemID','int') EItemID -from (Select *, cast(config as xml) xconfig from Contents where config Like '%Enhanced%') CC -JOIN VEFN_GetVersionItems(cast(@SourceID as nvarchar(10))) VI ON VI.ContentID = CC.ContentID -cross Apply xConfig.nodes('//Enhanced') tEnhanced(xEnhanced)) T1 -JOIN Items II ON II.ItemID = EItemID -Where EType!=0 --- Add the Export Node created in the temprorary table for the Source document -Update CC -set Config = Replace(Config,'',LinkNode + '') -From tblContents CC -Join @NewLinkData LD ON LD.ContentID = CC.ContentID --- Add the Export Node created in the tempoary table for the Enhanced document -Update CC -set Config = Replace(Config,'',LinkNode + '') -From tblContents CC -Join @NewLinkData LD ON LD.EContentID = CC.ContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_BuildContentsExport] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_BuildContentsExport] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'vesp_BuildContentsEnhanced') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_BuildContentsEnhanced]; -GO -/* -select Count(*) AuditsBefore from ContentAudits -select top 5 CC.ContentID, xEnhanced.query('.') qEnhanced from (select *, Cast(config as xml) xconfig from Contents) CC -cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) -EXEC [vesp_BuildContentsEnhanced] 17 -select Count(*) AuditsAfter from ContentAudits -select top 5 CC.ContentID, xEnhanced.query('.') qEnhanced from (select *, Cast(config as xml) xconfig from Contents) CC -cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2017 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - --- Create Enahnced Nodes for an Enahnced document and its related Source document - -CREATE PROCEDURE [dbo].[vesp_BuildContentsEnhanced](@EnhancedID int) - -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - declare @SourceID int -- Source VersionID - -- Get SourceID from EnhancedID - select @SourceID = xEnhanced.value('@VersionID','int') from (select *, cast(config as xml) xconfig from DocVersions) DV - cross apply xconfig.nodes('//Enhanced') tEnhanced(xEnhanced) - where VersionID = @EnhancedID - - DECLARE @EnhType int - -- Get the Enhanced Type from the DocVersion record - select @EnhType = xEnhanced.value('@Type','int') - from (select *, cast(config as xml) xConfig from DocVersions where VersionID = @SourceID) DV - cross apply xconfig.nodes('//Enhanced[@VersionID=sql:variable("@EnhancedID")]') tEnhanced(xEnhanced) - -- Fix DocVersion Records - -- Temporary Table used to delete old Enhanced Nodes in the source document - declare @Enh1 TABLE - ( - ID int, - xConfig xml - ) - insert into @Enh1 -- Links to Enhanced from Source - select CC.ContentID, xConfig from (select *, cast(config as xml) xConfig from Contents) CC - JOIN VEFN_GetVersionItems(cast(@SourceID as varchar(25))) VI ON VI.ContentID = CC.ContentID - cross apply VEFN_GetNewEnhancedData(VI.itemid,@EnhType) VEN - -- delete the Enhanced node from the config - Update @Enh1 Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh1 - -- Update the content record removing the Enhanced node from config - Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC -- Remove Links from Source - Join @Enh1 EE ON EE.ID = CC.ContentID - -- Temporary Table used to delete old Enhanced Nodes in the enhanced document - declare @Enh2 TABLE - ( - ID int, - xConfig xml - ) - insert into @Enh2 -- Links to Source from Enhanced - select CC.ContentID, xConfig from (select *, cast(config as xml) xConfig from Contents) CC - JOIN VEFN_GetVersionItems(cast(@EnhancedID as varchar(25))) VI ON VI.ContentID = CC.ContentID - cross apply VEFN_GetNewEnhancedData(VI.itemid,0) VEN - --set @EnhType=0 - -- delete the Enhanced node from the config - Update @Enh2 Set xConfig.modify('delete //Enhanced[@Type=0]') From @Enh2 - -- Update the content record removing the Enhanced node from config - Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC -- Remove Links from Enhanced - Join @Enh2 EE ON EE.ID = CC.ContentID --- Temporary Table used to store the Export LinkID with the ContentID and the ItemID for the Source Document -declare @Source TABLE -( -Type int, -ContentID int, -ItemID int, -LinkID int primary Key -) --- Build the table based upon the Export Nodes in the Source document -insert into @Source -Select @EnhType dvType, CC.ContentID, vi.ItemID, xExport.value('@LinkID','int') LinkID -from (select *, cast(config as xml) xConfig from Contents) CC -JOIN VEFN_GetVersionItems(cast(@SourceID as varchar(10))) VI ON VI.ContentID = CC.ContentID -Join (select *, cast(config as xml)xdvConfig from DocVersions) DV ON VI.VersionID= DV.VersionID -cross apply xConfig.nodes('//Export') tExport(xExport) ---cross apply xDVConfig.nodes('//Enhanced') tdvEnhanced(xdvEnhanced) --- Temporary Table used to store the Export LinkID with the ContentID and the ItemID for the Enhanced Document -declare @Enhanced TABLE -( -Type int, -ContentID int, -ItemID int, -LinkID int primary key -) --- Build the table based upon the Export Nodes in the Enhanced document -insert into @Enhanced -Select xdvEnhanced.value('@Type','int') dvType, CC.ContentID, vi.ItemID, xExport.value('@LinkID','int') LinkID -from (select *, cast(config as xml) xConfig from Contents) CC -JOIN VEFN_GetVersionItems(cast(@EnhancedID as varchar(10))) VI ON VI.ContentID = CC.ContentID -Join (select *, cast(config as xml)xdvConfig from DocVersions) DV ON VI.VersionID= DV.VersionID -cross apply xConfig.nodes('//Export') tExport(xExport) -cross apply xDVConfig.nodes('//Enhanced') tdvEnhanced(xdvEnhanced) --- Temporary Table of ContentIDs and New Enhanced Node Text -declare @Links TABLE -( -ContentID int primary key, -LinkText nvarchar(250) -) ---Build the temporary table with the new enhanced Nodes -insert into @links -select SS.ContentID, '' EnhancedNode from @Source SS -join @Enhanced EE on EE.LinkID = SS.LinkID -UNION -select EE.ContentID, '' EnhancedNode from @Source SS -join @Enhanced EE on EE.LinkID = SS.LinkID --- Update content records insering the Enhanced Nodes from the temporary table. -Update CC -set Config = Replace(Config,'',LinkText + '') -From Contents CC -Join @Links LD ON LD.ContentID = CC.ContentID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_BuildContentsEnhanced] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_BuildContentsEnhanced] Error on Creation' -go - ----The following Formats/Config column was added for User Control of Format (UCF), but needed to be added before existing procedures. ---- Added for additional config column on formats to store UCF data. Also modified existing queries to get UCF Data for Formats ---- Note that vefn_GetVersionFormatItems was also modified as part of this work to return the parentformatId -IF NOT EXISTS(SELECT * - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = 'Formats' - AND COLUMN_NAME = 'Config') -ALTER TABLE Formats ADD Config nvarchar(MAX) NULL; -go --- Display the status -IF (@@Error = 0) PRINT 'Altered table [Formats] Succeeded' -ELSE PRINT 'Altered table [Formats] Error on Alter' -go - -/****** Object: StoredProcedure [getChildFormats] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getChildFormats]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getChildFormats]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2018 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getChildFormats] - -( - @ParentID int -) -WITH EXECUTE AS OWNER -AS - with formatz([FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged]) as - (select [FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged] - FROM [dbo].[Formats] fs where DATALENGTH(fs.Data) > 5 - union all -- Child formats - select fs.[FormatID], fs.[ParentID], fs.[Name], fs.[Description], fz.[Data], fs.[Config], fz.[GenMac], fs.[DTS], fs.[UserID], fs.[LastChanged] - from formats fs - join formatz fz on fz.FormatID = fs.ParentID - where DATALENGTH(fs.Data) = 5) -- the DATALENGTH(fs.Data) = 5 is how to check for empty xml (Data's type is xml) - select * from ( - select *, - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formatz].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formatz].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formatz].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formatz].[FormatID]) [ChildCount] from Formatz) T1 - WHERE [ParentID]=@ParentID AND [FormatID]<>@ParentID AND (Description not like '%(Unused)%' or (ContentCount + DocVersionCount + FolderCount + ChildCount > 0)) - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getChildFormats Succeeded' -ELSE PRINT 'Procedure Creation: getChildFormats Error on Creation' -GO -/****** Object: StoredProcedure [getFormats] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFormats]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFormats]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2018 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getFormats] - -WITH EXECUTE AS OWNER -AS -BEGIN - with formatz([FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged]) as - (select [FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged] - FROM [dbo].[Formats] fs where DATALENGTH(fs.Data) > 5 - union all -- Child formats - select fs.[FormatID], fs.[ParentID], fs.[Name], fs.[Description], fz.[Data], fs.[Config], fz.[GenMac], fs.[DTS], fs.[UserID], fs.[LastChanged] - from formats fs - join formatz fz on fz.FormatID = fs.ParentID - where DATALENGTH(fs.Data) = 5) -- the DATALENGTH(fs.Data) = 5 is how to check for empty xml (Data's type is xml) - select * from ( - select *, - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formatz].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formatz].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formatz].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formatz].[FormatID]) [ChildCount] from Formatz) t1 - where Description not like '%(Unused)%' or (ContentCount + DocVersionCount + FolderCount + ChildCount > 0) -END -RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getFormats Succeeded' -ELSE PRINT 'Procedure Creation: getFormats Error on Creation' -GO - -/****** Object: StoredProcedure [getAllFormats] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAllFormats]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAllFormats]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2018 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAllFormats] - -WITH EXECUTE AS OWNER -AS - SELECT * From (SELECT - [FormatID], - [ParentID], - [Name], - [Description], - [Data], - [Config], - [GenMac], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] - FROM [Formats] ) T1 - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAllFormats Succeeded' -ELSE PRINT 'Procedure Creation: getAllFormats Error on Creation' -GO ------ -/****** Object: StoredProcedure [vesp_SearchSepcifiedApplicability] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchSepcifiedApplicability]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [vesp_SearchSepcifiedApplicability]; -GO - -/* -exec vesp_SearchSepcifiedApplicability '16','','',0,0,0,0,'','3' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2018 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchSepcifiedApplicability] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), -@SearchString varchar(MAX), @CaseSensitive as int, @IncludeLinks as int, @IncludeRtfFormatting as int, @IncludeSpecialCharacters as int, @UnitPrefix as varchar(MAX), @ApplicSetting varchar(MAX)) -WITH EXECUTE AS OWNER -AS -select ZZ.DvPath, ZZ.Path, ZZ.[Level],ZZ.[FromType],ZZ.[Ordinal], ZZ.[ParentID], ZZ.[ItemID],ZZ.[PreviousID],ZZ.[ContentID],ZZ.[DTS],ZZ.[UserID] - ,II.[LastChanged] - ,CC.[Number],CC.[Text],CC.[Type],CC.[FormatID],CC.[Config],CC.[DTS] [cDTS],CC.[UserID] [cUserID] - ,CC.[LastChanged] [cLastChanged], - PP.[ContentID] [pContentID], PP.[DTS] [pDTS],PP.[UserID] [pUserID], PP.[LastChanged] [pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ZZ.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ZZ.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ZZ.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ZZ.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ZZ.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ZZ.[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=CC.[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=CC.[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=CC.[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=CC.[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=CC.[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=CC.[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=CC.[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=CC.[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=CC.[ContentID]) [ZContentCount] -from vefn_SiblingAndChildrenItems(@DocVersionList, @UnitPrefix) ZZ - Join Items II on ZZ.ItemID=II.ItemID - Left Join Parts PP on ZZ.PContentID=PP.ContentID and ZZ.FromType = PP.FromType - Join Contents CC on CC.ContentID=ZZ.ContentID -where ZZ.ContentID in (select ContentID from vefn_FindSpecificApplicUsage(@DocVersionList, @ApplicSetting)) - order by DvPath,OrdinalPath - GO -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchSepcifiedApplicability Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchSepcifiedApplicability Error on Creation' -GO ------ -/****** Object: StoredProcedure [vefn_FindSpecificApplicUsage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindSpecificApplicUsage]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindSpecificApplicUsage]; -GO - -/* -exec vefn_FindSpecificApplicUsage '16','3' -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2018 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindSpecificApplicUsage]( -@DocVersionList nvarchar(MAX) -,@ApplicSetting varchar(MAX)) -RETURNS @FoundContents TABLE -( - ContentID int PRIMARY KEY -) -WITH EXECUTE AS OWNER -AS -BEGIN - insert into @FoundContents - select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C - join - items ii - on ii.ContentID = C.ContentID - where ','+ dbo.ve_GetItemAppliedApplicability(ii.ItemID ) + ',' like '%,' + @ApplicSetting + ',%' -RETURN -END - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vefn_FindSpecificApplicUsage Succeeded' -ELSE PRINT 'Procedure Creation: vefn_FindSpecificApplicUsage Error on Creation' -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2018 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - ----- ************************* UCF Changes ************************************* - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addFormat]; -GO -CREATE PROCEDURE [dbo].[addFormat] - -( - @ParentID int, - @Name nvarchar(100), - @Description nvarchar(250)=null, - @Data xml, - @Config nvarchar(MAX)=null, - @GenMac xml=null, - @DTS datetime, - @UserID nvarchar(100), - @newFormatID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Formats] - ( - [ParentID], - [Name], - [Description], - [Data], - [Config], - [GenMac], - [DTS], - [UserID] - ) - VALUES - ( - @ParentID, - @Name, - @Description, - @Data, - @Config, - @GenMac, - @DTS, - @UserID - ) - SELECT @newFormatID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Formats] WHERE [FormatID]=@newFormatID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [addFormat] Succeeded' -ELSE PRINT 'StoredProcedure [addFormat] Error on Creation' -go -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateFormat]; -GO -CREATE PROCEDURE [dbo].[updateFormat] - -( - @FormatID int, - @ParentID int, - @Name nvarchar(100), - @Description nvarchar(250)=null, - @Data xml, - @Config nvarchar(MAX), - @GenMac xml=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Formats] - SET - [ParentID]=@ParentID, - [Name]=@Name, - [Description]=@Description, - [Data]=@Data, - [Config]=@Config, - [GenMac]=@GenMac, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [FormatID]=@FormatID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Formats] WHERE [FormatID]=@FormatID) - RAISERROR('Format record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Format has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Formats] WHERE [FormatID]=@FormatID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [updateFormat] Succeeded' -ELSE PRINT 'StoredProcedure [updateFormat] Error on Creation' -go - -ALTER TABLE Formats ALTER COLUMN Data Xml NULL -IF (@@Error = 0) PRINT 'Alter Table Formats Succeeded' -ELSE PRINT 'Alter Table Formats Error on Alter' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFormatListUsed]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFormatListUsed]; -GO -CREATE PROCEDURE [dbo].[getFormatListUsed] -WITH EXECUTE AS OWNER -AS -BEGIN -with formatz([FormatID], [ParentID],[Name],[Description],[Data],[GenMac],[DTS],[UserID],[Config]) as -(select [FormatID], [ParentID],[Name],[Description],[Data],[GenMac],[DTS],[UserID],[Config] -FROM [dbo].[Formats] where formatid in -((select formatid from folders union -select formatid from docversions union -select formatid from contents) -) and name != 'base' --and DATALENGTH(Data) > 5 -union all -- Child formats -select fs.[FormatID], fs.[ParentID], fs.[Name], fs.[Description], fz.[Data], fz.[GenMac], fs.[DTS], fs.[UserID], fs.[Config] -from formats fs -join formatz fz on fz.FormatID = fs.ParentID ---where fs.Data is null) -where fs.Data is not null and DATALENGTH(fs.Data) = 5) -- the DATALENGTH(fs.Data) = 5 is how to check for empty xml (Data's type is xml) -select *, - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] from Formats - where formatid in (select distinct formatid from formatz) -END -RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [getFormatListUsed] Succeeded' -ELSE PRINT 'StoredProcedure [getFormatListUsed] Error on Creation' -go - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFormat]; -GO -CREATE PROCEDURE [dbo].[getFormat] -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - with formatz([FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged]) as - (select [FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged] - FROM [dbo].[Formats] fs where DATALENGTH(fs.Data) > 5 - union all -- Child formats - select fs.[FormatID], fs.[ParentID], fs.[Name], fs.[Description], fz.[Data], fs.[Config], fz.[GenMac], fs.[DTS], fs.[UserID], fs.[LastChanged] - from formats fs - join formatz fz on fz.FormatID = fs.ParentID - where DATALENGTH(fs.Data) = 5) -- the DATALENGTH(fs.Data) = 5 is how to check for empty xml (Data's type is xml) - select *, - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formatz].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formatz].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formatz].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formatz].[FormatID]) [ChildCount] from Formatz - WHERE [FormatID]=@FormatID -END - - SELECT - [Contents].[ContentID], - [Contents].[Number], - [Contents].[Text], - [Contents].[Type], - [Contents].[FormatID], - [Contents].[Config], - [Contents].[DTS], - [Contents].[UserID], - [Contents].[LastChanged] - FROM [Contents] - WHERE - [Contents].[FormatID]=@FormatID - - - SELECT - [DocVersions].[VersionID], - [DocVersions].[FolderID], - [DocVersions].[VersionType], - [DocVersions].[Name], - [DocVersions].[Title], - [DocVersions].[ItemID], - [DocVersions].[FormatID], - [DocVersions].[Config], - [DocVersions].[DTS], - [DocVersions].[UserID], - [DocVersions].[LastChanged], - [Folders].[ParentID] [Folder_ParentID], - [Folders].[DBID] [Folder_DBID], - [Folders].[Name] [Folder_Name], - [Folders].[Title] [Folder_Title], - [Folders].[ShortName] [Folder_ShortName], - [Folders].[FormatID] [Folder_FormatID], - [Folders].[ManualOrder] [Folder_ManualOrder], - [Folders].[Config] [Folder_Config], - [Folders].[DTS] [Folder_DTS], - [Folders].[UsrID] [Folder_UsrID] - FROM [DocVersions] - JOIN [Folders] ON - [Folders].[FolderID]=[DocVersions].[FolderID] - WHERE - [DocVersions].[FormatID]=@FormatID - - - SELECT - [Folders].[FolderID], - [Folders].[ParentID], - [Folders].[DBID], - [Folders].[Name], - [Folders].[Title], - [Folders].[ShortName], - [Folders].[FormatID], - [Folders].[ManualOrder], - [Folders].[Config], - [Folders].[DTS], - [Folders].[UsrID], - [Folders].[LastChanged], - [Connections].[Name] [Connection_Name], - [Connections].[Title] [Connection_Title], - [Connections].[ConnectionString] [Connection_ConnectionString], - [Connections].[ServerType] [Connection_ServerType], - [Connections].[Config] [Connection_Config], - [Connections].[DTS] [Connection_DTS], - [Connections].[UsrID] [Connection_UsrID] - FROM [Folders] - JOIN [Connections] ON - [Connections].[DBID]=[Folders].[DBID] - WHERE - [Folders].[FormatID]=@FormatID -RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [getFormat] Succeeded' -ELSE PRINT 'StoredProcedure [getFormat] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFormatByName]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFormatByName]; -GO -CREATE PROCEDURE [dbo].[getFormatByName] -( - @Name varchar(255) -) -WITH EXECUTE AS OWNER -AS - DECLARE @FormatID INT - Set @FormatID = (select FormatID from Formats where Name = @Name) - BEGIN - with formatz([FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged]) as - (select [FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged] - FROM [dbo].[Formats] fs where DATALENGTH(fs.Data) > 5 - union all -- Child formats - select fs.[FormatID], fs.[ParentID], fs.[Name], fs.[Description], fz.[Data], fs.[Config], fz.[GenMac], fs.[DTS], fs.[UserID], fs.[LastChanged] - from formats fs - join formatz fz on fz.FormatID = fs.ParentID - where DATALENGTH(fs.Data) = 5) -- the DATALENGTH(fs.Data) = 5 is how to check for empty xml (Data's type is xml) - select *, - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formatz].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formatz].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formatz].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formatz].[FormatID]) [ChildCount] from Formatz - WHERE [FormatID]=@FormatID - END - - SELECT - [Contents].[ContentID], - [Contents].[Number], - [Contents].[Text], - [Contents].[Type], - [Contents].[FormatID], - [Contents].[Config], - [Contents].[DTS], - [Contents].[UserID], - [Contents].[LastChanged] - FROM [Contents] - WHERE - [Contents].[FormatID]=@FormatID - - - SELECT - [DocVersions].[VersionID], - [DocVersions].[FolderID], - [DocVersions].[VersionType], - [DocVersions].[Name], - [DocVersions].[Title], - [DocVersions].[ItemID], - [DocVersions].[FormatID], - [DocVersions].[Config], - [DocVersions].[DTS], - [DocVersions].[UserID], - [DocVersions].[LastChanged], - [Folders].[ParentID] [Folder_ParentID], - [Folders].[DBID] [Folder_DBID], - [Folders].[Name] [Folder_Name], - [Folders].[Title] [Folder_Title], - [Folders].[ShortName] [Folder_ShortName], - [Folders].[FormatID] [Folder_FormatID], - [Folders].[ManualOrder] [Folder_ManualOrder], - [Folders].[Config] [Folder_Config], - [Folders].[DTS] [Folder_DTS], - [Folders].[UsrID] [Folder_UsrID] - FROM [DocVersions] - JOIN [Folders] ON - [Folders].[FolderID]=[DocVersions].[FolderID] - WHERE - [DocVersions].[FormatID]=@FormatID - - - SELECT - [Folders].[FolderID], - [Folders].[ParentID], - [Folders].[DBID], - [Folders].[Name], - [Folders].[Title], - [Folders].[ShortName], - [Folders].[FormatID], - [Folders].[ManualOrder], - [Folders].[Config], - [Folders].[DTS], - [Folders].[UsrID], - [Folders].[LastChanged], - [Connections].[Name] [Connection_Name], - [Connections].[Title] [Connection_Title], - [Connections].[ConnectionString] [Connection_ConnectionString], - [Connections].[ServerType] [Connection_ServerType], - [Connections].[Config] [Connection_Config], - [Connections].[DTS] [Connection_DTS], - [Connections].[UsrID] [Connection_UsrID] - FROM [Folders] - JOIN [Connections] ON - [Connections].[DBID]=[Folders].[DBID] - WHERE - [Folders].[FormatID]=@FormatID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [getFormatByName] Succeeded' -ELSE PRINT 'StoredProcedure [getFormatByName] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFormatByParentID_Name]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFormatByParentID_Name]; -GO -CREATE PROCEDURE [dbo].[getFormatByParentID_Name] -( - @ParentID int, - @Name nvarchar(20) -) -WITH EXECUTE AS OWNER -AS - BEGIN - with formatz([FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged]) as - (select [FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged] - FROM [dbo].[Formats] fs where DATALENGTH(fs.Data) > 5 - union all -- Child formats - select fs.[FormatID], fs.[ParentID], fs.[Name], fs.[Description], fz.[Data], fs.[Config], fz.[GenMac], fs.[DTS], fs.[UserID], fs.[LastChanged] - from formats fs - join formatz fz on fz.FormatID = fs.ParentID - where DATALENGTH(fs.Data) = 5) -- the DATALENGTH(fs.Data) = 5 is how to check for empty xml (Data's type is xml) - select *, - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formatz].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formatz].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formatz].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formatz].[FormatID]) [ChildCount] from Formatz - WHERE [ParentID]=@ParentID AND [Name]=@Name - END - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [getFormatByParentID_Name] Succeeded' -ELSE PRINT 'StoredProcedure [getFormatByParentID_Name] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getParentFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getParentFormat]; -GO -CREATE PROCEDURE [dbo].[getParentFormat] -( - @ParentID int -) -WITH EXECUTE AS OWNER -AS - BEGIN - with formatz([FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged]) as - (select [FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged] - FROM [dbo].[Formats] fs where DATALENGTH(fs.Data) > 5 - union all -- Child formats - select fs.[FormatID], fs.[ParentID], fs.[Name], fs.[Description], fz.[Data], fs.[Config], fz.[GenMac], fs.[DTS], fs.[UserID], fs.[LastChanged] - from formats fs - join formatz fz on fz.FormatID = fs.ParentID - where DATALENGTH(fs.Data) = 5) -- the DATALENGTH(fs.Data) = 5 is how to check for empty xml (Data's type is xml) - select *, - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formatz].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formatz].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formatz].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formatz].[FormatID]) [ChildCount] from Formatz - WHERE [FormatID]=@ParentID - END - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [getParentFormat] Succeeded' -ELSE PRINT 'StoredProcedure [getParentFormat] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getJustFormat]; -GO -CREATE PROCEDURE [dbo].[getJustFormat] - -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS - with formatz([FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged]) as - (select [FormatID], [ParentID],[Name],[Description],[Data],[Config],[GenMac],[DTS],[UserID],[LastChanged] - FROM [dbo].[Formats] fs where DATALENGTH(fs.Data) > 5 - union all -- Child formats - select fs.[FormatID], fs.[ParentID], fs.[Name], fs.[Description], fz.[Data], fs.[Config], fz.[GenMac], fs.[DTS], fs.[UserID], fs.[LastChanged] - from formats fs - join formatz fz on fz.FormatID = fs.ParentID - where DATALENGTH(fs.Data) = 5) -- the DATALENGTH(fs.Data) = 5 is how to check for empty xml (Data's type is xml) - select *, - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formatz].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formatz].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formatz].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formatz].[FormatID]) [ChildCount] from Formatz - WHERE [FormatID]=@FormatID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [getJustFormat] Succeeded' -ELSE PRINT 'StoredProcedure [getJustFormat] Error on Creation' -go - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getFormatNoUCF]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getFormatNoUCF]; -GO -CREATE PROCEDURE [dbo].[getFormatNoUCF] -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [FormatID], - [ParentID], - [Name], - [Description], - [Data], - [Config], - [GenMac], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] - FROM [Formats] - WHERE [FormatID]=@FormatID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [getFormatNoUCF] Succeeded' -ELSE PRINT 'StoredProcedure [getFormatNoUCF] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetItemsMatchingFormatItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetItemsMatchingFormatItems]; -GO -CREATE FUNCTION [dbo].[vefn_GetItemsMatchingFormatItems](@ItemID int, @OldFormatID int, @NewFormatID int) -RETURNS @Items TABLE -( - ItemID int, - ContentID int primary key, - FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - BEGIN - -- recursive, walk through content, items and parts table to find children - -- ('with' makes it recursive, which is called cte, common table expressions, in sql) - with Itemz([ItemID], [ContentID], [FormatID], [Level]) as - (Select [I].[ItemID], [I].[ContentID], - C.[FormatID], 0 - FROM [Items] I - join Contents C on I.ContentID = C.ContentID - where I.ItemID = @ItemID and (C.FormatID is null or C.FormatID = @OldFormatID or C.FormatID = @NewFormatID) - Union All - -- Children : get sections off procedures and subsections off sections - select I.[ItemID], I.[ContentID], C.[FormatID], Z.[Level]+1 - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on I.ContentID = C.ContentID - where C.Type < 20000 and (C.FormatID is null or C.FormatID = @OldFormatID or C.FormatID = @NewFormatID) and (Z.[FormatID] is null or Z.[FormatID] = @OldFormatID or Z.FormatID = @NewFormatID) - Union All - -- Siblings : get remaining items (procedure and section) - select I.[ItemID], I.[ContentID], C.[FormatID], Z.[Level] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on I.ContentID = C.ContentID - where C.Type < 20000 and Z.[Level] > 0 - ) - insert into @Items - select [ItemID], [ContentID], [FormatID] - from ItemZ I - where ([FormatID] = @OldFormatID or [FormatID] = @NewFormatID) and [ItemID] != @ItemID - OPTION (MAXRECURSION 10000) - END -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vefn_GetItemsMatchingFormatItems] Succeeded' -ELSE PRINT 'StoredProcedure [vefn_GetItemsMatchingFormatItems] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionMatchingFormatItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetVersionMatchingFormatItems]; -GO -CREATE FUNCTION [dbo].[vefn_GetVersionMatchingFormatItems](@DocVersionList varchar(MAX), @OldFormatID int, @NewFormatID int) -RETURNS @VersionItems TABLE -( - VersionID int, - ItemID int, - ContentID int primary key, - FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - BEGIN - -- recursive, walk through content, items and parts table to find children - -- ('with' makes it recursive, which is called cte, common table expressions, in sql) - with Itemz([VersionID], [ItemID], [ContentID], [FormatID]) as - (Select DV.VersionID, [I].[ItemID], [I].[ContentID], C.[FormatID] - FROM [Items] I - JOIN vefn_DocVersionSplit(@DocVersionList) DV ON I.[ItemID] = DV.[ItemID] -- get first procedure for each doc version in list - join docversions DV2 on DV.[VersionID] = DV2.[VersionID] - join Contents C on I.ContentID = C.ContentID - where (C.FormatID is null or C.FormatID = @OldFormatID or C.FormatID = @NewFormatID) - Union All - -- Children : get sections off procedures and subsections off sections - select Z.VersionID, I.[ItemID], I.[ContentID], C.[FormatID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on I.ContentID = C.ContentID - where C.Type < 20000 and (C.FormatID is null or C.FormatID = @OldFormatID or C.FormatID = @NewFormatID) and (Z.[FormatID] is null or Z.[FormatID] = @OldFormatID or Z.FormatID = @NewFormatID) - Union All - -- Siblings : get remaining items (procedure and section) - select Z.VersionID, I.[ItemID], I.[ContentID], C.[FormatID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on I.ContentID = C.ContentID - where C.Type < 20000 - ) - insert into @VersionItems - select VersionID, [ItemID], [ContentID], [FormatID] - from ItemZ I - where [FormatID] = @OldFormatID or [FormatID] = @NewFormatID - OPTION (MAXRECURSION 10000) - END -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vefn_GetVersionMatchingFormatItems] Succeeded' -ELSE PRINT 'StoredProcedure [vefn_GetVersionMatchingFormatItems] Error on Creation' -go - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetFolderMatchingFormatItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetFolderMatchingFormatItems]; -GO -CREATE FUNCTION [dbo].[vefn_GetFolderMatchingFormatItems](@FolderID int, @OldFormatID int, @NewFormatID int) -RETURNS @VersionItems TABLE -( - VersionID int, - ItemID int, - ContentID int primary key, - FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @DocVersionList NVARCHAR(MAX) -- get list of docversions for a folder: - BEGIN - With Folderz([FolderID]) as - ( - select FF.FolderID from Folders FF - Where FF.FolderID = @FolderID - UNION ALL - select FF.FolderID from Folders FF - Join Folderz ZZ on FF.ParentID = ZZ.FolderID - Where FF.FolderID != @FolderID and (FF.FormatID is null or FF.FormatID = @OldFormatID or FF.FormatID = @NewFormatID) - ) - select @DocVersionList = coalesce(@DocVersionList+',','')+cast(VersionId as varchar(255)) - from Folderz ZZ - Left Join DocVersions DV ON DV.FolderID = ZZ.FolderID - where VersionID is not null and (DV.FormatID is null or DV.FormatID = @OldFormatID or DV.FormatID = @NewFormatID) - order by versionID - OPTION (MAXRECURSION 10000) -END - BEGIN - -- recursive, walk through content, items and parts table to find children - -- ('with' makes it recursive, which is called cte, common table expressions, in sql) - with Itemz([VersionID], [ItemID], [ContentID], [FormatID]) as - ( - Select DV.VersionID, [I].[ItemID], [I].[ContentID], C.[FormatID] - FROM [Items] I - JOIN vefn_DocVersionSplit(@DocVersionList) DV ON I.[ItemID] = DV.[ItemID] -- get first procedure for each doc version in list - join docversions DV2 on DV.[VersionID] = DV2.[VersionID] - join Contents C on I.ContentID = C.ContentID - where (C.FormatID is null or C.FormatID = @OldFormatID or C.FormatID = @NewFormatID) - Union All - -- Children : get sections off procedures and subsections off sections - select Z.VersionID, I.[ItemID], I.[ContentID], C.[FormatID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on I.ContentID = C.ContentID - where C.Type < 20000 and (C.FormatID is null or C.FormatID = @OldFormatID or C.FormatID = @NewFormatID) and (Z.[FormatID] is null or Z.[FormatID] = @OldFormatID or Z.FormatID = @NewFormatID) - Union All - -- Siblings : get remaining items (procedure and section) - select Z.VersionID, I.[ItemID], I.[ContentID], C.[FormatID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on I.ContentID = C.ContentID - where C.Type < 20000 - ) - insert into @VersionItems - select VersionID, [ItemID], [ContentID], [FormatID] - from ItemZ I - where [FormatID] = @OldFormatID or [FormatID] = @NewFormatID - OPTION (MAXRECURSION 10000) - END -RETURN -END -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vefn_GetFolderMatchingFormatItems] Succeeded' -ELSE PRINT 'StoredProcedure [vefn_GetFolderMatchingFormatItems] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ClearOverrideFormatsByFolder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ClearOverrideFormatsByFolder]; -GO -CREATE PROCEDURE [dbo].[vesp_ClearOverrideFormatsByFolder](@FolderID int, @FormatID int, @NewFormatID int) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @ClearedContents TABLE -( - ContentID int -) -DECLARE @ClearedFolders TABLE -( - FolderID int -) -DECLARE @ClearedDocVersions TABLE -( - VersionID int -) - -insert into @ClearedContents -select cc.ContentID from (select contentid from contents where formatid is not null) cc -join vefn_GetFolderMatchingFormatItems(@FolderID, @FormatID, @NewFormatID) vi on vi.ContentID = cc.ContentID - --- update any folders & docversions that are using that formatid to clear them, i.e. so they inherit. To do this --- get lists of folders & docversions that have non-null format ids that should be null. - -BEGIN -With Folderz([FolderID], [FormatID]) as - ( - select FF.FolderID, FF.FormatID from Folders FF - Where FF.FolderID = @FolderID - UNION ALL - select FF.FolderID, FF.FormatID from Folders FF - Join Folderz ZZ on FF.ParentID = ZZ.FolderID - Where FF.FolderID != @FolderID and (FF.FormatID is null or FF.FormatID = @FormatID or FF.FormatID = @NewFormatID) - ) - insert into @ClearedFolders - select ZZ.FolderID - from Folderz ZZ - where ZZ.FormatID is not null and ZZ.FolderID != @FolderID -- don't include folder passed in, only do children (folder is done in code) - OPTION (MAXRECURSION 10000) -END - -BEGIN -With Folderz([FolderID]) as - ( - select FF.FolderID from Folders FF - Where FF.FolderID = @FolderID - UNION ALL - select FF.FolderID from Folders FF - Join Folderz ZZ on FF.ParentID = ZZ.FolderID - Where FF.FolderID != @FolderID and (FF.FormatID is null or FF.FormatID = @FormatID or FF.FormatID = @NewFormatID) - ) - insert into @ClearedDocVersions - select DV.VersionID - from Folderz ZZ - Left Join DocVersions DV ON DV.FolderID = ZZ.FolderID - where VersionID is not null and DV.FormatID is not null and (DV.FormatID = @FormatID or DV.FormatID = @NewFormatID) - OPTION (MAXRECURSION 10000) -END -update Folders set formatid = null where FolderID in (select FolderID from @ClearedFolders) -update DocVersions set formatid = null where VersionID in (select VersionID from @ClearedDocVersions) - --- now update all of the contents that were found -update contents set formatid = null where contentID in (select contentid from @ClearedContents) - -select [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM contents where contentid in (select ContentID from @ClearedContents) -RETURN -END - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ClearOverrideFormatsByFolder Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ClearOverrideFormatsByFolder Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ClearOverrideFormatsByDocVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ClearOverrideFormatsByDocVersion]; -GO -CREATE PROCEDURE [dbo].[vesp_ClearOverrideFormatsByDocVersion](@DocVersionList varchar(MAX), @FormatID int, @NewFormatID int) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @ClearedContents TABLE -( - ContentID int -) -insert into @ClearedContents -select cc.ContentID from (select contentid from contents where formatid is not null) cc -join vefn_GetVersionMatchingFormatItems(@DocVersionList, @FormatID, @NewFormatID) vi on vi.ContentID = cc.ContentID ---where vi.FormatID = @FormatID --and vi.ParentFormatID = @FormatID -update contents set formatid = null where contentID in (select contentid from @ClearedContents) - -select [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM contents where contentid in (select ContentID from @ClearedContents) -RETURN -END - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ClearOverrideFormatsByDocVersion Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ClearOverrideFormatsByDocVersion Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ClearOverrideFormatsByItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ClearOverrideFormatsByItem]; -GO -CREATE PROCEDURE [dbo].[vesp_ClearOverrideFormatsByItem](@ItemID int, @FormatID int, @NewFormatID int) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @ClearedContents TABLE -( - ContentID int - -) --- to test with the Ginna database: --- vesp_ClearOverrideFormatsByItem 36421, 205 -insert into @ClearedContents -select cc.ContentID from (select contentid, FormatID from contents where formatid is not null) cc -join vefn_GetItemsMatchingFormatItems(@ItemID, @FormatID, @NewFormatID) ci on ci.ContentID = cc.ContentID -update contents set formatid = null where contentID in (select contentid from @ClearedContents) - -select [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM contents where contentid in (select ContentID from @ClearedContents) -RETURN -END - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ClearOverrideFormatsByItem Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ClearOverrideFormatsByItem Error on Creation' -GO - -IF COL_LENGTH('Formats','Name') = 40 -ALTER TABLE [Formats] ALTER COLUMN [Name] [NVARCHAR](100) NOT NULL -IF (@@Error = 0) PRINT 'Alter Table Formats Succeeded' -ELSE PRINT 'Alter Table Formats Error on Alter' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_UpdateVersionFormatForUCF]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE vesp_UpdateVersionFormatForUCF; -GO -CREATE PROCEDURE [dbo].vesp_UpdateVersionFormatForUCF -( - @VersionList nvarchar(MAX), - @OldFormatID int, - @NewFormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @ClearedContents TABLE -( - ContentID int -) --- save the content ids that will have there format changed so that these can be returned to the application --- for a refresh. -insert into @ClearedContents -select contentid from contents where formatID=@OldFormatID and ContentID in (select distinct ContentID from vefn_GetVersionItems(@VersionList) ) - --- reset the oldformat to the newformat. This is used when during an import of procedure(s) in the case where --- all procedures in a set that use the oldformat should be set to the newformat (UCF formats) -UPDATE [Contents] - SET FormatID=@NewFormatID - WHERE FormatID=@OldFormatID AND ContentID in (select distinct ContentID from vefn_GetVersionItems(@VersionList) ) - -select [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM contents where contentid in (select ContentID from @ClearedContents) -END -RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_UpdateVersionFormatForUCF Succeeded' -ELSE PRINT 'Procedure Creation: vesp_UpdateVersionFormatForUCF Error on Creation' -GO - -/****** Object: Table Function [vefn_SiblingAndChildrenItemsNew] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingAndChildrenItemsNew]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SiblingAndChildrenItemsNew]; -GO -/* -select * from vefn_SiblingAndChildrenItemsNew('37','3-', '%rcp%','%rcp%','') where Text like '%rcp%' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2019 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create FUNCTION [dbo].[vefn_SiblingAndChildrenItemsNew](@DocVersionList varchar(MAX),@UnitPrefix varchar(MAX),@SearchString varchar(MAX),@SearchStringx varchar(MAX), @StepTypeList varchar(MAX)) -RETURNS @SiblingAndChildren TABLE -( - [ILastChanged] varbinary(8) - , [ItemID] int PRIMARY KEY - , [DVPath] nvarchar(max) - , [Path] nvarchar(max) - , [FromType] int - , [Ordinal] int - , [ParentID] int - , [PreviousID] int - , [ContentID] int - , [DTS] datetime - , [UserID] nvarchar(100) - , [pContentID] int - , [pDTS] datetime - , [pUserID] nvarchar(100) - , [IsRNO] int - , Text nvarchar(max) - , DocAscii nvarchar(max) - , Number nvarchar(256) - , CType int - , CFormatID int - , CConfig nvarchar(max) - , CDTS datetime - , CUserID nvarchar(100) - , CLastChanged varbinary(8) - , PLastChanged varbinary(8) -) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -BEGIN -with Itemz([ILastChanged], [ItemID], VersionID,[Path], [FromType],[Ordinal], [ParentID], [PreviousID], [ContentID], [DTS], [UserID],[pContentID], - [pDTS],[pUserID],[IsRNO], Text, Number, PPath, CType, CFormatID, CConfig, CDTS, CUserID, CLastChanged, PLastChanged) as ( - Select Cast(I.LastChanged as varbinary(8)) ILastChanged,[I].[ItemID], VersionID, - Cast(Case when C.Type < 20000 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) [Path] - , 0 [FromType], 0 [Ordinal], 0 [ParentID], [PreviousID],[I].[ContentID],[I].[DTS],[I].[UserID] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID],0 IsRNO, C.Text, C.Number, - Cast('' as nvarchar(max)) [PPath], C.Type CType, C.FormatID CFormatID, C.Config CConfig, C.Dts CDTS,C.UserID CUSERID, - Cast(C.LastChanged as varbinary(8)) CLastChanged, Cast(0 as varbinary(8)) PLastChanged - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select Cast(I.LastChanged as varbinary(8)) ILastChanged,I.[ItemID], VersionID, - Path + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Procedure - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Section - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(4)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(4)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(4)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(4)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep + cast(1 as varchar(4)) - when 8 then @DelimStep +'SupInfo' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(4)) - end end Path, - P.[FromType],0 [Ordinal], Z.ItemID [ParentID],I.[PreviousID], I.[ContentID],I.[DTS],I.[UserID], - P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID], - case when P.FromType = 5 then -1 else 0 end IsRNO, - C.Text,c.Number, - Path + case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - when 8 then @DelimStep + 'SupInfo' - else '' end - else '' end [PPath], C.Type CType, C.FormatID CFormatID, C.Config CConfig, C.Dts CDTS,C.UserID CUSERID, - Cast(C.LastChanged as varbinary(8)) CLastChanged, Cast(P.LastChanged as varbinary(8)) PLastChanged - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID - Union All --- Siblings - select Cast(I.LastChanged as varbinary(8)) ILastChanged,I.[ItemID], VersionID, PPath + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Procedure - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Section - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(4)) - end Path, - [FromType],Z.[Ordinal] +1,Z.[ParentID], I.[PreviousID], I.[ContentID],I.[DTS],I.[UserID] - ,null,null,null, - 0 IsRNO, - C.Text, C.Number, - PPath, C.Type CType, C.FormatID CFormatID, C.Config CConfig, C.Dts CDTS,C.UserID CUSERID, - Cast(C.LastChanged as varbinary(8)) CLastChanged, Cast(0 as varbinary(8)) PLastChanged - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 -) - -insert into @SiblingAndChildren -select ZZ.ILastChanged,ZZ.[ItemID], dvpath, [Path],[FromType],[Ordinal], [ParentID], [PreviousID],ZZ.[ContentID],ZZ.[DTS],ZZ.[UserID], - [pContentID],[pDTS],[pUserID],[IsRNO],Text,DocAscii, Number, CType, CFormatID, CConfig, CDTS, CUserID, CLastChanged, PLastChanged - From Itemz ZZ - join vefn_DocVersionSplit(@DocVersionList) DV ON DV.VersionID=zz.VersionID - Left Join Entries EE ON EE.ContentID=ZZ.ContentID - Left Join Documents DD ON DD.DocID = ee.DocID - where (text like @SearchString OR Replace(DD.DocAscii,nchar(176),'\''B0') like @SearchString or text like @SearchStringx OR - Replace(DD.DocAscii,nchar(176),'\''B0') like @SearchStringx ) - and (isnull(@StepTypeList,'') = '' or (dbo.vefn_AllSections(CType) in (Select ID from vefn_SplitInt(@StepTypeList,',')))) - OPTION (MAXRECURSION 10000) -END -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingAndChildrenItemsNew Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SiblingAndChildrenItemsNew Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addItemChild]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addItemChild]; -GO -CREATE PROCEDURE [dbo].[addItemChild] -( - @ItemID int=null, @Number nvarchar(256)=null, @Text nvarchar(MAX)=null, @FormatID int=null, @Config nvarchar(MAX)=null, - @FromType int=null, @Type int=null, @DTS datetime, @UserID nvarchar(100), @newItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @ChildID int, @ContentID int, @ParentContentID int, @LastChanged timestamp - , @newLastChanged timestamp, @Error int, @Rowcount int, @ChildDeleted int - SELECT @ChildID = pp.[ItemID],@ParentContentID = ii.ContentID, @LastChanged = pp.LastChanged - FROM [ITEMS] ii - LEFT JOIN [PARTS] pp on pp.ContentID=ii.ContentID and pp.FromType=@FromType - WHERE ii.[ItemID]=@ItemID - IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[tblParts]') AND OBJECTPROPERTY(id,N'IsTable') = 1) - BEGIN - SELECT @ChildDeleted = pp.[ItemID],@ParentContentID = ii.ContentID, @LastChanged = pp.LastChanged - FROM [ITEMS] ii - LEFT JOIN [tblPARTS] pp on pp.ContentID=ii.ContentID and pp.FromType=@FromType - WHERE ii.[ItemID]=@ItemID and pp.DeleteStatus > 0 - END - EXECUTE AddContent @Number, @Text, @Type, @FormatID, @Config, @DTS, @UserID, @ContentID output, @newLastChanged output - EXECUTE AddItem null, @ContentID, @DTS, @UserID , @newItemID output, @newLastChanged output - IF @ChildID is null -- No existing child - Add Parts record - BEGIN - IF @ChildDeleted is not null - BEGIN --- INSERT INTO [PartAudits] ([ContentID],[FromType],[ItemID],[DTS],[UserID],[DeleteStatus]) --- SELECT [ContentID],[FromType],[ItemID],[DTS],[UserID],[DeleteStatus] FROM [tblParts] --- WHERE ItemID = @ChildDeleted - DELETE FROM [tblParts] WHERE ItemID = @ChildDeleted - END - EXECUTE AddPart @ParentContentID, @FromType, @newItemID, @DTS, @UserID, @newLastChanged output - END - ELSE -- Update existing Parts record - BEGIN - EXECUTE UpdatePart @ParentContentID, @FromType, @newItemID, @DTS, @UserID, @LastChanged, @newLastChanged output - UPDATE [Items] SET [PreviousID]=@newItemID WHERE [ItemID]=@ChildID - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@newItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TT.ToID = @ChildID OR TT.RangeID = @ChildID - -- Update transitions that pointed to @ItemID to point to @newItemID - Update TRANSITIONS - Set ToID = CASE ToID WHEN @ChildID THEN @newItemID ELSE ToID END, - RangeID = CASE RangeID WHEN @ChildID THEN @newItemID ELSE RangeID END - WHERE ToID = @ChildID OR RangeID = @ChildID - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - -- I don't expect to see any transitions that point to @ChildID. They should have changed in - -- the update above to point to @newItemID. This is here for consistency with the other insert - -- stored procedures - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@ChildID,@newItemID) OR RangeID IN(@ChildID,@newItemID)) - -- Transition Text gets updated in ItemInsertExt.cs - END - IF( @@TRANCOUNT > 0 ) COMMIT - PRINT 'Child Added ' + ltrim(str(@newItemID)) - EXECUTE GetItem @newItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addItemChild Succeeded' -ELSE PRINT 'Procedure Creation: addItemChild Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addItemSiblingAfter]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addItemSiblingAfter]; -GO -CREATE PROCEDURE [dbo].[addItemSiblingAfter] -( - @ItemID int=null, @Number nvarchar(256)=null, @Text nvarchar(MAX)=null, @FormatID int=null, @Config nvarchar(MAX)=null, - @Type int=null, @DTS datetime, @UserID nvarchar(100), @newItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @NextID int, @ContentID int, @newLastChanged timestamp, @NewType int - SELECT @NewType=ISNULL(@Type,[Type]) - FROM [ITEMS] II JOIN [CONTENTS] CC ON II.[ContentID]=CC.[ContentID] - WHERE [ItemID]=@ItemID - SELECT @NextID = [ItemID] - FROM [ITEMS] - WHERE [PreviousID]=@ItemID - EXECUTE AddContent @Number, @Text, @NewType, @FormatID, @Config, @DTS, @UserID, @ContentID output, @newLastChanged output - EXECUTE AddItem @ItemID, @ContentID, @DTS, @UserID , @newItemID output, @newLastChanged output - UPDATE [ITEMS] SET [PreviousID]=@newItemID, [DTS]=@DTS, [UserID]=@UserID where [ItemID]=@NextID -- Should be UpdateItem - -- Get a list of Transitions which need to change children of @ItemID that point to @NextID - DECLARE @NextStepTransitions TABLE - ( - [TransitionID] int PRIMARY KEY, - [FromID] [int], - [ToID] [int], - [RangeID] [int], - [TranType] [int], - [Config] [nvarchar](max) - ) - Insert into @NextStepTransitions select * from vefn_NextStepTransitions(@NextID,@ItemID) - IF (SELECT COUNT(*) from @NextStepTransitions) > 0 -- Next Step Transitions - BEGIN - -- Update all transitions in the list to point to @newItemID - Update TT - Set TT.ToID = CASE TT.ToID WHEN @NextID THEN @newItemID ELSE TT.ToID END, - TT.RangeID = CASE TT.RangeID WHEN @NextID THEN @newItemID ELSE TT.RangeID END - From TRANSITIONS TT - JOIN @NextStepTransitions NS ON NS.TransitionID = TT.TransitionID - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,NS.TransitionID,NS.TranType,NS.ToID,NS.RangeID,@NextID,@newItemID) - From CONTENTS CC - JOIN @NextStepTransitions NS ON NS.FromID = CC.ContentID - END - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Next Step Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@newItemID) OR RangeID IN(@newItemID)) - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@NextID) OR RangeID IN(@NextID)) - -- Transition Text gets updated in ItemInsertExt.cs - IF( @@TRANCOUNT > 0 ) COMMIT - EXECUTE GetItem @newItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addItemSiblingAfter Succeeded' -ELSE PRINT 'Procedure Creation: addItemSiblingAfter Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addItemSiblingBefore]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addItemSiblingBefore]; -GO -CREATE PROCEDURE [dbo].[addItemSiblingBefore] -( - @ItemID int=null, @Number nvarchar(256)=null, @Text nvarchar(MAX)=null, @FormatID int=null, @Config nvarchar(MAX)=null, - @Type int=null, @DTS datetime, @UserID nvarchar(100), @newItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @PreviousID int, @ContentID int, @newLastChanged timestamp, @NewType int - SELECT @PreviousID = [PreviousID], @NewType=ISNULL(@Type,[Type]) - FROM [ITEMS] II - JOIN [CONTENTS] CC ON CC.[ContentID]=II.[CONTENTID] - WHERE [ItemID]=@ItemID - EXECUTE AddContent @Number, @Text, @NewType, @FormatID, @Config, @DTS, @UserID, @ContentID output, @newLastChanged output - EXECUTE AddItem @PreviousID, @ContentID, @DTS, @UserID , @newItemID output, @newLastChanged output - UPDATE [ITEMS] SET [PreviousID]=@newItemID where [ItemID]=@ItemID -- Should be UpdateItem - UPDATE [PARTS] SET [ItemID]=@newItemID where [ItemID]=@ItemID -- Should be UpdatePart - IF @PreviousID is null -- The step is replacing the first step - BEGIN - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@newItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TT.ToID = @ItemID OR TT.RangeID = @ItemID - -- Update transitions that pointed to @ItemID to point to @newItemID - Update TRANSITIONS - Set ToID = CASE ToID WHEN @ItemID THEN @newItemID ELSE ToID END, - RangeID = CASE RangeID WHEN @ItemID THEN @newItemID ELSE RangeID END - WHERE ToID = @ItemID OR RangeID = @ItemID - END - ELSE -- Check for Transitions that point to the Next Step - BEGIN - -- Get a list of Transitions which need to change children of @ItemID that point to @NextID - DECLARE @NextStepTransitions TABLE - ( - [TransitionID] int PRIMARY KEY, - [FromID] [int], - [ToID] [int], - [RangeID] [int], - [TranType] [int], - [Config] [nvarchar](max) - ) - Insert into @NextStepTransitions select * from vefn_NextStepTransitions(@ItemID,@PreviousID) - IF (SELECT COUNT(*) from @NextStepTransitions) > 0 -- Next Step Transitions - BEGIN - -- Update all transitions in the list to point to @newItemID - Update TT - Set TT.ToID = CASE TT.ToID WHEN @ItemID THEN @newItemID ELSE TT.ToID END, - TT.RangeID = CASE TT.RangeID WHEN @ItemID THEN @newItemID ELSE TT.RangeID END - From TRANSITIONS TT - JOIN @NextStepTransitions NS ON NS.TransitionID = TT.TransitionID - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,NS.TransitionID,NS.TranType,NS.ToID,NS.RangeID,@ItemID,@newItemID) - From CONTENTS CC - JOIN @NextStepTransitions NS ON NS.FromID = CC.ContentID - END - END - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@ItemID,@newItemID) OR RangeID IN(@ItemID,@newItemID)) - -- Transition Text gets updated in ItemInsertExt.cs - IF( @@TRANCOUNT > 0 ) COMMIT - PRINT 'Sibling Added Before ' + ltrim(str(@newItemID)) - EXECUTE GetItem @newItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addItemSiblingBefore Succeeded' -ELSE PRINT 'Procedure Creation: addItemSiblingBefore Error on Creation' -GO - -/*************** May 2020 - Modifications to search queries to allow for 'ByWord'. To do this a sql prefix and suffix were added -* If search string's adjacent character is text '[^a-zA-Z]' (for example 'red' prefix is next to 'r', suffix is next to 'd') -* If search string's adjacent character is numeric '[^0-9a-zA-Z.vbpi:\\-]' (for example 10%, prefix is next to '1') -*/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixSearchStringByWord]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) -DROP FUNCTION [vefn_FixSearchStringByWord]; -GO - -/* -select .dbo.vefn_FixSearchStringByWord('0%', '[^0-9A-Z.vbpi:\\-]', '') -select .dbo.vefn_FixSearchStringByWord('step 25', '[^a-z]', '[^0-9A-Z.vbpi:\\-]') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FixSearchStringByWord](@SearchString nvarchar(MAX), @Prefix nvarchar(64), @Suffix nvarchar(64)) -RETURNS nvarchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN - -- This code adds % at the beginning and end if the beginning and end - -- of the search string if it does not have % at the beginning or end - Set @SearchString = replace(@SearchString,'[','[[]') - Set @SearchString = replace(@SearchString,'_','[_]') - Set @SearchString = replace(@SearchString,'%','[%]') - Set @SearchString = replace(@SearchString,'*','%') - Set @SearchString = replace(@SearchString,'?','_') - Set @SearchString = replace(@SearchString,'\%','*') - Set @SearchString = replace(@SearchString,'\_','?') - Set @SearchString = replace(@SearchString,'-','\u8209?') - Set @SearchString = replace(@SearchString,'\''A9','\u169?') -- copyright symbol - Set @SearchString = replace(@SearchString,'\''AE','\u174?') -- Register symbol - Set @SearchString = replace(@SearchString,'\\line ','\line ') -- newline - Set @SearchString = replace(@SearchString,'\\','\u9586?') -- use a double backslash to search for a backslash - IF(@SearchString like '[%]%') RETURN '%' + @Prefix + SubString(@SearchString,2,len(@SearchString)) -- beginning of text - IF(@SearchString like '%[%]') RETURN SubString(@SearchString, 0, len(@SearchString)-1) + @Suffix + '%' -- end of text - Set @SearchString = replace('%' + @Prefix + @SearchString + @Suffix + '%','%%','%') - RETURN @SearchString -END -GO --- Display the status -IF (@@Error = 0) PRINT 'ScalerFunction [vefn_FixSearchStringByWord] Succeeded' -ELSE PRINT 'ScalerFunction [vefn_FixSearchStringByWord] Error on Creation' -go - - - - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[vesp_SearchItemAndChildrenNewByWord]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP Procedure [dbo].[vesp_SearchItemAndChildrenNewByWord]; -GO - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -========================================================================================================== - Author: Rich Mark - Create Date: 01/01/2020 - Description: Returns all items mathcing the specified search critera, filtered by a list of specified Document Versions and Step Types - 08/20/2021 Jake Ropar: Add with (NoLock) and Option (Recompile) statements to eliminate UI locking and improve performace, also changed all - Select (*) statements to Select (1) for performace reasons - - Parameters: @DocVersionList Comma delimited list of document version IDs used to filter search results (pass '' or null to include all versions) - @StepTypeList Comma delimited list of of step types used to filter search results (pass '' or null to include all step type sections) - @SearchString Search string criteria - @CaseSensitive Indicator for Case Sensitive Search (0 = False, 1 = True) - @IncludeLinks Indicator to include Links in results (0 = False, 1 = True) - @IncludeRtfFormatting Indicator to include RTF Formatting in results (0 = False, 1 = True) - @IncludeSpecialCharacters Indicator to include Special Characters in results (0 = False, 1 = True) - @UnitPrefix Specified Unit Prefix if any - @ByWordPrefix Word Prefix for the specified search string criteria - @ByWordSuffix Word Suffix for the specified search string criteria - - - Examples: exec vesp_SearchItemAndChildrenNewByWord '194','','red',0,0,0,0,'','[^a-z]','[^a-z]'; - exec vesp_SearchItemAndChildrenNewByWord '194','','0%',0,0,0,0,'','[^0-9A-Z.vbpi:\\-]',''; - exec vesp_SearchItemAndChildrenNewByWord '194','','10%',0,0,0,0,'','[^0-9A-Z.vbpi:\\-]',''; - exec vesp_SearchItemAndChildrenNewByWord '194','','25%',0,0,0,0,'','[^0-9A-Z.vbpi:\\-]','[^0-9A-Z.vbpi:\\-]'; - exec vesp_SearchItemAndChildrenNewByWord '194','','25%',0,0,0,0,'','','[^0-9A-Z.vbpi:\\-]'; - exec vesp_SearchItemAndChildrenNewByWord '194','','25%',0,0,0,0,'','[^0-9A-Z.vbpi:\\-]',''; - exec vesp_SearchItemAndChildrenNewByWord '194','','step 25',0,0,0,1,'','[^a-zA-Z]','[^0-9a-zA-Z.vbpi:\\-]'; - exec vesp_SearchItemAndChildrenNewByWord '194','','25',0,0,0,0,'','',''; -========================================================================================================== - */ -Create Procedure [dbo].[vesp_SearchItemAndChildrenNewByWord] (@DocVersionList VarChar(Max), @StepTypeList VarChar(Max), @SearchString VarChar(Max), @CaseSensitive Int, - @IncludeLinks Int, @IncludeRtfFormatting Int, @IncludeSpecialCharacters Int, @UnitPrefix VarChar(Max), - @ByWordPrefix VarChar(64), @ByWordSuffix VarChar(64)) -With Execute As Owner -As -Begin - - Set NoCount On; - - -- Declare Local Variables - Declare @TextPrefix nVarChar(1); - Declare @TextSuffix nVarChar(1); - Declare @SearchStringx nVarChar(200); - - -- Set Default Values - Set @TextPrefix = ''; - Set @TextSuffix = ''; - - Set @SearchString = dbo.vefn_FixSearchStringByWord(@SearchString, @ByWordPrefix, @ByWordSuffix); - If (@SearchString like '[%]%') Set @TextPrefix = '~'; - If (@SearchString like '%[%]') Set @TextSuffix = '~'; - Set @SearchStringx = Replace(@SearchString,'\u8209?','-') -- [John Jenko] B2016-209: not finding dashes in Word sections (FixSearchString converts '-' to '\u8209?') - - - If (@IncludeLinks + @IncludeRtfFormatting + @IncludeSpecialCharacters = 0) - Begin - - If (@CaseSensitive = 0) - Begin - - --Select 'Case #1: No Links/RtfFormatting/SpecialCharacters & Not Case Sensitive'; - - Select z.DvPath as 'DvPath', - z.[Path] as 'Path', - z.FromType as 'FromType', - z.Ordinal as 'Ordinal', - z.ParentID as 'ParentID', - z.ItemID as 'ItemID', - z.PreviousID as 'PreviousID', - z.ContentID as 'ContentID', - z.DTS as 'DTS', - z.UserID as 'UserID', - z.ILastChanged as 'ILastChanged', - z.Number as 'Number', - z.[Text] as 'Text', - z.CType as 'Type', - z.CFormatID as 'FormatID', - z.CConfig as 'Config', - z.CDTS as 'CDTS', - z.CUserID as 'CUserID', - z.CLastChanged as 'cLastChanged', - z.pContentID as 'pContentID', - z.pDTS as 'pDTS', - z.pUserID as 'pUserID', - z.PLastChanged as 'pLastChanged', - (Select Count(1) From Annotations a with (NoLock) Where a.ItemID = z.ItemID) as 'AnnotationCount', - (Select Count(1) From DocVersions dv with (NoLock) Where dv.ItemID = z.ItemID) as 'DocVersionCount', - (Select Count(1) From Items i with (NoLock) Where i.PreviousID = z.ItemID) as 'NextCount', - (Select Count(1) From Parts p with (NoLock) Where p.ItemID = z.ItemID) as 'PartCount', - (Select Count(1) From Transitions t with (NoLock) Where t.RangeID = z.ItemID) as 'Transition_RangeIDCount', - (Select Count(1) From Transitions t with (NoLock) Where t.ToID = z.ItemID) as 'Transition_ToIDCount', - (Select Count(1) From Details d with (NoLock) Where d.ContentID = z.ContentID) as 'DetailCount', - (Select Count(1) From Entries e with (NoLock) Where e.ContentID = z.ContentID) as 'EntryCount', - (Select Count(1) From Grids g with (NoLock) Where g.ContentID = z.ContentID) as 'GridCount', - (Select Count(1) From Images i with (NoLock) Where i.ContentID = z.ContentID) as 'ImageCount', - (Select Count(1) From Items i with (NoLock) Where i.ContentID = z.ContentID) as 'ItemCount', - (Select Count(1) From Parts p with (NoLock) Where p.ContentID = z.ContentID) as 'cPartCount', - (Select Count(1) From RoUsages ru with (NoLock) Where ru.ContentID = z.ContentID) as 'RoUsageCount', - (Select Count(1) From Transitions t with (NoLock) Where t.FromID = z.ContentID) as 'TransitionCount', - (Select Count(1) From ZContents zc with (NoLock) Where zc.ContentID = z.ContentID) as 'ZContentCount' - From dbo.vefn_SiblingAndChildrenItemsNewByWord(@DocVersionList, @UnitPrefix, @SearchString, @SearchStringx, @StepTypeList, @includeLinks, @includeRtfFormatting, @includeSpecialCharacters) z - Order By z.DvPath Asc - Option (Recompile); - - End - Else - Begin - - --Select 'Case #2: No Links/RtfFormatting/SpecialCharacters & Case Sensitive'; - - Select z.DvPath as 'DvPath', - z.[Path] as 'Path', - z.FromType as 'FromType', - z.Ordinal as 'Ordinal', - z.ParentID as 'ParentID', - z.ItemID as 'ItemID', - z.PreviousID as 'PreviousID', - z.ContentID as 'ContentID', - z.DTS as 'DTS', - z.UserID as 'UserID', - z.ILastChanged as 'ILastChanged', - z.Number as 'Number', - z.[Text] as 'Text', - z.CType as 'Type', - z.CFormatID as 'FormatID', - z.CConfig as 'Config', - z.CDTS as 'CDTS', - z.CUserID as 'CUserID', - z.CLastChanged as 'cLastChanged', - z.pContentID as 'pContentID', - z.pDTS as 'pDTS', - z.pUserID as 'pUserID', - z.PLastChanged as 'pLastChanged', - (Select Count(1) From Annotations a with (NoLock) Where a.ItemID = z.ItemID) as 'AnnotationCount', - (Select Count(1) From DocVersions dv with (NoLock) Where dv.ItemID = z.ItemID) as 'DocVersionCount', - (Select Count(1) From Items i with (NoLock) Where i.PreviousID = z.ItemID) as 'NextCount', - (Select Count(1) From Parts p with (NoLock) Where p.ItemID = z.ItemID) as 'PartCount', - (Select Count(1) From Transitions t with (NoLock) Where t.RangeID = z.ItemID) as 'Transition_RangeIDCount', - (Select Count(1) From Transitions t with (NoLock) Where t.ToID = z.ItemID) as 'Transition_ToIDCount', - (Select Count(1) From Details d with (NoLock) Where d.ContentID = z.ContentID) as 'DetailCount', - (Select Count(1) From Entries e with (NoLock) Where e.ContentID = z.ContentID) as 'EntryCount', - (Select Count(1) From Grids g with (NoLock) Where g.ContentID = z.ContentID) as 'GridCount', - (Select Count(1) From Images i with (NoLock) Where i.ContentID = z.ContentID) as 'ImageCount', - (Select Count(1) From Items i with (NoLock) Where i.ContentID = z.ContentID) as 'ItemCount', - (Select Count(1) From Parts p with (NoLock) Where p.ContentID = z.ContentID) as 'cPartCount', - (Select Count(1) From RoUsages ru with (NoLock) Where ru.ContentID = z.ContentID) as 'RoUsageCount', - (Select Count(1) From Transitions t with (NoLock) Where t.FromID = z.ContentID) as 'TransitionCount', - (Select Count(1) From ZContents zc with (NoLock) Where zc.ContentID = z.ContentID) as 'ZContentCount' - From dbo.vefn_SiblingAndChildrenItemsNewByWord(@DocVersionList, @UnitPrefix, @SearchString, @SearchStringx, @StepTypeList, @includeLinks, @includeRtfFormatting, @includeSpecialCharacters) z - Where (@TextPrefix + z.Text + @TextSuffix Collate SQL_Latin1_General_CP1_CS_AS like @SearchString - or @TextPrefix + z.Text + @TextSuffix Collate SQL_Latin1_General_CP1_CS_AS like @SearchStringx - or Replace(z.DocAscii,nChar(176),'\''B0') Collate SQL_Latin1_General_CP1_CS_AS like @SearchString - or Replace(z.DocAscii,nChar(176),'\''B0') Collate SQL_Latin1_General_CP1_CS_AS like @SearchStringx) - Order By z.DvPath Asc - Option (Recompile); - - End - - End -- no links - - Else - - Begin -- include linked text - - If (@CaseSensitive = 0) - Begin - - --Select 'Case #3: Include Links/RtfFormatting/SpecialCharacters & Not Case Sensitive'; - - Select z.DvPath as 'DvPath', - z.[Path] as 'Path', - z.FromType as 'FromType', - z.Ordinal as 'Ordinal', - z.ParentID as 'ParentID', - z.ItemID as 'ItemID', - z.PreviousID as 'PreviousID', - z.ContentID as 'ContentID', - z.DTS as 'DTS', - z.UserID as 'UserID', - z.ILastChanged as 'ILastChanged', - z.Number as 'Number', - z.[Text] as 'Text', - z.CType as 'Type', - z.CFormatID as 'FormatID', - z.CConfig as 'Config', - z.CDTS as 'CDTS', - z.CUserID as 'CUserID', - z.CLastChanged as 'cLastChanged', - z.pContentID as 'pContentID', - z.pDTS as 'pDTS', - z.pUserID as 'pUserID', - z.PLastChanged as 'pLastChanged', - (Select Count(1) From Annotations a with (NoLock) Where a.ItemID = z.ItemID) as 'AnnotationCount', - (Select Count(1) From DocVersions dv with (NoLock) Where dv.ItemID = z.ItemID) as 'DocVersionCount', - (Select Count(1) From Items i with (NoLock) Where i.PreviousID = z.ItemID) as 'NextCount', - (Select Count(1) From Parts p with (NoLock) Where p.ItemID = z.ItemID) as 'PartCount', - (Select Count(1) From Transitions t with (NoLock) Where t.RangeID = z.ItemID) as 'Transition_RangeIDCount', - (Select Count(1) From Transitions t with (NoLock) Where t.ToID = z.ItemID) as 'Transition_ToIDCount', - (Select Count(1) From Details d with (NoLock) Where d.ContentID = z.ContentID) as 'DetailCount', - (Select Count(1) From Entries e with (NoLock) Where e.ContentID = z.ContentID) as 'EntryCount', - (Select Count(1) From Grids g with (NoLock) Where g.ContentID = z.ContentID) as 'GridCount', - (Select Count(1) From Images i with (NoLock) Where i.ContentID = z.ContentID) as 'ImageCount', - (Select Count(1) From Items i with (NoLock) Where i.ContentID = z.ContentID) as 'ItemCount', - (Select Count(1) From Parts p with (NoLock) Where p.ContentID = z.ContentID) as 'cPartCount', - (Select Count(1) From RoUsages ru with (NoLock) Where ru.ContentID = z.ContentID) as 'RoUsageCount', - (Select Count(1) From Transitions t with (NoLock) Where t.FromID = z.ContentID) as 'TransitionCount', - (Select Count(1) From ZContents zc with (NoLock) Where zc.ContentID = z.ContentID) as 'ZContentCount' - From dbo.vefn_SiblingAndChildrenItemsNewByWord(@DocVersionList, @UnitPrefix, @SearchString, @SearchStringx, @StepTypeList, @includeLinks, @includeRtfFormatting, @includeSpecialCharacters) z - Where (dbo.vefn_RemoveExtraText(@TextPrefix + z.Text + @TextSuffix, @IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) Collate SQL_Latin1_General_CP1_CI_AS like @SearchString - Or dbo.vefn_RemoveExtraText(@TextPrefix + z.Text + @TextSuffix, @IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) Collate SQL_Latin1_General_CP1_CI_AS like @SearchStringx - Or Replace(z.DocAscii, nChar(176), '\''B0') Collate SQL_Latin1_General_CP1_CI_AS like @SearchString - Or Replace(z.DocAscii, nChar(176), '\''B0') Collate SQL_Latin1_General_CP1_CI_AS like @SearchStringx) - Order By z.DvPath Asc - Option (Recompile); - - End - - Else -- case sensitive - - Begin - - --Select 'Case #4: Include Links/RtfFormatting/SpecialCharacters & Case Sensitive'; - - Select z.DvPath as 'DvPath', - z.[Path] as 'Path', - z.FromType as 'FromType', - z.Ordinal as 'Ordinal', - z.ParentID as 'ParentID', - z.ItemID as 'ItemID', - z.PreviousID as 'PreviousID', - z.ContentID as 'ContentID', - z.DTS as 'DTS', - z.UserID as 'UserID', - z.ILastChanged as 'ILastChanged', - z.Number as 'Number', - z.[Text] as 'Text', - z.CType as 'Type', - z.CFormatID as 'FormatID', - z.CConfig as 'Config', - z.CDTS as 'CDTS', - z.CUserID as 'CUserID', - z.CLastChanged as 'cLastChanged', - z.pContentID as 'pContentID', - z.pDTS as 'pDTS', - z.pUserID as 'pUserID', - z.PLastChanged as 'pLastChanged', - (Select Count(1) From Annotations a with (NoLock) Where a.ItemID = z.ItemID) as 'AnnotationCount', - (Select Count(1) From DocVersions dv with (NoLock) Where dv.ItemID = z.ItemID) as 'DocVersionCount', - (Select Count(1) From Items i with (NoLock) Where i.PreviousID = z.ItemID) as 'NextCount', - (Select Count(1) From Parts p with (NoLock) Where p.ItemID = z.ItemID) as 'PartCount', - (Select Count(1) From Transitions t with (NoLock) Where t.RangeID = z.ItemID) as 'Transition_RangeIDCount', - (Select Count(1) From Transitions t with (NoLock) Where t.ToID = z.ItemID) as 'Transition_ToIDCount', - (Select Count(1) From Details d with (NoLock) Where d.ContentID = z.ContentID) as 'DetailCount', - (Select Count(1) From Entries e with (NoLock) Where e.ContentID = z.ContentID) as 'EntryCount', - (Select Count(1) From Grids g with (NoLock) Where g.ContentID = z.ContentID) as 'GridCount', - (Select Count(1) From Images i with (NoLock) Where i.ContentID = z.ContentID) as 'ImageCount', - (Select Count(1) From Items i with (NoLock) Where i.ContentID = z.ContentID) as 'ItemCount', - (Select Count(1) From Parts p with (NoLock) Where p.ContentID = z.ContentID) as 'cPartCount', - (Select Count(1) From RoUsages ru with (NoLock) Where ru.ContentID = z.ContentID) as 'RoUsageCount', - (Select Count(1) From Transitions t with (NoLock) Where t.FromID = z.ContentID) as 'TransitionCount', - (Select Count(1) From ZContents zc with (NoLock) Where zc.ContentID = z.ContentID) as 'ZContentCount' - From dbo.vefn_SiblingAndChildrenItemsNewByWord(@DocVersionList, @UnitPrefix, @SearchString, @SearchStringx, @StepTypeList, @includeLinks, @includeRtfFormatting, @includeSpecialCharacters) z - Where (dbo.vefn_RemoveExtraText(Replace(@TextPrefix + z.Text + @TextSuffix,'\''b0', '\''B0'), @IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) Collate SQL_Latin1_General_CP1_CS_AS like Replace(@SearchString,'\''b0', '\''B0') - Or dbo.vefn_RemoveExtraText(Replace(@TextPrefix + z.Text + @TextSuffix,'\''b0', '\''B0'), @IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) Collate SQL_Latin1_General_CP1_CS_AS like Replace(@SearchStringx,'\''b0', '\''B0') - Or Replace(z.DocAscii,nChar(176),'\''B0') Collate SQL_Latin1_General_CP1_CS_AS like @SearchString - Or Replace(z.DocAscii,nChar(176),'\''B0') Collate SQL_Latin1_General_CP1_CS_AS like @SearchStringx) - Order By z.DvPath Asc - Option (Recompile); - - End - - End -- include links - -End -Go - -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchItemAndChildrenNewByWord Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchItemAndChildrenNewByWord Error on Creation' -GO - - - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DeleteItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [DeleteItemAndChildren]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[DeleteItemAndChildren] -( - @ItemID int, - @UserID AS VARCHAR(100) -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - declare @DeleteID int - DECLARE @ContentID AS INT - DECLARE @NextItemID AS INT - DECLARE @PreviousItemID AS INT - DECLARE @ExternalChildCount AS INT - DECLARE @ExternalCount AS INT - DECLARE @ItemType AS INT - DECLARE @Path AS VARCHAR(MAX) - DECLARE @Children AS TABLE - ( - ItemID INT PRIMARY KEY, - ContentID INT - ) - DECLARE @ExternalTrans TABLE - ( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL - ) - SET NOCOUNT ON - SELECT @ContentID = ContentID, @PreviousItemID = PreviousID FROM Items WHERE ItemID = @ItemID - SELECT @NextItemID = ItemID FROM Items WHERE PreviousID = @ItemID - SELECT @ItemType = Type FROM Contents Where ContentID = @ContentID - SET @Path = [dbo].[ve_GetShortPath](@ItemID) - - SELECT @ExternalCount = count(*) FROM vefn_FindExternalTransitions(@ItemID) where rangeid = toid or toid = @ItemID - IF @ExternalCount > 0 AND @NextItemID is null - BEGIN - RAISERROR ('###Cannot Delete Item###Step %d has External Transitions and has no next step - (%s)',16,1,@ItemID,@Path) - RETURN - END - - IF @ExternalCount > 0 AND @ItemType < 10000 - BEGIN - RAISERROR ('###Cannot Delete Item###Procedure %d has External Transitions to Procedure - (%s)',16,1,@ItemID,@Path) - RETURN - END - IF @ExternalCount > 0 AND @ItemType < 20000 -- B2020-091 (was not checking for sections) - BEGIN - RAISERROR ('###Cannot Delete Item###Procedure %d has External Transitions to Section - (%s)',16,1,@ItemID,@Path) - RETURN - END - SELECT @ExternalChildCount = count(*) FROM vefn_FindExternalChildTransitions(@ItemID) - - -- Check to see if External Transitions point to the current item - IF @ExternalChildCount > 0 - BEGIN - RAISERROR ('###Cannot Delete Item###Step %d has External Transitions to it''s children - (%s)',16,1,@ItemID,@Path) - RETURN - END - --deletelog - INSERT INTO DeleteLog (UserID) values (@UserID) - Select @DeleteID = SCOPE_IDENTITY() - --end deletelog - -- Get list of Children - INSERT INTO @Children SELECT * FROM vefn_ChildItems(@ItemID) - -- UPDATE PreviousID in Items WHERE ItemID = @NextItemID - UPDATE Items SET PreviousID = @PreviousItemID WHERE ItemID=@NextItemID - -- UPDATE DocVersion - UPDATE DocVersions SET ItemID=@NextItemID where ItemID = @ItemID - -- UPDATE Parts - IF @NextItemID is not NULL -- Remove Part Record - BEGIN - UPDATE PARTS SET ItemID = @NextItemID where ItemID=@ItemID - END - ELSE - BEGIN - DELETE FROM Parts WHERE ItemID=@ItemID - END - -- Get external transitions that point to the specified Item - -- These will need to be adjusted to point to the next Item. - INSERT INTO @ExternalTrans SELECT * FROM vefn_FindExternalTransitions(@ItemID); - DECLARE @typeID int -- AnnotationType - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add 'Verification Required' annotions for transtions that point to different step - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where ItemID in (SELECT FromItemID FROM @ExternalTrans) - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NextItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID != @ItemID or RangeID = ToID) - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@PreviousItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID = @ItemID and RangeID != ToID) - -- Update transitions that point to @ItemID to Point to @NextItemID - UPDATE TRANSITIONS - SET ToID = case when ToID = @ItemID then @NextItemID else ToID END, - RangeID = case when RangeID = @ItemID then @NextItemID else RangeID END - WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID != @ItemID or RangeID = ToID) - UPDATE TRANSITIONS - SET ToID = case when ToID = @ItemID then @NextItemID else ToID END, - RangeID = case when RangeID = @ItemID then @PreviousItemID else RangeID END - WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID = @ItemID and RangeID != ToID) - -- Delete Annotations for @ItemID and children - DELETE from Annotations where ItemID in(Select ItemID from @Children) - -- Delete Details associated with @ContentID and children - DELETE from Details where ContentID in(Select ContentID from @Children) - -- Delete Grids associated with @ContentID and children - DELETE from Grids where ContentID in(Select ContentID from @Children) - -- Delete Images associated with @ContentID and children - DELETE from Images where ContentID in(Select ContentID from @Children) - -- Delete Entries associated with @ContentID and children - DELETE from Entries where ContentID in(Select ContentID from @Children) - -- Delete ROUsages associated with @ContentID and children - DELETE from RoUsages where ContentID in(Select ContentID from @Children) - -- Delete ZTransitions records associated with @ContentID and children - DELETE FROM ZTransitions where TransitionID - in(SELECT TransitionID from Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID) - -- Delete Transitions associated with @ContentID and children - DELETE FROM Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID - -- Delete Parts associated with @ContentID and children - DELETE from Parts where ContentID in(Select ContentID from @Children) - -- Delete ZContents associated with @ContentID and children - DELETE from ZContents where ContentID in(Select ContentID from @Children) - -- Disconnect Items from Each Other - DELETE from Items where ItemID in(Select ItemID from @Children) and PreviousID Is Not Null - -- Disconnect Items to be deleted from each other - Update Items set PreviousID = null where ItemID in (Select ItemID from @Children) and PreviousID Is Not Null - -- Delete Item Records - DELETE from Items where ItemID in(Select ItemID from @Children) - -- Remove Previously deleted transitions - DELETE from tblTransitions where deletestatus = -1 and FromID in(SELECT ContentID FROM @Children) - -- Remove Previously deleted rousages - DELETE from tblrousages where deletestatus = -1 and contentID in(SELECT ContentID FROM @Children) - -- DELETE Contents - DELETE from Contents where ContentID in(Select ContentID from @Children) - --purge deletelog - DELETE from DeleteLog where DeleteID = @DeleteID - --end purge deletelog - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH - GO -IF (@@Error = 0) PRINT 'Procedure Creation: [DeleteItemAndChildren] Succeeded' -ELSE PRINT 'Procedure Creation: [DeleteItemAndChildren] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionCanCheckOutItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [vesp_SessionCanCheckOutItem]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -exec dbo.vesp_SessionCanCheckOutItem 1,2 -exec dbo.vesp_SessionCanCheckOutItem 21,3 -*/ -CREATE PROCEDURE [dbo].[vesp_SessionCanCheckOutItem] -( - @ObjectID int, - @ObjectType int -) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @CheckOuts TABLE - ( - SessionID int - ) - --look to see if anyone else has a session. if they do, then cannot check out - DECLARE @sCount int - SELECT @sCount = count(*) FROM Sessions - IF @ObjectType = 4 BEGIN - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID], - (select convert(bigint,max(lastchanged)) from contents) LastContentChange - FROM [Sessions] - WHERE DTSEnd IS NULL - END - ELSE - BEGIN - DECLARE @ObjectAndEnhancedIDs Table - ( - ObjectID int - ) - IF @ObjectType = 0 BEGIN - INSERT INTO @ObjectAndEnhancedIDs - select ItemID from vefn_GetEnhancedProcedures(@ObjectID) - END - ELSE IF @ObjectType = 2 BEGIN - INSERT INTO @ObjectAndEnhancedIDs - select VersionID from vefn_GetEnhancedDocVersions(@ObjectID) - INSERT INTO @ObjectAndEnhancedIDs -- B2020-094: Check current docversion - select VersionID from DocVersions where VersionId = @ObjectID - END - ELSE IF @ObjectType = 3 BEGIN - INSERT INTO @ObjectAndEnhancedIDs - select FolderID from vefn_GetEnhancedFolders(@ObjectID) - INSERT INTO @ObjectAndEnhancedIDs -- B2020-094: Check current folder - select FolderID from Folders where FolderID = @ObjectID - END - ELSE BEGIN - INSERT INTO @ObjectAndEnhancedIDs select @ObjectID - END - INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners - WHERE OwnerItemID in (select ObjectID from @ObjectAndEnhancedIDs) AND OwnerType = @ObjectType - IF @ObjectType = 2 - BEGIN - with ItemZ (VersionID,ItemID,PreviousID,SessionID) - as( - --> Procedure Owners - select null,II.ItemID, PreviousID, SessionID - from Owners OO - Join Items II on OO.OwnerItemID= II.ItemID - Where OO.OwnerType=0 - UNION ALL --> Document Owners - select null,II.ItemID, PreviousID, SessionID - from Owners OO - Join Entries EE ON OO.OwnerItemID = EE.DocID - Join Items II on EE.ContentID= II.ContentID - Where OO.OwnerType=1 - UNION ALL --> Previous Owners - Select null, ii.ItemID, ii.PreviousID,ZZ.SessionID From ItemZ ZZ - Join Items II ON II.ItemID = ZZ.PreviousID - Where ZZ.VersionID IS NULL and ZZ.PreviousID IS NOT NULL - UNION ALL -- Parts Owners - Select null, II.ItemID, II.PreviousID, ZZ.SessionID - from ItemZ ZZ - Join Parts PP ON PP.ItemID = ZZ.ItemID - Join Items II ON II.ContentID = PP.ContentID - Where ZZ.VersionID IS NULL - UNION ALL -- Version Owners - Select DV.VersionID,null,null,ZZ.SessionID From ItemZ ZZ - Join DocVersions DV ON ZZ.ItemID = DV.ItemID - Where ZZ.VersionID IS NULL AND ZZ.PreviousID IS NULL - ) - --Select Distinct 'Phase 2b' Result, * from Itemz - INSERT INTO @CheckOuts - Select DIstinct SessionID from ItemZ - where VersionID in(select ObjectID FROM @ObjectAndEnhancedIDs) - OPTION (MAXRECURSION 10000) -- B2017-144 Crash on Maximum Recursion - END - --look to see if object type is folder that no part of folder passed is checked out - IF @ObjectType = 3 BEGIN - with ItemZ (VersionID,ItemID,PreviousID,SessionID) - as( - --> Procedure Owners - select null,II.ItemID, PreviousID, SessionID - from Owners OO - Join Items II on OO.OwnerItemID= II.ItemID - Where OO.OwnerType=0 - UNION ALL --> Document Owners - select null,II.ItemID, PreviousID, SessionID - from Owners OO - Join Entries EE ON OO.OwnerItemID = EE.DocID - Join Items II on EE.ContentID= II.ContentID - Where OO.OwnerType=1 - UNION ALL --> Previous Owners - Select null, ii.ItemID, ii.PreviousID,ZZ.SessionID From ItemZ ZZ - Join Items II ON II.ItemID = ZZ.PreviousID - Where ZZ.VersionID IS NULL and ZZ.PreviousID IS NOT NULL - UNION ALL -- Parts Owners - Select null, II.ItemID, II.PreviousID, ZZ.SessionID - from ItemZ ZZ - Join Parts PP ON PP.ItemID = ZZ.ItemID - Join Items II ON II.ContentID = PP.ContentID - Where ZZ.VersionID IS NULL - UNION ALL -- Version Owners - Select DV.VersionID,null,null,ZZ.SessionID From ItemZ ZZ - Join DocVersions DV ON ZZ.ItemID = DV.ItemID - Where ZZ.VersionID IS NULL AND ZZ.PreviousID IS NULL - ) - --Select Distinct 'Phase 2b' Result, * from Itemz - INSERT INTO @CheckOuts - Select DIstinct SessionID from ItemZ - where VersionID in(select ObjectID FROM @ObjectAndEnhancedIDs) - OPTION (MAXRECURSION 10000) -- B2017-144 Crash on Maximum Recursion - END - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID], - (select convert(bigint,max(lastchanged)) from contents) LastContentChange - FROM [Sessions] - WHERE [SessionID] IN (SELECT SessionID FROM @CheckOuts) - END -END -GO -IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_SessionCanCheckOutItem] Succeeded' -ELSE PRINT 'Procedure Creation: [vesp_SessionCanCheckOutItem] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CheckAllXML]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) -DROP FUNCTION [vefn_CheckAllXML]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2021 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_CheckAllXML](@DocVersionID int) -returns xml -begin ---temp table for sibling itemid - declare @tItems table (ItemID int) - insert into @tItems - select itemid from vefn_siblingitems((select itemid from docversions where versionid = @docversionid),0) ---temp table for max checkid - declare @tChecks table (CheckID int) - insert into @tChecks - select max(cc.checkid) checkid from checks cc - inner join stages ss on cc.stageid = ss.stageid - inner join revisions rr on cc.revisionid = rr.revisionid - inner join @tItems ii on rr.itemid = ii.itemid -- B2021-025: get only items in procedures in this docversion - where ss.isapproved = 1 group by rr.itemid ---temp table for multi valued roids - declare @mvROIDS table (ROID varchar(max)) - insert into @mvROIDS - select roid from (select distinct r1.value('@ROID','varchar(max)') roid,r1.value('@ROValue','varchar(max)') rovalue - from checks cc join @tchecks tc on cc.checkid = tc.checkid cross apply cc.consistencychecks.nodes('//ROCheck') t1(r1)) t1 group by roid having count(*) > 1 ---temp table for multi valued transitionids - declare @mvTransitions table (TransitionID int) - insert into @mvTransitions - select transitionid from (select distinct r1.value('@TransitionID','int') transitionid,r1.value('@TransitionValue','varchar(max)') transitionvalue - from checks cc cross apply cc.consistencychecks.nodes('//TransitionCheck') t1(r1)) t1 group by transitionid having count(*) > 1 ---temp table for multi valued docids - declare @mvLibDocs table (DocID int) - insert into @mvLibDocs - select docid from (select distinct r1.value('@DocID','int') docid,r1.value('@DocDate','datetime') docdate - from checks cc cross apply cc.consistencychecks.nodes('//LibDocCheck') t1(r1)) t1 group by docid having count(*) > 1 ---temp table for roids - declare @tROIDS table (ItemID int,ROID varchar(max),ROValue varchar(max),CheckID int) - insert into @tROIDS - select rr.itemid,r1.value('@ROID','varchar(max)') roid,r1.value('@ROValue','varchar(max)') rovalue, cc.checkid - from checks cc inner join revisions rr on cc.revisionid = rr.revisionid - cross apply cc.consistencychecks.nodes('//ROCheck') t1(r1) ---temp table for transitions - declare @tTransitions table (ItemID int,TransitionID int,TransitionValue varchar(max),CheckID int) - insert into @tTransitions - select rr.itemid,r1.value('@TransitionID','int') transitionid,r1.value('@TransitionValue','varchar(max)') transitionvalue,cc.checkid - from checks cc inner join revisions rr on cc.revisionid = rr.revisionid - cross apply cc.consistencychecks.nodes('//TransitionCheck') t1(r1) ---temp table for libdocs - declare @tLibDocs table (ItemID int, DocID int, DocDate datetime,CheckID int) - insert into @tLibDocs - select rr.itemid,r1.value('@DocID','int') docid,r1.value('@DocDate','datetime') docdate,cc.checkid - from checks cc inner join revisions rr on cc.revisionid = rr.revisionid - cross apply cc.consistencychecks.nodes('//LibDocCheck') t1(r1) - ---get all inconsitencies accross set - declare @ChkXML xml - set @ChkXML = - ( - select - (--ro inconsistencies accross set - select ROCheck.ItemID,ROCheck.ROID,ROCheck.ROValue from @tROIDS ROCheck - inner join @tChecks tc on ROCheck.checkid = tc.checkid - inner join @tItems ti on ROCheck.itemid = ti.itemid - inner join @mvROIDS mv on ROCheck.roid = mv.roid - order by ROCheck.itemid - for xml auto,root('ROChecks'),type - ), - (--transition inconsistencies accross set - select TransitionCheck.ItemID,TransitionCheck.TransitionID,TransitionCheck.TransitionValue from @tTransitions TransitionCheck - inner join @tChecks tc on TransitionCheck.checkid = tc.checkid - inner join @tItems ti on TransitionCheck.itemid = ti.itemid - inner join @mvTransitions mv on TransitionCheck.TransitionID = mv.TransitionID - order by TransitionCheck.itemid - for xml auto,root('TransitionChecks'),type - ), - (--libdoc inconsistencies accross set - select LibDocCheck.ItemID,LibDocCheck.DocID,LibDocCheck.DocDate from @tLibDocs LibDocCheck - inner join @tChecks tc on LibDocCheck.checkid = tc.checkid - inner join @tItems ti on LibDocCheck.itemid = ti.itemid - inner join @mvLibDocs mv on LibDocCheck.docid = mv.docid - order by LibDocCheck.itemid - for xml auto,root('LibDocChecks'),type - ) - for xml path(''),ROOT ('ConsistencyChecks'),type - ) - return @ChkXML -end -GO -IF (@@Error = 0) PRINT 'ScalarFunction Creation: [vefn_CheckAllXML] Succeeded' -ELSE PRINT 'ScalarFunction Creation: [vefn_CheckAllXML] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsChronologyByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [getContentAuditsChronologyByItemID]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2021 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsChronologyByItemID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin - select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) - order by OrdinalPath, contentid,auditid -- B2021-031: Grouping/ordering in Chronology Report not always correct --- select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah --- order by OrdinalPath, contentid,auditid--actionwhen - RETURN -end -GO -IF (@@Error = 0) PRINT 'Procedure Creation: [getContentAuditsChronologyByItemID] Succeeded' -ELSE PRINT 'Procedure Creation: [getContentAuditsChronologyByItemID] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChronologyReport]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChronologyReport]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2021 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE function [dbo].[vefn_ChronologyReport](@ProcItemID int, @DTS datetime) -returns @Report table -( -src int, -AuditID bigint, -ContentID int, -Number nvarchar(512), -Text nvarchar(max), -Type int, -FormatID int, -Config nvarchar(max), -DTS datetime, -UserID nvarchar(200), -DeleteStatus int, -ActionDTS datetime, -ItemDTS datetime, -LastAuditID int, -DeletedAuditID int -) -WITH EXECUTE AS OWNER -AS -BEGIN ---added rhm/jcb 20121218i -declare @tmpTable table -( - icontentid int primary key -) -insert into @tmpTable select icontentid from vefn_tblchilditems(@ProcItemID,@ProcItemID,1) ---added jcb 20111122 ---declare @dts datetime ---set @dts = (select dts from items where itemid = @ProcItemID ) ---set @dts = (SELECT .[dbo].[vefn_GetPreviousRevisionDTSByItemID] (@ProcItemID)) ---end added jcb 20111122 - insert into @Report - SELECT -1 src, - [AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid - where Number is not null ---added jcb 20111028_1827 -and ca.contentid != (select contentid from items where itemid = @procitemid) -and ca.contentid in (select icontentid from @tmpTable) ---end added jcb 20111028_1827 ---added jcb 20111122 ---and ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > (select dts from items where itemid = @ProcItemID )) -and ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > @dts) ---and ca.dts > (select dts from items where itemid = @ProcItemID ) -and ca.dts > @dts ---end added jcb 20111122 --- UNION --- SELECT ---2 src, --- cast(ident_current('contentaudits') + 1 as bigint) auditid ----- (select max(auditid) + 1 from contentaudits) [AuditID] ----- 0 [AuditID] --- ,ca.[ContentID] --- ,[Number] --- ,[Text] --- ,[Type] --- ,[FormatID] --- ,[Config] --- ,ca.[DTS] cadts --- ,ca.[UserID] --- ,ca.[DeleteStatus] --- ,ActionDTS --- ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS ---,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID ---,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID --- FROM tblContents ca ----- inner join tblitems ti on ca.contentid = ti.contentid ---WHERE ca.DeleteStatus = 0 AND -----added jcb 20111028_1827 ---ca.contentid != (select contentid from items where itemid = @procitemid) and -----end added jcb 20111028_1827 -----ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > (select dts from items where itemid = @ProcItemID )) -----added jcb 20111122 -----ca.ContentID in (SELECT [ContentID] FROM Contents where dts > (select dts from items where itemid = @ProcItemID )) ---ca.ContentID in (SELECT [ContentID] FROM Contents where dts > @dts) -----end added jcb 20111122 -----order by ca.DTS,ActionDTS - UNION - SELECT -3 src, - cast(ident_current('contentaudits') + 1 as bigint) auditid --- (select max(auditid) + 1 from contentaudits) [AuditID] --- 0 [AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM tblContents ca --- inner join tblitems ti on ca.contentid = ti.contentid -WHERE ca.DeleteStatus = 0 --AND ---added jcb 20111028_1827 ---ca.contentid != (select contentid from items where itemid = @procitemid) -- B2020-156: Procedure not listed in change reports -and ca.contentid in (select icontentid from @tmpTable) ---end added jcb 20111028_1827 ---added jcb 20111122 ---ca.dts > (select dts from items where itemid = @ProcItemID ) -and (ca.dts > @dts or ca.actiondts > @dts) ---end added jcb 20111122 - UNION - SELECT distinct -5 src, --- cast(ident_current('contentaudits') + 1 as bigint) auditid --- (select max(auditid) + 1 from contentaudits) [AuditID] - ca.[AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid -WHERE ca.DeleteStatus > 0 ---added jcb 20111028_1827 - --ca.contentid != (select contentid from items where itemid = @procitemid) and ---end added jcb 20111028_1827 ---added jcb 20111122 ---ca.dts > (select dts from items where itemid = @ProcItemID ) -and ca.contentid in (select icontentid from @tmpTable) -and (ca.dts > @dts or ca.actiondts > @dts) ---end added jcb 20111122 -order by ca.DTS,ActionDTS - - insert into @Report - SELECT -4 src, - ca.[AuditID] - ,ca.[ContentID] - ,ca.[Number] - ,ca.[Text] - ,ca.[Type] - ,ca.[FormatID] - ,ca.[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ca.ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid - inner join @Report rpt on ca.contentid = rpt.contentid and ca.auditid = rpt.lastauditid -where ca.auditid not in (select auditid from @report) -and rpt.lastauditid is not null -and ca.contentid in (select icontentid from @tmpTable) - return -end -go -IF (@@Error = 0) PRINT 'TableFunction [vefn_ChronologyReport] Succeeded' -ELSE PRINT 'TableFunction [vefn_ChronologyReport] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CheckAllXML]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) -DROP FUNCTION [vefn_CheckAllXML]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2021 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_CheckAllXML](@DocVersionID int) -returns xml -begin ---temp table for sibling itemid - declare @tItems table (ItemID int) - insert into @tItems - select itemid from vefn_siblingitems((select itemid from docversions where versionid = @docversionid),0) ---temp table for max checkid - declare @tChecks table (CheckID int) - insert into @tChecks - select max(cc.checkid) checkid from checks cc - inner join stages ss on cc.stageid = ss.stageid - inner join revisions rr on cc.revisionid = rr.revisionid - inner join @tItems ii on rr.itemid = ii.itemid -- B2021-025: get only items in procedures in this docversion - where ss.isapproved = 1 group by rr.itemid ---temp table for multi valued roids - declare @mvROIDS table (ROID varchar(max)) - insert into @mvROIDS - select roid from (select distinct r1.value('@ROID','varchar(max)') roid,r1.value('@ROValue','varchar(max)') rovalue - from checks cc join @tchecks tc on cc.checkid = tc.checkid cross apply cc.consistencychecks.nodes('//ROCheck') t1(r1)) t1 group by roid having count(*) > 1 ---temp table for multi valued transitionids - declare @mvTransitions table (TransitionID int) - insert into @mvTransitions - select transitionid from (select distinct r1.value('@TransitionID','int') transitionid,r1.value('@TransitionValue','varchar(max)') transitionvalue - from checks cc cross apply cc.consistencychecks.nodes('//TransitionCheck') t1(r1) - join @tChecks tc on tc.CheckID=cc.CheckID -- B2021-037 transition part of approval inconsistencies report - ) t1 group by transitionid having count(*) > 1 ---temp table for multi valued docids - declare @mvLibDocs table (DocID int) - insert into @mvLibDocs - select docid from (select distinct r1.value('@DocID','int') docid,r1.value('@DocDate','datetime') docdate - from checks cc cross apply cc.consistencychecks.nodes('//LibDocCheck') t1(r1)) t1 group by docid having count(*) > 1 ---temp table for roids - declare @tROIDS table (ItemID int,ROID varchar(max),ROValue varchar(max),CheckID int) - insert into @tROIDS - select rr.itemid,r1.value('@ROID','varchar(max)') roid,r1.value('@ROValue','varchar(max)') rovalue, cc.checkid - from checks cc inner join revisions rr on cc.revisionid = rr.revisionid - cross apply cc.consistencychecks.nodes('//ROCheck') t1(r1) ---temp table for transitions - declare @tTransitions table (ItemID int,TransitionID int,TransitionValue varchar(max),CheckID int) - insert into @tTransitions - select rr.itemid,r1.value('@TransitionID','int') transitionid,r1.value('@TransitionValue','varchar(max)') transitionvalue,cc.checkid - from checks cc inner join revisions rr on cc.revisionid = rr.revisionid - cross apply cc.consistencychecks.nodes('//TransitionCheck') t1(r1) ---temp table for libdocs - declare @tLibDocs table (ItemID int, DocID int, DocDate datetime,CheckID int) - insert into @tLibDocs - select rr.itemid,r1.value('@DocID','int') docid,r1.value('@DocDate','datetime') docdate,cc.checkid - from checks cc inner join revisions rr on cc.revisionid = rr.revisionid - cross apply cc.consistencychecks.nodes('//LibDocCheck') t1(r1) - ---get all inconsitencies accross set - declare @ChkXML xml - set @ChkXML = - ( - select - (--ro inconsistencies accross set - select ROCheck.ItemID,ROCheck.ROID,ROCheck.ROValue from @tROIDS ROCheck - inner join @tChecks tc on ROCheck.checkid = tc.checkid - inner join @tItems ti on ROCheck.itemid = ti.itemid - inner join @mvROIDS mv on ROCheck.roid = mv.roid - order by ROCheck.itemid - for xml auto,root('ROChecks'),type - ), - (--transition inconsistencies accross set - select TransitionCheck.ItemID,TransitionCheck.TransitionID,TransitionCheck.TransitionValue from @tTransitions TransitionCheck - inner join @tChecks tc on TransitionCheck.checkid = tc.checkid - inner join @tItems ti on TransitionCheck.itemid = ti.itemid - inner join @mvTransitions mv on TransitionCheck.TransitionID = mv.TransitionID - order by TransitionCheck.itemid - for xml auto,root('TransitionChecks'),type - ), - (--libdoc inconsistencies accross set - select LibDocCheck.ItemID,LibDocCheck.DocID,LibDocCheck.DocDate from @tLibDocs LibDocCheck - inner join @tChecks tc on LibDocCheck.checkid = tc.checkid - inner join @tItems ti on LibDocCheck.itemid = ti.itemid - inner join @mvLibDocs mv on LibDocCheck.docid = mv.docid - order by LibDocCheck.itemid - for xml auto,root('LibDocChecks'),type - ) - for xml path(''),ROOT ('ConsistencyChecks'),type - ) - return @ChkXML -end -GO -IF (@@Error = 0) PRINT 'ScalarFunction Creation: [vefn_CheckAllXML] Succeeded' -ELSE PRINT 'ScalarFunction Creation: [vefn_CheckAllXML] Error on Creation' -GO - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAssociationsByVersionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [getAssociationsByVersionID]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2022 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAssociationsByVersionID] -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS -begin - SELECT - [Associations].[AssociationID], - [Associations].[VersionID], - [Associations].[ROFstID], - [Associations].[Config], - [Associations].[DTS], - [Associations].[UserID], - [Associations].[LastChanged] - -- B2022-010 - -- the following was slowing down getting associations - -- which slowed down opening Search and any other time we got this information - -- note that the ROFst information is not needed - --, - --[ROFsts].[RODbID] [ROFst_RODbID], - --[ROFsts].[ROLookup] [ROFst_ROLookup], - --[ROFsts].[Config] [ROFst_Config], - --[ROFsts].[DTS] [ROFst_DTS], - --[ROFsts].[UserID] [ROFst_UserID] - FROM [Associations] - JOIN [ROFsts] ON - [ROFsts].[ROFstID]=[Associations].[ROFstID] - WHERE - [Associations].[VersionID]=@VersionID - - RETURN -end -GO -IF (@@Error = 0) PRINT 'Procedure Creation: [getAssociationsByVersionID] Succeeded' -ELSE PRINT 'Procedure Creation: [getAssociationsByVersionID] Error on Creation' -GO - - - - -If Exists(Select * From sys.views Where Name = N'vwSysInfo_IndexFragmentation') - Drop View [dbo].[vwSysInfo_IndexFragmentation]; -Go - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -========================================================================================================== - Author: Jake Ropar - Create Date: 08/23/2021 - Description: (System Info) Master View for Table Index Fragmentation -========================================================================================================== -*/ -Create View [dbo].[vwSysInfo_IndexFragmentation] -As - - Select s.[name] as 'SchemaName', - t.[name] as 'TableName', - i.[name] as 'IndexName', - i.is_primary_key as 'IsPrimaryKey', - i.fill_factor as 'FillFactor', - ips.[avg_fragmentation_in_percent] as 'AvgFragmentation', - ips.[page_count] as 'PageCount', - ips.index_level as 'IndexLevel', - ips.index_depth as 'IndexDepth', - Case When (ips.[avg_fragmentation_in_percent] > 30) Then 'Rebuild' - When (ips.[avg_fragmentation_in_percent] > 5) Then 'Reorganize' - Else 'None' - End as 'SuggestedAction' - From sys.[dm_db_index_physical_stats] (DB_ID(), NULL, NULL, NULL, NULL) as ips - inner join sys.[tables] t With (NoLock) on t.[object_id] = ips.[object_id] - inner join sys.[schemas] s With (NoLock) on t.[schema_id] = s.[schema_id] - inner join sys.[indexes] i With (NoLock) on i.[object_id] = ips.[object_id] And i.[index_id] = ips.[index_id] - Where ips.[database_id] = DB_ID() - and not i.[name] is null; - -Go - -IF (@@Error = 0) PRINT 'View Creation: [vwSysInfo_IndexFragmentation] Succeeded' -ELSE PRINT 'View Creation: [vwSysInfo_IndexFragmentation] Error on Creation' -GO - - - -If Exists(Select * From sys.views Where Name = N'vwSysInfo_UserTables') - Drop View [dbo].[vwSysInfo_UserTables]; -Go - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -========================================================================================================== - Author: Jake Ropar - Create Date: 08/23/2021 - Description: (System Info) Master View for User Tables with Columns -========================================================================================================== -*/ -Create View [dbo].[vwSysInfo_UserTables] -As - - Select OBJECT_SCHEMA_NAME(t.[object_id],DB_ID()) as 'SchemaName', - t.[name] as 'TableName', - ac.[name] as 'ColumnName', - ac.[column_id]as 'ColumnOrder', - ty.[name] as 'DataType', - ac.[max_length] as 'MaxLength', - ac.[precision] as 'Precision', - ac.[scale] as 'Scale', - ac.[is_nullable] as 'IsNullable', - ac.[is_ansi_padded] as 'IsAnsiPadded', - ac.[is_identity] as 'IsIdentity', - object_definition(ac.[default_object_id]) as 'DefaultValue' - From sys.[tables] t With (NoLock) - inner join sys.[all_columns] ac With (NoLock) on t.[object_id] = ac.[object_id] - inner join sys.[types] ty With (NoLock) on ac.[system_type_id] = ty.[system_type_id] and ac.[user_type_id] = ty.[user_type_id] - Where t.[is_ms_shipped] = 0; -- Indicates if table is from Microsoft or User Created - -GO - -IF (@@Error = 0) PRINT 'View Creation: [vwSysInfo_UserTables] Succeeded' -ELSE PRINT 'View Creation: [vwSysInfo_UserTables] Error on Creation' -GO - - - - -IF EXISTS (Select * From dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[vesp_UtilityCheckIndexes]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP Procedure [dbo].[vesp_UtilityCheckIndexes]; -GO - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -========================================================================================================== - Author: Jake Ropar - Create Date: 08/23/2021 - Description: Rebuild / Reorganize all Indexes in the database based on their current average fragmentation - Note** @LowerFragCutoff value should always be less than the @UpperFragCutoff value, - if not then @@LowerFragCutoff value witll be automatically set to the @UpperFragCutoff value - - Parameters: @UpperFragCutoff Fragmentation Cutoff Value for Rebuild vs Reorganize (30.0 Recommended) - @LowerFragCutoff Average Fragmentation Cutoff Value for Initial Index Selection (10.0 Recommended) - @IsPrint Print the Commands Indicator (1 = Print Commands, 0 = Dont Print Commands) - @IsExecute Execute the Commands Indicator (1 = Execute Commands, 0 = Dont Execute Commands) - -Examples: exec [dbo].[vesp_UtilityCheckIndexes] null, null, null, null; -- Use default values and only execute the commands - exec [dbo].[vesp_UtilityCheckIndexes] null, null, 1, 0; -- Use the Upper Cutoff and Lower Cutoff default values and only print the commands - exec [dbo].[vesp_UtilityCheckIndexes] null, null, 0, 1; -- Use the Upper Cutoff and Lower Cutoff default values and only execute the commands - exec [dbo].[vesp_UtilityCheckIndexes] 30.0, null, 1, 0; -- Override Upper Cutoff, use the Lower Cutoff default value and print and execute the commands -========================================================================================================== - */ -Create Procedure [dbo].[vesp_UtilityCheckIndexes] (@UpperFragCutoff float = null, @LowerFragCutoff float = null, - @IsPrint Bit = null, @IsExecute Bit = null) -With Execute As Owner -As -Begin - - Set NoCount On; - - -- Declare Local Variables - Declare @ObjectID int; - Declare @IndexID int; - Declare @PartitionCount bigint; - Declare @SchemaName nvarchar(130); - Declare @ObjectName nvarchar(130); - Declare @IndexName nvarchar(130); - Declare @PartitionNum bigint; - Declare @IndexAvgFrag float; - Declare @Command nvarchar(4000); - - -- Set Default Values - If (@UpperFragCutoff is null) Set @UpperFragCutoff = 10.0; - If (@LowerFragCutoff is null) Set @LowerFragCutoff = 2.0; - If (@IsPrint is null) Set @IsPrint = 0; - If (@IsExecute is null) Set @IsExecute = 1; - - -- Check if Lower Cutoff is greater than Upper Cutoff - If (@LowerFragCutoff > @UpperFragCutoff) Set @LowerFragCutoff = @UpperFragCutoff; - - - -- Conditionally select tables and indexes from the sys.dm_db_index_physical_stats function - -- and convert object and index IDs to names. - - Select object_id as 'ObjectID', - index_id as 'IndexID', - partition_number as 'PartitionNum', - avg_fragmentation_in_percent as 'AvgFrag' - Into #work_to_do - From sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'LIMITED') - Where avg_fragmentation_in_percent > @LowerFragCutoff AND index_id > 0; - - -- Declare the cursor for the list of partitions to be processed. - Declare cursor_Partitions Cursor For - Select ObjectID, IndexID, PartitionNum, AvgFrag - From #work_to_do; - - -- Open the cursor. - Open cursor_Partitions; - - -- Loop through the partitions. - While (1=1) - - Begin; - - Fetch Next From cursor_Partitions Into @ObjectID, @IndexID, @PartitionNum, @IndexAvgFrag; - - IF (@@FETCH_STATUS < 0) Break; - - Select @ObjectName = QUOTENAME(o.name), @SchemaName = QUOTENAME(s.name) - From sys.objects as o - join sys.schemas as s on s.schema_id = o.schema_id - Where o.object_id = @ObjectID; - - Select @IndexName = QUOTENAME(name) - From sys.indexes - Where object_id = @ObjectID AND index_id = @IndexID; - - Select @PartitionCount = Count(*) - From sys.partitions - Where object_id = @ObjectID AND index_id = @IndexID; - - Set @Command = ''; - - -- Determine whether to rebuild or reorganize - IF (@IndexAvgFrag < @UpperFragCutoff) - Set @Command = N'ALTER INDEX ' + @IndexName + N' ON ' + @SchemaName + N'.' + @ObjectName + N' REORGANIZE;'; - - IF (@IndexAvgFrag >= @UpperFragCutoff) - Set @Command = N'ALTER INDEX ' + @IndexName + N' ON ' + @SchemaName + N'.' + @ObjectName + N' REBUILD;'; - - IF (@PartitionCount > 1) - Set @Command = @Command + N' PARTITION=' + Cast(@PartitionNum AS nvarchar(10)); - - -- Print command if enabled - If (@IsPrint = 1) Print @Command; - - -- Execute command if enabled - If (@IsExecute = 1) Exec (@Command); - - End; - - -- Close and deallocate the cursor - Close cursor_Partitions; - Deallocate cursor_Partitions; - - -- Drop the temporary table - Drop Table #work_to_do; - - Return; -End -Go - -IF (@@Error = 0) PRINT 'StoredProcedure Creation: [vesp_UtilityCheckIndexes] Succeeded' -ELSE PRINT 'StoredProcedure Creation: [vesp_UtilityCheckIndexes] Error on Creation' -GO - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblEntriesDeleteStatusDocID') - Drop Index [IX_tblEntriesDeleteStatusDocID] on [dbo].[tblEntries] -Go - -CREATE NONCLUSTERED INDEX [IX_tblEntriesDeleteStatusDocID] -ON [dbo].[tblEntries] ([DeleteStatus] ASC) -INCLUDE ([DocID]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblEntriesDeleteStatusDocID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblEntriesDeleteStatusDocID] Error on Creation' -GO - - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblAnnotationsDeleteStatusAnnotationID') - Drop Index [IX_tblAnnotationsDeleteStatusAnnotationID] on [dbo].[tblAnnotations] -Go - -CREATE NONCLUSTERED INDEX [IX_tblAnnotationsDeleteStatusAnnotationID] -ON [dbo].[tblAnnotations] ([DeleteStatus] ASC) -INCLUDE ([AnnotationID]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblAnnotationsDeleteStatusAnnotationID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblAnnotationsDeleteStatusAnnotationID] Error on Creation' -GO - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblContentsDeleteStatusContentID') - Drop Index [IX_tblContentsDeleteStatusContentID] on [dbo].[tblContents] -Go - -CREATE NONCLUSTERED INDEX [IX_tblContentsDeleteStatusContentID] -ON [dbo].[tblContents] ([DeleteStatus] ASC) -INCLUDE ([ContentID]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblContentsDeleteStatusContentID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblContentsDeleteStatusContentID] Error on Creation' -GO - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblDocumentsDeleteStatusDocID') - Drop Index [IX_tblDocumentsDeleteStatusDocID] on [dbo].[tblDocuments] -Go - -CREATE NONCLUSTERED INDEX [IX_tblDocumentsDeleteStatusDocID] -ON [dbo].[tblDocuments] ([DeleteStatus] ASC) -INCLUDE ([DocID]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblDocumentsDeleteStatusDocID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblDocumentsDeleteStatusDocID] Error on Creation' -GO - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblGridsDeleteStatusContentID') - Drop Index [IX_tblGridsDeleteStatusContentID] on [dbo].[tblGrids] -Go - -CREATE NONCLUSTERED INDEX [IX_tblGridsDeleteStatusContentID] -ON [dbo].[tblGrids] ([DeleteStatus] ASC) -INCLUDE ([ContentID]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblGridsDeleteStatusContentID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblGridsDeleteStatusContentID] Error on Creation' -GO - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblImagesDeleteStatusContentID') - Drop Index [IX_tblImagesDeleteStatusContentID] on [dbo].[tblImages] -Go - -CREATE NONCLUSTERED INDEX [IX_tblImagesDeleteStatusContentID] -ON [dbo].[tblImages] ([DeleteStatus] ASC) -INCLUDE ([ContentID]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblImagesDeleteStatusContentID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblImagesDeleteStatusContentID] Error on Creation' -GO - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblItemsDeleteStatusItemID') - Drop Index [IX_tblItemsDeleteStatusItemID] on [dbo].[tblItems] -Go - -CREATE NONCLUSTERED INDEX [IX_tblItemsDeleteStatusItemID] -ON [dbo].[tblItems] ([DeleteStatus] ASC) -INCLUDE ([ContentID]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblItemsDeleteStatusItemID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblItemsDeleteStatusItemID] Error on Creation' -GO - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblPartsDeleteStatusItemIDContentID') - Drop Index [IX_tblPartsDeleteStatusItemIDContentID] on [dbo].[tblParts] -Go - -CREATE NONCLUSTERED INDEX [IX_tblPartsDeleteStatusItemIDContentID] -ON [dbo].[tblParts] ([DeleteStatus] ASC) -INCLUDE ([ItemID], [ContentID]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblPartsDeleteStatusItemIDContentID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblPartsDeleteStatusItemIDContentID] Error on Creation' -GO - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblPartsDeleteStatusItemID') - Drop Index [IX_tblPartsDeleteStatusItemID] on [dbo].[tblParts] -Go - -CREATE NONCLUSTERED INDEX [IX_tblPartsDeleteStatusItemID] -ON [dbo].[tblParts] ([DeleteStatus] ASC) -INCLUDE ([ItemID]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblPartsDeleteStatusItemID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblPartsDeleteStatusItemID] Error on Creation' -GO - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblPartsDeleteStatusContentID') - Drop Index [IX_tblPartsDeleteStatusContentID] on [dbo].[tblParts] -Go - -CREATE NONCLUSTERED INDEX [IX_tblPartsDeleteStatusContentID] -ON [dbo].[tblParts] ([DeleteStatus] ASC) -INCLUDE ([ContentID]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblPartsDeleteStatusContentID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblPartsDeleteStatusContentID] Error on Creation' -GO - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblROUsagesDeleteStatusContentID') - Drop Index [IX_tblROUsagesDeleteStatusContentID] on [dbo].[tblROUsages] -Go - -CREATE NONCLUSTERED INDEX [IX_tblROUsagesDeleteStatusContentID] -ON [dbo].[tblROUsages] ([DeleteStatus] ASC) -INCLUDE ([ContentID]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblROUsagesDeleteStatusContentID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblROUsagesDeleteStatusContentID] Error on Creation' -GO - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblROUsagesDeleteStatusRODbID') - Drop Index [IX_tblROUsagesDeleteStatusRODbID] on [dbo].[tblROUsages] -Go - -CREATE NONCLUSTERED INDEX [IX_tblROUsagesDeleteStatusRODbID] -ON [dbo].[tblROUsages] ([DeleteStatus] ASC) -INCLUDE (RODbID) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblROUsagesDeleteStatusRODbID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblROUsagesDeleteStatusRODbID] Error on Creation' -GO - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblTransitionsDeleteStatusTransitionID') - Drop Index [IX_tblTransitionsDeleteStatusTransitionID] on [dbo].[tblTransitions] -Go - -CREATE NONCLUSTERED INDEX [IX_tblTransitionsDeleteStatusTransitionID] -ON [dbo].[tblTransitions] ([DeleteStatus] ASC) -INCLUDE (TransitionID) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblTransitionsDeleteStatusTransitionID] Succeeded' -ELSE PRINT 'Index Creation:[IX_tblTransitionsDeleteStatusTransitionID] Error on Creation' -GO - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGridIds]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [getGridIds]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2022 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGridIds] -WITH EXECUTE AS OWNER -AS -begin - SELECT - [ContentID] - FROM [Grids] - RETURN -end -GO -IF (@@Error = 0) PRINT 'Procedure Creation: [getGridIds] Succeeded' -ELSE PRINT 'Procedure Creation: [getGridIds] Error on Creation' -GO - - - -/* -========================================================================================================== - Begin: B2022-026 RO Memory reduction coding (Jakes Merge) [Version 2.0] - Notes** If you need to rollback to the previous version for some reason and undo the changes - for v2.0 then run the corresponding "PROMSRollback (v2.0).sql" file -========================================================================================================== -*/ - /* - ---------------------------------------------------------------------------------- - Tables: - ---------------------------------------------------------------------------------- - [RofstHeader] - [RofstDatabase] - [RofstChild] - [RofstDefaultValue] - - ---------------------------------------------------------------------------------- - Indexes: - ---------------------------------------------------------------------------------- - [IX_RofstID_Roid] on [dbo].[RofstChild] - [IX_RofstID_DbiID_ParentID] on [dbo].[RofstChild] - - */ - - -- If RofstHeader and other tables already exist then don't drop and recreate them - IF Not Exists(SELECT * FROM sys.objects Where name = 'RofstHeader' AND type in (N'U')) - Begin -- Rofst Tables - - SET ANSI_NULLS ON - SET QUOTED_IDENTIFIER ON - - /****** Object: Table [dbo].[RofstChild] Script Date: 6/6/2022 11:18:32 AM ******/ - CREATE TABLE [dbo].[RofstChild]( - [RofstChildID] [int] IDENTITY(1,1) NOT NULL, - [RofstID] [int] NOT NULL, - [dbiID] [int] NOT NULL, - [ID] [int] NOT NULL, - [ParentID] [int] NOT NULL, - [type] [int] NOT NULL, - [title] [varchar](max) NOT NULL, - [roid] [varchar](50) NOT NULL, - [appid] [varchar](max) NULL, - [value] [varchar](max) NULL, - CONSTRAINT [PK_RofstChild] PRIMARY KEY CLUSTERED - ( - [RofstChildID] ASC - )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] - ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] - - IF (@@Error = 0) PRINT 'Table Creation: [RofstChild] Succeeded' - ELSE PRINT 'Table Creation: [RofstChild] Error on Creation' - - - /****** Object: Table [dbo].[RofstDatabase] Script Date: 6/6/2022 11:18:32 AM ******/ - CREATE TABLE [dbo].[RofstDatabase]( - [RofstID] [int] NOT NULL, - [dbiID] [int] NOT NULL, - [dbiType] [int] NOT NULL, - [dbiAW] [int] NOT NULL, - [dbiTitle] [varchar](max) NOT NULL, - [dbiAP] [varchar](max) NOT NULL, - [ID] [int] NOT NULL, - [ParentID] [int] NOT NULL, - CONSTRAINT [PK_RofstDatabase_1] PRIMARY KEY CLUSTERED - ( - [RofstID] ASC, - [dbiID] ASC - )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] - ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] - - IF (@@Error = 0) PRINT 'Table Creation: [RofstDatabase] Succeeded' - ELSE PRINT 'Table Creation: [RofstDatabase] Error on Creation' - - - /****** Object: Table [dbo].[RofstDefaultValue] Script Date: 6/6/2022 11:18:32 AM ******/ - CREATE TABLE [dbo].[RofstDefaultValue]( - [RofstID] [int] NOT NULL, - [roid] [varchar](50) NOT NULL, - [value] [varchar](max) NOT NULL, - [AccPageID] [varchar](max) NULL, - CONSTRAINT [PK_RofstDefaultValue] PRIMARY KEY CLUSTERED - ( - [RofstID] ASC, - [roid] ASC - )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] - ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] - - IF (@@Error = 0) PRINT 'Table Creation: [RofstDefaultValue] Succeeded' - ELSE PRINT 'Table Creation: [RofstDefaultValue] Error on Creation' - - - /****** Object: Table [dbo].[RofstHeader] Script Date: 6/6/2022 11:18:32 AM ******/ - CREATE TABLE [dbo].[RofstHeader]( - [RofstID] [int] NOT NULL, - [hSize] [int] NOT NULL, - [hMonth] [int] NOT NULL, - [hDay] [int] NOT NULL, - [hcYear] [int] NOT NULL, - [hcMonth] [int] NOT NULL, - [hcDay] [int] NOT NULL, - [hcHour] [int] NOT NULL, - [hcMin] [int] NOT NULL, - [hcSec] [int] NOT NULL, - [hcHund] [int] NOT NULL, - [CreateUserID] [varchar](50) NOT NULL, - [CreateDate] [datetime] NOT NULL, - [LoadedDate] [datetime] NULL, - CONSTRAINT [PK_RofstHeader] PRIMARY KEY CLUSTERED - ( - [RofstID] ASC - )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] - ) ON [PRIMARY] - - IF (@@Error = 0) PRINT 'Table Creation: [RofstHeader] Succeeded' - ELSE PRINT 'Table Creation: [RofstHeader] Error on Creation' - - - /****** Object: Index [IX_RofstID_DbiID_ParentID] Script Date: 6/6/2022 11:18:32 AM ******/ - CREATE NONCLUSTERED INDEX [IX_RofstID_DbiID_ParentID] ON [dbo].[RofstChild] - ( - [RofstID] ASC, - [dbiID] ASC, - [ParentID] ASC - ) - INCLUDE([ID],[type],[title],[roid],[appid],[value]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] - - IF (@@Error = 0) PRINT 'Index Creation: [IX_RofstID_DbiID_ParentID] Succeeded' - ELSE PRINT 'Index Creation: [IX_RofstID_DbiID_ParentID] Error on Creation' - - - /****** Object: Index [IX_RofstID_Roid] Script Date: 6/6/2022 11:18:32 AM ******/ - CREATE NONCLUSTERED INDEX [IX_RofstID_Roid] ON [dbo].[RofstChild] - ( - [RofstID] ASC, - [roid] ASC - )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] - - IF (@@Error = 0) PRINT 'Index Creation: [IX_RofstID_Roid] Succeeded' - ELSE PRINT 'Index Creation: [IX_RofstID_Roid] Error on Creation' - - - ALTER TABLE [dbo].[RofstDatabase] ADD CONSTRAINT [DF_RofstDatabase_ParentID] DEFAULT ((0)) FOR [ParentID] - - ALTER TABLE [dbo].[RofstHeader] ADD CONSTRAINT [DF_RofstHeader_CreateUserID] DEFAULT ('SYSTEM') FOR [CreateUserID] - - ALTER TABLE [dbo].[RofstHeader] ADD CONSTRAINT [DF_RofstHeader_CreateDate] DEFAULT (getdate()) FOR [CreateDate] - - ALTER TABLE [dbo].[RofstChild] WITH CHECK ADD CONSTRAINT [FK_RofstChild_RofstDatabase] FOREIGN KEY([RofstID], [dbiID]) - REFERENCES [dbo].[RofstDatabase] ([RofstID], [dbiID]) - ON DELETE CASCADE - - ALTER TABLE [dbo].[RofstChild] CHECK CONSTRAINT [FK_RofstChild_RofstDatabase] - - ALTER TABLE [dbo].[RofstDatabase] WITH CHECK ADD CONSTRAINT [FK_RofstDatabase_RofstHeader] FOREIGN KEY([RofstID]) - REFERENCES [dbo].[RofstHeader] ([RofstID]) - ON DELETE CASCADE - - ALTER TABLE [dbo].[RofstDatabase] CHECK CONSTRAINT [FK_RofstDatabase_RofstHeader] - - ALTER TABLE [dbo].[RofstDefaultValue] WITH CHECK ADD CONSTRAINT [FK_RofstDefaultValue_RofstHeader] FOREIGN KEY([RofstID]) - REFERENCES [dbo].[RofstHeader] ([RofstID]) - ON DELETE CASCADE - - ALTER TABLE [dbo].[RofstDefaultValue] CHECK CONSTRAINT [FK_RofstDefaultValue_RofstHeader] - - ALTER TABLE [dbo].[RofstHeader] WITH CHECK ADD CONSTRAINT [FK_RofstHeader_ROFsts] FOREIGN KEY([RofstID]) - REFERENCES [dbo].[ROFsts] ([ROFstID]) - ON DELETE CASCADE - - ALTER TABLE [dbo].[RofstHeader] CHECK CONSTRAINT [FK_RofstHeader_ROFsts] - - IF (@@Error = 0) PRINT 'Table/FK Constraints: Succeeded' - ELSE PRINT 'Table/FK Constraints: Error on Creation' - - End -- Rofst Tables - Go - - - /* - ---------------------------------------------------------------------------------- - Functions: - ---------------------------------------------------------------------------------- - [dbo].[vefn_Clean] - [dbo].[vefn_ParseStringListToTable] - [dbo].[vefn_NumOfOccurrences] - [dbo].[vefn_RofstDataReplaceVars] - [dbo].[vefn_RofstDataReplaceApplTagsWithDefaults] - [dbo].[vefn_RofstDataGetLoadStatus] - */ - - /****** Object: UserDefinedFunction [dbo].[vefn_Clean] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vefn_Clean' AND type in (N'FN')) - DROP FUNCTION [dbo].[vefn_Clean] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - -- ========================================================================================== - -- Author: Jake Ropar - -- Create Date: 4/21/2022 - -- Description: Cleans (Trim) the string value passed - -- Optional: Truncate is string is passed a specified max length - -- Optional: Convert any null values to an empty string or leave as null - -- ========================================================================================== - - Create Function [dbo].[vefn_Clean] ( @Value VarChar(Max), @ConvertNulls bit = 0, @MaxLength Int = null ) - Returns VarChar(Max) - As - Begin - - Declare @RetVal VarChar(Max); - - If (Len(IsNull(@Value,'')) > 0) - Begin - - Set @RetVal = LTrim(RTrim(@Value)); - If (Not @MaxLength is null And Len(@RetVal) > @MaxLength) Set @RetVal = Left(@RetVal, @MaxLength); - - End - - If (@ConvertNulls = 1) - Set @RetVal = IsNull(@RetVal, ''); - - Return @RetVal; - - End - GO - - IF (@@Error = 0) PRINT 'Function Creation: [vefn_Clean] Succeeded' - ELSE PRINT 'Function Creation: [vefn_Clean] Error on Creation' - GO - - - - /****** Object: UserDefinedFunction [dbo].[vefn_ParseStringListToTable] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vefn_ParseStringListToTable' AND type in (N'TF')) - DROP FUNCTION [dbo].[vefn_ParseStringListToTable] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - -- ========================================================================================== - -- Author: Jake Ropar - -- Create Date: 3/26/2018 - -- Description: Splits a delimited list of strings into a table of string values - -- ========================================================================================== - - Create Function [dbo].[vefn_ParseStringListToTable] ( @List VarChar(Max), @Delimeter VarChar(1) = null ) - Returns @RetVal Table (ListPosition Int Identity(1,1) Not Null, ListValue VarChar(Max) Not Null) - With Execute As Owner - As - Begin - - Declare @Position Int; - Declare @TextPosition Int; - Declare @Length smallint; - Declare @String VarChar(Max); - Declare @TempString VarChar(Max); - Declare @LeftOver VarChar(Max); - - Set @TextPosition = 1; - Set @LeftOver = ''; - Set @Delimeter = IsNull(@Delimeter, ','); - - If (DataLength(@List) = 1) - Insert @RetVal (ListValue) Values (Cast(@List as VarChar(Max))); - Else - Begin - While (@TextPosition <= DataLength(@List) / 2) - Begin - - Set @Length = (4000 - DataLength(@LeftOver) / 2); - Set @TempString = LTrim(@LeftOver + Substring(@List, @TextPosition, @Length)); - Set @TextPosition = @TextPosition + @Length; - Set @Position = CharIndex(@Delimeter, @TempString); - - While (@Position > 0) - Begin - - Set @String = Substring(@TempString, 1, @Position - 1); - - Insert @RetVal (ListValue) Values (Cast(@String as VarChar(Max))); - - Set @TempString = LTrim(Substring(@TempString, @Position + 1, Len(@TempString))); - Set @Position = CharIndex(@Delimeter, @TempString); - - End - - Set @LeftOver = @TempString; - End - End - - If (LTrim(RTrim(@LeftOver)) <> '') - Insert @RetVal (ListValue) Values (Cast(@LeftOver as VarChar(Max))); - - Return; - End - GO - - IF (@@Error = 0) PRINT 'Function Creation: [vefn_ParseStringListToTable] Succeeded' - ELSE PRINT 'Function Creation: [vefn_ParseStringListToTable] Error on Creation' - GO - - - - /****** Object: UserDefinedFunction [dbo].[vefn_NumOfOccurrences] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vefn_NumOfOccurrences' AND type in (N'FN')) - DROP FUNCTION [dbo].[vefn_NumOfOccurrences] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - -- ========================================================================================== - -- Author: Jake Ropar - -- Create Date: 3/1/2022 - -- Description: Returns the number of occurences of a specific value in a specified string - -- ========================================================================================== - - CREATE FUNCTION [dbo].[vefn_NumOfOccurrences](@Text VarChar(Max), @Value VarChar(Max)) Returns Int - WITH EXECUTE AS OWNER - AS - BEGIN - - Declare @ValueCount Int; - - If (Len(@Value) = 0) - Set @ValueCount = 0; - Else - Set @ValueCount = (Len(@Text) - Len(Replace(@Text, @Value, ''))) / Len(@Value); - - Return @ValueCount; - - END - GO - - IF (@@Error = 0) PRINT 'Function Creation: [vefn_NumOfOccurrences] Succeeded' - ELSE PRINT 'Function Creation: [vefn_NumOfOccurrences] Error on Creation' - GO - - - - /****** Object: UserDefinedFunction [dbo].[vefn_RofstDataReplaceVars] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vefn_RofstDataReplaceVars' AND type in (N'FN')) - DROP FUNCTION [dbo].[vefn_RofstDataReplaceVars] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - -- ========================================================================================== - -- Author: Jake Ropar - -- Create Date: 3/25/2022 - -- Description: Replaces Any Variables and returns the rest of the value string - -- ========================================================================================== - - CREATE FUNCTION [dbo].[vefn_RofstDataReplaceVars](@Values VarChar(Max)) Returns VarChar(Max) - WITH EXECUTE AS OWNER - AS - BEGIN - - Declare @RetVal VarChar(Max) = ''; - Declare @EqualsIndex Int; - Declare @EndIndex Int; - Declare @NameValPairStartIndex Int; - Declare @NameValPairEndIndex Int; - - Declare @VarPair VarChar(Max); - Declare @VarName VarChar(Max); - Declare @VarValue VarChar(Max); - - -- Replace Any "" Tags with the Default Value first - Select @RetVal = dbo.vefn_RofstDataReplaceApplTagsWithDefaults(@Values); - - If (PatIndex('%{{A%', @RetVal) > 0) - Set @EndIndex = PatIndex('%{{A%', @RetVal); - Else - Set @EndIndex = Len(@RetVal) -1; - - Set @NameValPairStartIndex = PatIndex('%{%', @RetVal); - Set @NameValPairEndIndex = PatIndex('%}%', @RetVal); - - While(@NameValPairStartIndex > 0 And @NameValPairStartIndex < @EndIndex) - Begin - - -- Get Name Value Pair [ex. {EGS=1214}] - Set @VarPair = SubString(@RetVal, @NameValPairStartIndex, (@NameValPairEndIndex - @NameValPairStartIndex) + 1); - - -- Remove Name Value Pair From Return Val - Set @RetVal = Replace(@RetVal, @VarPair, ''); - - -- Get Variable Name and Value - Set @EqualsIndex = PatIndex('%=%', @VarPair); - - If (@EqualsIndex > 0) - Begin - Set @VarName = SubString(@VarPair, 2, @EqualsIndex - 2); - Set @VarValue = SubString(@VarPair, @EqualsIndex + 1, Len(@VarPair) - @EqualsIndex - 1); - Set @VarName = Concat('{', @VarName, '}'); - - -- Replace All Occurences - Set @RetVal = Replace(@RetVal, @VarName, @VarValue); - End - - -- Get Updated Index Values - If (PatIndex('%{{A%', @RetVal) > 0) - Set @EndIndex = PatIndex('%{{A%', @RetVal); - Else - Set @EndIndex = Len(@RetVal) -1; - - Set @NameValPairStartIndex = PatIndex('%{%', @RetVal); - Set @NameValPairEndIndex = PatIndex('%}%', @RetVal); - - End -- End While(@ReplaceVarEndTagIndex > 0) - - Return @RetVal; - - END - GO - - IF (@@Error = 0) PRINT 'Function Creation: [vefn_RofstDataReplaceVars] Succeeded' - ELSE PRINT 'Function Creation: [vefn_RofstDataReplaceVars] Error on Creation' - GO - - - - /****** Object: UserDefinedFunction [dbo].[vefn_RofstDataReplaceApplTagsWithDefaults] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vefn_RofstDataReplaceApplTagsWithDefaults' AND type in (N'FN')) - DROP FUNCTION [dbo].[vefn_RofstDataReplaceApplTagsWithDefaults] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - -- ========================================================================================== - -- Author: Jake Ropar - -- Create Date: 3/25/2022 - -- Description: Replaces any "" tags with the default value - -- ========================================================================================== - - CREATE FUNCTION [dbo].[vefn_RofstDataReplaceApplTagsWithDefaults](@Values VarChar(Max)) Returns VarChar(Max) - WITH EXECUTE AS OWNER - AS - BEGIN - - Declare @RetVal VarChar(Max) = ''; - Declare @DefaultValue VarChar(Max) = ''; - - Declare @StartTagIndex Int; - Declare @EndTagIndex Int; - Declare @StartTagValue VarChar(Max); - - Set @RetVal = @Values; - Set @StartTagIndex = PatIndex('%%', @RetVal); - - While (@StartTagIndex > 0) - Begin - - Set @StartTagValue = SubString(@RetVal, @StartTagIndex, (@EndTagIndex - @StartTagIndex) + 5); - Set @DefaultValue = Replace(@StartTagValue, '%', @DefaultValue); - - Set @DefaultValue = RTrim(SubString(@DefaultValue, 0, @EndTagIndex)); - Set @RetVal = Replace(@RetVal, @StartTagValue, @DefaultValue); - - Set @StartTagIndex = PatIndex('%%', @RetVal); - - End -- While (@StartTagIndex > 0) - - Return @RetVal; - - END - GO - - IF (@@Error = 0) PRINT 'Function Creation: [vefn_RofstDataReplaceApplTagsWithDefaults] Succeeded' - ELSE PRINT 'Function Creation: [vefn_RofstDataReplaceApplTagsWithDefaults] Error on Creation' - GO - - - - - /****** Object: UserDefinedFunction [dbo].[vefn_RofstDataGetLoadStatus] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vefn_RofstDataGetLoadStatus' AND type in (N'FN')) - DROP FUNCTION [dbo].[vefn_RofstDataGetLoadStatus] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - -- ========================================================================================== - -- Author: Jake Ropar - -- Create Date: 05/20/2022 - -- Description: Gets the current load status for a Rofst Binary - -- ========================================================================================== - - CREATE FUNCTION [dbo].[vefn_RofstDataGetLoadStatus](@RofstID Int) Returns Int - WITH EXECUTE AS OWNER - AS - BEGIN - - Declare @RofstHeaderStatusID Int; - Declare @NumOfRecordsStart Int; - Declare @NumOfRecordsEnd Int; - Declare @CreateDate DateTime; - Declare @LoadedDate DateTime; - - -- Set Default Values - Set @RofstHeaderStatusID = 0; -- [Unknown] - Set @NumOfRecordsStart = -1; - Set @NumOfRecordsEnd = -1; - - -- Get RofstHeader Data - Select @CreateDate = CreateDate, @LoadedDate = LoadedDate - From RofstHeader with (NoLock) - Where RofstID = @RofstID; - - -- Check Current Status of RofstHeader/Data - If (@CreateDate is null) - Begin - Set @RofstHeaderStatusID = 1; -- [Not Loaded] - End - Else If (Not @LoadedDate is null) - Begin - Set @RofstHeaderStatusID = 3; -- [Load Complete] - End - Else If (@LoadedDate is null) - Begin - - -- Check if the record count for Rofst Default Values is still increasing - --Declare @cnt Int = 4000000; - Declare @cnt Int = 2000000; - - Select @NumOfRecordsStart = Count(1) From vwRofstData_RofstDefaultValues Where RofstID = @RofstID; - - While (@cnt > 0) - Set @cnt = @Cnt -1; - - Select @NumOfRecordsEnd = Count(1) From vwRofstData_RofstDefaultValues Where RofstID = @RofstID; - - If (@NumOfRecordsStart < @NumOfRecordsEnd) - Set @RofstHeaderStatusID = 2; -- [In Progress] - Else - Set @RofstHeaderStatusID = 4; -- [Load Failed] - End - Else - Begin - Set @RofstHeaderStatusID = 0; -- [Unknown] - End - - - Return @RofstHeaderStatusID; - - END - GO - - IF (@@Error = 0) PRINT 'Function Creation: [vefn_RofstDataGetLoadStatus] Succeeded' - ELSE PRINT 'Function Creation: [vefn_RofstDataGetLoadStatus] Error on Creation' - GO - - - /* - ---------------------------------------------------------------------------------- - Views: - ---------------------------------------------------------------------------------- - [dbo].[vwRofstData_RofstChildren] - [dbo].[vwRofstData_RofstDatabases] - [dbo].[vwRofstData_RofstDefaultValues] - [dbo].[vwRofstData_RofstHeaders] - [dbo].[vwRofstData_RofstHeaderStatuses] - */ - - /****** Object: View [dbo].[vwRofstData_RofstChildren] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vwRofstData_RofstChildren' AND type in (N'V')) - DROP VIEW [dbo].[vwRofstData_RofstChildren] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2024 - Description: (RofstData) Master View for RofstChildren (RoChild & Groups) - ========================================================================================================== - */ - Create View [dbo].[vwRofstData_RofstChildren] - As - - Select rc.RofstChildID as 'RofstChildID', - rd.RofstID as 'RofstID', - -- RoDatabase Info - rd.dbiID as 'dbiID', - rd.dbiType as 'dbiType', - rd.dbiAW as 'dbiAW', - rd.dbiTitle as 'dbiTitle', - rd.dbiAP as 'dbiAP', - -- RoChild Info - rc.ID as 'ID', - rc.ParentID as 'ParentID', - rc.[type] as 'type', - Case When (rc.[type] = 1) Then 'Single Line Text' -- Fixed Length Text - When (rc.[type] = 2) Then 'Table' - When (rc.[type] = 3) Then 'Multiple Line Text' - When (rc.[type] = 4) Then 'X/Y Plot' - When (rc.[type] = 8) Then 'Image' - Else 'Unknown' End as 'TypeDescription', - rc.title as 'title', - rc.roid as 'roid', - rc.appid as 'appid', - rc.[value] as 'value', - Case When (Not rc.[value] is null) Then rd.dbiAP + '-' + rc.appid Else null End as 'AccPageID' - From RofstChild rc With (NoLock) - inner join RofstDatabase rd With (NoLock) on rc.RofstID = rd.RofstID and rc.dbiID = rd.dbiID; - - GO - - IF (@@Error = 0) PRINT 'View Creation: [vwRofstData_RofstChildren] Succeeded' - ELSE PRINT 'View Creation: [vwRofstData_RofstChildren] Error on Creation' - GO - - - /****** Object: View [dbo].[vwRofstData_RofstDatabases] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vwRofstData_RofstDatabases' AND type in (N'V')) - DROP VIEW [dbo].[vwRofstData_RofstDatabases] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2024 - Description: (RofstData) Master View for RofstDatabases - ========================================================================================================== - */ - Create View [dbo].[vwRofstData_RofstDatabases] - As - - Select rd.RofstID as 'RofstID', - rd.dbiID as 'dbiID', - rd.dbiType as 'dbiType', - rd.dbiAW as 'dbiAW', - rd.dbiTitle as 'dbiTitle', - rd.dbiAP as 'dbiAP', - rd.ID as 'ID', - rd.ParentID as 'ParentID' - From RofstDatabase rd With (NoLock) - - - GO - - IF (@@Error = 0) PRINT 'View Creation: [vwRofstData_RofstDatabases] Succeeded' - ELSE PRINT 'View Creation: [vwRofstData_RofstDatabases] Error on Creation' - GO - - - /****** Object: View [dbo].[vwRofstData_RofstDefaultValues] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vwRofstData_RofstDefaultValues' AND type in (N'V')) - DROP VIEW [dbo].[vwRofstData_RofstDefaultValues] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2024 - Description: (RofstData) Master View for Rofst Roid Default Values - ========================================================================================================== - */ - Create View [dbo].[vwRofstData_RofstDefaultValues] - As - - Select rdv.RofstID as 'RofstID', - rdv.roid as 'roid', - rdv.[value] as 'value', - rdv.AccPageID as 'AccPageID' - From RofstDefaultValue rdv With (NoLock) - - GO - - IF (@@Error = 0) PRINT 'View Creation: [vwRofstData_RofstDefaultValues] Succeeded' - ELSE PRINT 'View Creation: [vwRofstData_RofstDefaultValues] Error on Creation' - GO - - /****** Object: View [dbo].[vwRofstData_RofstHeaderStatuses] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vwRofstData_RofstHeaderStatuses' AND type in (N'V')) - DROP VIEW [dbo].[vwRofstData_RofstHeaderStatuses] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 05/20/2022 - Description: (RofstData) Master View for RofstHeader Statuses - (0) Unknown (1) Not Loaded (2) In Progress (3) Load Complete (4) Load Failed - ========================================================================================================== - */ - Create View [dbo].[vwRofstData_RofstHeaderStatuses] - As - - Select '0' as 'RofstHeaderStatusID', 'Unknown' as 'RofstHeaderStatus' - Union All - Select '1' as 'RofstHeaderStatusID', 'Not Loaded' as 'RofstHeaderStatus' - Union All - Select '2' as 'RofstHeaderStatusID', 'In Progress' as 'RofstHeaderStatus' - Union All - Select '3' as 'RofstHeaderStatusID', 'Load Complete' as 'RofstHeaderStatus' - Union All - Select '4' as 'RofstHeaderStatusID', 'Load Failed' as 'RofstHeaderStatus' - - GO - - IF (@@Error = 0) PRINT 'View Creation: [vwRofstData_RofstHeaderStatuses] Succeeded' - ELSE PRINT 'View Creation: [vwRofstData_RofstHeaderStatuses] Error on Creation' - GO - - - /****** Object: View [dbo].[vwRofstData_RofstHeaders] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vwRofstData_RofstHeaders' AND type in (N'V')) - DROP VIEW [dbo].[vwRofstData_RofstHeaders] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2024 - Description: (RofstData) Master View for RofstHeaders - ========================================================================================================== - */ - Create View [dbo].[vwRofstData_RofstHeaders] - As - - Select rh.RofstID as 'RofstID', - hs.RofstHeaderStatusID as 'RofstHeaderStatusID', - hs.RofstHeaderStatus as 'RofstHeaderStatus', - rh.hSize as 'hSize', - rh.hMonth as 'hMonth', - rh.hDay as 'hDay', - rh.hcYear as 'hcYear', - rh.hcMonth as 'hcMonth', - rh.hcDay as 'hcDay', - rh.hcHour as 'hcHour', - rh.hcMin as 'hcMin', - rh.hcSec as 'hcSec', - rh.hcHund as 'hcHund', - rh.LoadedDate as 'LoadedDate', - rh.CreateUserID as 'CreateUserID', - rh.CreateDate as 'CreateDate' - From RofstHeader rh With (NoLock) - inner join vwRofstData_RofstHeaderStatuses hs on hs.RofstHeaderStatusID = dbo.vefn_RofstDataGetLoadStatus(rh.RofstID) - - GO - - IF (@@Error = 0) PRINT 'View Creation: [vwRofstData_RofstHeaders] Succeeded' - ELSE PRINT 'View Creation: [vwRofstData_RofstHeaders] Error on Creation' - GO - - - - - - /* - ---------------------------------------------------------------------------------- - Stored Procs: (Update Existing) - ---------------------------------------------------------------------------------- - [dbo].[updateROFst] - [dbo].[getROImage] - [dbo].[getROFstsByRODbID] - [dbo].[getROFsts] - [dbo].[getRoFstBySize] - [dbo].[getROFstByRODbID_DTS] - [dbo].[getROFst] - [dbo].[getRODb] - [dbo].[getJustROFst] - [dbo].[getFiguresByImageID] - [dbo].[getDocVersion] - */ - - - /****** Object: StoredProcedure [dbo].[updateROFst] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'updateROFst' AND type in (N'P')) - DROP PROCEDURE [dbo].[updateROFst] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: - Create Date: - Description: - ========================================================================================================== - */ - CREATE PROCEDURE [dbo].[updateROFst] - ( - @ROFstID int, - @RODbID int, - @ROLookup varbinary(MAX), - @Config nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output - ) - WITH EXECUTE AS OWNER - AS - BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [ROFsts] - SET - [RODbID]=@RODbID, - --[ROLookup]=@ROLookup, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [ROFstID]=@ROFstID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [ROFsts] WHERE [ROFstID]=@ROFstID) - RAISERROR('ROFst record has been deleted by another user', 16, 1) - ELSE - RAISERROR('ROFst has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [ROFsts] WHERE [ROFstID]=@ROFstID - - IF( @@TRANCOUNT > 0 ) COMMIT - END TRY - BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler - END CATCH - - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [updateROFst] Succeeded' - ELSE PRINT 'Procedure Creation: [updateROFst] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[getROImage] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'getROImage' AND type in (N'P')) - DROP PROCEDURE [dbo].[getROImage] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: - Create Date: - Description: - ========================================================================================================== - */ - CREATE PROCEDURE [dbo].[getROImage] - ( - @ImageID int - ) - WITH EXECUTE AS OWNER - AS - SELECT - [ImageID], - [RODbID], - [FileName], - [Content], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(1) FROM [Figures] WHERE [Figures].[ImageID]=[ROImages].[ImageID]) [FigureCount] - FROM [ROImages] - WHERE [ImageID]=@ImageID - - SELECT - [Figures].[FigureID], - [Figures].[ROFstID], - [Figures].[ImageID], - [Figures].[Config], - [Figures].[DTS], - [Figures].[UserID], - [Figures].[LastChanged], - [ROFsts].[RODbID] [ROFst_RODbID], - --[ROFsts].[ROLookup] [ROFst_ROLookup], - null as [ROFst_ROLookup], - [ROFsts].[Config] [ROFst_Config], - [ROFsts].[DTS] [ROFst_DTS], - [ROFsts].[UserID] [ROFst_UserID] - FROM [Figures] - JOIN [ROFsts] ON - [ROFsts].[ROFstID]=[Figures].[ROFstID] - WHERE - [Figures].[ImageID]=@ImageID - - RETURN - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [getROImage] Succeeded' - ELSE PRINT 'Procedure Creation: [getROImage] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[getROFstsByRODbID] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'getROFstsByRODbID' AND type in (N'P')) - DROP PROCEDURE [dbo].[getROFstsByRODbID] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: - Create Date: - Description: - ========================================================================================================== - */ - CREATE PROCEDURE [dbo].[getROFstsByRODbID] - ( - @RODbID int - ) - WITH EXECUTE AS OWNER - AS - - SELECT - [ROFsts].[ROFstID], - [ROFsts].[RODbID], - --[ROFsts].[ROLookup], - null as [ROLookup], - [ROFsts].[Config], - [ROFsts].[DTS], - [ROFsts].[UserID], - [ROFsts].[LastChanged], - (SELECT COUNT(1) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount], - (SELECT COUNT(1) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount] - FROM [ROFsts] - WHERE - [ROFsts].[RODbID]=@RODbID - - RETURN - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [getROFstsByRODbID] Succeeded' - ELSE PRINT 'Procedure Creation: [getROFstsByRODbID] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[getROFsts] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'getROFsts' AND type in (N'P')) - DROP PROCEDURE [dbo].[getROFsts] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: - Create Date: - Description: - ========================================================================================================== - */ - CREATE PROCEDURE [dbo].[getROFsts] - - WITH EXECUTE AS OWNER - AS - SELECT - [ROFstID], - [RODbID], - --[ROLookup], - null as [ROLookup], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT Count(1) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount], - (SELECT Count(1) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount] - FROM [ROFsts] - - RETURN - - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [getROFsts] Succeeded' - ELSE PRINT 'Procedure Creation: [getROFsts] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[getRoFstBySize] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'getRoFstBySize' AND type in (N'P')) - DROP PROCEDURE [dbo].[getRoFstBySize] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - Create PROCEDURE [dbo].[getRoFstBySize] - ( - @RODbID int, - @Len int - ) - WITH EXECUTE AS OWNER - AS - - select [ROFstID], - [RODbID], - --[ROLookup], - null as [ROLookup], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT Count(1) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount], - (SELECT Count(1) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount] - from [ROFsts] - where len(rolookup) = @len and [RODbID] = @RODbID - - RETURN - - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [getRoFstBySize] Succeeded' - ELSE PRINT 'Procedure Creation: [getRoFstBySize] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[getROFstByRODbID_DTS] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'getROFstByRODbID_DTS' AND type in (N'P')) - DROP PROCEDURE [dbo].[getROFstByRODbID_DTS] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: - Create Date: - Description: - ========================================================================================================== - */ - CREATE PROCEDURE [dbo].[getROFstByRODbID_DTS] - ( - @RODbID int, - @DTS datetime - ) - WITH EXECUTE AS OWNER - AS - SELECT - [ROFstID], - [RODbID], - --[ROLookup], - null as [ROLookup], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT Count(1) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount], - (SELECT Count(1) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount] - FROM [ROFsts] - WHERE [RODbID]=@RODbID AND [DTS]=@DTS - - RETURN - - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [getROFstByRODbID_DTS] Succeeded' - ELSE PRINT 'Procedure Creation: [getROFstByRODbID_DTS] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[getROFst] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'getROFst' AND type in (N'P')) - DROP PROCEDURE [dbo].[getROFst] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: - Create Date: - Description: - ========================================================================================================== - */ - CREATE PROCEDURE [dbo].[getROFst] - - ( - @ROFstID int - ) - WITH EXECUTE AS OWNER - AS - SELECT - [ROFstID], - [RODbID], - -- [ROLookup], - null as [ROLookup], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT Count(1) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount], - (SELECT Count(1) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount] - FROM [ROFsts] - WHERE [ROFstID]=@ROFstID - - SELECT - [Associations].[AssociationID], - [Associations].[VersionID], - [Associations].[ROFstID], - [Associations].[Config], - [Associations].[DTS], - [Associations].[UserID], - [Associations].[LastChanged], - [DocVersions].[FolderID] [DocVersion_FolderID], - [DocVersions].[VersionType] [DocVersion_VersionType], - [DocVersions].[Name] [DocVersion_Name], - [DocVersions].[Title] [DocVersion_Title], - [DocVersions].[ItemID] [DocVersion_ItemID], - [DocVersions].[FormatID] [DocVersion_FormatID], - [DocVersions].[Config] [DocVersion_Config], - [DocVersions].[DTS] [DocVersion_DTS], - [DocVersions].[UserID] [DocVersion_UserID] - FROM [Associations] - JOIN [DocVersions] ON - [DocVersions].[VersionID]=[Associations].[VersionID] - WHERE - [Associations].[ROFstID]=@ROFstID - - - SELECT - [Figures].[FigureID], - [Figures].[ROFstID], - [Figures].[ImageID], - [Figures].[Config], - [Figures].[DTS], - [Figures].[UserID], - [Figures].[LastChanged], - [ROImages].[RODbID] [ROImage_RODbID], - [ROImages].[FileName] [ROImage_FileName], - [ROImages].[Content] [ROImage_Content], - [ROImages].[Config] [ROImage_Config], - [ROImages].[DTS] [ROImage_DTS], - [ROImages].[UserID] [ROImage_UserID] - FROM [Figures] - JOIN [ROImages] ON - [ROImages].[ImageID]=[Figures].[ImageID] - WHERE - [Figures].[ROFstID]=@ROFstID - - RETURN - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [getROFst] Succeeded' - ELSE PRINT 'Procedure Creation: [getROFst] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[getRODb] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'getRODb' AND type in (N'P')) - DROP PROCEDURE [dbo].[getRODb] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: - Create Date: - Description: - ========================================================================================================== - */ - CREATE PROCEDURE [dbo].[getRODb] - ( - @RODbID int - ) - WITH EXECUTE AS OWNER - AS - SELECT - [RODbID], - [ROName], - [FolderPath], - [DBConnectionString], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT Count(1) FROM [DROUsages] WHERE [DROUsages].[RODbID]=[RODbs].[RODbID]) [DROUsageCount], - (SELECT Count(1) FROM [ROFsts] WHERE [ROFsts].[RODbID]=[RODbs].[RODbID]) [ROFstCount], - (SELECT Count(1) FROM [ROImages] WHERE [ROImages].[RODbID]=[RODbs].[RODbID]) [ROImageCount], - (SELECT Count(1) FROM [RoUsages] WHERE [RoUsages].[RODbID]=[RODbs].[RODbID]) [RoUsageCount] - FROM [RODbs] - WHERE [RODbID]=@RODbID - - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [Documents].[LibTitle] [Document_LibTitle], - [Documents].[DocContent] [Document_DocContent], - [Documents].[DocAscii] [Document_DocAscii], - [Documents].[Config] [Document_Config], - [Documents].[DTS] [Document_DTS], - [Documents].[UserID] [Document_UserID], - [Documents].[FileExtension] [Document_FileExtension] - FROM [DROUsages] - JOIN [Documents] ON - [Documents].[DocID]=[DROUsages].[DocID] - WHERE - [DROUsages].[RODbID]=@RODbID - - - SELECT - [ROFsts].[ROFstID], - [ROFsts].[RODbID], - --[ROFsts].[ROLookup], - null as [ROLookup], - [ROFsts].[Config], - [ROFsts].[DTS], - [ROFsts].[UserID], - [ROFsts].[LastChanged] - FROM [ROFsts] - WHERE - [ROFsts].[RODbID]=@RODbID - - - SELECT - [ROImages].[ImageID], - [ROImages].[RODbID], - [ROImages].[FileName], - [ROImages].[Content], - [ROImages].[Config], - [ROImages].[DTS], - [ROImages].[UserID], - [ROImages].[LastChanged] - FROM [ROImages] - WHERE - [ROImages].[RODbID]=@RODbID - - - SELECT - [RoUsages].[ROUsageID], - [RoUsages].[ContentID], - [RoUsages].[ROID], - [RoUsages].[Config], - [RoUsages].[DTS], - [RoUsages].[UserID], - [RoUsages].[LastChanged], - [RoUsages].[RODbID], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [RoUsages] - JOIN [Contents] ON - [Contents].[ContentID]=[RoUsages].[ContentID] - WHERE - [RoUsages].[RODbID]=@RODbID - - RETURN - - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [getRODb] Succeeded' - ELSE PRINT 'Procedure Creation: [getRODb] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[getJustROFst] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'getJustROFst' AND type in (N'P')) - DROP PROCEDURE [dbo].[getJustROFst] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: - Create Date: - Description: - ========================================================================================================== - */ - CREATE PROCEDURE [dbo].[getJustROFst] - ( - @ROFstID int - ) - WITH EXECUTE AS OWNER - AS - SELECT - [ROFstID], - [RODbID], - --[ROLookup], - null as [ROLookup], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT Count(1) FROM [Associations] WHERE [Associations].[ROFstID]=[ROFsts].[ROFstID]) [AssociationCount], - (SELECT Count(1) FROM [Figures] WHERE [Figures].[ROFstID]=[ROFsts].[ROFstID]) [FigureCount] - FROM [ROFsts] - WHERE [ROFstID]=@ROFstID - - RETURN - - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [getJustROFst] Succeeded' - ELSE PRINT 'Procedure Creation: [getJustROFst] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[getFiguresByImageID] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'getFiguresByImageID' AND type in (N'P')) - DROP PROCEDURE [dbo].[getFiguresByImageID] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: - Create Date: - Description: - ========================================================================================================== - */ - CREATE PROCEDURE [dbo].[getFiguresByImageID] - ( - @ImageID int - ) - WITH EXECUTE AS OWNER - AS - - SELECT - [Figures].[FigureID], - [Figures].[ROFstID], - [Figures].[ImageID], - [Figures].[Config], - [Figures].[DTS], - [Figures].[UserID], - [Figures].[LastChanged], - [ROFsts].[RODbID] [ROFst_RODbID], - --[ROFsts].[ROLookup] [ROFst_ROLookup], - null as [ROFst_ROLookup], - [ROFsts].[Config] [ROFst_Config], - [ROFsts].[DTS] [ROFst_DTS], - [ROFsts].[UserID] [ROFst_UserID] - FROM [Figures] - JOIN [ROFsts] ON - [ROFsts].[ROFstID]=[Figures].[ROFstID] - WHERE - [Figures].[ImageID]=@ImageID - - RETURN - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [getFiguresByImageID] Succeeded' - ELSE PRINT 'Procedure Creation: [getFiguresByImageID] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[getDocVersion] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'getDocVersion' AND type in (N'P')) - DROP PROCEDURE [dbo].[getDocVersion] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: - Create Date: - Description: - ========================================================================================================== - */ - CREATE PROCEDURE [dbo].[getDocVersion] - ( - @VersionID int - ) - WITH EXECUTE AS OWNER - AS - SELECT - [VersionID], - [FolderID], - [VersionType], - [Name], - [Title], - [ItemID], - [FormatID], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(1) FROM [Associations] WHERE [Associations].[VersionID]=[DocVersions].[VersionID]) [AssociationCount] - FROM [DocVersions] - WHERE [VersionID]=@VersionID - - SELECT - [Associations].[AssociationID], - [Associations].[VersionID], - [Associations].[ROFstID], - [Associations].[Config], - [Associations].[DTS], - [Associations].[UserID], - [Associations].[LastChanged], - [ROFsts].[RODbID] [ROFst_RODbID], - --[ROFsts].[ROLookup] [ROFst_ROLookup], - null as [ROFst_ROLookup], - [ROFsts].[Config] [ROFst_Config], - [ROFsts].[DTS] [ROFst_DTS], - [ROFsts].[UserID] [ROFst_UserID] - FROM [Associations] - JOIN [ROFsts] ON - [ROFsts].[ROFstID]=[Associations].[ROFstID] - WHERE - [Associations].[VersionID]=@VersionID - - RETURN - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [getDocVersion] Succeeded' - ELSE PRINT 'Procedure Creation: [getDocVersion] Error on Creation' - GO - - - - /* - ---------------------------------------------------------------------------------- - Stored Procs: (Create New) - ---------------------------------------------------------------------------------- - [dbo].[vesp_RofstHeaderInsert] - [dbo].[vesp_RofstHeaderFinalizeLoad] - [dbo].[vesp_RofstDataSearch] - [dbo].[vesp_RofstDataGetValueDifferences] - [dbo].[vesp_RofstDataGetRofstByID] - [dbo].[vesp_RofstDataGetHeaderRofstByID] - [dbo].[vesp_RofstDataGetDatabases] - [dbo].[vesp_RofstDataGetDatabaseByID] - [dbo].[vesp_RofstDataGetChildrenByType] - [dbo].[vesp_RofstDataGetChildrenByRoid] - [dbo].[vesp_RofstDataGetChildrenByRofstID] - [dbo].[vesp_RofstDataGetChildrenByID] - [dbo].[vesp_RofstDataGetChildByRoid] - [dbo].[vesp_RofstDataGetChildByID] - [dbo].[vesp_RofstDataGetChildByAccPageID] - [dbo].[vesp_RofstDatabaseInsert] - [dbo].[vesp_RofstChildInsert] - */ - - - /****** Object: StoredProcedure [dbo].[vesp_RofstHeaderInsert] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstHeaderInsert' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstHeaderInsert] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Inserts New Rofst Header Record - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstHeaderInsert] - ( - @RofstID Int, - @hSize Int, - @hMonth Int, - @hDay Int, - @hcYear Int, - @hcMonth Int, - @hcDay Int, - @hcHour Int, - @hcMin Int, - @hcSec Int, - @hcHund Int, - @UserID VarChar(50) - ) - With Execute as Owner - As - Begin - - -- Clear Existing Values (If Any) - Delete From RofstHeader Where RofstID = @RofstID; - - -- Create RofstHeader records and Set LoadedDate to null - Insert Into RofstHeader (RofstID, hSize, hMonth, hDay, hcYear, hcMonth, hcDay, hcHour, hcMin, hcSec, hcHund, LoadedDate, CreateUserID, CreateDate) - Values (@RofstID, @hSize, @hMonth, @hDay, @hcYear, @hcMonth, @hcDay, @hcHour, @hcMin, @hcSec, @hcHund, null, @UserID, GetDate()); - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstHeaderInsert] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstHeaderInsert] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstHeaderFinalizeLoad] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstHeaderFinalizeLoad' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstHeaderFinalizeLoad] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Finalizes Rofst Header Record / Updates LoadedDate if Success - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstHeaderFinalizeLoad] - ( - @RofstID Int - ) - With Execute as Owner - As - Begin - - -- Set LoadedDate on RofstHeader - Update RofstHeader - Set LoadedDate = GetDate() - Where RofstID = @RofstID; - - -- Rebuild/Reorganize Indexes - Exec [dbo].[vesp_UtilityCheckIndexes] 20.0, 5.0, 0, 1; - - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstHeaderFinalizeLoad] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstHeaderFinalizeLoad] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataSearch] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataSearch' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataSearch] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: RO Default Value Search - - @SearchTypeID => (1) Starts With (2) Ends With (3) Contains (4) Exact Match - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataSearch] - ( - @RofstID int, - @Value VarChar(Max) = null, - @SearchTypeID Int = 1, -- Starts With - @MaxNumOfRecords Int = null - ) - With Execute as Owner - As - Begin - - -- Remove any leading/trailing white spaces - Set @Value = dbo.vefn_Clean( @Value, 0, null ); - - -- Escape any % signs in the search value - Set @Value = Replace( @Value, '%', '[%]' ); - - -- Format search value - If (Len(@Value) = 0) Set @Value = null; - - -- Create Temp Results Table - Create Table #SearchResults - (roid VarChar(50) Not Null, [value] VarChar(Max), RowNum Int Not Null Primary Key); - - -- Select roids/values based on search criteria - Insert Into #SearchResults (roid, [value], RowNum) - Select rdv.roid, - rdv.[value], - Row_Number() Over (Order By rdv.[value] Asc, rdv.roid Asc) as 'RowNum' - From vwRofstData_RofstDefaultValues rdv - Where rdv.RofstID = @RofstID - And ((@Value is null) - Or (@SearchTypeID = 1 And rdv.[value] like @Value + '%') -- Starts With - Or (@SearchTypeID = 2 And rdv.[value] like '%' + @Value) -- Ends With - Or (@SearchTypeID = 3 And rdv.[value] like '%' + @Value + '%') -- Contains - Or (@SearchTypeID = 4 And rdv.[value] = @Value)) -- Exact Match - Order By rdv.[value] Asc, rdv.roid Asc - Option (Recompile); - - -- Return the specified number of results - Select sr.roid, sr.[value] - From #SearchResults sr - Where (@MaxNumOfRecords is null Or sr.RowNum <= @MaxNumOfRecords) - Order By sr.RowNum Asc; - - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataSearch] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataSearch] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetValueDifferences] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetValueDifferences' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetValueDifferences] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Gets Value Differences between (2) Rofst (Ro.fst) Files - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetValueDifferences] - ( - @OriginalRofstID Int, - @CurrentRofstID Int - ) - With Execute as Owner - As - Begin - - Declare @Differences Table (OriginalRoid VarChar(25), OriginalValue VarChar(Max), - CurrentRoid VarChar(25), CurrentValue VarChar(Max)); - - - With OriginalRofst as - ( - Select rc.roid, rc.[value] - From vwRofstData_RofstChildren rc - Where rc.RofstID = @OriginalRofstID - And Not rc.[value] is null - - ), CurrentRofst as ( - - Select rc.roid, rc.[value] - From vwRofstData_RofstChildren rc - Where rc.RofstID = @CurrentRofstID - And Not rc.[value] is null - ) - Insert Into @Differences (OriginalRoid, OriginalValue, CurrentRoid, CurrentValue) - Select o.roid, o.[value], c.roid, c.[value] - From OriginalRofst o - left outer join CurrentRofst c on c.roid = o.roid - Where o.[value] <> c.[value]; - - - Select OriginalRoid as 'Roid', - Case When (CurrentValue is null) Then 1 Else 0 End as 'IsDeleted', - Case When (Not CurrentValue is null) Then 1 Else 0 End as 'IsModified' - From @Differences; - - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetValueDifferences] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetValueDifferences] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetRofstByID] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetRofstByID' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetRofstByID] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Gets Rofsts Info by ID - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetRofstByID] - ( - @RofstID int, - @IncludeRoLookup Bit - ) - With Execute as Owner - As - Begin - - Select r.ROFstID, - r.RODbID, - Case (@IncludeRoLookup) When 1 Then r.ROLookup Else null End as 'ROLookup', - r.DTS, - r.UserID, - r.LastChanged - From ROFsts r with (NoLock) - Where r.RofstID = @RofstID; - - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetRofstByID] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetRofstByID] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetHeaderRofstByID] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetHeaderRofstByID' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetHeaderRofstByID] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Gets Rofst Header Info by ID - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetHeaderRofstByID] - ( - @RofstID int - ) - With Execute as Owner - As - Begin - - Select rh.RofstID as 'RofstID', - rh.RofstHeaderStatusID as 'RofstHeaderStatusID', - rh.RofstHeaderStatus as 'RofstHeaderStatus', - rh.hSize as 'hSize', - rh.hMonth as 'hMonth', - rh.hDay as 'hDay', - rh.hcYear as 'hcYear', - rh.hcMonth as 'hcMonth', - rh.hcDay as 'hcDay', - rh.hcHour as 'hcHour', - rh.hcMin as 'hcMin', - rh.hcSec as 'hcSec', - rh.hcHund as 'hcHund', - rh.LoadedDate as 'LoadedDate', - rh.CreateUserID as 'CreateUserID', - rh.CreateDate as 'CreateDate' - From vwRofstData_RofstHeaders rh - Where rh.RofstID = @RofstID; - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetHeaderRofstByID] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetHeaderRofstByID] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetDatabases] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetDatabases' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetDatabases] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Gets all Rofst Databases for a specified Rofst File - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetDatabases] - ( - @RofstID int - ) - With Execute as Owner - As - Begin - - Select rd.RofstID, - rd.dbiID, - rd.dbiType, - rd.dbiAW, - rd.dbiTitle, - rd.dbiAP, - rd.ID, - rd.ParentID - From vwRofstData_RofstDatabases rd - Where rd.RofstID = @RofstID - Order By rd.dbiID Asc; - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetDatabases] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetDatabases] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetDatabaseByID] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetDatabaseByID' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetDatabaseByID] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Gets Rofst Database Info by ID - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetDatabaseByID] - ( - @RofstID int, - @dbiID int - ) - With Execute as Owner - As - Begin - - Select rd.RofstID, - rd.dbiID, - rd.dbiType, - rd.dbiAW, - rd.dbiTitle, - rd.dbiAP, - rd.ID, - rd.ParentID - From vwRofstData_RofstDatabases rd - Where rd.RofstID = @RofstID - And rd.dbiID = @dbiID; - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetDatabaseByID] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetDatabaseByID] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetChildrenByType] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetChildrenByType' AND type in (N'P')) - DROP PROCEDURE[dbo].[vesp_RofstDataGetChildrenByType] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Gets Rofst Children Info by Type - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetChildrenByType] - ( - @RofstID int, - @ValueTypes VarChar(Max) - ) - With Execute as Owner - As - Begin - - -- Remove any leading/trailing white spaces - Set @ValueTypes = dbo.vefn_Clean( @ValueTypes, 0, null ); - - -- Format search value - If (Len(@ValueTypes) = 0) Set @ValueTypes = null; - - With ValueTypes as - ( - Select Cast(x.ListValue as Int) as 'ListValue' - From dbo.vefn_ParseStringListToTable(@ValueTypes, ',') as x - ) - Select rc.ROFstID, - rc.dbiID, - rc.ID, - rc.ParentID, - rc.[type], - rc.title, - rc.roid, - rc.appid, - rc.[value], - rc.AccPageID - From vwRofstData_RofstChildren rc - Left outer join ValueTypes vt on vt.ListValue = rc.[type] - Where rc.RofstID = @RofstID - And Not rc.[value] is null - And (@ValueTypes is null Or Not vt.ListValue is null) - Option (Recompile); - - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetChildrenByType] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetChildrenByType] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetChildrenByRoid] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetChildrenByRoid' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetChildrenByRoid] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Gets Rofst Children (RoChild) Info by Roid - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetChildrenByRoid] - ( - @RofstID int, - @Roid VarChar(50) - ) - With Execute as Owner - As - Begin - - With RoParent as - ( - Select RofstID, dbiID, ID, [type], title, roid - From vwRofstData_RofstChildren - Where RofstID = @RofstID And roid = @Roid - ) - Select rc.RofstID, - rc.dbiID, - -- Ro Parent Info - rp.[type] as 'ParentType', - rp.title as 'ParentTitle', - rp.roid as 'ParentRoid', - -- Ro Child Info - rc.ID, - rc.ParentID, - rc.[type], - rc.title, - rc.roid, - rc.appid, - rc.[value], - rc.AccPageID - From RoParent rp - inner join vwRofstData_RofstChildren rc on rc.RofstID = rp.RofstID and rc.dbiID = rp.dbiID and rc.ParentID = rp.ID - Order By rc.ID Asc; - - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetChildrenByRoid] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetChildrenByRoid] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetChildrenByRofstID] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetChildrenByRofstID' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetChildrenByRofstID] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Gets All Rofst Children Info by Rofst ID - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetChildrenByRofstID] - ( - @RofstID int - ) - With Execute as Owner - As - Begin - - Select rc.RofstID, - rc.dbiID, - rc.ID, - rc.ParentID, - rc.[type], - rc.title, - rc.roid, - rc.appid, - rc.[value], - rc.AccPageID - From vwRofstData_RofstChildren rc - Where rc.RofstID = @RofstID - And Not rc.[value] is null - Order By rc.dbiID Asc, rc.[type] Asc, rc.roid Asc; - - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetChildrenByRofstID] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetChildrenByRofstID] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetChildrenByID] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetChildrenByID' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetChildrenByID] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Gets Rofst Children Info by DbiID and Object ID - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetChildrenByID] - ( - @RofstID int, - @DbiID int, - @ID Int - ) - With Execute as Owner - As - Begin - - - Select rc.RofstID, - rc.dbiID, - rc.ID, - rc.ParentID, - rc.[type], - rc.title, - rc.roid, - rc.appid, - rc.[value], - rc.AccPageID - From vwRofstData_RofstChildren rc - Where rc.RofstID = @RofstID - And rc.dbiID = @DbiID - And rc.ParentID = @ID - Order By rc.ID Asc; - - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetChildrenByID] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetChildrenByID] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetChildByRoid] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetChildByRoid' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetChildByRoid] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Gets Rofst Child Info by Roid - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetChildByRoid] - ( - @RofstID int, - @Roid VarChar(50) - ) - With Execute as Owner - As - Begin - - Select rc.ROFstID, - rc.dbiID, - rc.ID, - rc.ParentID, - rc.[type], - rc.title, - rc.roid, - rc.appid, - rc.[value], - rc.AccPageID - From vwRofstData_RofstChildren rc - Where rc.RofstID = @RofstID - And rc.roid = @Roid; - - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetChildByRoid] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetChildByRoid] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetChildByID] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetChildByID' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetChildByID] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Gets Rofst Child Info by dbiID and Object ID - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetChildByID] - ( - @RofstID int, - @DbiID int, - @ID Int - ) - With Execute as Owner - As - Begin - - Select rc.RofstID, - rc.dbiID, - rc.ID, - rc.ParentID, - rc.[type], - rc.title, - rc.roid, - rc.appid, - rc.[value], - rc.AccPageID - From vwRofstData_RofstChildren rc - Where rc.RofstID = @RofstID - And rc.dbiID = @DbiID - And rc.ID = @ID; - - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetChildByID] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetChildByID] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetChildByAccPageID] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetChildByAccPageID' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetChildByAccPageID] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Gets Rofst Child Info by AccPageID - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetChildByAccPageID] - ( - @RofstID int, - @AccPageID VarChar(50) - ) - With Execute as Owner - As - Begin - - Select rc.ROFstID, - rc.dbiID, - rc.ID, - rc.ParentID, - rc.[type], - rc.title, - rc.roid, - rc.appid, - rc.[value], - rc.AccPageID - From vwRofstData_RofstChildren rc - Where rc.RofstID = @RofstID - And rc.AccPageID = @AccPageID; - - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetChildByAccPageID] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetChildByAccPageID] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDatabaseInsert] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDatabaseInsert' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDatabaseInsert] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Inserts New Rofst Database Record - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDatabaseInsert] - ( - @RofstID Int, - @dbiID Int, - @dbiType Int, - @dbiAW Int, - @dbiTitle VarChar(Max), - @dbiAP VarChar(Max), - @ID Int, - @ParentID Int - ) - With Execute as Owner - As - Begin - - - Insert Into RofstDatabase (RofstID, dbiID, dbiType, dbiAW, dbiTitle, dbiAP, ID, ParentID) - Values (@RofstID, @dbiID, @dbiType, @dbiAW, @dbiTitle, @dbiAP, @ID, @ParentID ); - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDatabaseInsert] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDatabaseInsert] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstChildInsert] Script Date: 06/23/2022 ******/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstChildInsert' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstChildInsert] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/23/2022 - Description: Inserts New Rofst Child Record / Default Values - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstChildInsert] - ( - @RofstID Int, - @ID Int, - @ParentID Int, - @dbiID Int, - @type Int, - @title VarChar(Max), - @roid VarChar(50), - @appid VarChar(Max) = null, - @value VarChar(Max) = null - ) - With Execute as Owner - As - Begin - - Declare @AccPageID VarChar(Max) = null; - Declare @DefaultValues VarChar(Max); - - - -- Create Rofst Child/Group Record - Insert Into RofstChild (RofstID, ID, ParentID, dbiID, [type], title, roid, appid, [value]) - Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, @value); - - - -- Check for appid, if exists, then insert the default value for each return type if multi-value - If (Len(@appid) > 0) - Begin - - -- Get Accessory Page ID - Select @AccPageID = Concat(d.dbiAP, '-', @appid) - From RofstDatabase d with (NoLock) - Where d.RofstID = @RofstID And d.dbiID = @dbiID; - - -- Insert Rofst Default Value (Parent RoChild) [roid = 12] - Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID) - Values (@RofstID, @roid, Replace(@title, '\u160?', ' '), @AccPageID); - - -- Insert Rofst Default Value(s) (Children RoChild) [roid = 16] (Do Not Insert Duplicates) - Select @DefaultValues = Replace(dbo.vefn_RofstDataReplaceVars(@value), '{', ''); - - With ChildrenValues as - ( - Select (x.ListPosition + 40) as 'OffsetIndex', - Case When (PatIndex('%=%', x.ListValue) > 0) Then Right(x.ListValue, Len(x.ListValue)-PatIndex('%=%', x.ListValue)) Else x.ListValue End as 'DefaultValue' - From [dbo].[vefn_ParseStringListToTable](@DefaultValues, '}') x - Where Len(x.ListValue) > 0 - ) - Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID) - Select @RofstID as 'RofstID', - Concat(@roid, Cast(Format(Min(OffsetIndex), 'D4') as VarChar(4))) as 'roid', - DefaultValue as 'value', - null as 'AccPageID' - From ChildrenValues - Group By DefaultValue - Order By Min(OffsetIndex) Asc - - End -- (Len(@appid) > 0) - - - Return; - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstChildInsert] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstChildInsert] Error on Creation' - GO - - -/* -========================================================================================================== - End: B2022-026 RO Memory reduction coding (Jakes Merge) [Version 2.0] -========================================================================================================== -*/ - -/* -========================================================================================================== - Start: B2022-083: Support Conditional RO Values (v2.1) -========================================================================================================== -*/ - -/* - ---------------------------------------------------------------------------------- - Tables: - ---------------------------------------------------------------------------------- - [RofstExtension] [Created] - */ - - -- If RofstExtension table already exists then don't drop and recreate it - IF Not Exists(SELECT * FROM sys.objects Where name = 'RofstExtension' AND type in (N'U')) - Begin - - SET ANSI_NULLS ON - SET QUOTED_IDENTIFIER ON - - CREATE TABLE [dbo].[RofstExtension]( - [Offset] [int] NOT NULL, - [RoidExt] [varchar](4) NOT NULL, - [AccPageExt] [varchar](5) NOT NULL, - CONSTRAINT [PK_RofstExtension] PRIMARY KEY CLUSTERED - ( - [Offset] ASC - )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] - ) ON [PRIMARY] - - IF (@@Error = 0) PRINT 'Table Creation: [RofstExtension] Succeeded' - ELSE PRINT 'Table Creation: [RofstExtension] Error on Creation' - - IF (@@Error = 0) - Begin - - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (1,'0041','A'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (2,'0042','B'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (3,'0043','C'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (4,'0044','D'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (5,'0045','E'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (6,'0046','F'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (7,'0047','G'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (8,'0048','H'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (9,'0049','I'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (10,'004A','J'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (11,'004B','K'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (12,'004C','L'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (13,'004D','M'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (14,'004E','N'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (15,'004F','O'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (16,'0050','P'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (17,'0051','Q'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (18,'0052','R'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (19,'0053','S'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (20,'0054','T'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (21,'0055','U'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (22,'0056','V'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (23,'0057','W'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (24,'0058','X'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (25,'0059','Y'); - Insert Into RofstExtension (Offset, RoidExt, AccPageExt) Values (26,'005A','Z'); - - End - - End - Go - - - - /* - ---------------------------------------------------------------------------------- - Functions: - ---------------------------------------------------------------------------------- - [dbo].[vefn_RofstDataCleanUnitInfoTags] [Created] - [dbo].[vefn_RofstDataReplaceLegacyTagsWithDefaults] [Created] - [dbo].[vefn_RofstDataReplaceVars] [Modified] - */ - - /****** Object: UserDefinedFunction [dbo].[vefn_RofstDataCleanUnitInfoTags] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vefn_RofstDataCleanUnitInfoTags' AND type in (N'FN')) - DROP FUNCTION [dbo].[vefn_RofstDataCleanUnitInfoTags] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - -- ========================================================================================== - -- Author: Jake Ropar - -- Create Date: 06/21/2022 - -- Description: Removes any legacy legacy unit info variables and fixes older applicability tags - -- ========================================================================================== - - CREATE FUNCTION [dbo].[vefn_RofstDataCleanUnitInfoTags](@Values VarChar(Max), @RemoveUnitInfoVars bit = 0) Returns VarChar(Max) - WITH EXECUTE AS OWNER - AS - BEGIN - - Declare @RetVal VarChar(Max) = ''; - - Set @RetVal = dbo.vefn_Clean(@Values, 1, null); - - If (Len(@RetVal) > 0) - Begin - - -- Make Sure all tag/var instances are upper case & Remove any internal spaces - Set @RetVal = Replace(@RetVal, 'U-OTHER TEXT', 'U-OTHERTEXT'); - Set @RetVal = Replace(@RetVal, 'U-OTHER NUMBER', 'U-OTHERNUMBER'); - Set @RetVal = Replace(@RetVal, 'U-OTHER NAME', 'U-OTHERNAME'); - Set @RetVal = Replace(@RetVal, 'U-OTHER ID', 'U-OTHERID'); - Set @RetVal = Replace(@RetVal, '', ''); - - If (@RemoveUnitInfoVars > 0) - Begin - - -- Remove any Unit Info Variables - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - - End - - End - - Return @RetVal; - - END - Go - - IF (@@Error = 0) PRINT 'Function Creation: [vefn_RofstDataCleanUnitInfoTags] Succeeded' - ELSE PRINT 'Function Creation: [vefn_RofstDataCleanUnitInfoTags] Error on Creation' - GO - - - /****** Object: UserDefinedFunction [dbo].[vefn_RofstDataReplaceLegacyTagsWithDefaults] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vefn_RofstDataReplaceLegacyTagsWithDefaults' AND type in (N'FN')) - DROP FUNCTION [dbo].[vefn_RofstDataReplaceLegacyTagsWithDefaults] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - -- ========================================================================================== - -- Author: Jake Ropar - -- Create Date: 06/21/2022 - -- Description: Replaces any legacy applicability tags with the default value - -- ========================================================================================== - - CREATE FUNCTION [dbo].[vefn_RofstDataReplaceLegacyTagsWithDefaults](@Values VarChar(Max)) Returns VarChar(Max) - WITH EXECUTE AS OWNER - AS - BEGIN - - Declare @RetVal VarChar(Max) = ''; - Declare @DefaultValue VarChar(Max) = ''; - - Declare @StartTagIndex Int; - Declare @EndTagIndex Int; - Declare @StartTagValue VarChar(Max); - Declare @StartValIndex Int; - Declare @EndValIndex Int; - - Declare @TagName VarChar(Max); - Declare @LegacyTagNames VarChar(Max) = 'U-ID,U-NUMBER,U-NAME,U-TEXT,U-OTHERID,U-OTHERNUMBER,U-OTHERNAME,U-OTHERTEXT'; - - -- Make Sure all tag instances are upper case & Remove any internal spaces - Set @RetVal = dbo.vefn_RofstDataCleanUnitInfoTags(@Values, 0); - - - Declare LegacyTags_Cursor Cursor Fast_Forward For - Select '{' + x.ListValue + '{' as 'TagName' - From [dbo].[vefn_ParseStringListToTable](@LegacyTagNames, ',') x - - Open LegacyTags_Cursor - - Fetch Next From LegacyTags_Cursor Into @TagName - - While (@@FETCH_STATUS = 0) - Begin - - -- Get Start/End Index of Tag - Set @StartTagIndex = PatIndex('%' + @TagName + '%', @RetVal); - Set @EndTagIndex = PatIndex('%}}%', @RetVal); - - While (@StartTagIndex > 0) - Begin - - Set @StartTagValue = SubString(@RetVal, @StartTagIndex, (@EndTagIndex - @StartTagIndex) + 2); - - Set @StartValIndex = PatIndex('%=%', @StartTagValue); - Set @EndValIndex = PatIndex('%}%', @StartTagValue); - - Set @DefaultValue = SubString(@StartTagValue, @StartValIndex + 1, (@EndValIndex - @StartValIndex) - 1); - Set @RetVal = Replace(@RetVal, @StartTagValue, @DefaultValue); - - Set @StartTagIndex = PatIndex('%' + @TagName + '%', @RetVal); - Set @EndTagIndex = PatIndex('%}}%', @RetVal); - - End -- While (@StartTagIndex > 0) - - - Fetch Next From LegacyTags_Cursor Into @TagName - End - - Close LegacyTags_Cursor; - Deallocate LegacyTags_Cursor; - - - Return @RetVal; - - END - Go - - IF (@@Error = 0) PRINT 'Function Creation: [vefn_RofstDataReplaceLegacyTagsWithDefaults] Succeeded' - ELSE PRINT 'Function Creation: [vefn_RofstDataReplaceLegacyTagsWithDefaults] Error on Creation' - GO - - - /****** Object: UserDefinedFunction [dbo].[vefn_RofstDataReplaceVars] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vefn_RofstDataReplaceVars' AND type in (N'FN')) - DROP FUNCTION [dbo].[vefn_RofstDataReplaceVars] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - -- ========================================================================================== - -- Author: Jake Ropar - -- Create Date: 3/25/2022 - -- Description: Replaces Any Variables and returns the rest of the value string - -- ========================================================================================== - - CREATE FUNCTION [dbo].[vefn_RofstDataReplaceVars](@Values VarChar(Max)) Returns VarChar(Max) - WITH EXECUTE AS OWNER - AS - BEGIN - - Declare @RetVal VarChar(Max) = ''; - Declare @EqualsIndex Int; - Declare @EndIndex Int; - Declare @NameValPairStartIndex Int; - Declare @NameValPairEndIndex Int; - - Declare @VarPair VarChar(Max); - Declare @VarName VarChar(Max); - Declare @VarValue VarChar(Max); - - -- Replace Any "" Tags with the Default Value first - Select @RetVal = dbo.vefn_RofstDataReplaceApplTagsWithDefaults(@Values); - - -- Replace Any Legacy Applicability Tags with the Default Value second - Select @RetVal = dbo.vefn_RofstDataReplaceLegacyTagsWithDefaults(@RetVal); - - - If (PatIndex('%{{A%', @RetVal) > 0) - Set @EndIndex = PatIndex('%{{A%', @RetVal); - Else - Set @EndIndex = Len(@RetVal) -1; - - Set @NameValPairStartIndex = PatIndex('%{%', @RetVal); - Set @NameValPairEndIndex = PatIndex('%}%', @RetVal); - - While(@NameValPairStartIndex > 0 And @NameValPairStartIndex < @EndIndex) - Begin - - -- Get Name Value Pair [ex. {EGS=1214}] - Set @VarPair = SubString(@RetVal, @NameValPairStartIndex, (@NameValPairEndIndex - @NameValPairStartIndex) + 1); - - -- Remove Name Value Pair From Return Val - Set @RetVal = Replace(@RetVal, @VarPair, ''); - - -- Get Variable Name and Value - Set @EqualsIndex = PatIndex('%=%', @VarPair); - - If (@EqualsIndex > 0) - Begin - Set @VarName = SubString(@VarPair, 2, @EqualsIndex - 2); - Set @VarValue = SubString(@VarPair, @EqualsIndex + 1, Len(@VarPair) - @EqualsIndex - 1); - Set @VarName = Concat('{', @VarName, '}'); - - -- Replace All Occurences - Set @RetVal = Replace(@RetVal, @VarName, @VarValue); - End - - -- Get Updated Index Values - If (PatIndex('%{{A%', @RetVal) > 0) - Set @EndIndex = PatIndex('%{{A%', @RetVal); - Else - Set @EndIndex = Len(@RetVal) -1; - - Set @NameValPairStartIndex = PatIndex('%{%', @RetVal); - Set @NameValPairEndIndex = PatIndex('%}%', @RetVal); - - End -- End While(@ReplaceVarEndTagIndex > 0) - - Return @RetVal; - - END - Go - - IF (@@Error = 0) PRINT 'Function Creation: [vefn_RofstDataReplaceVars] Succeeded' - ELSE PRINT 'Function Creation: [vefn_RofstDataReplaceVars] Error on Creation' - GO - - - - /* - ---------------------------------------------------------------------------------- - Views: - ---------------------------------------------------------------------------------- - [dbo].[vwRofstData_RofstExtensions] [Created] - [dbo].[vwRofstData_RofstValueTypes] [Created] - [dbo].[vwRofstData_RofstBaseRoids] [Created] - [dbo].[vwRofstData_RofstChildren] [Modified] - */ - - /****** Object: View [dbo].[vwRofstData_RofstExtensions] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vwRofstData_RofstExtensions' AND type in (N'V')) - DROP VIEW [dbo].[vwRofstData_RofstExtensions] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/21/2024 - Description: (RofstData) Master View for RofstExtensions - ========================================================================================================== - */ - Create View [dbo].[vwRofstData_RofstExtensions] - As - - Select re.Offset as 'Offset', - re.RoidExt as 'RoidExt', - re.AccPageExt as 'AccPageExt' - From RofstExtension re With (NoLock) - - GO - - IF (@@Error = 0) PRINT 'View Creation: [vwRofstData_RofstExtensions] Succeeded' - ELSE PRINT 'View Creation: [vwRofstData_RofstExtensions] Error on Creation' - GO - - - - /****** Object: View [dbo].[vwRofstData_RofstValueTypes] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vwRofstData_RofstValueTypes' AND type in (N'V')) - DROP VIEW [dbo].[vwRofstData_RofstValueTypes] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/21/2022 - Description: (RofstData) Master View for Rofst Value Types - (0) Unknown (1) Single Line Text (2) Table (3) Multiple Line Text (4) X/Y Plot (8) Image - ========================================================================================================== - */ - Create View [dbo].[vwRofstData_RofstValueTypes] - As - - Select '0' as 'TypeID', 'Unknown' as 'TypeDescription' - - Union All - - Select '1' as 'TypeID', 'Single Line Text' as 'TypeDescription' -- Fixed Length Text - - Union All - - Select '2' as 'TypeID', 'Table' as 'TypeDescription' - - Union All - - Select '3' as 'TypeID', 'Multiple Line Text' as 'TypeDescription' - - Union All - - Select '4' as 'TypeID', 'X/Y Plot' as 'TypeDescription' - - Union All - - Select '8' as 'TypeID', 'Image' as 'TypeDescription' - - GO - - IF (@@Error = 0) PRINT 'View Creation: [vwRofstData_RofstValueTypes] Succeeded' - ELSE PRINT 'View Creation: [vwRofstData_RofstValueTypes] Error on Creation' - GO - - - - /****** Object: View [dbo].[vwRofstData_RofstBaseRoids] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vwRofstData_RofstBaseRoids' AND type in (N'V')) - DROP VIEW [dbo].[vwRofstData_RofstBaseRoids] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2024 - Description: (RofstData) Master View for Rofst Base Roid / AccPageID Values - ========================================================================================================== - */ - Create View [dbo].[vwRofstData_RofstBaseRoids] - As - - Select RofstID as 'RofstID', - Left(roid, 12) as 'BaseRoid', - Left(AccPageID, (Len(AccPageID)-2)) as 'BaseAccPageID' - From vwRofstData_RofstDefaultValues - Where AccPageID like '%.A'; - - GO - - IF (@@Error = 0) PRINT 'View Creation: [vwRofstData_RofstBaseRoids] Succeeded' - ELSE PRINT 'View Creation: [vwRofstData_RofstBaseRoids] Error on Creation' - GO - - - /****** Object: View [dbo].[vwRofstData_RofstChildren] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vwRofstData_RofstChildren' AND type in (N'V')) - DROP VIEW [dbo].[vwRofstData_RofstChildren] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2024 - Description: (RofstData) Master View for RofstChildren (RoChild & Groups) - ========================================================================================================== - */ - Create View [dbo].[vwRofstData_RofstChildren] - As - - Select rc.RofstChildID as 'RofstChildID', - rd.RofstID as 'RofstID', - -- RoDatabase Info - rd.dbiID as 'dbiID', - rd.dbiType as 'dbiType', - rd.dbiAW as 'dbiAW', - rd.dbiTitle as 'dbiTitle', - rd.dbiAP as 'dbiAP', - -- RoChild Info - rc.ID as 'ID', - rc.ParentID as 'ParentID', - rc.[type] as 'type', - IsNull(vt.TypeDescription, 'Unknown') as 'TypeDescription', - rc.title as 'title', - rc.roid as 'roid', - rc.appid as 'appid', - rc.[value] as 'value', - Case When (Not rc.[value] is null) Then rd.dbiAP + '-' + rc.appid Else null End as 'AccPageID' - From RofstChild rc With (NoLock) - inner join RofstDatabase rd With (NoLock) on rc.RofstID = rd.RofstID and rc.dbiID = rd.dbiID - left outer join vwRofstData_RofstValueTypes vt on vt.TypeID = rc.[type]; - - GO - - IF (@@Error = 0) PRINT 'View Creation: [vwRofstData_RofstChildren] Succeeded' - ELSE PRINT 'View Creation: [vwRofstData_RofstChildren] Error on Creation' - GO - - - - /* - ---------------------------------------------------------------------------------- - Stored Procs: - ---------------------------------------------------------------------------------- - [dbo].[vesp_RofstDataGetChildByID] [Deleted] - [dbo].[vesp_RofstDataGetExtensions] [Created] - [dbo].[vesp_RofstChildInsert] [Modified] - [dbo].[vesp_RofstDataSearch] [Modified] - [dbo].[vesp_RofstDataGetChildByAccPageID] [Modified] - [dbo].[vesp_RofstDataGetChildByRoid] [Modified] - */ - - - /****** Object: StoredProcedure [dbo].[vesp_RofstHeaderInsert] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetChildByID' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetChildByID] - GO - - IF (@@Error = 0) PRINT 'Procedure Deletion: [vesp_RofstDataGetChildByID] Succeeded' - ELSE PRINT 'Procedure Deletion: [vesp_RofstDataGetChildByID] Error on Creation' - GO - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetExtensions] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetExtensions' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetExtensions] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 06/21/2022 - Description: Gets the Ro Lookup Extensions - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetExtensions] - With Execute as Owner - As - Begin - - Select re.Offset, - re.RoidExt, - re.AccPageExt - From vwRofstData_RofstExtensions re - Order By re.Offset Asc; - - - Return; - End - - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetExtensions] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetExtensions] Error on Creation' - GO - - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstChildInsert] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstChildInsert' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstChildInsert] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2022 - Description: - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstChildInsert] - ( - @RofstID Int, - @ID Int, - @ParentID Int, - @dbiID Int, - @type Int, - @title VarChar(Max), - @roid VarChar(50), - @appid VarChar(Max) = null, - @value VarChar(Max) = null - ) - With Execute as Owner - As - Begin - - Declare @BaseAccPageID VarChar(Max) = null; - Declare @DefaultValues VarChar(Max); - - - -- Create Rofst Child/Group Record --> [Roid = (12) Digits] - Insert Into RofstChild (RofstID, ID, ParentID, dbiID, [type], title, roid, appid, [value]) - Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, @value); - - - -- Check for appid, if exists, then insert the default value for each return type if multi-value - If (Len(@appid) > 0) - Begin - - -- Get Accessory Page ID - Select @BaseAccPageID = dbo.vefn_RofstDataCleanUnitInfoTags(Concat(d.dbiAP, '-', @appid), 1) - From RofstDatabase d with (NoLock) - Where d.RofstID = @RofstID And d.dbiID = @dbiID; - - -- Insert Rofst Default Value(s) (Children RoChild) --> [Roid = (16) Digits] - Select @DefaultValues = Replace(dbo.vefn_RofstDataReplaceVars(@value), '{', ''); - - With ChildrenValues as - ( - Select x.ListPosition as 'OffsetIndex', - Case When (PatIndex('%=%', x.ListValue) > 0) Then Right(x.ListValue, Len(x.ListValue)-PatIndex('%=%', x.ListValue)) Else x.ListValue End as 'DefaultValue' - From [dbo].[vefn_ParseStringListToTable](@DefaultValues, '}') x - Where Len(x.ListValue) > 0 - ) - Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID) - Select @RofstID as 'RofstID', - Concat(@roid, re.RoidExt) as 'roid', - Case When (Len(RTrim(LTrim(cv.DefaultValue))) > 0 ) Then dbo.vefn_RofstDataCleanUnitInfoTags(cv.DefaultValue, 0) Else '[TBD]' End as 'value', - Concat(@BaseAccPageID, '.', re.AccPageExt) as 'AccPageID' - From ChildrenValues cv - inner join vwRofstData_RofstExtensions re on re.Offset = cv.OffsetIndex - Order By cv.OffsetIndex Asc - - - End -- (Len(@appid) > 0) - - - Return; - - End - Go - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstChildInsert] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstChildInsert] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataSearch] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataSearch' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataSearch] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2022 - Description: RO Default Value Search - - @SearchTypeID => (1) Starts With (2) Ends With (3) Contains (4) Exact Match - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataSearch] - ( - @RofstID int, - @Value VarChar(Max) = null, - @SearchTypeID Int = 1, -- Starts With - @OnlyRoid16 Bit = 1, -- Return Only Roid16 Records - @MaxNumOfRecords Int = null - ) - With Execute as Owner - As - Begin - - -- Remove any leading/trailing white spaces - Set @Value = dbo.vefn_Clean( @Value, 0, null ); - - -- Escape any % signs in the search value - Set @Value = Replace( @Value, '%', '[%]' ); - - -- Format search value - If (Len(@Value) = 0) Set @Value = null; - - -- Create Temp Results Table - Create Table #SearchResults (roid VarChar(50) Not Null, [value] VarChar(Max), RowNum Int Not Null Primary Key); - - -- Select roids/values based on search criteria - Insert Into #SearchResults (roid, [value], RowNum) - Select rdv.roid, - rdv.[value], - Row_Number() Over (Order By rdv.[value] Asc, rdv.roid Asc) as 'RowNum' - From vwRofstData_RofstDefaultValues rdv - Where rdv.RofstID = @RofstID - And (@OnlyRoid16 = 0 Or Len(rdv.roid) = 16) - And ((@Value is null) - Or (@SearchTypeID = 1 And rdv.[value] like @Value + '%') -- Starts With - Or (@SearchTypeID = 2 And rdv.[value] like '%' + @Value) -- Ends With - Or (@SearchTypeID = 3 And rdv.[value] like '%' + @Value + '%') -- Contains - Or (@SearchTypeID = 4 And rdv.[value] = @Value)) -- Exact Match - Order By rdv.[value] Asc, rdv.roid Asc - Option (Recompile); - - -- Return the specified number of results - Select sr.roid, sr.[value] - From #SearchResults sr - Where (@MaxNumOfRecords is null Or sr.RowNum <= @MaxNumOfRecords) - Order By sr.RowNum Asc; - - Return; - End - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataSearch] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataSearch] Error on Creation' - GO - - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetChildByAccPageID] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetChildByAccPageID' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetChildByAccPageID] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2022 - Description: Check if the AccPageID passed in has a specific Return Value Type Extension (.A, .B, .C, etc.) - If so, then strip off the return value specific extension to get the BaseAccPageID for the lookup. - Use the BaseAccPageID to lookup the BaseRoid, then use the Roid to lookup the Ro Child Object - - Note** Using the AccPageID to first lookup the roid, then using the roid to lookup the data is - significantly faster than directly looking up the data using the AccPageID because of the indexes - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetChildByAccPageID] - ( - @RofstID int, - @AccPageID VarChar(50) - ) - With Execute as Owner - As - Begin - - Declare @BaseAccPageID VarChar(Max); - Declare @Roid VarChar(Max); - - If (PatIndex('%.[A-Z]', @AccPageID) > 0) - Set @BaseAccPageID = Left(@AccPageID, Len(@AccPageID)-2); - Else - Set @BaseAccPageID = @AccPageID; - - -- First use the AccPageID to get the BaseRoid - Select @Roid = rb.BaseRoid - From vwRofstData_RofstBaseRoids rb - Where rb.RofstID = @RofstID - And rb.BaseAccPageID = @BaseAccPageID; - - -- Then use the Roid to lookup the Ro Child Object - Select rc.ROFstID, - rc.dbiID, - rc.ID, - rc.ParentID, - rc.[type], - rc.title, - rc.roid, - rc.appid, - rc.[value], - rc.AccPageID - From vwRofstData_RofstChildren rc - Where rc.RofstID = @RofstID - And rc.roid = @Roid; - - Return; - End - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetChildByAccPageID] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetChildByAccPageID] Error on Creation' - GO - - - /****** Object: StoredProcedure [dbo].[vesp_RofstDataGetChildByRoid] ***********************/ - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstDataGetChildByRoid' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstDataGetChildByRoid] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2022 - Description: The data in the Rofst Children table currently only goes down to the (12) digit roid level. - To look up a specific return type value (16) digit roid for a RO object, you first have to - load the base RO object by its (12) digit roid in code, and then look for the specific - return value in the RO objects children collection because the values for any - multiple/variable return type formats can vary at runtime, based on your current selected - DocVersion and the Selected Slave (Unit) / OtherChild Override. - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstDataGetChildByRoid] - ( - @RofstID int, - @Roid VarChar(50) - ) - With Execute as Owner - As - Begin - - -- Only use the first (12) characters to lookup an RoChild by its roid - -- If its a (16) digit roid, then use its last (4) characters [roidExt ==> specific to a return type value] - -- to select the specified return value format type in the code once all of the children Ro Return types have - -- been loaded into memory in the code - - Set @Roid = Left(@Roid + '00000000', 12); - - Select rc.ROFstID, - rc.dbiID, - rc.ID, - rc.ParentID, - rc.[type], - rc.title, - rc.roid, - rc.appid, - rc.[value], - rc.AccPageID - From vwRofstData_RofstChildren rc - Where rc.RofstID = @RofstID - And rc.roid = @Roid; - - Return; - End - - GO - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetChildByRoid] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetChildByRoid] Error on Creation' - GO - - - - -- Delete All Existing Rofst Table Data - Delete From RofstHeader; - - -/* -========================================================================================================== - End: B2022-083: Support Conditional RO Values (v2.1) -========================================================================================================== -*/ - -/* -========================================================================================================== - Start: B2022-049 Unlink single procedure for enhanced (if data got corrupted) -========================================================================================================== -*/ -If Exists(SELECT * FROM sys.objects Where name = 'vesp_PurgeProcLinkedItemsAndChildren' AND type in (N'P')) -DROP PROCEDURE [dbo].[vesp_PurgeProcLinkedItemsAndChildren] -GO - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2022 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -Create PROCEDURE [dbo].[vesp_PurgeProcLinkedItemsAndChildren](@EnhanceID int, @EnhType int) - -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - -- Only unlink for the input procedure number & its children. Do not follow the links, i.e. source or enhanced. This - -- can be used for removing link information if the links between the 2, source & enhanced, get corrupted. - declare @Enh1 TABLE - ( - ID int, - xConfig xml - ) - insert into @Enh1 - select CC.ContentID, CC.xConfig from (select *, cast(config as xml) xConfig from Contents) CC - JOIN vefn_ChildItems(@EnhanceID) VCI ON VCI.ContentID = CC.ContentID - cross apply VEFN_GetNewEnhancedData(VCI.itemid,@EnhType) VEN - - Update @Enh1 Set xConfig.modify('delete //Enhanced[@Type=sql:variable("@EnhType")]') From @Enh1 - - Update CC Set Config = cast(xconfig as varchar(max)) From Contents CC - Join @Enh1 EE ON EE.ID = CC.ContentID - - - SELECT [ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[LastChanged], - (SELECT COUNT(1) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(1) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(1) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(1) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(1) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(1) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(1) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(1) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(1) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM [Contents] where ContentID in (Select ID From @Enh1) - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO - -IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_PurgeProcLinkedItemsAndChildren] Succeeded' -ELSE PRINT 'Procedure Creation: [vesp_PurgeProcLinkedItemsAndChildren] Error on Creation' -GO - -/* -========================================================================================================== - End: B2022-049 Unlink single procedure for enhanced (if data got corrupted) [Version 2.xx] -========================================================================================================== -*/ - - -/* -========================================================================================================== - Start: B2022-088: [JPR] Find Doc Ro button not working in Word Sections - B2022-098: [JPR] ROs not being resolved in Word Sections -========================================================================================================== -*/ - -IF EXISTS (Select * From dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[vesp_RofstDataGetChildByAccPageID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP Procedure [dbo].[vesp_RofstDataGetChildByAccPageID]; -GO - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2022 - Description: Check if the AccPageID passed in has a specific Return Value Type Extension (.A, .B, .C, etc.) - If so, then strip off the return value specific extension to get the BaseAccPageID for the lookup. - Use the BaseAccPageID to lookup the BaseRoid, then use the Roid to lookup the Ro Child Object - - Note** Using the AccPageID to first lookup the roid, then using the roid to lookup the data is - significantly faster than directly looking up the data using the AccPageID because of the indexes -========================================================================================================== - */ -Create Procedure [dbo].[vesp_RofstDataGetChildByAccPageID] -( - @RofstID int, - @AccPageID VarChar(50) -) -With Execute as Owner -As -Begin - - Declare @BaseAccPageID VarChar(Max); - Declare @BaseRoid VarChar(Max); - - -- Check if AccPageID has a valid extension - If ((PatIndex('%.[A-Z]', @AccPageID) > 0) And ((Select Count(1) From vwRofstData_RofstBaseRoids Where BaseAccPageID = @AccPageID) <= 0)) - Set @BaseAccPageID = Left(@AccPageID, Len(@AccPageID)-2); - Else - Set @BaseAccPageID = @AccPageID; - - -- Use the AccPageID to get the BaseRoid - Select @BaseRoid = rb.BaseRoid - From vwRofstData_RofstBaseRoids rb - Where rb.RofstID = @RofstID - And rb.BaseAccPageID = @BaseAccPageID; - - -- Then use the BaseRoid to lookup the Ro Child Object - Select rc.ROFstID, - rc.dbiID, - rc.ID, - rc.ParentID, - rc.[type], - rc.title, - rc.roid, - rc.appid, - rc.[value], - rc.AccPageID - From vwRofstData_RofstChildren rc - Where rc.RofstID = @RofstID - And rc.roid = @BaseRoid; - - Return; -End -GO - - -IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetChildByAccPageID] Succeeded' -ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetChildByAccPageID] Error on Creation' -GO - - - - -IF EXISTS (Select * From dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[vesp_RofstDataGetBaseAccPageKeys]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP Procedure [dbo].[vesp_RofstDataGetBaseAccPageKeys]; -GO - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/*****************************************************************************? - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -========================================================================================================== - Author: Jake Ropar - Create Date: 08/11/2022 - Description: Gets all the Base AccPageKeys that end with a "." period followed by an Alpha Character (A through Z) -========================================================================================================== - */ -Create Procedure [dbo].[vesp_RofstDataGetBaseAccPageKeys] -( - @RofstID int -) -With Execute as Owner -As -Begin - - Select BaseAccPageID - From vwRofstData_RofstBaseRoids - Where BaseAccPageID like '%.[A-Z]'; - - Return; -End -GO - - -IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstDataGetBaseAccPageKeys] Succeeded' -ELSE PRINT 'Procedure Creation: [vesp_RofstDataGetBaseAccPageKeys] Error on Creation' -GO - - - - - -If Exists(Select * From sys.objects Where type = 'FN' And object_id = OBJECT_ID('[dbo].[vefn_RofstDataReplaceLegacyTagsWithDefaults]')) - Drop Function [dbo].[vefn_RofstDataReplaceLegacyTagsWithDefaults]; - - - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - --- ========================================================================================== --- Author: Jake Ropar --- Create Date: 06/21/2022 --- Description: Replaces any legacy applicability tags with the default value --- ========================================================================================== - -CREATE FUNCTION [dbo].[vefn_RofstDataReplaceLegacyTagsWithDefaults](@Values VarChar(Max)) Returns VarChar(Max) -WITH EXECUTE AS OWNER -AS -BEGIN - - Declare @RetVal VarChar(Max) = ''; - Declare @DefaultValue VarChar(Max) = ''; - - Declare @StartTagIndex Int; - Declare @EndTagIndex Int; - Declare @StartTagValue VarChar(Max); - Declare @StartValIndex Int; - Declare @EndValIndex Int; - - Declare @TagName VarChar(Max); - Declare @LegacyTagNames VarChar(Max) = 'U-ID,U-NUMBER,U-NAME,U-TEXT,U-OTHERID,U-OTHERNUMBER,U-OTHERNAME,U-OTHERTEXT'; - - -- Make Sure all tag instances are upper case & Remove any internal spaces - Set @RetVal = dbo.vefn_RofstDataCleanUnitInfoTags(@Values, 0); - - -- Remove any instances of double "}" that have a spaces between them ex: "} }" - Set @RetVal = Replace(@RetVal, '} }', '}}'); - - Declare LegacyTags_Cursor Cursor Fast_Forward For - Select '{' + x.ListValue + '{' as 'TagName' - From [dbo].[vefn_ParseStringListToTable](@LegacyTagNames, ',') x - - Open LegacyTags_Cursor - - Fetch Next From LegacyTags_Cursor Into @TagName - - While (@@FETCH_STATUS = 0) - Begin - - -- Get Start/End Index of Tag - Set @StartTagIndex = PatIndex('%' + @TagName + '%', @RetVal); - Set @EndTagIndex = PatIndex('%}}%', @RetVal); - - While (@StartTagIndex > 0) - Begin - - Set @StartTagValue = SubString(@RetVal, @StartTagIndex, (@EndTagIndex - @StartTagIndex) + 2); - - Set @StartValIndex = PatIndex('%=%', @StartTagValue); - Set @EndValIndex = PatIndex('%}%', @StartTagValue); - - Set @DefaultValue = SubString(@StartTagValue, @StartValIndex + 1, (@EndValIndex - @StartValIndex) - 1); - Set @RetVal = Replace(@RetVal, @StartTagValue, @DefaultValue); - - Set @StartTagIndex = PatIndex('%' + @TagName + '%', @RetVal); - Set @EndTagIndex = PatIndex('%}}%', @RetVal); - - End -- While (@StartTagIndex > 0) - - - Fetch Next From LegacyTags_Cursor Into @TagName - End - - Close LegacyTags_Cursor; - Deallocate LegacyTags_Cursor; - - - Return @RetVal; - -END -Go - - -IF (@@Error = 0) PRINT 'Procedure Creation: [vefn_RofstDataReplaceLegacyTagsWithDefaults] Succeeded' -ELSE PRINT 'Procedure Creation: [vefn_RofstDataReplaceLegacyTagsWithDefaults] Error on Creation' -GO - - - -/* -========================================================================================================== - End: B2022-088: [JPR] Find Doc Ro button not working in Word Sections - B2022-098: [JPR] ROs not being resolved in Word Sections -========================================================================================================== -*/ - -/* -========================================================================================================== - Start: B2022-104: SearchReferenced Objects in PROMS is not finding any results -========================================================================================================== -*/ - - -If Exists (Select * From sys.Indexes Where Name = N'IX_tblROUsagesRODbIDDeleteStatusContentID') - Drop Index [IX_tblROUsagesRODbIDDeleteStatusContentID] on [dbo].[tblROUsages] -Go - -CREATE NONCLUSTERED INDEX [IX_tblROUsagesRODbIDDeleteStatusContentID] -ON [dbo].[tblROUsages] ([RODbID],[DeleteStatus]) -INCLUDE ([ContentID],[ROID]) -WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO - - -IF (@@Error = 0) PRINT 'Index Creation: [IX_tblROUsagesRODbIDDeleteStatusContentID] Succeeded' -ELSE PRINT 'Index Creation: [IX_tblROUsagesRODbIDDeleteStatusContentID] Error on Creation' -GO - - - - -If Exists(SELECT * FROM sys.objects Where name = 'vefn_RofstDataFormatRoidKey' AND type in (N'FN')) -DROP FUNCTION [dbo].[vefn_RofstDataFormatRoidKey] -GO - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - --- ========================================================================================== --- Author: Jake Ropar --- Create Date: 08/19/2022 --- Description: Cleans/Formats the specified roid key, with its return value ext if applicable --- ========================================================================================== - -Create Function [dbo].[vefn_RofstDataFormatRoidKey](@Roid VarChar(25), @Check16Digits bit = 0) Returns VarChar(Max) -With Execute As Owner -Begin - - Declare @RoidKey VarChar(Max) = ''; - - -- Trim Start/End and Replace Any Nulls with Empty Spaces ('') - Set @RoidKey = dbo.vefn_Clean(@Roid, 1, null); - - -- Check if Roid is Null/Empty - If (Len(@RoidKey) > 0) - Begin - - -- Roid Cleanup / Consistency Checks - Set @RoidKey = Upper(@RoidKey); -- Force Upper Case - Set @RoidKey = Replace(@RoidKey, '', ''); -- Replace Any Abbreviated Unit Info Tags - Set @RoidKey = Replace(@RoidKey, ' ', ''); -- Remove Any Internal Spaces - - -- Check if Roid is a Unit Info Tag or RO Child - If (Not @RoidKey like '= 1) Set @RoidKey = Left(@RoidKey, 12) + '0041'; - - -- Check Roid Extension (If Any) and Fix Default Extension ifusing the old format "0000" - If (Len(@RoidKey) = 16 And Right(@RoidKey, 4) = '0000') Set @RoidKey = Left(@RoidKey, 12) + '0041'; - - End - - End - - Return @RoidKey; - -End -Go - - -IF (@@Error = 0) PRINT 'Function Creation: [vefn_RofstDataFormatRoidKey] Succeeded' -ELSE PRINT 'Function Creation: [vefn_RofstDataFormatRoidKey] Error on Creation' -GO - - - - -If Exists(Select * From sys.objects Where type = 'TF' And object_id = OBJECT_ID('[dbo].[FindRoUsages]')) -Drop Function [dbo].[FindRoUsages]; -Go - -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - --- ========================================================================================== --- Author: Rich Mark --- Create Date: 01/01/2018 --- Description: Returns the ContentIDs for any Procedure/WordSections that are currently --- using any RO values in the @ROSearchString --- --- Modified: [2022.08.19 - Jake Ropar] --- Moved the logic for the Roid case statements into a new function [dbo].[vefn_RofstDataFormatRoidKey]. --- This standard roid formatting logic can now be utilized by any other objects in the database --- like (Views/Procs/FUnctions/etc.) to ensure consistency when comparing roids. --- I also added additional logic to support any (16) digit roids that are still using the older default --- roid ext of "0000" instead of the new standard format "0041". --- --- Examples: 1) Declare @ROSearchString VarChar(Max) = '1:000200000089'; Select * From FindRoUsages(ROSearchString); --- 2) Select * From FindRoUsages('1:000200000089'); --- ========================================================================================== - -Create Function [dbo].[FindRoUsages](@ROSearchString VarChar(Max)) -Returns @Results Table -( - ContentID int Primary Key -) -With Execute as Owner -Begin - - Insert Into @Results - - Select ru.ContentID as 'ContentID' - From ROUsages ru with (NoLock) - inner join vefn_SplitROSearch(@ROSearchString) rr on rr.RODbID = ru.RODbID - And dbo.vefn_RofstDataFormatRoidKey(ru.Roid, 1) like rr.Roid + '%' Collate SQL_Latin1_General_CP1_CI_AS - - Union - - Select e.ContentID as 'ContentID' - From Entries e with (NoLock) - inner join DROUsages ru with (NoLock) on ru.DocID = e.DocID - inner join vefn_SplitROSearch(@ROSearchString) rr on rr.RODbID = ru.RODbID - And dbo.vefn_RofstDataFormatRoidKey(ru.Roid, 1) like rr.Roid + '%' Collate SQL_Latin1_General_CP1_CI_AS - - Option (Recompile); - - Return; -End -Go - -IF (@@Error = 0) PRINT 'Function Creation: [FindRoUsages] Succeeded' -ELSE PRINT 'Function Creation: [FindRoUsages] Error on Creation' -GO - - -/* -========================================================================================================== - End: B2022-104: SearchReferenced Objects in PROMS is not finding any results -========================================================================================================== -*/ - -/* -========================================================================================================== - Begin: B2022-121: RO values containing curly braces around values that are NOT multi return values do not resolved in Word Sections. -========================================================================================================== -*/ - - -IF EXISTS (Select * From dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[vesp_RofstChildInsert]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP Procedure [dbo].[vesp_RofstChildInsert]; -GO - -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO - - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2022 - Description: Inserts the RO Child object and associated return values -========================================================================================================== - */ -Create Procedure [dbo].[vesp_RofstChildInsert] -( - @RofstID Int, - @ID Int, - @ParentID Int, - @dbiID Int, - @type Int, - @title VarChar(Max), - @roid VarChar(50), - @appid VarChar(Max) = null, - @value VarChar(Max) = null -) -With Execute as Owner -As -Begin - - Declare @BaseAccPageID VarChar(Max) = null; - Declare @DefaultValues VarChar(Max); - - Declare @RoidExt VarChar(Max); - Declare @AccPageExt VarChar(Max); - - - -- Create Rofst Child/Group Record --> [Roid = (12) Digits] - Insert Into RofstChild (RofstID, ID, ParentID, dbiID, [type], title, roid, appid, [value]) - Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, @value); - - - -- Check for appid, if exists, then insert the default value for each return type if multi-value - If (Len(@appid) > 0) - Begin - - -- Get Accessory Page ID - Select @BaseAccPageID = dbo.vefn_RofstDataCleanUnitInfoTags(Concat(d.dbiAP, '-', @appid), 1) - From RofstDatabase d with (NoLock) - Where d.RofstID = @RofstID And d.dbiID = @dbiID; - - Select @DefaultValues = dbo.vefn_RofstDataReplaceVars(@value); - - If (PatIndex('%=%', @DefaultValues) > 0) - Begin - - -- Insert Rofst Default Values (Multi-Values) --> [Roid = (16) Digits] - Select @DefaultValues = Replace(@DefaultValues, '{', ''); - - With ChildrenValues as - ( - Select x.ListPosition as 'OffsetIndex', - Case When (PatIndex('%=%', x.ListValue) > 0) Then Right(x.ListValue, Len(x.ListValue)-PatIndex('%=%', x.ListValue)) Else x.ListValue End as 'DefaultValue' - From [dbo].[vefn_ParseStringListToTable](@DefaultValues, '}') x - Where Len(x.ListValue) > 0 - ) - Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID) - Select @RofstID as 'RofstID', - Concat(@roid, re.RoidExt) as 'roid', - Case When (Len(RTrim(LTrim(cv.DefaultValue))) > 0 ) Then dbo.vefn_RofstDataCleanUnitInfoTags(cv.DefaultValue, 0) Else '[TBD]' End as 'value', - Concat(@BaseAccPageID, '.', re.AccPageExt) as 'AccPageID' - From ChildrenValues cv - inner join vwRofstData_RofstExtensions re on re.Offset = cv.OffsetIndex - Order By cv.OffsetIndex Asc - - End - Else - Begin - - -- Insert Rofst Default Value (Single Value) --> [Roid = (16) Digits] - Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID) - Select @RofstID as 'RofstID', - Concat(@roid, re.RoidExt) as 'roid', - Case When (Len(RTrim(LTrim(@DefaultValues))) > 0 ) Then dbo.vefn_RofstDataCleanUnitInfoTags(@DefaultValues, 0) Else '[TBD]' End as 'value', - Concat(@BaseAccPageID, '.', re.AccPageExt) as 'AccPageID' - From vwRofstData_RofstExtensions re - Where re.Offset = 1; - - End - - End -- (Len(@appid) > 0) - - - Return; - -End -Go - -IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstChildInsert] Succeeded' -ELSE PRINT 'Procedure Creation: [vesp_RofstChildInsert] Error on Creation' -GO - - - - - -If Exists(SELECT * FROM sys.objects Where name = 'vefn_RofstDataReplaceVars' AND type in (N'FN')) -DROP FUNCTION [dbo].[vefn_RofstDataReplaceVars] -GO - -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ --- ========================================================================================== --- Author: Jake Ropar --- Create Date: 3/25/2022 --- Description: Replaces Any Variables and returns the rest of the value string --- ========================================================================================== - -CREATE FUNCTION [dbo].[vefn_RofstDataReplaceVars](@Values VarChar(Max)) Returns VarChar(Max) -WITH EXECUTE AS OWNER -AS -BEGIN - - Declare @RetVal VarChar(Max) = ''; - Declare @EqualsIndex Int; - Declare @EndIndex Int; - Declare @NameValPairStartIndex Int; - Declare @NameValPairEndIndex Int; - - Declare @VarPair VarChar(Max); - Declare @VarName VarChar(Max); - Declare @VarValue VarChar(Max); - - -- Replace Any "" Tags with the Default Value first - Select @RetVal = dbo.vefn_RofstDataReplaceApplTagsWithDefaults(@Values); - - -- Replace Any Legacy Applicability Tags with the Default Value second - Select @RetVal = dbo.vefn_RofstDataReplaceLegacyTagsWithDefaults(@RetVal); - - If (PatIndex('%=%', @RetVal) > 0) - Begin - - If (PatIndex('%{{A%', @RetVal) > 0) - Set @EndIndex = PatIndex('%{{A%', @RetVal); - Else - Set @EndIndex = Len(@RetVal) -1; - - Set @NameValPairStartIndex = PatIndex('%{%', @RetVal); - Set @NameValPairEndIndex = PatIndex('%}%', @RetVal); - - While(@NameValPairStartIndex > 0 And @NameValPairStartIndex < @EndIndex) - Begin - - -- Get Name Value Pair [ex. {EGS=1214}] - Set @VarPair = SubString(@RetVal, @NameValPairStartIndex, (@NameValPairEndIndex - @NameValPairStartIndex) + 1); - - -- Remove Name Value Pair From Return Val - Set @RetVal = Replace(@RetVal, @VarPair, ''); - - -- Get Variable Name and Value - Set @EqualsIndex = PatIndex('%=%', @VarPair); - - If (@EqualsIndex > 0) - Begin - Set @VarName = SubString(@VarPair, 2, @EqualsIndex - 2); - Set @VarValue = SubString(@VarPair, @EqualsIndex + 1, Len(@VarPair) - @EqualsIndex - 1); - Set @VarName = Concat('{', @VarName, '}'); - - -- Replace All Occurences - Set @RetVal = Replace(@RetVal, @VarName, @VarValue); - End - - -- Get Updated Index Values - If (PatIndex('%{{A%', @RetVal) > 0) - Set @EndIndex = PatIndex('%{{A%', @RetVal); - Else - Set @EndIndex = Len(@RetVal) -1; - - Set @NameValPairStartIndex = PatIndex('%{%', @RetVal); - Set @NameValPairEndIndex = PatIndex('%}%', @RetVal); - - End -- End While(@ReplaceVarEndTagIndex > 0) - - End - - Return @RetVal; - -END -GO - -IF (@@Error = 0) PRINT 'Function Creation: [vefn_RofstDataReplaceVars] Succeeded' -ELSE PRINT 'Function Creation: [vefn_RofstDataReplaceVars] Error on Creation' -GO - - -/* -========================================================================================================== - End: B2022-121: RO values containing curly braces around values that are NOT multi return values do not resolved in Word Sections. -========================================================================================================== -*/ - - -/* -========================================================================================================== - Begin: B2022-124: [JPR] Blank RO Values (All Spaces) printing as ? -========================================================================================================== -*/ - - - If Exists(SELECT * FROM sys.objects Where name = 'vefn_RofstDataReplaceVars' AND type in (N'FN')) - DROP FUNCTION [dbo].[vefn_RofstDataReplaceVars] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - -- ========================================================================================== - -- Author: Jake Ropar - -- Create Date: 3/25/2022 - -- Description: Replaces Any Variables and returns the rest of the value string - -- ========================================================================================== - - CREATE FUNCTION [dbo].[vefn_RofstDataReplaceVars](@Values VarChar(Max)) Returns VarChar(Max) - WITH EXECUTE AS OWNER - AS - BEGIN - - Declare @RetVal VarChar(Max) = ''; - Declare @EqualsIndex Int; - Declare @EndIndex Int; - Declare @NameValPairStartIndex Int; - Declare @NameValPairEndIndex Int; - - Declare @VarPair VarChar(Max); - Declare @VarName VarChar(Max); - Declare @VarValue VarChar(Max); - - -- Replace Any "" Tags with the Default Value first - Select @RetVal = dbo.vefn_RofstDataReplaceApplTagsWithDefaults(@Values); - - -- Replace Any Legacy Applicability Tags with the Default Value second - Select @RetVal = dbo.vefn_RofstDataReplaceLegacyTagsWithDefaults(@RetVal); - - If (PatIndex('%=%', @RetVal) > 0) - Begin - - If (PatIndex('%{{A%', @RetVal) > 0) - Set @EndIndex = PatIndex('%{{A%', @RetVal); - Else - Set @EndIndex = DataLength(@RetVal) -1; - - Set @NameValPairStartIndex = PatIndex('%{%', @RetVal); - Set @NameValPairEndIndex = PatIndex('%}%', @RetVal); - - While(@NameValPairStartIndex > 0 And @NameValPairStartIndex < @EndIndex) - Begin - - -- Get Name Value Pair [ex. {EGS=1214}] - Set @VarPair = SubString(@RetVal, @NameValPairStartIndex, (@NameValPairEndIndex - @NameValPairStartIndex) + 1); - - -- Remove Name Value Pair From Return Val - Set @RetVal = Replace(@RetVal, @VarPair, ''); - - -- Get Variable Name and Value - Set @EqualsIndex = PatIndex('%=%', @VarPair); - - If (@EqualsIndex > 0) - Begin - Set @VarName = SubString(@VarPair, 2, @EqualsIndex - 2); - Set @VarValue = SubString(@VarPair, @EqualsIndex + 1, Len(@VarPair) - @EqualsIndex - 1); - Set @VarName = Concat('{', @VarName, '}'); - - -- Replace All Occurences - Set @RetVal = Replace(@RetVal, @VarName, @VarValue); - End - - -- Get Updated Index Values - If (PatIndex('%{{A%', @RetVal) > 0) - Set @EndIndex = PatIndex('%{{A%', @RetVal); - Else - Set @EndIndex = Len(@RetVal) -1; - - Set @NameValPairStartIndex = PatIndex('%{%', @RetVal); - Set @NameValPairEndIndex = PatIndex('%}%', @RetVal); - - End -- End While(@ReplaceVarEndTagIndex > 0) - - End - - Return @RetVal; - - END - GO - - - - IF (@@Error = 0) PRINT 'Function Creation: [vefn_RofstDataReplaceVars] Succeeded' - ELSE PRINT 'Function Creation: [vefn_RofstDataReplaceVars] Error on Creation' - GO - - - - - If Exists(SELECT * FROM sys.objects Where name = 'vefn_RofstDataCleanUnitInfoTags' AND type in (N'FN')) - DROP FUNCTION [dbo].[vefn_RofstDataCleanUnitInfoTags] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - -- ========================================================================================== - -- Author: Jake Ropar - -- Create Date: 06/21/2022 - -- Description: Removes any legacy legacy unit info variables and fixes older applicability tags - -- ========================================================================================== - - CREATE FUNCTION [dbo].[vefn_RofstDataCleanUnitInfoTags](@Values VarChar(Max), @RemoveUnitInfoVars bit = 0) Returns VarChar(Max) - WITH EXECUTE AS OWNER - AS - BEGIN - - Declare @RetVal VarChar(Max) = @Values; - - If (Len(@RetVal) > 0) - Begin - - Set @RetVal = dbo.vefn_Clean(@Values, 1, null); - - -- Make Sure all tag/var instances are upper case & Remove any internal spaces - Set @RetVal = Replace(@RetVal, 'U-OTHER TEXT', 'U-OTHERTEXT'); - Set @RetVal = Replace(@RetVal, 'U-OTHER NUMBER', 'U-OTHERNUMBER'); - Set @RetVal = Replace(@RetVal, 'U-OTHER NAME', 'U-OTHERNAME'); - Set @RetVal = Replace(@RetVal, 'U-OTHER ID', 'U-OTHERID'); - Set @RetVal = Replace(@RetVal, '', ''); - - If (@RemoveUnitInfoVars > 0) - Begin - - -- Remove any Unit Info Variables - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - Set @RetVal = Replace(@RetVal, '', ''); - - End - - End - - Return @RetVal; - - END - Go - - - IF (@@Error = 0) PRINT 'Function Creation: [vefn_RofstDataCleanUnitInfoTags] Succeeded' - ELSE PRINT 'Function Creation: [vefn_RofstDataCleanUnitInfoTags] Error on Creation' - GO - - - - If Exists(SELECT * FROM sys.objects Where name = 'vesp_RofstChildInsert' AND type in (N'P')) - DROP PROCEDURE [dbo].[vesp_RofstChildInsert] - GO - - SET ANSI_NULLS ON - GO - SET QUOTED_IDENTIFIER ON - GO - - /***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2020 - Volian Enterprises, Inc. All rights reserved. - *****************************************************************************/ - /* - ========================================================================================================== - Author: Jake Ropar - Create Date: 03/24/2022 - Description: Inserts the RO Child object and associated return values - ========================================================================================================== - */ - Create Procedure [dbo].[vesp_RofstChildInsert] - ( - @RofstID Int, - @ID Int, - @ParentID Int, - @dbiID Int, - @type Int, - @title VarChar(Max), - @roid VarChar(50), - @appid VarChar(Max) = null, - @value VarChar(Max) = null, - @missingDefaultValue VarChar(Max) = null - ) - With Execute as Owner - As - Begin - - Declare @BaseAccPageID VarChar(Max) = null; - Declare @DefaultValues VarChar(Max); - - Declare @RoidExt VarChar(Max); - Declare @AccPageExt VarChar(Max); - - -- Default missing value if Null (Null values not allowed for the [value] field in the RofstDefaultValue table - if (DataLength(IsNull(@missingDefaultValue, '')) <= 0) - Set @missingDefaultValue = '[TBD]'; - - -- Create Rofst Child/Group Record --> [Roid = (12) Digits] - Insert Into RofstChild (RofstID, ID, ParentID, dbiID, [type], title, roid, appid, [value]) - Values (@RofstID, @ID, @ParentID, @dbiID, @type, @title, @roid, @appid, @value); - - - -- Check for appid, if exists, then insert the default value for each return type if multi-value - If (Len(@appid) > 0) - Begin - - -- Get Accessory Page ID - Select @BaseAccPageID = dbo.vefn_RofstDataCleanUnitInfoTags(Concat(d.dbiAP, '-', @appid), 1) - From RofstDatabase d with (NoLock) - Where d.RofstID = @RofstID And d.dbiID = @dbiID; - - Select @DefaultValues = dbo.vefn_RofstDataReplaceVars(@value); - - If (PatIndex('%=%', @DefaultValues) > 0) - Begin - - -- Insert Rofst Default Values (Multi-Values) --> [Roid = (16) Digits] - Select @DefaultValues = Replace(@DefaultValues, '{', ''); - - With ChildrenValues as - ( - Select x.ListPosition as 'OffsetIndex', - Case When (PatIndex('%=%', x.ListValue) > 0) Then Right(x.ListValue, Len(x.ListValue)-PatIndex('%=%', x.ListValue)) Else x.ListValue End as 'DefaultValue' - From [dbo].[vefn_ParseStringListToTable](@DefaultValues, '}') x - Where Len(x.ListValue) > 0 - ) - Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID) - Select @RofstID as 'RofstID', - Concat(@roid, re.RoidExt) as 'roid', - Case When (DataLength(cv.DefaultValue) > 0) Then dbo.vefn_RofstDataCleanUnitInfoTags(cv.DefaultValue, 0) Else @missingDefaultValue End as 'value', - Concat(@BaseAccPageID, '.', re.AccPageExt) as 'AccPageID' - From ChildrenValues cv - inner join vwRofstData_RofstExtensions re on re.Offset = cv.OffsetIndex - Order By cv.OffsetIndex Asc - - End - Else - Begin - - -- Insert Rofst Default Value (Single Value) --> [Roid = (16) Digits] - Insert Into RofstDefaultValue (RofstID, roid, [value], AccPageID) - Select @RofstID as 'RofstID', - Concat(@roid, re.RoidExt) as 'roid', - Case When (DataLength(@DefaultValues) > 0) Then dbo.vefn_RofstDataCleanUnitInfoTags(@DefaultValues, 0) Else @missingDefaultValue End as 'value', - Concat(@BaseAccPageID, '.', re.AccPageExt) as 'AccPageID' - From vwRofstData_RofstExtensions re - Where re.Offset = 1; - - End - - End -- (Len(@appid) > 0) - - - Return; - - End - Go - - - - IF (@@Error = 0) PRINT 'Procedure Creation: [vesp_RofstChildInsert] Succeeded' - ELSE PRINT 'Procedure Creation: [vesp_RofstChildInsert] Error on Creation' - GO - - - -/* -========================================================================================================== - End: B2022-124: [JPR] Blank RO Values (All Spaces) printing as ? -========================================================================================================== -*/ - - ------------------------------------------------------------------------------ -/* - --------------------------------------------------------------------------- - | ADD New Code Before this Block | - | Change Date and Description | - --------------------------------------------------------------------------- -*/ ------------------------------------------------------------------------------ --- Rebuild / Reorganize All Indexes -exec [dbo].[vesp_UtilityCheckIndexes]; - -IF (@@Error = 0) PRINT 'Running vesp_UtilityCheckIndexes Succeeded' -ELSE PRINT 'Running vesp_UtilityCheckIndexes Failed to Execute' -GO - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetSQLCodeRevision]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetSQLCodeRevision]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2022 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetSQLCodeRevision] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - -- Change information in the next line when you are done - set nocount on - DECLARE @RevDate varchar(255) - DECLARE @RevDescription varchar(255) - - set @RevDate = '10/03/2022 2:00 PM' - set @RevDescription = 'B2022-124: [JPR] Blank RO Values (All Spaces) printing as ?' - - Select cast(@RevDate as datetime) RevDate, @RevDescription RevDescription - PRINT 'SQL Code Revision ' + @RevDate + ' - ' + @RevDescription - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [vesp_GetSQLCodeRevision] Succeeded' -ELSE PRINT 'StoredProcedure [vesp_GetSQLCodeRevision] Error on Creation' -go - -Exec vesp_GetSQLCodeRevision; diff --git a/PROMS/DataLoader/PROMSFixes.Sql.bak b/PROMS/DataLoader/PROMSFixes.Sql.bak deleted file mode 100644 index 0747fc48..00000000 --- a/PROMS/DataLoader/PROMSFixes.Sql.bak +++ /dev/null @@ -1,10400 +0,0 @@ -if db_name() in('master','model','msdn','tempdb') -begin - DECLARE @ErrorMsg varchar(255) - SET @ErrorMsg = 'Don''t add these procedures and functions to ' + db_name() - PRINT '==========================================================================' - PRINT '' - PRINT @ErrorMsg - PRINT '' - PRINT 'You probably want to be in the VEPROMS database' - PRINT '' - PRINT '==========================================================================' - RAISERROR (@ErrorMsg, 20, -1) with log - RETURN -end -print 'Adding procedures and functions to ' + db_name() - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemReplace]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [PasteItemReplace]; -GO -/****** Object: StoredProcedure [dbo].[PasteItemReplace] Script Date: 03/20/2012 16:02:54 ******/ -/* -declare @NewItemID int -declare @dts datetime -set @newitemid = 0 -set @dts = getdate() -exec PasteItemReplace 398,397,20014,@dts,'bodine',@NewItemID output -*/ --- ItemID is item to replace --- StartItemID is item to copy -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[PasteItemReplace] -( - @ItemID int=null, @StartItemID int=null, - @Type int=null, @DTS datetime, @UserID nvarchar(100), - @NewItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @ContentID AS INT - DECLARE @NextItemID AS INT - DECLARE @PreviousItemID AS INT - DECLARE @ExternalChildCount AS INT - DECLARE @ExternalCount AS INT - DECLARE @Path AS VARCHAR(MAX) - DECLARE @Children AS TABLE - ( - ItemID INT PRIMARY KEY, - ContentID INT - ) - - if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0) - BEGIN - RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1) - RETURN - END - -- First check if the replaced item can be deleted, i.e. it doesn't have transitions - -- pointing to it or children. - - DECLARE @ExternalTrans TABLE - ( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL - ) - SET NOCOUNT ON - DECLARE @DeleteID int - INSERT INTO DeleteLog (UserID) VALUES (@UserID) - SELECT @DeleteID = SCOPE_IDENTITY() - SELECT @ContentID = ContentID, @PreviousItemID = PreviousID FROM Items WHERE ItemID = @ItemID - SELECT @NextItemID = ItemID FROM Items WHERE PreviousID = @ItemID - --SELECT @ExternalCount = count(*) FROM vefn_FindExternalTransitions(@ItemID) - SELECT @ExternalChildCount = count(*) FROM vefn_FindExternalChildTransitions(@ItemID) - SET @Path = [dbo].[ve_GetShortPath](@ItemID) - - --IF @ExternalCount > 0 AND @NextItemID is null - --BEGIN - -- RAISERROR ('###Cannot Delete Item###Step %d has External Transitions and has no next step - (%s)',16,1,@ItemID,@Path) - -- RETURN - --END - - IF @ExternalChildCount > 0 - BEGIN - RAISERROR ('###Cannot Delete Item###Step %d has External Transitions to it''s children - (%s)',16,1,@ItemID,@Path) - RETURN - END - - -- Copy the item, 'NewItemID' represents the new item(s) - -- DestFormatID is the formatid for the destination parent's format - DECLARE @DestFormatID int - SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - - -- Adjust the next/previous to point to the new item - - DECLARE @PreviousID int - SELECT @PreviousID = [PreviousID] - FROM [ITEMS] II - WHERE [ItemID]=@ItemID - UPDATE [ITEMS] SET [PreviousID]=@PreviousID where [ItemID]=@NewItemID - UPDATE [CONTENTS] SET [Type]=@Type - FROM [CONTENTS] CC JOIN [ITEMS] ii ON CC.[ContentID]=II.[ContentID] - WHERE [ItemID]=@NewItemID - UPDATE [ITEMS] SET [PreviousID]=@NewItemID where [PreviousID]=@ItemID - UPDATE [PARTS] SET [ItemID]=@NewItemID where [ItemID]=@ItemID - - -- UPDATE DocVersion if this was a procedure - UPDATE DocVersions SET ItemID=@NewItemID where ItemID = @ItemID - - -- If there were 'external transitions' that pointed to the original - -- top replaced step, adjust them to point to the new top. - INSERT INTO @ExternalTrans SELECT * FROM vefn_FindExternalTransitions(@ItemID) - OPTION (MAXRECURSION 10000) - IF (SELECT COUNT(*) from @ExternalTrans) > 0 - BEGIN - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NewItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TransitionID in(Select TransitionID from @ExternalTrans) - -- Update transitions that point to @ItemID to Point to @NextItemID - UPDATE TRANSITIONS - SET ToID = case when ToID = @ItemID then @NewItemID else ToID END, - RangeID = case when RangeID = @ItemID then @NewItemID else RangeID END - WHERE TransitionID in(Select TransitionID from @ExternalTrans) - - DECLARE @typeID int -- AnnotationType - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add 'Verification Required' annotions for transtions that pointed to top step - -- and need to point to - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Replaced Step Transition Destination',@UserID - FROM Items where ItemID in (SELECT FromItemID FROM @ExternalTrans) - - END - -- Remove the old one - - -- Get list of Children - INSERT INTO @Children SELECT * FROM vefn_ChildItems(@ItemID) - -- Delete Annotations for @ItemID and children - DELETE from Annotations where ItemID in(Select ItemID from @Children) - -- Delete Details associated with @ContentID and children - DELETE from Details where ContentID in(Select ContentID from @Children) - -- Delete Grids associated with @ContentID and children - DELETE from Grids where ContentID in(Select ContentID from @Children) - -- Delete Images associated with @ContentID and children - DELETE from Images where ContentID in(Select ContentID from @Children) - -- Delete Entries associated with @ContentID and children - DELETE from Entries where ContentID in(Select ContentID from @Children) - -- Delete ROUsages associated with @ContentID and children - DELETE from RoUsages where ContentID in(Select ContentID from @Children) - -- Delete ZTransitions records associated with @ContentID and children - DELETE FROM ZTransitions where TransitionID - in(SELECT TransitionID from Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID) - -- Delete Transitions associated with @ContentID and children - DELETE FROM Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID - -- Delete Parts associated with @ContentID and children - DELETE from Parts where ContentID in(Select ContentID from @Children) - -- Delete ZContents associated with @ContentID and children - DELETE from ZContents where ContentID in(Select ContentID from @Children) - -- Disconnect Items from Each Other - DELETE from Items where ItemID in(Select ItemID from @Children) and PreviousID Is Not Null - -- Disconnect Items to be deleted from each other - Update Items set PreviousID = null where ItemID in (Select ItemID from @Children) and PreviousID Is Not Null - -- Delete Item Records - DELETE from Items where ItemID in(Select ItemID from @Children) - -- DELETE Contents - DELETE from Contents where ContentID in(Select ContentID from @Children) ---delete from itemaudits where itemid = @newitemid -delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) ---delete from contentaudits where contentid = (select contentid from items where itemid = @newitemid) -delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) - DELETE from DeleteLog where DeleteID = @DeleteID - IF( @@TRANCOUNT > 0 ) COMMIT - EXECUTE GetItem @NewItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemReplace Succeeded' -ELSE PRINT 'Procedure Creation: PasteItemReplace Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChronologyReport]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChronologyReport]; -/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 03/20/2012 17:50:44 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/* -select * from vefn_chronologyreport(2) where type > 0 order by contentid,auditid -*/ -/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 05/18/2011 11:20:48 ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE function [dbo].[vefn_ChronologyReport](@ProcItemID int, @DTS datetime) -returns @Report table -( -src int, -AuditID bigint, -ContentID int, -Number nvarchar(512), -Text nvarchar(max), -Type int, -FormatID int, -Config nvarchar(max), -DTS datetime, -UserID nvarchar(200), -DeleteStatus int, -ActionDTS datetime, -ItemDTS datetime, -LastAuditID int, -DeletedAuditID int -) -WITH EXECUTE AS OWNER -AS -BEGIN ---added rhm/jcb 20121218i -declare @tmpTable table -( - icontentid int primary key -) -insert into @tmpTable select icontentid from vefn_tblchilditems(@ProcItemID,@ProcItemID,1) ---added jcb 20111122 ---declare @dts datetime ---set @dts = (select dts from items where itemid = @ProcItemID ) ---set @dts = (SELECT .[dbo].[vefn_GetPreviousRevisionDTSByItemID] (@ProcItemID)) ---end added jcb 20111122 - insert into @Report - SELECT -1 src, - [AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid - where Number is not null ---added jcb 20111028_1827 -and ca.contentid != (select contentid from items where itemid = @procitemid) -and ca.contentid in (select icontentid from @tmpTable) ---end added jcb 20111028_1827 ---added jcb 20111122 ---and ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > (select dts from items where itemid = @ProcItemID )) -and ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > @dts) ---and ca.dts > (select dts from items where itemid = @ProcItemID ) -and ca.dts > @dts ---end added jcb 20111122 --- UNION --- SELECT ---2 src, --- cast(ident_current('contentaudits') + 1 as bigint) auditid ----- (select max(auditid) + 1 from contentaudits) [AuditID] ----- 0 [AuditID] --- ,ca.[ContentID] --- ,[Number] --- ,[Text] --- ,[Type] --- ,[FormatID] --- ,[Config] --- ,ca.[DTS] cadts --- ,ca.[UserID] --- ,ca.[DeleteStatus] --- ,ActionDTS --- ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS ---,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID ---,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID --- FROM tblContents ca ----- inner join tblitems ti on ca.contentid = ti.contentid ---WHERE ca.DeleteStatus = 0 AND -----added jcb 20111028_1827 ---ca.contentid != (select contentid from items where itemid = @procitemid) and -----end added jcb 20111028_1827 -----ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > (select dts from items where itemid = @ProcItemID )) -----added jcb 20111122 -----ca.ContentID in (SELECT [ContentID] FROM Contents where dts > (select dts from items where itemid = @ProcItemID )) ---ca.ContentID in (SELECT [ContentID] FROM Contents where dts > @dts) -----end added jcb 20111122 -----order by ca.DTS,ActionDTS - UNION - SELECT -3 src, - cast(ident_current('contentaudits') + 1 as bigint) auditid --- (select max(auditid) + 1 from contentaudits) [AuditID] --- 0 [AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM tblContents ca --- inner join tblitems ti on ca.contentid = ti.contentid -WHERE ca.DeleteStatus = 0 AND ---added jcb 20111028_1827 -ca.contentid != (select contentid from items where itemid = @procitemid) -and ca.contentid in (select icontentid from @tmpTable) ---end added jcb 20111028_1827 ---added jcb 20111122 ---ca.dts > (select dts from items where itemid = @ProcItemID ) -and (ca.dts > @dts or ca.actiondts > @dts) ---end added jcb 20111122 - UNION - SELECT distinct -5 src, --- cast(ident_current('contentaudits') + 1 as bigint) auditid --- (select max(auditid) + 1 from contentaudits) [AuditID] - ca.[AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid -WHERE ca.DeleteStatus > 0 ---added jcb 20111028_1827 - --ca.contentid != (select contentid from items where itemid = @procitemid) and ---end added jcb 20111028_1827 ---added jcb 20111122 ---ca.dts > (select dts from items where itemid = @ProcItemID ) -and ca.contentid in (select icontentid from @tmpTable) -and (ca.dts > @dts or ca.actiondts > @dts) ---end added jcb 20111122 -order by ca.DTS,ActionDTS - - insert into @Report - SELECT -4 src, - ca.[AuditID] - ,ca.[ContentID] - ,ca.[Number] - ,ca.[Text] - ,ca.[Type] - ,ca.[FormatID] - ,ca.[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ca.ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid - inner join @Report rpt on ca.contentid = rpt.contentid and ca.auditid = rpt.lastauditid -where ca.auditid not in (select auditid from @report) -and rpt.lastauditid is not null -and ca.contentid in (select icontentid from @tmpTable) - return -end -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_ChronologyReport Succeeded' -ELSE PRINT 'Function: vefn_ChronologyReport Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemSiblingAfter]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [PasteItemSiblingAfter]; -GO -/****** Object: StoredProcedure [dbo].[PasteItemSiblingAfter] Script Date: 03/21/2012 15:25:31 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[PasteItemSiblingAfter] -( - @ItemID int=null, @StartItemID int=null, -- ItemID is destination, StartItemID is top of copy - @Type int=null, @DTS datetime, @UserID nvarchar(100), - @NewItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0) - BEGIN - RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1) - RETURN - END - -- First make a copy of the input StartItemID - -- DestFormatID is the formatid for the destination parent's format - DECLARE @DestFormatID int - SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - -- Adjust previous field - DECLARE @NextID int - SELECT @NextID = [ItemID] - FROM [ITEMS] - WHERE [PreviousID]=@ItemID - IF @NextID is not null -- step after the copy point. Adjust it's previous to point to the new step - BEGIN - UPDATE [ITEMS] SET [PreviousID]=@NewItemID, [DTS]=@DTS, [UserID]=@UserID where [ItemID]=@NextID - END - UPDATE [ITEMS] SET [PreviousID]=@ItemID where [ItemID]=@NewItemID - UPDATE [CONTENTS] SET [Type]=@Type - FROM [CONTENTS] CC JOIN [ITEMS] ii ON CC.[ContentID]=II.[ContentID] - WHERE [ItemID]=@NewItemID - - - -- Check for Transitions that point to the Next Step - BEGIN - -- Get a list of Transitions which need to change children of @ItemID that point to @NextID - DECLARE @NextStepTransitions TABLE - ( - [TransitionID] int PRIMARY KEY, - [FromID] [int], - [ToID] [int], - [RangeID] [int], - [TranType] [int], - [Config] [nvarchar](max) - ) - Insert into @NextStepTransitions select * from vefn_NextStepTransitions(@NextID,@ItemID) - OPTION (MAXRECURSION 10000) - IF (SELECT COUNT(*) from @NextStepTransitions) > 0 -- Next Step Transitions - BEGIN - -- Update all transitions in the list to point to @newItemID - Update TT - Set TT.ToID = CASE TT.ToID WHEN @NextID THEN @NewItemID ELSE TT.ToID END, - TT.RangeID = CASE TT.RangeID WHEN @NextID THEN @NewItemID ELSE TT.RangeID END - From TRANSITIONS TT - JOIN @NextStepTransitions NS ON NS.TransitionID = TT.TransitionID - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,NS.TransitionID,NS.TranType,NS.ToID,NS.RangeID,@NextID,@NewItemID) - From CONTENTS CC - JOIN @NextStepTransitions NS ON NS.FromID = CC.ContentID - END - END - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Next Step Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@newItemID) OR RangeID IN(@newItemID)) - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@NextID) OR RangeID IN(@NextID)) - -- Transition Text gets updated in ItemInsertExt.cs - -delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) -delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) - IF( @@TRANCOUNT > 0 ) COMMIT - EXECUTE GetItem @NewItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemSiblingAfter Succeeded' -ELSE PRINT 'Procedure Creation: PasteItemSiblingAfter Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemSiblingBefore]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [PasteItemSiblingBefore]; -GO -/****** Object: StoredProcedure [dbo].[PasteItemSiblingBefore] Script Date: 03/21/2012 15:26:23 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[PasteItemSiblingBefore] -( - @ItemID int=null, @StartItemID int=null, - @Type int=null, @DTS datetime, @UserID nvarchar(100), - @NewItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0) - BEGIN - RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1) - RETURN - END - -- First make a copy of the input CopyStartID - -- DestFormatID is the formatid for the destination parent's format - DECLARE @DestFormatID int - SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - -- First adjust previous fields, may also have to do parts, if before first one in list. - DECLARE @PreviousID int, @ContentID int, @newLastChanged timestamp, @NewType int - SELECT @PreviousID = [PreviousID], @NewType=ISNULL(@Type,[Type]) - FROM [ITEMS] II - JOIN [CONTENTS] CC ON CC.[ContentID]=II.[CONTENTID] - WHERE [ItemID]=@ItemID - UPDATE [ITEMS] SET [PreviousID]=@NewItemID where [ItemID]=@ItemID - UPDATE [ITEMS] SET [PreviousID]=@PreviousID where [ItemID]=@NewItemID - UPDATE [CONTENTS] SET [Type]=@Type - FROM [CONTENTS] CC JOIN [ITEMS] ii ON CC.[ContentID]=II.[ContentID] - WHERE [ItemID]=@NewItemID - UPDATE [PARTS] SET [ItemID]=@NewItemID where [ItemID]=@ItemID - UPDATE [DOCVERSIONS] SET [ItemID] = @NewItemID where [ItemID]=@ItemID - - IF @PreviousID is null -- The step is replacing the first step - BEGIN - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NewItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TT.ToID = @ItemID OR TT.RangeID = @ItemID - -- Update transitions that pointed to @ItemID to point to @newItemID - Update TRANSITIONS - Set ToID = CASE ToID WHEN @ItemID THEN @NewItemID ELSE ToID END, - RangeID = CASE RangeID WHEN @ItemID THEN @NewItemID ELSE RangeID END - WHERE ToID = @ItemID OR RangeID = @ItemID - END - ELSE -- Check for Transitions that point to the Next Step - BEGIN - -- Get a list of Transitions which need to change children of @ItemID that point to @NextID - DECLARE @NextStepTransitions TABLE - ( - [TransitionID] int PRIMARY KEY, - [FromID] [int], - [ToID] [int], - [RangeID] [int], - [TranType] [int], - [Config] [nvarchar](max) - ) - Insert into @NextStepTransitions select * from vefn_NextStepTransitions(@ItemID,@PreviousID) - OPTION (MAXRECURSION 10000) - IF (SELECT COUNT(*) from @NextStepTransitions) > 0 -- Next Step Transitions - BEGIN - -- Update all transitions in the list to point to @newItemID - Update TT - Set TT.ToID = CASE TT.ToID WHEN @ItemID THEN @NewItemID ELSE TT.ToID END, - TT.RangeID = CASE TT.RangeID WHEN @ItemID THEN @NewItemID ELSE TT.RangeID END - From TRANSITIONS TT - JOIN @NextStepTransitions NS ON NS.TransitionID = TT.TransitionID - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,NS.TransitionID,NS.TranType,NS.ToID,NS.RangeID,@ItemID,@NewItemID) - From CONTENTS CC - JOIN @NextStepTransitions NS ON NS.FromID = CC.ContentID - END - END - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@ItemID,@NewItemID) OR RangeID IN(@ItemID,@NewItemID)) - -- Transition Text gets updated in ItemInsertExt.cs -delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) -delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) - IF( @@TRANCOUNT > 0 ) COMMIT - EXECUTE GetItem @NewItemID -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemSiblingBefore Succeeded' -ELSE PRINT 'Procedure Creation: PasteItemSiblingBefore Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetMyChronology]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetMyChronology]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_GetMyChronology] Script Date: 11/07/2012 18:09:17 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetMyChronology](@ProcItemID int, @ItemID int, @IncludeDeletedChildren int, @DTS datetime) -RETURNS @Chrono TABLE -( -[AuditID] bigint, -[ContentID] int, -[Number] nvarchar(max), -[Text] nvarchar(max), -[Type] int, -[FormatID] int, -[Config] nvarchar(max), -[DTS] datetime, -[UserID] nvarchar(max), -[DeleteStatus] int, -[ActionDTS] datetime, -[ActionWhat] nvarchar(max), -[ActionWhen] datetime, -[Path] nvarchar(max), -ItemID int, -TypeName nvarchar(max), -ordinalpath nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -insert into @Chrono -select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath - from - ( - select - case - when lastauditid is null then 'Added' - when r.deletestatus > 0 then 'Deleted' - when lastauditid = -1 then 'Changed' - when DeletedAuditID is not null then 'Restored' --- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' - else 'Changed' - end actionwhat -,actiondts actionwhen --- ,case --- when lastauditid is null then dts --- when r.deletestatus > 0 then ActionDTS --- when lastauditid = -1 then dts --- when DeletedAuditID is not null then ActionDTS --- else dts --- end actionwhen -,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName - ,* - from vefn_tblchilditems (@ProcItemID,@ItemID,@IncludeDeletedChildren) t - inner join vefn_chronologyreport(@ProcItemID,@DTS) r - on t.icontentid = r.contentid --- where ActionDTS > procdts or dts > procdts - ) ah - order by OrdinalPath, contentid,auditid--actionwhen - RETURN -END -go -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetMyChronology] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetMyChronology] Error on Creation' -go - -/****** Object: StoredProcedure [dbo].[getContentAuditsChronologyByItemID] Script Date: 03/21/2012 15:58:26 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsChronologyByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [getContentAuditsChronologyByItemID]; -GO -/****** Object: StoredProcedure [getContentAuditsChronologyByItemID] ******/ -/* -getContentAuditsChronologyByItemID 10154,10154,0 -getContentAuditsChronologyByItemID 42,42,0 -getContentAuditsChronologyByItemID 9,9,0 -getContentAuditsChronologyByItemID 146,146,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsChronologyByItemID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin - select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) --- select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah --- order by OrdinalPath, contentid,auditid--actionwhen - RETURN -end -go --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [getContentAuditsChronologyByItemID] Succeeded' -ELSE PRINT 'StoredProcedure [getContentAuditsChronologyByItemID] Error on Creation' -go - -/****** Object: StoredProcedure [getContentAuditsSummaryByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsSummaryByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAuditsSummaryByItemID]; -GO - -/****** Object: StoredProcedure [getContentAuditsSummaryByItemID] ******/ -/* -getContentAuditsSummaryByItemID 146,146,0 -getContentAuditsSummaryByItemID 42,42,0 -getContentAuditsSummaryByItemID 9,9,0 -getContentAuditsSummaryByItemID 146,146,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsSummaryByItemID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin -DECLARE @Chrono TABLE -( -[AuditID] bigint, -[ContentID] int, -[Number] nvarchar(max), -[Text] nvarchar(max), -[Type] int, -[FormatID] int, -[Config] nvarchar(max), -[DTS] datetime, -[UserID] nvarchar(max), -[DeleteStatus] int, -[ActionDTS] datetime, -[ActionWhat] nvarchar(max), -[ActionWhen] datetime, -[Path] nvarchar(max), -ItemID int, -TypeName nvarchar(max), -ordinalpath nvarchar(max) -) -insert into @Chrono -select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) -select * from @Chrono -where AuditID is null OR AuditID in (select min(auditID) from @Chrono group by contentid UNION select max(auditID) from @Chrono group by contentid) -order by OrdinalPath, contentid,auditid ---select z.* from ---( ---select contentid,min(auditid) auditid from ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) x ---group by contentid ---) y ---inner join ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) z on y.contentid = z.contentid and y.auditid = z.auditid ---union ---select z.* from ---( ---select contentid,max(auditid) auditid from ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) x ---group by contentid ---) y ---inner join ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) z on y.contentid = z.contentid and y.auditid = z.auditid --- order by OrdinalPath, contentid,auditid--actionwhen - RETURN -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsSummaryByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getContentAuditsSummaryByItemID Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixSearchString]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FixSearchString]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_FixSearchString] Script Date: 03/26/2012 09:31:13 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/* -select ID,ss,.dbo.vefn_FixSearchString(ss) -from ( -select 1 ID,'*' ss union -select 2 ID,'50%' ss union -select 3 ID,'IF*' ss union -select 4 ID,'*then:' ss union -select 5 ID,'530`F' ss union -select 6 ID,'check' ss union -select 7 ID,'RCP*Cooling' ss union -select 8 ID,'14%[34%]' ss union -select 9 ID,'\*' ss union -select 10 ID,'\?' ss union -select 11 ID,'_' ss union -select 12 ID,'[' ss union -select 13 ID,']' ss union -select 14 ID,'%' ss union -select 15 ID,'_' ss union -select 16 ID,'-' ss union -select 17 ID,'%' ss union -select 18 ID,'C* - *' ss union -select 19 ID,'' ss union -select 20 ID,null ss -) tt order by ID -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FixSearchString](@SearchString nvarchar(MAX)) -RETURNS nvarchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN - -- This code adds % at the beginning and end if the beginning and end - -- of the search string if it does not have % at the beginning or end - Set @SearchString = replace(@SearchString,'[','[[]') - Set @SearchString = replace(@SearchString,'_','[_]') - Set @SearchString = replace(@SearchString,'%','[%]') - Set @SearchString = replace(@SearchString,'*','%') - Set @SearchString = replace(@SearchString,'?','_') - Set @SearchString = replace(@SearchString,'\%','*') - Set @SearchString = replace(@SearchString,'\_','?') - Set @SearchString = replace(@SearchString,'-','\u8209?') - IF(@SearchString like '[%]%') RETURN @SearchString - IF(@SearchString like '%[%]') RETURN @SearchString - Set @SearchString = replace('%' + @SearchString + '%','%%','%') - RETURN @SearchString -END -GO --- Display the status -IF (@@Error = 0) PRINT 'ScalerFunction [vefn_FixSearchString] Succeeded' -ELSE PRINT 'ScalerFunction [vefn_FixSearchString] Error on Creation' -go - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[restoreDeletedItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [restoreDeletedItem]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -restoreDeletedItem 10133,1,10130,2 -select dbo.ve_GetPartContentID(10133) -select dbo.ve_GetPartFromType(10133) -select itemid from parts where contentid = 10126 and fromtype = 6 -SELECT ItemID FROM PartAudits WHERE DeleteStatus = 1 - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[restoreDeletedItem] -( - @ItemID int, - @DeleteID int, - @CurrentID int, - @Level int -) - -WITH EXECUTE AS OWNER -AS - DECLARE @PreviousID int - declare @oldPreviousID int - DECLARE @NextID int - DECLARE @ContentID int - declare @fromtype int - IF @Level = 0 BEGIN - SET @NextID = @CurrentID - SELECT @PreviousID = PreviousID FROM Items WHERE ItemID = @CurrentID - END - IF @Level = 1 BEGIN - SELECT @NextID = ItemID FROM Items WHERE PreviousID = @CurrentID - SET @PreviousID = @CurrentID - END - SELECT @ContentID = dbo.[ve_GetPartContentID](@ItemID) - select @fromtype = dbo.[ve_GetPartFromType](@ItemID) - select @oldPreviousID = isnull(PreviousID,0) from tblItems where ItemID = @ItemID - if @level = 2 begin - select @NextID = itemid from parts where contentid = @contentid and fromtype = @fromtype - end - --restore parts from step being restored - UPDATE tblParts SET DeleteStatus = 0 WHERE ItemID IN (SELECT ItemID FROM PartAudits WHERE DeleteStatus = @DeleteID) ---print 'oldpreviousid: ' + cast(@oldpreviousid as varchar(10)) ---print 'currentid: ' + cast(@currentid as varchar(10)) - --restore of children in different order - if(@oldPreviousID != @CurrentID and @Level = 2) begin - update tblparts set deletestatus = 0, itemid = @itemid where contentid = @contentid and fromtype = @fromtype ---print 'special code' - end - UPDATE tblContents SET DeleteStatus = 0, ActionDTS = getdate() WHERE ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblItems SET DeleteStatus = 0,PreviousID = CASE WHEN ItemID = @ItemID THEN @PreviousID ELSE PreviousID END - WHERE ItemID IN (SELECT ItemID FROM ItemAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblGrids SET DeleteStatus = 0 WHERE ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblEntries SET DeleteStatus = 0 WHERE DocID IN (SELECT DocID FROM EntryAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblAnnotations SET DeleteStatus = 0, ActionDTS = getdate() WHERE deletestatus = @deleteid -- ItemID in (SELECT ItemID FROM ItemAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblROUsages SET DeleteStatus = 0 WHERE deletestatus = @deleteid --ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblTransitions SET DeleteStatus = 0 WHERE deletestatus = @deleteid --FromID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - IF @NextID IS NOT NULL BEGIN - UPDATE Items SET PreviousID = @ItemID WHERE ItemID = @NextID - UPDATE DocVersions SET ItemID = @ItemID WHERE ItemID = @NextID - IF @ContentID IS NOT NULL BEGIN - UPDATE Parts SET ItemID = @ItemID WHERE ItemID = @NextID and ContentID = @ContentID ---print 'old code' - END - END ---else --- begin ---update parts set itemid = @itemid where contentid = @contentid and fromtype = @fromtype --- end -RETURN -go --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: restoreDeletedItem Succeeded' -ELSE PRINT 'Procedure Creation: restoreDeletedItem Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_GetLastDelim] Script Date: 03/28/2012 17:58:48 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetLastDelim]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetLastDelim]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select .dbo.vefn_GetLastDelim(bozo) delim,bozo -from -( -select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using Backfill' bozo union -select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps' bozo union -select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps1' bozo union -select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps1.1' bozo union -select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps1.1.RNO..1' bozo union -select 'ES\u8209?3.1Post\u8209?SGTR Cooldown Using BackfillProcedure Steps1.1.RNO..1.3' bozo -) ah -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetLastDelim](@SearchString nvarchar(MAX)) -RETURNS nvarchar(1) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @patstr nvarchar(7) - set @patstr = '%[' + char(7) + char(17) + '.]%' - declare @patidx bigint - set @patidx = patindex(@patstr,Reverse(@SearchString)) - if @patidx = 0 return ' ' - return substring(@SearchString,1 + len(@SearchString) - @patidx,1) -END -GO -IF (@@Error = 0) PRINT 'ScalerFunction [vefn_GetLastDelim] Succeeded' -ELSE PRINT 'ScalerFunction [vefn_GetLastDelim] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_tblChildItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_tblChildItems]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_tblChildItems] Script Date: 03/28/2012 17:43:20 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/* -declare @PreviousID as int -declare @ItemID as int -set @ItemID = 450 -select @PreviousID = PreviousID from items where ItemID = @ItemID - -Select * from Items where ItemID = @ItemID - -select * from Transitions -where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) -AND (ToID = @ItemID or RangeID = @ItemID) - -select CC.Text from Transitions TT -join contents CC on TT.FromID = CC.ContentID -where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) -AND (ToID = @ItemID or RangeID = @ItemID) - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_tblChildItems](@ProcItemID int, @ItemID int, @IncludeDeletedChildren int) -RETURNS @Children TABLE -( - ItemID int PRIMARY KEY, - IContentID int, - IDeleteStatus int, - ProcDTS datetime, - Path nvarchar(max), - OrdinalPath nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @path nvarchar(max) - declare @ppath nvarchar(max) - declare @ordinalpath nvarchar(max) - declare @pordinalpath nvarchar(max) - declare @ordinal int - declare @pitemid int - select @path = path,@ordinalpath = ordinalpath,@ordinal = ordinal,@pitemid = parentid from vefn_ProcedureByProcID(@ProcItemID) where itemid = @ItemID - if @pitemid = 0 begin - set @pordinalpath = '' - set @ppath = '' - end - else begin - select @ppath = path,@pordinalpath = ordinalpath from vefn_ProcedureByProcID(@ProcItemID) where itemid = @pitemID - end - declare @procdts datetime - select @procdts = dts from items where itemid = @ProcItemID - Declare @Delim char(1) - Set @Delim=char(7) - Declare @DelimNumber char(1) - Set @DelimNumber=char(17) - Declare @DelimStep char(1) - Set @DelimStep='.' - begin - with Itemz([Level], [ItemID], [ContentID], DeleteStatus, ProcDTS, PPath, [Path], [POrdinalPath], [OrdinalPath], [FromType], [Ordinal]) as ( - Select 0 [Level], [ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, - @ppath [PPath], - @path [Path], - @pordinalpath [POrdinalPath], - @ordinalpath [OrdinalPath], - 0 [FromType],@ordinal [Ordinal] - FROM [tblItems] I - --inner join tblContents C on C.ContentID=I.ContentID - where I.[ItemID]=@ItemID - Union All - -- Children - select [Level] + 1, I.[ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, - PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + - case when I.deletestatus != 0 then 'Old ' else '' end + cast(1 as varchar(3)) - end end Path, - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001', - P.[FromType],0 - from Itemz Z - join tblParts P on P.ContentID = Z.ContentID - join tblItems I on I.ItemID = P.ItemID - inner join tblContents C on C.ContentID=I.ContentID - where @IncludeDeletedChildren = 1 or z.DeleteStatus = 0 - Union All - -- Children2 - select [Level] + 1, I.[ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, - PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + - case when I.deletestatus != 0 then 'Old ' else '' end + cast(1 as varchar(3)) - end end Path, - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001', - P.[FromType],0 - from Itemz Z - join PartAudits P on P.ContentID = Z.ContentID - join tblItems I on I.ItemID = P.ItemID and i.PreviousID is null - inner join tblContents C on C.ContentID=I.ContentID - where @IncludeDeletedChildren = 1 or z.DeleteStatus >= 0 - -- Siblings - Union All - select [Level] , I.[ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, - PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + - case when I.deletestatus != 0 then 'Old ' else '' end + cast(Ordinal + 2 as varchar(3)) - end Path, - POrdinalPath, - POrdinalPath + right('00000' + cast(Z.[Ordinal] + 2 as varchar(5)), 5), - FromType,Z.[Ordinal] +1 - from Itemz Z - join tblItems I on I.PreviousID = Z.ItemID - inner join tblContents C on C.ContentID=I.ContentID - where Z.[Level] > 0 - ) - insert into @Children select distinct ItemID, ContentID, DeleteStatus, ProcDTS, Path, OrdinalPath from Itemz - OPTION (MAXRECURSION 10000) - END - RETURN -end -go -IF (@@Error = 0) PRINT 'TableFunction [vefn_tblChildItems] Succeeded' -ELSE PRINT 'TableFunction [vefn_tblChildItems] Error on Creation' -go - -/****** Object: StoredProcedure [dbo].[getAnnotationAuditsChronologyByItemID] Script Date: 04/02/2012 15:57:32 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationAuditsChronologyByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [getAnnotationAuditsChronologyByItemID]; -GO -/****** Object: StoredProcedure [getAnnotationAuditsChronologyByItemID] ******/ -/* -getAnnotationAuditsChronologyByItemID 13,13 -getAnnotationAuditsChronologyByItemID 30,8570 -getAnnotationAuditsChronologyByItemID 30,8513 -getAnnotationAuditsChronologyByItemID 30,8505 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE procedure [dbo].[getAnnotationAuditsChronologyByItemID] -( - @ProcItemID int, - @ItemID int, - @DTS datetime -) -WITH EXECUTE AS OWNER -AS -begin --- declare @dts datetime --- set @dts = (select dts from items where itemid = @procitemid) - declare @tci table - ( - ItemID int, - IContentID int, - IDeleteStatus int, - ProcDTS datetime, - Path nvarchar(max), - OrdinalPath nvarchar(max) - ) - insert into @tci - select * from vefn_tblchilditems(@ProcItemID,@ItemID,0) - select - case - when lastauditid is null and dts > itemdts then 'Added' - when deletestatus > 0 then 'Deleted' - when lastauditid = deletedauditid then 'Restored' - else 'Changed' - end ActionWhat - ,case - when lastauditid is null and dts > itemdts then dts - when deletestatus > 0 then ActionDTS - when lastauditid = deletedauditid then ActionDTS - else dts - end ActionWhen - ,* - from - ( - select - cast(ident_current('annotationaudits') + 1 as bigint) auditid - -- (select max(auditid) + 1 from annotationaudits) auditid - -- 0 auditid - ,aa.annotationid - ,aa.itemid - ,aa.typeid - ,aa.rtftext - ,aa.searchtext - ,aa.config - ,aa.dts - ,aa.userid - ,0 deletestatus - ,aa.ActionDTS - ,ii.contentid icontentid - ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid) LastAuditID - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and deletestatus > 0 and aa.dts = dts) DeletedAuditID -,tci.ordinalpath - from tblannotations aa - inner join items ii on aa.itemid = ii.itemid -join @tci tci on tci.itemid = ii.itemid - where aa.deletestatus = 0 - union - select - aa.auditid - ,aa.annotationid - ,aa.itemid - ,aa.typeid - ,aa.rtftext - ,aa.searchtext - ,aa.config - ,aa.dts - ,aa.userid - ,aa.deletestatus - ,aa.ActionDTS - ,ii.contentid icontentid - ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid ) LastAuditID - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid and deletestatus > 0 and aa.dts = dts) DeletedAuditID -,tci.ordinalpath - from annotationaudits aa - inner join items ii on aa.itemid = ii.itemid -join @tci tci on tci.itemid = ii.itemid - ) ah - where itemid in (select itemid from @tci) - and dts > @dts - --(select dts from versions where versionid = (select max(versionid) from revisions rr inner join versions vv on rr.revisionid = vv.revisionid - --inner join stages ss on vv.stageid = ss.stageid where itemid = @procitemid and ss.isapproved = 1)) - order by ordinalpath,annotationid,auditid--actionwhen -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemID Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetUnitPrefix]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetUnitPrefix]; -GO -/* -select 'DocVersions' Type, VersionID, Config, .dbo.vefn_GetUnitPrefix(config) UnitPrefix from DocVersions -UNION select 'Blank' Type, 0 VersionID, '' Config, .dbo.vefn_GetUnitPrefix('') UnitPrefix -UNION select 'Null' Type, 0 VersionID, null Config, .dbo.vefn_GetUnitPrefix(null) UnitPrefix -UNION select 'XML with' Type, 0 VersionID, '' Config, .dbo.vefn_GetUnitPrefix('') UnitPrefix -UNION select 'XML without' Type, 0 VersionID, '' Config, .dbo.vefn_GetUnitPrefix('') UnitPrefix -UNION select 'XML empty' Type, 0 VersionID, '' Config, .dbo.vefn_GetUnitPrefix('') UnitPrefix -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE function [dbo].[vefn_GetUnitPrefix](@config varchar(MAX)) -returns varchar(MAX) -begin - declare @Xml xml - set @Xml = cast(@config as xml) - declare @UnitPrefix varchar(MAX) - set @UnitPrefix = (select Replace(v.value('@ProcedureNumber', 'nvarchar(100)'),'#','') UnitPrefix from @XML.nodes('//Unit') as tmpXml(v)) - return isnull(@UnitPrefix,'') -end - -GO -IF (@@Error = 0) PRINT 'Function: vefn_GetUnitPrefix Succeeded' -ELSE PRINT 'Function: vefn_GetUnitPrefix Error on Creation' -GO - - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_DocVersionSplit]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_DocVersionSplit]; -GO -/* -select * from vefn_DocVersionSplit('1,4') -select * from vefn_DocVersionSplit(null) -select * from vefn_DocVersionSplit('') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_DocVersionSplit](@DocVersionList varchar(MAX)) -RETURNS @IDs TABLE -( - VersionID int PRIMARY KEY, - ItemID int, - DVPath varchar(MAX), - UnitPrefix varchar(MAX) -) -WITH EXECUTE AS OWNER -AS -BEGIN -IF(isnull(@DocVersionList,'') = '') - Insert into @IDs - Select VersionID, ItemID, dbo.ve_GetFolderPath(VersionID), .dbo.vefn_GetUnitPrefix(config) - from DocVersions where ItemID is not null -else - Insert into @IDs - Select ID, ItemID, dbo.ve_GetFolderPath(VersionID), .dbo.vefn_GetUnitPrefix(config) - from vefn_SplitInt(@DocVersionList,',') as T - join DocVersions DV on VersionID = T.ID -RETURN -END - -GO - -IF (@@Error = 0) PRINT 'Function: [vefn_DocVersionSplit] Succeeded' -ELSE PRINT 'Function: [vefn_DocVersionSplit] Error on Creation' -GO - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingAndChildrenItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SiblingAndChildrenItems]; -GO - -/* -select * from vefn_SiblingAndChildrenItems('','3-') -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SiblingAndChildrenItems](@DocVersionList varchar(MAX),@UnitPrefix varchar(MAX)) -RETURNS @SiblingAndChildren TABLE -( - [ItemID] int PRIMARY KEY - , [DVPath] nvarchar(max) - , [Path] nvarchar(max) - , [Level] int - , [FromType] int - , [Ordinal] int - , [ParentID] int - , [PreviousID] int - , [ContentID] int - , [DTS] datetime - , [UserID] nvarchar(100) - , [pContentID] int - , [pDTS] datetime - , [pUserID] nvarchar(100) - , [IsRNO] int - --- , [PPath] nvarchar(max) --- , [POrdinalPath] nvarchar(max) - , [OrdinalPath] nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -BEGIN -with Itemz([ItemID], [DVPath], [Level], [ParentID], [Ordinal], [PreviousID], [FromType], [ContentID], [DTS], [UserID],[pContentID], - [pDTS],[pUserID],PPath, [Path], [IsRNO], [POrdinalPath], [OrdinalPath], [UnitPrefix]) as ( - Select [I].[ItemID], DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], - Cast('' as nvarchar(max)) [PPath], - Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) [Path], - 0 IsRNO, Cast('' as nvarchar(max)) [POrdinalPath], Cast('0001' as nvarchar(max)) [OrdinalPath], UnitPrefix - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select I.[ItemID], DVPath, [Level] + 1,Z.ItemID,0, I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID], - P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Procedure - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Section - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(3)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001', UnitPrefix - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select I.[ItemID], DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID] - ,null,null,null, - PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Procedure - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') -- Section - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('00000' + cast(Z.[Ordinal] + 2 as varchar(5)), 5), UnitPrefix - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 - -) -insert into @SiblingAndChildren -select I.[ItemID], [DvPath], [Path], I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID], - [pContentID],[pDTS],[pUserID],[IsRNO]/*,[PPath],[POrdinalPath]*/,[OrdinalPath] - from ItemZ I -OPTION (MAXRECURSION 10000) -END -RETURN -END -GO - -IF (@@Error = 0) PRINT 'Function: vefn_SiblingAndChildrenItems Succeeded' -ELSE PRINT 'Function: vefn_SiblingAndChildrenItems Error on Creation' -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[FindAnnotations]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [FindAnnotations]; - -/****** Object: UserDefinedFunction [dbo].[FindAnnotations] Script Date: 09/28/2012 11:06:59 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select * from [FindAnnotations]('12','',0,'') -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[FindAnnotations](@AnnotationTypeList varchar(MAX), @SearchString varchar(MAX), @CaseSensitive int, @StepTypeList varchar(MAX)) -RETURNS @Results TABLE -( - AnnotationID int Primary Key -) -WITH EXECUTE AS OWNER -BEGIN - insert into @Results - select Distinct A.AnnotationID from Items I - join Contents C on I.ContentID = C.ContentID - left Join Parts P on P.ItemID = I.ItemID - join Annotations A on A.ItemID = I.ItemID - join vefn_AnnotationTypeSplit(@AnnotationTypeList) TT on TT.TypeID=A.TypeID -where - (isnull(@SearchString,'')='' - OR (@CaseSensitive = 1 AND A.SearchText like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) - OR (@CaseSensitive = 0 AND A.SearchText like @SearchString Collate SQL_Latin1_General_CP1_CI_AS)) - AND - ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) - or - ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - or - (@StepTypeList like '%20040%' AND isnull(P.FromType,0) = 5))) - - RETURN -END -GO -IF (@@Error = 0) PRINT 'Function: FindAnnotations Succeeded' -ELSE PRINT 'Function: FindAnnotations Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchAnnotationItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [vesp_SearchAnnotationItemAndChildren]; -GO -/* -exec vesp_SearchAnnotationItemAndChildren Null,Null,'1',Null,0,"3-" -exec vesp_SearchAnnotationItemAndChildren Null,Null,'2',Null,0 -exec vesp_SearchAnnotationItemAndChildren Null,Null,'3',Null,0 -exec vesp_SearchAnnotationItemAndChildren Null,Null,'4',Null,0 -exec vesp_SearchAnnotationItemAndChildren Null,Null,'5',Null,0 -exec vesp_SearchAnnotationItemAndChildren Null,Null,'',Null,0 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchAnnotationItemAndChildren] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), @AnnotationTypeList varchar(MAX), @SearchString nvarchar(MAX), @CaseSensitive as int, @UnitPrefix nvarchar(MAX)) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) -begin -with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], - [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, UnitPrefix) as ( - Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], - Cast('' as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, - 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(3)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', UnitPrefix - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - ,PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), UnitPrefix - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 -) -select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged],AnnotationID SearchAnnotationID, SearchText, TT.Name AnnotationType, - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - left join Entries E on C.ContentID = E.ContentID - left join Documents D on E.DocID = D.DocID - join Annotations A on A.ItemID = I.ItemID - join vefn_AnnotationTypeSplit(@AnnotationTypeList) TT on TT.TypeID=A.TypeID -where - A.AnnotationID in(select AnnotationID from [FindAnnotations](@AnnotationTypeList, @SearchString, @CaseSensitive, @StepTypeList)) - order by DvPath,OrdinalPath -OPTION (MAXRECURSION 10000) -END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchAnnotationItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchAnnotationItemAndChildren Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [vesp_SearchItemAndChildren]; -GO -/* -exec vesp_SearchItemAndChildren '1,2,4','20007','#Link:Transition',1,0,0,0 -exec vesp_SearchItemAndChildren '1,2,4','20007','#Link:Transition',1,1,0,0 -exec vesp_SearchItemAndChildren '1,2,4','20007','#Link:Transition',1,2,0,0 -exec vesp_SearchItemAndChildren '4','','#Link:Refer',1,2,0,0 -exec vesp_SearchItemAndChildren '4','','200`F',0,1,0,0 -exec vesp_SearchItemAndChildren '4','10000','',0,0,0,0 -exec vesp_SearchItemAndChildren '4','','[0-9]`F',0,1,0,0 -exec vesp_SearchItemAndChildren '','','RCP',0,0,0,0 -exec vesp_SearchItemAndChildren '','','%',0,0,0,0 -exec vesp_SearchItemAndChildren '','20040','',0,0,0,0 -exec vesp_SearchItemAndChildren '','10000','XYZZY',0,0,0,0 -exec vesp_SearchItemAndChildren '','10000','XYZZY',1,0,0,0 -exec vesp_SearchItemAndChildren '','','%IF%',0,0,0,0 -exec vesp_SearchItemAndChildren '','','%IF%',1,0,0,0 -exec vesp_SearchItemAndChildren '','','%47%',1,0,0,0 -exec vesp_SearchItemAndChildren '','','%47%',1,0,0,1 -exec vesp_SearchItemAndChildren '','','condenser not av',0,0,0,0 -exec vesp_SearchItemAndChildren '','','(SG OR LHSI) AND DISPATCH',2,0,0,0 -exec vesp_SearchItemAndChildren '','','DISPATCH NEAR SG',2,0,0,0 -exec vesp_SearchItemAndChildren '','','PORV NEAR SG',2,0,0,0 -exec vesp_SearchItemAndChildren '','','CHECK NORMAL',0,0,0,0 -exec vesp_SearchItemAndChildren '','','turbine-driven',0,0,0,0 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchItemAndChildren] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), -@SearchString varchar(MAX), @CaseSensitive as int, @IncludeLinks as int, @IncludeRtfFormatting as int, @IncludeSpecialCharacters as int, @UnitPrefix as varchar(MAX)) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) -begin -with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], - [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, UnitPrefix) as ( - Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], - Cast('' as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, - 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(3)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', UnitPrefix - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - ,PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), UnitPrefix - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 -) -select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - left join Entries E on C.ContentID = E.ContentID - left join Documents D on E.DocID = D.DocID - where - (isnull(@SearchString,'')='' - OR (@CaseSensitive = 1 AND .dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) - OR (@CaseSensitive = 0 AND .dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchString Collate SQL_Latin1_General_CP1_CI_AS) - OR (@CaseSensitive = 1 AND D.DocAscii like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) - OR (@CaseSensitive = 0 AND D.DocAscii like @SearchString Collate SQL_Latin1_General_CP1_CI_AS) - ) - AND - ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) - or - ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - or - (@StepTypeList like '%20040%' AND IsRNO = -1))) - order by DvPath,OrdinalPath -OPTION (MAXRECURSION 10000) -END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchItemAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SearchItemAndChildrenNew] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchItemAndChildrenNew]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [vesp_SearchItemAndChildrenNew]; -GO - -/* -exec vesp_SearchItemAndChildrenNew '1,2,4','20007','#Link:Transition',1,0,0,0 -exec vesp_SearchItemAndChildrenNew '1,2,4','20007','#Link:Transition',1,1,0,0 -exec vesp_SearchItemAndChildrenNew '1,2,4','20007','#Link:Transition',1,2,0,0 -exec vesp_SearchItemAndChildrenNew '4','','#Link:Refer',1,2,0,0 -exec vesp_SearchItemAndChildrenNew '4','','200`F',0,1,0,0 -exec vesp_SearchItemAndChildrenNew '4','10000','',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '4','','[0-9]`F',0,1,0,0 -exec vesp_SearchItemAndChildrenNew '1','','"RCP"',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','"RCP"',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','20040','',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','10000','XYZZY',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','10000','XYZZY',1,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%IF%',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%IF%',1,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%47%',1,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%47%',1,0,0,1 -exec vesp_SearchItemAndChildrenNew '','','condenser not av',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','(SG OR LHSI) AND DISPATCH',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','DISPATCH NEAR SG',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','PORV NEAR SG',2,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','CHECK NORMAL',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','(Resolved Transition Text)',0,0,0,0 -exec vesp_SearchItemAndChildrenNew '','','%turbine-driven%',0,0,0,0 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchItemAndChildrenNew] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), -@SearchString varchar(MAX), @CaseSensitive as int, @IncludeLinks as int, @IncludeRtfFormatting as int, @IncludeSpecialCharacters as int, @UnitPrefix as varchar(MAX)) -WITH EXECUTE AS OWNER -AS -select ZZ.DvPath, ZZ.Path, ZZ.[Level],ZZ.[FromType],ZZ.[Ordinal], ZZ.[ParentID], ZZ.[ItemID],ZZ.[PreviousID],ZZ.[ContentID],ZZ.[DTS],ZZ.[UserID] - ,II.[LastChanged] - ,CC.[Number],CC.[Text],CC.[Type],CC.[FormatID],CC.[Config],CC.[DTS] [cDTS],CC.[UserID] [cUserID] - ,CC.[LastChanged] [cLastChanged], - PP.[ContentID] [pContentID], PP.[DTS] [pDTS],PP.[UserID] [pUserID], PP.[LastChanged] [pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ZZ.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ZZ.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ZZ.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ZZ.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ZZ.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ZZ.[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=CC.[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=CC.[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=CC.[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=CC.[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=CC.[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=CC.[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=CC.[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=CC.[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=CC.[ContentID]) [ZContentCount] -from vefn_SiblingAndChildrenItems(@DocVersionList, @UnitPrefix) ZZ - Join Items II on ZZ.ItemID=II.ItemID - Left Join Parts PP on ZZ.PContentID=PP.ContentID and ZZ.FromType = PP.FromType - Join Contents CC on CC.ContentID=ZZ.ContentID -where ZZ.ContentID in (select ContentID from vefn_FindText(@DocVersionList,@SearchString,@CaseSensitive,@IncludeLinks,@IncludeRtfFormatting,@IncludeSpecialCharacters,@StepTypeList)) - order by DvPath,OrdinalPath - GO -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchItemAndChildrenNew Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchItemAndChildrenNew Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[tr_tblItems_Update]') AND OBJECTPROPERTY(id,N'IsTrigger') = 1) - DROP TRIGGER [tr_tblItems_Update]; - - /****** Object: Trigger [dbo].[tr_tblItems_Update] Script Date: 04/25/2012 14:09:52 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/****** Object: Trigger [tr_tblItems_Update] ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE trigger [dbo].[tr_tblItems_Update] on [dbo].[tblItems] for update as - begin - if exists (select * from inserted) - begin - if update(PreviousID) or update(ContentID) or update(UserID) or update(DeleteStatus) - begin - insert into ItemAudits(ItemID,PreviousID,ContentID,DTS,UserID,DeleteStatus) - select dd.ItemID,dd.PreviousID,dd.ContentID,dd.DTS,dd.UserID,dd.DeleteStatus from deleted dd - inner join inserted ii on dd.ItemID = ii.ItemID - where dd.deletestatus = 0 or ii.deletestatus != 0 - end - end - end -GO --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Trigger alteration: tr_tblItems_Update Succeeded' -ELSE PRINT 'Trigger alteration: tr_tblItems_Update Error on Alteration' -GO - -/****** Object: StoredProcedure [vesp_GetROUsagesByProcedure] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetROUsagesByProcedure]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetROUsagesByProcedure]; -GO - -/* -exec vesp_GetROUsagesByProcedure '1,2,4','20007','1:00010000019C,0001000002AE' -exec vesp_GetROUsagesByProcedure '1,2,4','','1:00010000019C,0001000002AE' -exec vesp_GetROUsagesByProcedure '1,2,4','20007','1:0001' -exec vesp_GetROUsagesByProcedure '1,2,4','20006','1' -exec vesp_GetROUsagesByProcedure '1,2,4','20006','' -exec vesp_GetROUsagesByProcedure '1,2,4',Null,Null -exec vesp_GetROUsagesByProcedure '1','','1:000700000124','' -exec vesp_GetROUsagesByProcedure '','','1:0007000001C9,000700000124', '' -exec vesp_SearchROItemAndChildren '1','','1:000700000124','' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetROUsagesByProcedure] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), @ROSearchString varchar(MAX), @UnitPrefix as varchar(MAX)) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -begin -with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], - [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, FoundROID) as ( - Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], - Cast('' as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, - 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, null - - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - --Path + case when Z.FromType < 3 then @Delim else @DelimStep end + case C.Type/10000 - Path + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(3)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', - null - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - ,PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + @UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), - null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 -) -select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount], - RRU.ROID FoundROID - from ItemZ I - join Contents C on C.ContentID = I.ContentID -join (select contentid, ru.roid from ROusages RU -join vefn_SplitROSearch(@ROSearchString) RR on case when len(RU.ROID) = 12 then RU.ROID +'0000' else RU.ROID end - like RR.roid + '%' -union -select contentid, du.roid from DROusages DU -join entries ee on DU.DOCID = EE.DOCID -join vefn_SplitROSearch(@ROSearchString) RR on case when len(DU.ROID) = 12 then DU.ROID +'0000' else DU.ROID end like RR.roid + '%') RRU on RRU.ContentID = I.ContentID - AND - ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) - or - ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - or - (@StepTypeList like '%20040%' AND IsRNO = -1))) - order by DvPath,OrdinalPath /*having foundroid in ( select roid from vefn_SplitROSearch(@ROSearchString))*/ -OPTION (MAXRECURSION 10000) -END -END -GO -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetROUsagesByProcedure Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetROUsagesByProcedure Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[FindRoUsages]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [FindRoUsages]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -Declare @ROSearchString varchar(MAX) -set @ROSearchString='1:000200000089' -select * from FindRoUsages('1:000200000089') -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create FUNCTION [dbo].[FindRoUsages](@ROSearchString varchar(Max)) -RETURNS @Results TABLE -( - ContentID int Primary Key -) -WITH EXECUTE AS OWNER -BEGIN - insert into @Results - select ContentID from ROUsages RU - join vefn_SplitROSearch(@ROSearchString) RR - ON RR.RODBID = RU.RODBID and - RU.ROID like RR.ROID + '%' Collate SQL_Latin1_General_CP1_CI_AS - UNION - select ContentID from Entries EE - Join DROUsages RU on RU.DocID = EE.DocID - join vefn_SplitROSearch(@ROSearchString) RR - ON RR.RODBID = RU.RODBID and - case when len(RU.ROID) = 12 then RU.ROID +'0000' else RU.ROID end like RR.ROID + '%' Collate SQL_Latin1_General_CP1_CI_AS - RETURN -END -GO - -IF (@@Error = 0) PRINT 'Function: FindRoUsages Succeeded' -ELSE PRINT 'Function: FindRoUsages Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchROItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [vesp_SearchROItemAndChildren]; - -GO -/****** Object: StoredProcedure [dbo].[vesp_SearchROItemAndChildren] Script Date: 09/28/2012 09:02:50 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/* -exec vesp_SearchROItemAndChildren '1,2,4','20007','1:00010000019C,0001000002AE','' -exec vesp_SearchROItemAndChildren '1,2,4','','1:00010000019C,0001000002AE','' -exec vesp_SearchROItemAndChildren '1,2,4','20007','1:0001','' -exec vesp_SearchROItemAndChildren '1,2,4','20006','1','' -exec vesp_SearchROItemAndChildren '1,2,4','20006','','' -exec vesp_SearchROItemAndChildren '',Null,Null,'XXX-','' -exec vesp_SearchROItemAndChildren '1','','1:000200000089','' -exec vesp_SearchROItemAndChildren '1','','1:00010000019c','' -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SearchROItemAndChildren] (@DocVersionList varchar(MAX), @StepTypeList varchar(MAX), @ROSearchString varchar(MAX), @UnitPrefix as varchar(MAX)) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -begin -with Itemz(DVPath, [Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], - [pDTS],[pUserID],[pLastChanged],PPath, Path, IsRNO, POrdinalPath, OrdinalPath, UnitPrefix) as ( - Select DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [I].[ItemID], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID],[I].[LastChanged] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], [I].[LastChanged] [pLastChanged], - Cast('' as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path, - 0 IsRNO, Cast('' as nvarchar(max)) POrdinalPath, Cast('0001' as nvarchar(max)) OrdinalPath, UnitPrefix - - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] -Union All --- Children - select DVPath, [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - --Path + case when Z.FromType < 3 then @Delim else @DelimStep end + case C.Type/10000 - Path + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(3)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('0000' + Cast(P.FromType as varchar(4)), 4) + '-0001', UnitPrefix - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - ,PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + UnitPrefix + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('0000' + cast(Z.[Ordinal] + 2 as varchar(4)), 4), UnitPrefix - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 -) -select DvPath, Path, I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - left join Entries E on C.ContentID = E.ContentID - left join Documents D on E.DocID = D.DocID - where - I.ContentID in(select ContentID from FindROUsages(@ROSearchString)) - AND - ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) - or - ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - or - (@StepTypeList like '%20040%' AND IsRNO = -1))) - order by DvPath,OrdinalPath -OPTION (MAXRECURSION 10000) -END -END -GO - -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchROItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchROItemAndChildren Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranFrom]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsTranFrom]; -GO -/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranFrom] Script Date: 10/03/2012 10:06:38 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsTranFrom] -WITH EXECUTE AS OWNER -AS -begin - -Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=I.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=I.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=I.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=I.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=I.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=I.[ItemID]) [Transition_ToIDCount] -from Items I -join Transitions T on I.ContentID = T.FromID -END -GO - -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranFrom Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsTranFrom Error on Creation' -GO - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranTo]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsTranTo]; -GO -/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranTo] Script Date: 10/03/2012 10:08:03 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsTranTo] -WITH EXECUTE AS OWNER -AS -begin -with Itemz(ItemID, ContentID, PreviousID, [Type]) as ( - Select Distinct ItemID, C.ContentID, PreviousID, C.Type - FROM [Items] I - Join Contents C on C.ContentID = I.ContentID - JOIN Transitions T on t.ToID = I.ItemID or t.RangeID = I.ItemID - --where [ItemID]=@ItemID -Union ALL --- Parent - select I.ItemID,I.ContentID, I.PreviousID, C.Type - from Itemz Z - join Parts P on P.ItemID = Z.ItemID - join Items I on I.ContentID = P.ContentID - Join Contents C on C.ContentID = I.ContentID --- Previous -Union ALL - select I.ItemID,I.ContentID, I.PreviousID, C.Type - from Itemz Z - join Items I on Z.PreviousID = I.ItemID - Join Contents C on C.ContentID = I.ContentID - where Z.Type >= 10000 -) -Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=Z.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=Z.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=Z.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=Z.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=Z.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=Z.[ItemID]) [Transition_ToIDCount] -from Itemz Z join Items I on I.ItemID = Z.ItemID -OPTION (MAXRECURSION 10000) -END -GO - -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranTo Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsTranTo Error on Creation' -GO - - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranFromAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsTranFromAndContent]; -GO -/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranFromAndContent] Script Date: 10/03/2012 10:52:31 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsTranFromAndContent] -WITH EXECUTE AS OWNER -AS -begin - -Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] -from Items I Join Contents C on I.ContentID = C.ContentID -join Transitions T on I.ContentID = T.FromID -END -GO -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranFromAndContent Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsTranFromAndContent Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsTranToAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsTranToAndContent]; -GO -GO -/****** Object: StoredProcedure [dbo].[vesp_ListItemsTranToAndContent] Script Date: 10/03/2012 10:08:17 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsTranToAndContent] -WITH EXECUTE AS OWNER -AS -begin -with Itemz(ItemID, ContentID, PreviousID, [Type]) as ( - Select Distinct ItemID, C.ContentID, PreviousID, C.Type - FROM [Items] I - Join Contents C on C.ContentID = I.ContentID - JOIN Transitions T on t.ToID = I.ItemID or t.RangeID = I.ItemID - --where [ItemID]=@ItemID -Union ALL --- Parent - select I.ItemID,I.ContentID, I.PreviousID, C.Type - from Itemz Z - join Parts P on P.ItemID = Z.ItemID - join Items I on I.ContentID = P.ContentID - Join Contents C on C.ContentID = I.ContentID --- Previous -Union ALL - select I.ItemID,I.ContentID, I.PreviousID, C.Type - from Itemz Z - join Items I on Z.PreviousID = I.ItemID - Join Contents C on C.ContentID = I.ContentID - where Z.Type >= 10000 -) -Select distinct I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] -from Itemz Z -Join Items I on Z.ItemID = I.ItemID -Join Contents C on I.ContentID = C.ContentID -OPTION (MAXRECURSION 10000) -END -GO - -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsTranToAndContent Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsTranToAndContent Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_SiblingAndChildrenItemsByProc] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingAndChildrenItemsByProc]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SiblingAndChildrenItemsByProc]; -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_tblChildItems] Script Date: 05/18/2011 11:20:48 ******/ -/* -select * from vefn_SiblingAndChildrenItemsByProc(30) II -join -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SiblingAndChildrenItemsByProc](@ProcID int) -RETURNS @SiblingAndChildren TABLE -( - [ItemID] int PRIMARY KEY - , [DVPath] nvarchar(max) - , [Path] nvarchar(max) - , [Level] int - , [FromType] int - , [Ordinal] int - , [ParentID] int - , [PreviousID] int - , [ContentID] int - , [DTS] datetime - , [UserID] nvarchar(100) - , [pContentID] int - , [pDTS] datetime - , [pUserID] nvarchar(100) - , [IsRNO] int - --- , [PPath] nvarchar(max) --- , [POrdinalPath] nvarchar(max) - , [OrdinalPath] nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -BEGIN -with Itemz([ItemID], [DVPath], [Level], [ParentID], [Ordinal], [PreviousID], [FromType], [ContentID], [DTS], [UserID],[pContentID], - [pDTS],[pUserID],PPath, [Path], [IsRNO], [POrdinalPath], [OrdinalPath]) as ( - Select [I].[ItemID], '' DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], - Cast('' as nvarchar(max)) [PPath], - Cast(Case when C.Type < 20000 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) [Path], - 0 IsRNO, Cast('' as nvarchar(max)) [POrdinalPath], Cast('0001' as nvarchar(max)) [OrdinalPath] - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - WHERE I.[ItemID] = @ProcID -Union All --- Children - select I.[ItemID], DVPath, [Level] + 1,Z.ItemID,0, I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID], - P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(3)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001' - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select I.[ItemID], DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID] - ,null,null,null, - PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - when 1 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') - else case when .dbo.vefn_GetLastDelim(Path) = '.' THEN @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('00000' + cast(Z.[Ordinal] + 2 as varchar(5)), 5) - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 - -) -insert into @SiblingAndChildren -select I.[ItemID], [DvPath], [Path], I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID], - [pContentID],[pDTS],[pUserID],[IsRNO]/*,[PPath],[POrdinalPath]*/,[OrdinalPath] - from ItemZ I -OPTION (MAXRECURSION 10000) -END -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingAndChildrenItemsByProc Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SiblingAndChildrenItemsByProc Error on Creation' -GO - - -/****** Object: StoredProcedure [vefn_RemoveRange] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_RemoveRange]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_RemoveRange]; -GO - -/* -SELECT ContentID, text, [dbo].[vefn_RemoveRange](text,'') StrippedText -from contents -where contentid in (select top 25 ContentID from contents where text like '%[[]END>%') - -select top 25 * from contents where text like '%[[]END>%' - -SELECT ContentID, [dbo].[vefn_RemoveRange](text,'') StrippedText -from contents -where contentid =189 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_RemoveRange](@text nvarchar(MAX),@startToken nvarchar(MAX), @endToken nvarchar(MAX)) -RETURNS varchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @index int - DECLARE @index2 int - DECLARE @lenStartToken int - DECLARE @lenEndToken int - DECLARE @lastIndex int - SET @lenStartToken = len(@startToken) - SET @lenEndToken = len(@endToken) - SET @index = CHARINDEX(@startToken , @text) - SET @lastIndex = -1 - while (@index != 0) - BEGIN - SET @index2 = CHARINDEX(@endToken , @text, @index + @lenStartToken) - if (@index2>0) - SET @text = substring(@text,1,@index-1) + substring(@text,@index2+@lenEndToken,len(@text)) - SET @lastIndex = @index - SET @index = CHARINDEX(@startToken , @text) - if (@index = @lastIndex) SET @index = 0 - END - RETURN @text -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_RemoveRange Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_RemoveRange Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetPath] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetPath]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetPath]; -GO - -/* -select ItemID, CC.Type, dbo.ve_GetPath(ItemID) -from Items II join Contents CC on II.ContentID = CC.ContentID -where ItemID in(111,265,266,267) -*/ --- drop function ve_GetPath -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetPath] (@ItemID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN --- declare @STructID int ---set @StructID=11 -declare @Path varchar(max); -with Itemz(ItemCount,ItemID,PreviousID,FromType,CType,Number,Text,PPath, Path) as ( - Select 1,ItemID,PreviousID,0,C.Type/10000,C.Number,C.Text, - Cast(Case when C.Type < 20000 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') else '' end as nvarchar(max)) PPath, - Cast(Case when C.Type < 20000 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') else '1' end as nvarchar(max)) Path - from Items I - join Contents C on I.ContentID = C.ContentID - where ItemID=@ItemID - Union All --- siblings - Select ItemCount+1,I.PreviousID,II.PreviousID,0,C.Type/10000,Z.Number,Z.Text,PPath,cast(ItemCount + 1 as nvarchar(3)) + PPath - from Items I - join Contents C on I.ContentID = C.ContentID - Join Items II on II.ItemID = I.PreviousID - Join Itemz Z on I.ItemID=Z.ItemID - where I.PreviousID != 0 - Union All --- children - select 1,I.ItemID,I.PreviousID,P.FromType,C.Type/10000,C.Number,C.Text, - case C.Type/10000 - when 0 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') - when 1 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') +'`' + cast(ItemCount + 0 as varchar(3)) - else - case P.FromType - when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(3)) - when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(3)) - when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(3)) - when 4 then '`Note`' + cast(ItemCount + 0 as varchar(3)) - when 5 then '`RNO`' - when 7 then '`Table`' - else '`' + cast(ItemCount + 0 as varchar(3)) - end end + PPath PPath, - --'1' + - case C.Type/10000 - when 0 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') - when 1 then '`' + Isnull(C.Number,'') +'`' + Isnull(C.Text,'') +'`' + cast(ItemCount + 0 as varchar(3)) - else - case P.FromType - when 1 then 'PRC`' + cast(ItemCount + 0 as varchar(3)) - when 2 then '`SEC`' + cast(ItemCount + 0 as varchar(3)) - when 3 then '`Caution`' + cast(ItemCount + 0 as varchar(3)) - when 4 then '`Note`' + cast(ItemCount + 0 as varchar(3)) - when 5 then '`RNO' - when 7 then '`Table' - else '`' + cast(ItemCount + 0 as varchar(3)) - end end + PPath Path - - from Parts P - join Items I on I.ContentID = P.ContentID - join Contents C on I.ContentID = C.ContentID - join Itemz Z on P.ItemID=Z.ItemID -) -select @Path = path From Itemz where ItemCount=1 and CType=0 -OPTION (MAXRECURSION 10000) -return @Path -END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetPath Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetPath Error on Creation' -GO - - -/****** Object: StoredProcedure [vefn_ProcedureByProcID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ProcedureByProcID]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ProcedureByProcID]; -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_ProcedureByProcID] Script Date: 05/18/2011 11:20:48 ******/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create FUNCTION [dbo].[vefn_ProcedureByProcID](@ProcID int) -RETURNS @SiblingAndChildren TABLE -( - [ItemID] int PRIMARY KEY - , [DVPath] nvarchar(max) - , [Path] nvarchar(max) - , [Level] int - , [FromType] int - , [Ordinal] int - , [ParentID] int - , [PreviousID] int - , [ContentID] int - , [DTS] datetime - , [UserID] nvarchar(100) - , [pContentID] int - , [pDTS] datetime - , [pUserID] nvarchar(100) - , [IsRNO] int - --- , [PPath] nvarchar(max) --- , [POrdinalPath] nvarchar(max) - , [OrdinalPath] nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -BEGIN -insert into @SiblingAndChildren - Select -[I].[ItemID] -, '' DVPath -, Cast(Case when C.Type < 20000 then @Delim + Isnull(C.Number,'') + @DelimNumber + Isnull(C.Text,'') else '1' end as nvarchar(max)) [Path] -,0 [Level] -,0 [FromType] -, 0 [Ordinal] -, 0 [ParentID] -, [PreviousID] -,[I].[ContentID] -,[I].[DTS] -,[I].[UserID] - ,0 [pContentID] -,[I].[DTS] [pDTS] -, [I].[UserID] [pUserID] -,0 IsRNO - , Cast('0001' as nvarchar(max)) [OrdinalPath] - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - WHERE I.[ItemID] = @ProcID -END -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ProcedureByProcID Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_ProcedureByProcID Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindText] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindText]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindText]; -GO - -/* -SELECT * From vefn_FindText('1','turbine-driven',0,0,0,1,'') -SELECT * From vefn_FindText('1','turbine\u8209?driven',0,0,0,0,'') -SELECT * From vefn_FindText('1','trip',0,0,0,0,'') -select * from vefn_FindText('1','',0,0,0,1,'20010,20008') -select * from vefn_FindText('1',null,0,0,0,1,'20010,20008') -select * from vefn_FindText('1',' ',0,0,0,1,'20010,20008') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindText]( -@DocVersionList nvarchar(MAX) -,@SearchString varchar(MAX) -,@CaseSensitive as int -,@IncludeLinks as int -,@IncludeRtfFormatting as int -,@IncludeSpecialCharacters as int -,@StepTypeList varchar(MAX)) -RETURNS @FoundContents TABLE -( - ContentID int PRIMARY KEY -) -WITH EXECUTE AS OWNER -AS -BEGIN -Set @SearchString = .dbo.vefn_FixSearchString(@SearchString) -IF isnull(@SearchString,'%')='%' - BEGIN - insert into @FoundContents - select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C - where(isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) - or (dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))) - END -ELSE - BEGIN - Declare @SearchStringx nvarchar(200) --kbr - set @SearchStringx = replace(@SearchString,'-','\u8209?') --kbr - IF @CaseSensitive = 0 -- Not Case Sensitive - BEGIN - insert into @FoundContents - select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchStringx) C - where - (.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchStringx Collate SQL_Latin1_General_CP1_CI_AS) - AND ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) - or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - UNION - select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C - join Entries E on C.ContentID = E.ContentID - join Documents D on E.DocID = D.DocID - where - (D.DocAscii like @SearchString Collate SQL_Latin1_General_CP1_CI_AS) - AND - ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) - or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - END - ELSE - BEGIN - IF @CaseSensitive = 1 -- Case Sensitive - BEGIN - insert into @FoundContents - select C.ContentID from vefn_FindContentText(@DocVersionList,@SearchStringx) C - where - (.dbo.vefn_RemoveExtraText(C.Text,@IncludeLinks, @IncludeRtfFormatting, @IncludeSpecialCharacters) like @SearchStringx Collate SQL_Latin1_General_CP1_CS_AS) - AND ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) - or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - UNION - select C.ContentID from (select * from Contents where ContentID in(select ContentID from vefn_DVContent(@DocVersionList))) C - join Entries E on C.ContentID = E.ContentID - join Documents D on E.DocID = D.DocID - where - (D.DocAscii like @SearchString Collate SQL_Latin1_General_CP1_CS_AS) - AND - ((isnull(@StepTypeList,'') = '' and dbo.vefn_AllSections(C.Type)>=10000) - or ((dbo.vefn_AllSections(C.Type) in (Select ID from vefn_SplitInt(@StepTypeList,','))))) - END - END -END -RETURN -END - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindText Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindText Error on Creation' -GO - --- THIS IS STUFF THAT WE FIXED IN PROMS2010.SQL AND PUT IN HERE ALSO -/****** Object: StoredProcedure [getItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemAndChildren]; -GO - --- getItemAndChildren 111 -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemAndChildren] (@ItemID int) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged] from ItemZ I - join Contents C on C.ContentID = I.ContentID - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: getItemAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [getItemNextAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemNextAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemNextAndChildren]; -GO - --- getItemNextAndChildren 111 -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemNextAndChildren] (@ItemID int) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged] from ItemZ I - join Contents C on C.ContentID = I.ContentID - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemNextAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: getItemNextAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [ve_GetSiblingCount] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetSiblingCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetSiblingCount]; -GO - -/* -select top 5 CC.Number,CC.Text,Type,ItemID, dbo.ve_GetSiblingCount(ItemID) HLStepCount -from Contents CC -Join Parts PP on PP.ContentID = CC.ContentID -where CC.Type >= 10000 and CC.Type < 20000 -order by dbo.ve_GetSiblingCount(ItemID) desc - -select top 5 CC.Number,CC.Text,Type,ItemID, dbo.ve_GetSiblingCount(ItemID) SectionCount -from Contents CC -Join Parts PP on PP.ContentID = CC.ContentID -where CC.Type < 10000 -order by dbo.ve_GetSiblingCount(ItemID) desc - -select top 5 CC.Text,Type,ItemID, dbo.ve_GetSiblingCount(ItemID) SubStepCount -from Contents CC -Join Parts PP on PP.ContentID = CC.ContentID -where CC.Type >= 20000 -order by dbo.ve_GetSiblingCount(ItemID) desc - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetSiblingCount] (@ItemID int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN -declare @Count int; -with Itemz([Direction], [ItemID], [PreviousID]) as ( - Select 0 Direction,[ItemID], [PreviousID] - FROM [Items] - where [ItemID]=@ItemID --- Siblings Previous -Union All - select -1 Direction,I.[ItemID], I.[PreviousID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.Direction <= 0 --- Siblings Next -Union All - select 1 Direction,I.[ItemID], I.[PreviousID] - from Itemz Z - join Items I on I.ItemID = Z.PreviousID - where Z.Direction >= 0 -) -Select @Count = Count(*) from Itemz -OPTION (MAXRECURSION 10000) -return @Count END; -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetSiblingCount Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetSiblingCount Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_AllHighLevelSteps] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AllHighLevelSteps]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_AllHighLevelSteps]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_AllHighLevelSteps]() -RETURNS @HighLevelStepTransitions TABLE -( - ParentID int - ,ItemID int PRIMARY KEY - ,Ordinal int - ,Path varchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM (select II.ItemID ParentID, PP.ItemID, PreviousID, II.ContentID, II.DTS, II.UserID, II.LastChanged from Items II -Join Contents CC on II.ContentID = CC.ContentID -Join Parts PP on PP.ContentID = II.ContentID and FromType = 6 -where CC.Type = 10000) TT --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - --where Z.[Level] > 0 -) -Insert into @HighLevelStepTransitions -select [ParentID],ItemID,Ordinal,dbo.ve_GetPath([ItemID]) Path -from Itemz -Order by ParentID,ItemID -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_AllHighLevelSteps Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_AllHighLevelSteps Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_AllHighLevelStepTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AllHighLevelStepTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_AllHighLevelStepTransitions]; -GO - -/* -select * from vefn_AllHighLevelStepTransitions() -where ExternalTransitions > 0 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_AllHighLevelStepTransitions]() -RETURNS @HighLevelStepTransitions TABLE -( - ParentID int - ,ItemID int PRIMARY KEY - ,Ordinal int - ,Path varchar(max) - ,TransCount int - ,ExternalTransitions int - ,ExternalChildTransitions int - ,InternalTransitions int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM (select II.ItemID ParentID, PP.ItemID, PreviousID, II.ContentID, II.DTS, II.UserID, II.LastChanged from Items II -Join Contents CC on II.ContentID = CC.ContentID -Join Parts PP on PP.ContentID = II.ContentID and FromType = 6 -where CC.Type = 10000) TT --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - --where Z.[Level] > 0 -) -Insert into @HighLevelStepTransitions -select [ParentID],ItemID,Ordinal,dbo.ve_GetShortPath([ItemID]) Path,(Select Count(*) from Transitions where ToID=ItemID OR RangeID=ItemID ) TransCount -,(Select count(*) from vefn_FindExternalTransitions(ItemID)) ExternalTransitions -,(Select count(*) from vefn_FindExternalChildTransitions(ItemID)) ExternalChildTransitions -,(Select count(*) from vefn_FindInternalTransitions(ItemID)) InternalTransitions -from Itemz -where (Select Count(*) from Transitions where ToID=ItemID OR RangeID=ItemID ) > 0 -OR(Select count(*) from vefn_FindExternalTransitions(ItemID)) > 0 -OR(Select count(*) from vefn_FindInternalTransitions(ItemID)) > 0 -Order by ParentID,ItemID -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_AllHighLevelStepTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_AllHighLevelStepTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_ChildItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChildItems]; -GO - -/* -declare @PreviousID as int -declare @ItemID as int -set @ItemID = 450 -select @PreviousID = PreviousID from items where ItemID = @ItemID - -Select * from Items where ItemID = @ItemID - -select * from Transitions -where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) -AND (ToID = @ItemID or RangeID = @ItemID) - -select CC.Text from Transitions TT -join contents CC on TT.FromID = CC.ContentID -where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) -AND (ToID = @ItemID or RangeID = @ItemID) - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_ChildItems](@ItemID int) -RETURNS @Children TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ItemID], [ContentID]) as ( - Select 0 [Level], [ItemID], [ContentID] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1, I.[ItemID], I.[ContentID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] , I.[ItemID], I.[ContentID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children select ItemID, ContentID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_ChildItems Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_ChildItemsRange] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildItemsRange]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChildItemsRange]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_ChildItemsRange](@StartItemID int, @EndItemID int, @DestFormat int) -RETURNS @Children TABLE -( -ItemID int PRIMARY KEY, -ContentID int, -FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @FormatID int -SELECT @FormatID = isnull(@DestFormat,.dbo.vefn_GetInheritedFormat(@StartItemID,1)) -BEGIN -with Itemz([Level], [ItemID], [ContentID], [FormatID], [FoundEnd]) as ( -Select 0 [Level], [ItemID], I.[ContentID], IsNull(C.[FormatID], @FormatID), case [ItemID] when @EndItemID then 1 else 0 end [FoundEnd] -FROM [Items] I -JOIN [Contents] C on I.ContentID = C.ContentID -where [ItemID]=@StartItemID -Union All --- Children -select [Level] + 1, I.[ItemID], I.[ContentID], IsNull(C.[FormatID], Z.[FormatID]), case I.[ItemID] when @EndItemID then 1 else 0 end [FoundEnd] -from Itemz Z -join Parts P on P.ContentID = Z.ContentID -join Items I on I.ItemID = P.ItemID -JOIN [Contents] C on I.ContentID = C.ContentID --- Siblings -Union All -select [Level] , I.[ItemID], I.[ContentID], IsNull(C.[FormatID], Z.[FormatID]), case I.[ItemID] when @EndItemID then 1 else 0 end [FoundEnd] -from Itemz Z -join Items I on I.PreviousID = Z.ItemID -JOIN [Contents] C on I.ContentID = C.ContentID -where FoundEnd = 0 -) -insert into @Children select ItemID, ContentID, FormatID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildItemsRange Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_ChildItemsRange Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_ChildrenItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChildrenItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChildrenItems]; -GO - -/* -select * from Transitions -where (ToID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) OR (RangeID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) -AND NOT (FromID in(Select ContentID From dbo.vefn_ChildrenItems(185,184))) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_ChildrenItems](@ItemID int, @ParentID int) -RETURNS @Children TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children select ItemID, ContentID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_ChildrenItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_ChildrenItems Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindAffectedTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindAffectedTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindAffectedTransitions]; -GO - -/* -select top 1 * from items order by itemid desc -Select -FromID,.dbo.ve_GetPathFromContentID(FromID) ContentPath -,ToID,dbo.ve_GetPath(ToID) ToPath -,RangeID,dbo.ve_GetPath(RangeID) RangePath -,cc.Text -from vefn_FindAffectedTransitions(2102) ttz -join transitions tt on ttz.TransitionID = tt.TransitionID ---join items ii on ii.ItemID = tt.fromID -join contents cc on tt.FromID = cc.contentid -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindAffectedTransitions](@ItemID int) -RETURNS @Transitions TABLE -( - TransitionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -declare @Type int -select @Type = CC.Type from Contents CC Join Items II ON II.ContentID = CC.ContentID Where ItemID = @ItemID -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- All Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where @Type >= 20000 OR Z.[Level] > 0 -- This would limit the siblings to the siblings of the children and not the initial ItemID -) -, Itemz2([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID --- All Siblings -Union All - select [Level] ,Z.[Ordinal] -1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz2 Z - join Items I on Z.PreviousID = I.ItemID - where @Type >= 20000 OR Z.[Level] > 0 -- This would limit the siblings to the siblings of the children and not the initial ItemID -) -insert into @Transitions -select TransitionID from Transitions TT -where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) -UNION -select TransitionID from Transitions TT -JOIN Itemz2 on ToID=ItemID and RangeID=ItemID and IsRange = 2 -OPTION (MAXRECURSION 10000) -RETURN -END -END - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindAffectedTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindAffectedTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindExternalChildTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindExternalChildTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindExternalChildTransitions]; -GO - -/* -Select * from vefn_FindExternalChildTransitions(185) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindExternalChildTransitions](@ItemID int) -RETURNS @Children TABLE -( - FromItemID int, - ToID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children -select ItemID [FromItemID], case when TT.ToID in(select ItemID from Itemz) then TT.ToID else TT.RangeID end [ToID] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID in(select ItemID from Itemz where Level > 0) OR RangeID in(select ItemID from Itemz where Level > 0)) -AND FromID not in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindExternalChildTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindExternalChildTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindExternalTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindExternalTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindExternalTransitions]; -GO - -/* -Select * from vefn_FindExternalTransitions(185) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindExternalTransitions](@ItemID int) -RETURNS @Children TABLE -( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children -select ItemID [FromItemID], TT.[TransitionID], TT.[FromID], TT.[ToID], TT.[RangeID], TT.[Config] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) -AND FromID not in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindExternalTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindExternalTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindInternalTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindInternalTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindInternalTransitions]; -GO - -/* -Select * from vefn_FindInternalTransitions(185) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindInternalTransitions](@ItemID int) -RETURNS @Children TABLE -( - FromItemID int, - ToID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children -select ItemID [FromItemID], case when TT.ToID in(select ItemID from Itemz) then TT.ToID else TT.RangeID end [ToID] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) -AND FromID in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindInternalTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindInternalTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindInternalTransitionsForCopy] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindInternalTransitionsForCopy]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindInternalTransitionsForCopy]; -GO - -/* -Select * from vefn_FindInternalTransitionsForCopy(10277) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindInternalTransitionsForCopy](@ItemID int) -RETURNS @Transitions TABLE -( - TransitionID int, - FromID int, - TranType int, - ToID int, - RangeID int, - OldTransition int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Transitions -select TransitionID, FromID, TT.TranType, TT.ToID, TT.RangeID, CAST(TT.Config as int) --case when TT.ToID in(select ItemID from Itemz) then TT.ToID else TT.RangeID end [ToID] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz)) -AND FromID in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindInternalTransitionsForCopy Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindInternalTransitionsForCopy Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetInheritedFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetInheritedFormat]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetInheritedFormat]; -GO - -/* Samples -Select TranType, .dbo.vefn_GetInheritedFormat(355) TransFormat - from(Select 1 TranType UNION Select 2 TranType UNION Select 3 TranType UNION - Select 4 TranType UNION Select 5 TranType UNION Select 6 TranType UNION - Select 7 TranType UNION Select 8 TranType UNION Select 9 TranType UNION Select 10 TranType) TT - -Select top 25 ItemID, TranType, .dbo.vefn_GetInheritedFormat(ItemID) TransFormat - From Transitions TR - Join Items II on II.ContentID = TR.FromID - -*/ -/* - local is a 'boolean' (0=false, 1=true) to state whether to look at the item itself or - only its parent -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetInheritedFormat] (@ItemID int, @local int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @FormatID as int - -- First get the Active Format - begin - with Itemz([Level], [PreviousID], [ItemID], [ParentID], [FolderID], [FormatID]) as ( - Select 0 [Level], [PreviousID], [ItemID], null, null, - case when @local = 1 then (Select FormatID from Contents CC where [CC].[ContentID] = [II].[ContentID]) - else null end FormatID - FROM [Items] II - where [ItemID]=@ItemID - Union All - -- Parent Item - select [Level] + 1, I.[PreviousID], I.[ItemID], null, null, C.FormatID - from Itemz Z - join Parts P on P.ItemID = Z.ItemID - join Items I on I.ContentID = P.ContentID - join Contents C on C.ContentID = P.ContentID - where Z.FormatID is null - -- Siblings Item - Union All - select [Level] , I.[PreviousID] , I.[ItemID], null, null, Z.FormatID - from Itemz Z - join Items I on Z.PreviousID = I.ItemID - where Z.FormatID is null - Union All - -- DocVersion From Item - select [Level] + 1, null, null, DV.FolderID, null, DV.FormatID - from Itemz Z - join DocVersions DV on DV.ItemID = Z.ItemID - where Z.FormatID is null - Union All - -- Folders - select [Level] + 1, null, null, FF.ParentID, FF.FolderID, FF.FormatID - from Itemz Z - join Folders FF on FF.FolderID = Z.ParentID and FF.ParentID <> FF.FolderID - where Z.FormatID is null - ) - Select @FormatID = FormatID from Itemz ZZ Where FormatID is not null - OPTION (MAXRECURSION 10000) - RETURN @FormatID - END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetInheritedFormat Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_GetInheritedFormat Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_HighLevelStepTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_HighLevelStepTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_HighLevelStepTransitions]; -GO - -/* -select * from vefn_HighLevelStepTransitions(105,104) -where TransCount > 0 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_HighLevelStepTransitions](@ItemID int, @ParentID int) -RETURNS @HighLevelStepTransitions TABLE -( - ParentID int - ,ItemID int PRIMARY KEY - ,Path varchar(max) - ,TransCount int - ,ExternalTransitions int - ,InternalTransitions int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - --where Z.[Level] > 0 -) -Insert into @HighLevelStepTransitions -select [ParentID],ItemID,dbo.ve_GetPath([ItemID]) ,(Select Count(*) from Transitions where ToID=ItemID OR RangeID=ItemID ) TransCount -,(Select count(*) from vefn_FindExternalTransitions(ItemID)) ExternalTransitions -,(Select count(*) from vefn_FindInternalTransitions(ItemID)) InternalTransitions -from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_HighLevelStepTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_HighLevelStepTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_SiblingChildrenItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingChildrenItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SiblingChildrenItems]; -GO - -/* -select * from Transitions -where (ToID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) OR (RangeID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) -AND NOT (FromID in(Select ContentID From dbo.vefn_ChildrenItems(185,184))) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SiblingChildrenItems](@ItemID int) -RETURNS @SiblingChildren TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 as [pContentID],[DTS] As [pDTS], [UserID] As [pUserID], [LastChanged] As [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] as [pContentID],P.[DTS] As [pDTS],P.[UserID] As [pUserID],P.[LastChanged] As [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -insert into @SiblingChildren select ItemID, ContentID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingChildrenItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SiblingChildrenItems Error on Creation' -GO - -/****** Object: Table Function [vefn_SiblingItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_SiblingItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_SiblingItems]; -GO - -/* -select * from Transitions -where (ToID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) OR (RangeID in(select ItemID From dbo.vefn_ChildrenItems(185,184))) -AND NOT (FromID in(Select ContentID From dbo.vefn_ChildrenItems(185,184))) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SiblingItems](@ItemID int, @ParentID int) -RETURNS @Siblings TABLE -( - ItemID int PRIMARY KEY, - ContentID int, - Ordinal int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -insert into @Siblings select ItemID, ContentID, Ordinal from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_SiblingItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_SiblingItems Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_CleanUpItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_CleanUpItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_CleanUpItems]; -GO - -/* -select *, .dbo.ve_GetParts(ContentID,6) SubSteps from items -where contentid in(select contentid from contents where text like 'DISPATCH operator to open breaker%') - - -select * from items -where itemid in(298,299,436,440) - -select itemid from items -where previousid is null and itemid not in (select itemid from parts) - ---select * from contents where text like 'foldout cip%' - -select count(*) from parts -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE procedure [dbo].[vesp_CleanUpItems] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - BEGIN -with Itemz(ItemID) as( -select itemid from items -where previousid is null -and itemid not in(1) -and itemid not in (select itemid from parts) -UNION ALL -select ii.itemid from items ii join itemz zz on zz.itemid = ii.previousid -) -delete from items where itemid in (select itemid from itemz) -OPTION (MAXRECURSION 10000) - END - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_CleanUpItems Succeeded' -ELSE PRINT 'Procedure Creation: vesp_CleanUpItems Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListChildren]; -GO - --- vesp_ListChildren 17 --- drop procedure [getItemAndChildren] -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListChildren] (@ItemID int) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListChildren Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListContentPath] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListContentPath]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListContentPath]; -GO - --- vesp_ListContentPath 148 -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create PROCEDURE [dbo].[vesp_ListContentPath] - ( - @ContentID int - ) -WITH EXECUTE AS OWNER -AS -BEGIN -with ContentZ(BaseID,ContentID,ItemID,Number,Text,Item,Level,PreviousID) as ( - Select II.ItemID,CC.ContentID,II.ItemID,CC.Number,CC.Text,1,1,II.PreviousID - from Items II join Contents CC on CC.ContentID=II.ContentID where @ContentID=II.ContentID - Union All --- - Select BaseID,CC.ContentID,II.ItemID,CC.Number,CC.Text,ZZ.Item+1,ZZ.Level,II.PreviousID - FROM ContentZ ZZ - Join Items II on II.ItemID = ZZ.PreviousID - Join Contents CC on II.ContentID = CC.ContentID - where ZZ.PreviousID is not null - Union All - Select BaseID,CC.ContentID,II.ItemID,CC.Number,CC.Text,1,ZZ.Level+1,II.PreviousID - FROM ContentZ ZZ - Join Parts PP on ZZ.ItemID = PP.ItemID - Join Contents CC on PP.ContentID = CC.ContentID - Join Items II on II.ContentID = CC.ContentID - where ZZ.PreviousID is null --and ZZ.ItemID in(717,715,711,662) -) -Select ZZ.BaseID,ZZ.Level,MaxItem,ZZ.Number,ZZ.Text from ContentZ ZZ -join (select BaseID, Level, max(item) MaxItem from ContentZ group by BaseID,Level) T1 on T1.BaseID=ZZ.BaseID and T1.Level = ZZ.Level -where Item=1 -order by ZZ.BaseID,ZZ.Level Desc, Item Desc -OPTION (MAXRECURSION 10000) -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListContentPath Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListContentPath Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemAndChildren]; -GO - --- vesp_ListItemAndChildren 1,0 --- drop procedure [vesp_ListItemAndChildren] -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemAndChildren] (@ItemID int, @ParentID int) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemAndChildren Error on Creation' -GO - --- THIS IS STUFF THAT WE FIXED IN PROMStoCM.SQL AND PUT IN HERE ALSO -/****** Object: StoredProcedure [getItemAuditsByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemAuditsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemAuditsByItemID]; -GO - -/* -getitemauditsbyitemid 10183 - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemAuditsByItemID] -( - @ItemID int -) - -WITH EXECUTE AS OWNER -AS -/* - with Itemz([AuditType],[Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 'root' [AuditType], 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]= @ItemID - Union All - -- Children - select 'chld' [AuditType], [Level] + 2,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - -- Siblings - Union All - select 'sibl' [AuditType], [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 - ) -*/ - -select * from -( - --get deleted previous item - select 0 Level,ia.*,dbo.[ve_GetPartType](@ItemID) ItemType from - itemaudits ia - inner join itemaudits iaa on ia.itemid = iaa.previousid - where iaa.itemid = @ItemID - and ia.itemid not in (select itemid from items where itemid = ia.itemid) - and ia.deletestatus in (select max(deletestatus) from itemaudits where itemid = ia.itemid) - union - --get deleted next item -/* - select 1 Level,ia.*,@itemtype ItemType from itemaudits ia - where ia.previousid = @ItemID - and ia.itemid not in (select itemid from items where itemid = ia.itemid) - and ia.deletestatus in (select max(deletestatus) from itemaudits where itemid = ia.itemid) -*/ - select 1 Level, - ia.[AuditID], - ia.[ItemID], - ia.[PreviousID], - ia.[ContentID], - ia.[DTS], - ia.[UserID], - ti.[DeleteStatus] -,dbo.[ve_GetPartType](@ItemID) ItemType - from itemaudits ia - inner join tblitems ti on ia.itemid = ti.itemid - where ia.previousid = @ItemID - and ti.deletestatus > 0 -and ia.dts = ti.dts - union - --get chillins - select 2 Level,ia.*, -case -when pa.fromtype = 1 then 'Procedure' -when pa.fromtype = 2 then 'Section' -when pa.fromtype = 3 then 'Caution' -when pa.fromtype = 4 then 'Note' -when pa.fromtype = 5 then 'RNO' -when pa.fromtype = 6 then 'Step' -when pa.fromtype = 7 then 'Table' -else 'Unknown' -end itemtype - from itemaudits ia - inner join partaudits pa on ia.itemid = pa.itemid - inner join items ii on pa.contentid = ii.contentid - where ii.itemid = @ItemID - and ia.itemid not in (select itemid from items where itemid = ia.itemid) - and ia.deletestatus in (select max(deletestatus) from itemaudits where itemid = ia.itemid) -) ia -order by deletestatus desc -OPTION (MAXRECURSION 10000) ---select * from itemz order by parentid,ordinal - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemAuditsByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getItemAuditsByItemID Error on Creation' -GO - --- THIS IS STUFF THAT WE FIXED IN PROMStoAPPR.SQL AND PUT IN HERE ALSO -/****** Object: StoredProcedure [vefn_FindExternalFromTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindExternalFromTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindExternalFromTransitions]; -GO - -/* -Select * from vefn_FindExternalFromTransitions(185) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create FUNCTION [dbo].[vefn_FindExternalFromTransitions](@ItemID int) -RETURNS @Children TABLE -( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children -select ItemID [FromItemID], TT.[TransitionID], TT.[FromID], TT.[ToID], TT.[RangeID], TT.[Config] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID not in(select ItemID from Itemz) OR RangeID not in(select ItemID from Itemz)) -AND FromID in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindExternalFromTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindExternalFromTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getAnnotationAuditsChronologyByItemIDandUnitID] Script Date: 10/10/2012 14:45:33 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationAuditsChronologyByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotationAuditsChronologyByItemIDandUnitID]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/****** Object: StoredProcedure [getAnnotationAuditsChronologyByItemIDandUnitID] ******/ -/* -getAnnotationAuditsChronologyByItemIDandUnitID 13,13,1 -getAnnotationAuditsChronologyByItemIDandUnitID 30,8570,1 -getAnnotationAuditsChronologyByItemIDandUnitID 1,1,1 -getAnnotationAuditsChronologyByItemIDandUnitID 30,8505,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create procedure [dbo].[getAnnotationAuditsChronologyByItemIDandUnitID] -( - @ProcItemID int, - @ItemID int, - @UnitID int, - @DTS datetime -) -WITH EXECUTE AS OWNER -AS -begin --- declare @dts datetime --- set @dts = (select dts from items where itemid = @procitemid) - declare @tci table - ( - ItemID int, - IContentID int, - IDeleteStatus int, - ProcDTS datetime, - Path nvarchar(max), - OrdinalPath nvarchar(max) - ) - insert into @tci - select * from vefn_tblchilditems(@ProcItemID,@ItemID,0) - select - case - when lastauditid is null and dts > itemdts then 'Added' - when deletestatus > 0 then 'Deleted' - when lastauditid = deletedauditid then 'Restored' - else 'Changed' - end ActionWhat - ,case - when lastauditid is null and dts > itemdts then dts - when deletestatus > 0 then ActionDTS - when lastauditid = deletedauditid then ActionDTS - else dts - end ActionWhen - ,* - from - ( - select - cast(ident_current('annotationaudits') + 1 as bigint) auditid - -- (select max(auditid) + 1 from annotationaudits) auditid - -- 0 auditid - ,aa.annotationid - ,aa.itemid - ,aa.typeid - ,aa.rtftext - ,aa.searchtext - ,aa.config - ,aa.dts - ,aa.userid - ,0 deletestatus - ,aa.ActionDTS - ,ii.contentid icontentid - ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid) LastAuditID - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and deletestatus > 0 and aa.dts = dts) DeletedAuditID -,tci.ordinalpath - from tblannotations aa - inner join items ii on aa.itemid = ii.itemid -join @tci tci on tci.itemid = ii.itemid - where aa.deletestatus = 0 - union - select - aa.auditid - ,aa.annotationid - ,aa.itemid - ,aa.typeid - ,aa.rtftext - ,aa.searchtext - ,aa.config - ,aa.dts - ,aa.userid - ,aa.deletestatus - ,aa.ActionDTS - ,ii.contentid icontentid - ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid ) LastAuditID - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid and deletestatus > 0 and aa.dts = dts) DeletedAuditID -,tci.ordinalpath - from annotationaudits aa - inner join items ii on aa.itemid = ii.itemid -join @tci tci on tci.itemid = ii.itemid - ) ah - where itemid in (select itemid from vefn_tblchilditems (@procitemid,@itemid,0)) - and dts > @dts - and (dbo.ve_GetItemDerivedApplicability(ItemID) = '-1' or ',' + dbo.ve_GetItemDerivedApplicability(ItemID) + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%') - --(select dts from versions where versionid = (select max(versionid) from revisions rr inner join versions vv on rr.revisionid = vv.revisionid - --inner join stages ss on vv.stageid = ss.stageid where itemid = @procitemid and ss.isapproved = 1)) - order by ordinalpath,annotationid,auditid--actionwhen -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemIDandUnitID Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemIDandUnitID Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getContentAuditsChronologyByItemIDandUnitID] Script Date: 10/10/2012 12:48:39 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsChronologyByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAuditsChronologyByItemIDandUnitID]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/****** Object: StoredProcedure [getContentAuditsChronologyByItemIDandUnitID] ******/ -/* -getContentAuditsChronologyByItemIDandUnitID 10154,10154,0,1 -getContentAuditsChronologyByItemIDandUnitID 42,42,0,1 -getContentAuditsChronologyByItemIDandUnitID 1,1,0,1 -getContentAuditsChronologyByItemIDandUnitID 146,146,1,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsChronologyByItemIDandUnitID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @UnitID int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin - select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) --- select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah - where dbo.ve_GetItemDerivedApplicability(ItemID) = '-1' or ',' + dbo.ve_GetItemDerivedApplicability(ItemID) + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%' --- order by OrdinalPath, contentid,auditid--actionwhen - RETURN -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsChronologyByItemIDandUnitID Succeeded' -ELSE PRINT 'Procedure Creation: getContentAuditsChronologyByItemIDandUnitID Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getContentAuditsSummaryByItemIDandUnitID] Script Date: 10/10/2012 12:56:01 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsSummaryByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAuditsSummaryByItemIDandUnitID]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/****** Object: StoredProcedure [getContentAuditsSummaryByItemIDandUnitID] ******/ -/* -getContentAuditsSummaryByItemIDandUnitID 146,146,0,1 -getContentAuditsSummaryByItemIDandUnitID 42,42,0,1 -getContentAuditsSummaryByItemIDandUnitID 1,1,0,1 -getContentAuditsSummaryByItemIDandUnitID 146,146,1,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create PROCEDURE [dbo].[getContentAuditsSummaryByItemIDandUnitID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @UnitID int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin - -DECLARE @Chrono TABLE -( -[AuditID] bigint, -[ContentID] int, -[Number] nvarchar(max), -[Text] nvarchar(max), -[Type] int, -[FormatID] int, -[Config] nvarchar(max), -[DTS] datetime, -[UserID] nvarchar(max), -[DeleteStatus] int, -[ActionDTS] datetime, -[ActionWhat] nvarchar(max), -[ActionWhen] datetime, -[Path] nvarchar(max), -ItemID int, -TypeName nvarchar(max), -ordinalpath nvarchar(max) -) -insert into @Chrono -select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) -where dbo.ve_GetItemDerivedApplicability(ItemID) = '-1' or ',' + dbo.ve_GetItemDerivedApplicability(ItemID) + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%' -select * from @Chrono -where AuditID is null OR AuditID in (select min(auditID) from @Chrono group by contentid UNION select max(auditID) from @Chrono group by contentid) -order by OrdinalPath, contentid,auditid - ---select xyz.* from ---( ---select z.* from ---( ---select contentid,min(auditid) auditid from ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where dbo.ve_GetItemApplicability(ItemID) = '-1' or ',' + dbo.ve_GetItemApplicability(ItemID) + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%' ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) x ---group by contentid ---) y ---inner join ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,appl,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName ---,dbo.ve_GetItemApplicability(ItemID) appl --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where dbo.ve_GetItemApplicability(ItemID) = '-1' or ',' + dbo.ve_GetItemApplicability(ItemID) + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%' ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) z on y.contentid = z.contentid and y.auditid = z.auditid ---union ---select z.* from ---( ---select contentid,max(auditid) auditid from ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where dbo.ve_GetItemApplicability(ItemID) = '-1' or ',' + dbo.ve_GetItemApplicability(ItemID) + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%' ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) x ---group by contentid ---) y ---inner join ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,appl,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName ---,dbo.ve_GetItemApplicability(ItemID) appl --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where dbo.ve_GetItemApplicability(ItemID) = '-1' or ',' + dbo.ve_GetItemApplicability(ItemID) + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%' ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) z on y.contentid = z.contentid and y.auditid = z.auditid ---) xyz --- where appl = '-1' or ',' + appl + ',' like '%,' + cast(@UnitID as varchar(10)) + ',%' --- order by OrdinalPath, contentid,auditid--actionwhen - RETURN -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsSummaryByItemIDandUnitID Succeeded' -ELSE PRINT 'Procedure Creation: getContentAuditsSummaryByItemIDandUnitID Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getCurrentRevisionByItemIDandUnitID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[getCurrentRevisionByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [dbo].[getCurrentRevisionByItemIDandUnitID]; -GO - -/****** Object: StoredProcedure [dbo].[getCurrentRevisionByItemIDandUnitID] Script Date: 06/22/2012 16:58:12 ******/ -/* -getCurrentRevisionByItemID 41 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getCurrentRevisionByItemIDandUnitID] -( - @ItemID int, - @UnitID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [Revisions].[RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] -inner join -( -select top 1 revisionid,mxvid from -( -select rr.revisionid,max(vv.versionid) mxvid -from items ii -inner join revisions rr on ii.itemid = rr.itemid -inner join versions vv on rr.revisionid = vv.revisionid -inner join stages ss on vv.stageid = ss.stageid -cross apply rr.config.nodes('Config/Applicability') t1(r1) -where ss.isapproved = 1 -and ii.itemid = @ItemID -and r1.value('@Index','int') = @UnitID -group by rr.revisionid -union -select null,null -) ds -order by mxvid desc -) rr on [Revisions].revisionid = rr.revisionid --- WHERE [ItemID] = @ItemID --- ORDER BY [RevisionID] DESC - RETURN -GO -IF (@@Error = 0) PRINT 'StoredProcedure [getCurrentRevisionByItemIDandUnitID] Succeeded' -ELSE PRINT 'StoredProcedure [getCurrentRevisionByItemIDandUnitID] Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getDocumentByLibDoc] Script Date: 01/30/2012 14:08:10 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocumentByLibDoc]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocumentByLibDoc]; -GO - --- [dbo].[getDocumentByLibDoc] 'DOC_0000',4 --- [dbo].[getDocumentByLibDoc] 'DOC_0000',3 --- [dbo].[getDocumentByLibDoc] 'DOC_0000',2 --- [dbo].[getDocumentByLibDoc] 'DOC_0000',1 -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocumentByLibDoc] - -( - @LibDoc varchar(12), - @VersionID int -) -WITH EXECUTE AS OWNER -AS - DECLARE @DocID int - select @DocID = docid - from - ( - select - distinct ah.docid,.dbo.vefn_GetVersionIDByItemID(ii.itemid) versionid - from - ( - select dd.docid,ofn.value('@OriginalFileName','varchar(20)') origfilename,dts - from (select docid,cast(config as xml) xconfig,dts from documents) dd - cross apply xconfig.nodes('//History') t1(ofn) - ) ah - inner join entries ee on ah.docid = ee.docid - inner join items ii on ee.contentid = ii.itemid - where origfilename = @LibDoc + '.LIB' - ) ah - where versionid = @VersionID - --- from (select docid,cast(config as xml) xconfig from documents) ah --- cross apply xconfig.nodes('//Config/History') t1(roc) --- where roc.value('@OriginalFileName','varchar(12)') = @LibDoc + '.LIB' - - SELECT - [DocID], - [LibTitle], - [DocContent], - [DocAscii], - [Config], - [DTS], - [UserID], - [LastChanged], - [FileExtension], - (SELECT COUNT(*) FROM [DROUsages] WHERE [DROUsages].[DocID]=[Documents].[DocID]) [DROUsageCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[DocID]=[Documents].[DocID]) [EntryCount], - (SELECT COUNT(*) FROM [Pdfs] WHERE [Pdfs].[DocID]=[Documents].[DocID]) [PdfCount] - FROM [Documents] - WHERE [DocID]=@DocID - - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [RODbs].[ROName] [RODb_ROName], - [RODbs].[FolderPath] [RODb_FolderPath], - [RODbs].[DBConnectionString] [RODb_DBConnectionString], - [RODbs].[Config] [RODb_Config], - [RODbs].[DTS] [RODb_DTS], - [RODbs].[UserID] [RODb_UserID] - FROM [DROUsages] - JOIN [RODbs] ON - [RODbs].[RODbID]=[DROUsages].[RODbID] - WHERE - [DROUsages].[DocID]=@DocID - - - SELECT - [Entries].[ContentID], - [Entries].[DocID], - [Entries].[DTS], - [Entries].[UserID], - [Entries].[LastChanged], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [Entries] - JOIN [Contents] ON - [Contents].[ContentID]=[Entries].[ContentID] - WHERE - [Entries].[DocID]=@DocID - - - SELECT - [Pdfs].[DocID], - [Pdfs].[DebugStatus], - [Pdfs].[TopRow], - [Pdfs].[PageLength], - [Pdfs].[LeftMargin], - [Pdfs].[PageWidth], - [Pdfs].[PageCount], - [Pdfs].[DocPdf], - [Pdfs].[DTS], - [Pdfs].[UserID], - [Pdfs].[LastChanged] - FROM [Pdfs] - WHERE - [Pdfs].[DocID]=@DocID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocumentByLibDoc Succeeded' -ELSE PRINT 'Procedure Creation: getDocumentByLibDoc Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[getRevisionByItemIDandRevisionNumberAndUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID]; -GO - -/****** Object: StoredProcedure [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID] Script Date: 06/25/2012 23:05:17 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumberAndUnitID] - -( - @ItemID int, - @RevisionNumber nvarchar(50), - @UnitID int -) -WITH EXECUTE AS OWNER -AS -declare @RevisionID int -set @RevisionID = (select revisionid from revisions rr cross apply rr.config.nodes('//Applicability') t1(r1) where itemid = @itemid and revisionnumber = @RevisionNumber and r1.value('@Index','int') = @UnitID) - SELECT - [RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] - WHERE [RevisionID]=@RevisionID - - SELECT - [Checks].[CheckID], - [Checks].[RevisionID], - [Checks].[StageID], - [Checks].[ConsistencyChecks], - [Checks].[DTS], - [Checks].[UserID], - [Checks].[LastChanged], - [Stages].[Name] [Stage_Name], - [Stages].[Description] [Stage_Description], - [Stages].[IsApproved] [Stage_IsApproved], - [Stages].[DTS] [Stage_DTS], - [Stages].[UserID] [Stage_UserID] - FROM [Checks] - JOIN [Stages] ON - [Stages].[StageID]=[Checks].[StageID] - WHERE - [Checks].[RevisionID]=@RevisionID - - - SELECT - [Versions].[VersionID], - [Versions].[RevisionID], - [Versions].[StageID], - [Versions].[DTS], - [Versions].[UserID], - [Versions].[LastChanged], - [Versions].[PDF], - [Versions].[SummaryPDF], - [Stages].[Name] [Stage_Name], - [Stages].[Description] [Stage_Description], - [Stages].[IsApproved] [Stage_IsApproved], - [Stages].[DTS] [Stage_DTS], - [Stages].[UserID] [Stage_UserID] - FROM [Versions] - JOIN [Stages] ON - [Stages].[StageID]=[Versions].[StageID] - WHERE - [Versions].[RevisionID]=@RevisionID - - RETURN -GO -IF (@@Error = 0) PRINT 'StoredProcedure [getRevisionByItemIDandRevisionNumberAndUnitID] Succeeded' -ELSE PRINT 'StoredProcedure [getRevisionByItemIDandRevisionNumberAndUnitID] Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[getRevisionsByItemIDandUnitID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[getRevisionsByItemIDandUnitID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [dbo].[getRevisionsByItemIDandUnitID]; -GO - -/****** Object: StoredProcedure [dbo].[getRevisionsByItemIDandUnitID] Script Date: 06/26/2012 16:22:32 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRevisionsByItemIDandUnitID] -( - @ItemID int, - @UnitID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] -cross apply config.nodes('//Applicability') t1(r1) - WHERE [ItemID] = @ItemID -and r1.value('@Index','int') = @UnitID -and (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) > 0 - ORDER BY [RevisionID] DESC - RETURN -GO -IF (@@Error = 0) PRINT 'StoredProcedure [getRevisionsByItemIDandUnitID] Succeeded' -ELSE PRINT 'StoredProcedure [getRevisionsByItemIDandUnitID] Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_GetItemApplicability] Script Date: 03/28/2012 17:58:48 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetItemApplicability]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetItemApplicability]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetItemApplicability] (@ItemID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @apple varchar(max) - select @apple = r2.value('@Applicability','varchar(max)') - from - ( - select itemid,cast(config as xml) xconfig from items ii join contents cc on ii.contentid = cc.contentid - ) t1 - outer apply xconfig.nodes('//MasterSlave') t2(r2) - where itemid = @ItemID - return @apple -END -GO -IF (@@Error = 0) PRINT 'ScalerFunction [vefn_GetItemApplicability] Succeeded' -ELSE PRINT 'ScalerFunction [vefn_GetItemApplicability] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ParentItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ParentItems]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_ParentItems] Script Date: 10/12/2012 16:12:01 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/* -select * from [dbo].[vefn_ParentItems](212) -select * from [dbo].[vefn_ParentItems](48) -select * from [dbo].[vefn_ParentItems](49) -select * from [dbo].[vefn_ParentItems](50) -select * from [dbo].[vefn_ParentItems](51) -select * from [dbo].[vefn_ParentItems](52) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_ParentItems](@ItemID int) -RETURNS @Parents TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Relationship], [ItemID], [ContentID], [PreviousID]) as ( - Select 1 [Relationship], [ItemID], [ContentID], [PreviousID] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Parents - select 2 [Relationship], I.[ItemID], I.[ContentID], I.[PreviousID] - from Itemz Z - join Parts P on P.ItemID = Z.ItemID - join Items I on I.ContentID = P.ContentID --- Siblings -Union All - select 0 [Relationship] , I.[ItemID], I.[ContentID], I.[PreviousID] - from Itemz Z - join Items I on Z.PreviousID = I.ItemID -) -insert into @Parents select ItemID, ContentID from Itemz where Relationship > 0 -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_ParentItems Succeeded' -ELSE PRINT 'Function: vefn_ParentItems Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetItemDerivedApplicability]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetItemDerivedApplicability]; -GO - -/****** Object: UserDefinedFunction [dbo].[ve_GetItemDerivedApplicability] Script Date: 10/13/2012 00:57:34 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select [dbo].[ve_GetItemDerivedApplicability](48) -select [dbo].[ve_GetItemDerivedApplicability](49) -select [dbo].[ve_GetItemDerivedApplicability](50) -select [dbo].[ve_GetItemDerivedApplicability](51) -select [dbo].[ve_GetItemDerivedApplicability](52) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetItemDerivedApplicability] (@ItemID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @apple varchar(max) - select @apple = dbo.ve_getitemapplicability(@ItemID) - if @apple is null - begin - declare @ParentID int - select @ParentID = dbo.ve_getparentitem(@ItemID) - if @parentid is not null - set @apple = dbo.ve_GetItemDerivedApplicability(@ParentID) - else - begin - set @apple = '' - select @apple = coalesce(@apple + ',','') + r2.value('@index','varchar(max)') from - (select cast(config as xml) xconfig from docversions - where versionid = dbo.vefn_GetVersionIDByItemID(@ItemID)) ah - cross apply xconfig.nodes('//Slave') t2(r2) - set @apple = substring(@apple,2,len(@apple)) - end - end - return @apple -END -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: ve_GetItemDerivedApplicability Succeeded' -ELSE PRINT 'Function: ve_GetItemDerivedApplicability Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_GetParentItem] Script Date: 03/28/2012 17:58:48 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetParentItem]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetParentItem]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetParentItem] (@ItemID int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @ParentID int; -WITH Itemz([ItemID],[IsFound]) as -( -select ii.itemid,0 from items ii where ii.itemid = @ItemID -union all -select ii.previousid,0 from items ii -join itemz zz on ii.itemid = zz.itemid -where ii.previousid is not null -and zz.isfound = 0 -union all -select ii.itemid,1 -from parts pp -join itemz zz on pp.itemid = zz.itemid -join items ii on ii.contentid = pp.contentid -) -select top 1 @ParentID = itemid from itemz -where isfound = 1 OPTION (MAXRECURSION 10000) -RETURN @ParentID -END -GO - -IF (@@Error = 0) PRINT 'ScalerFunction [vefn_GetParentItem] Succeeded' -ELSE PRINT 'ScalerFunction [vefn_GetParentItem] Error on Creation' -go - -/****** Object: UserDefinedFunction [dbo].[vefn_CanTransitionBeCreated] Script Date: 10/14/2012 02:03:30 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CanTransitionBeCreated]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_CanTransitionBeCreated]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select dbo.vefn_CanTransitionBeCreated(49,51) -select dbo.vefn_CanTransitionBeCreated(51,49) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_CanTransitionBeCreated](@fromID int, @toID int) RETURNS int -AS BEGIN - declare @rv int - declare @tCount int - declare @uCount int - set @rv = 0 - select @tCount = count(*) from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') - select @uCount = count(*) from - ( - select * from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@fromID),',') - union - select * from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') - ) ah - if (@tCount = 0) or (@tCount >= @uCount) begin - set @rv = 1 - end - return @rv -END -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_CanTransitionBeCreated Succeeded' -ELSE PRINT 'Function: vefn_CanTransitionBeCreated Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_GetVersionIDByItemID] Script Date: 02/03/2012 16:48:32 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionIDByItemID]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetVersionIDByItemID]; -GO - -/* -select dbo.vefn_GetVersionIDByItemID(41) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create function [dbo].[vefn_GetVersionIDByItemID] -(@ItemID int) -returns int -as begin - declare @VersionID int; - with itemz - ( - itemid,previousid,versionid - ) as - ( - select itemid,previousid,null - from items ii - join contents cc on ii.contentid = cc.contentid - where itemid = @ItemID - --siblins - union all - select ii.itemid,ii.previousid,null - from items ii - join contents cc on ii.contentid = cc.contentid - join itemz zz on zz.previousid = ii.itemid - where zz.versionid is null - --chillins - union all - select ii.itemid,ii.previousid,null - from parts pp - join items ii on ii.contentid = pp.contentid - join contents cc on ii.contentid = cc.contentid - join itemz zz on zz.itemid = pp.itemid - where zz.versionid is null - --docversions - union all - select 0,0,dv.versionid - from docversions dv - join itemz zz on dv.itemid = zz.itemid - where zz.versionid is null - ) - select @VersionID = versionid from itemz zz - where versionid is not null - OPTION (MAXRECURSION 10000) - return @VersionID -end -GO --- Display the status of Func creation -IF (@@Error = 0) PRINT 'Function Creation: vefn_GetVersionIDByItemID Succeeded' -ELSE PRINT 'Function Creation: vefn_GetVersionIDByItemID Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_WillTransitionBeValidFrom] Script Date: 10/16/2012 18:17:37 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_WillTransitionBeValidFrom]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_WillTransitionBeValidFrom]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select dbo.vefn_WillTransitionBeValidFrom(194,'2') -select dbo.vefn_WillTransitionBeValidFrom(216,'2') -select dbo.vefn_WillTransitionBeValidFrom(246,'2') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_WillTransitionBeValidFrom](@toID int, @newAppl varchar(max)) RETURNS int -AS BEGIN - declare @rv int - declare @tCount int - declare @uCount int - set @rv = 0 - select @tCount = count(*) from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') - select @uCount = count(*) from - ( - select * from vefn_SplitInt(@newAppl,',') - union - select * from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') - ) ah - if @tCount >= @uCount begin - set @rv = 1 - end - return @rv -END -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_WillTransitionBeValidFrom Succeeded' -ELSE PRINT 'Function: vefn_WillTransitionBeValidFrom Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_WillTransitionBeValidTo] Script Date: 10/16/2012 18:20:23 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_WillTransitionBeValidTo]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_WillTransitionBeValidTo]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select dbo.vefn_WillTransitionBeValidTo(10617,'2') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_WillTransitionBeValidTo](@toID int, @newAppl varchar(max)) RETURNS int -AS BEGIN - declare @rv int - declare @tCount int - declare @uCount int - set @rv = 0 - select @tCount = count(*) from vefn_SplitInt(@newAppl,',') - select @uCount = count(*) from - ( - select * from vefn_SplitInt(@newAppl,',') - union - select * from vefn_SplitInt([dbo].[ve_GetItemDerivedApplicability](@toID),',') - ) ah - if @tCount >= @uCount begin - set @rv = 1 - end - return @rv -END -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_WillTransitionBeValidTo Succeeded' -ELSE PRINT 'Function: vefn_WillTransitionBeValidTo Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[vesp_CanTransitionBeCreated] Script Date: 10/15/2012 14:37:32 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_CanTransitionBeCreated]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_CanTransitionBeCreated]; -GO -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -exec vesp_CanTransitionBeCreated 46,180 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_CanTransitionBeCreated] -( - @fromItemID int, - @toItemID int -) -AS BEGIN - select dbo.vefn_CanTransitionBeCreated(@fromItemID,@toItemID) Status, - dbo.ve_GetItemDerivedApplicability(@fromItemID) fromAppl, - dbo.ve_GetItemDerivedApplicability(@toItemID) toAppl, - dbo.ve_GetShortPath(@fromItemID) fromStep, - dbo.ve_GetShortPath(@toItemID) toStep -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_CanTransitionBeCreated Succeeded' -ELSE PRINT 'Procedure Creation: vesp_CanTransitionBeCreated Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[vesp_ListItemAndChildrenByUnit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[vesp_ListItemAndChildrenByUnit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [dbo].[vesp_ListItemAndChildrenByUnit]; -GO - -/****** Object: StoredProcedure [dbo].[vesp_ListItemAndChildrenByUnit] Script Date: 05/02/2012 23:16:53 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - --- vesp_ListItemAndChildrenByUnit 29546,0,'8' --- drop procedure [vesp_ListItemAndChildren] -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemAndChildrenByUnit] (@ItemID int, @ParentID int, @UnitID varchar(max)) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([apple],[Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 1 [apple],0 [Level], @ParentID [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select case when s1.value('@Applicability','varchar(max)') is null or ',' + s1.value('@Applicability','varchar(max)') + ',' like '%,' + @UnitID + ',%' then 1 else 0 end apple -,[Level] + 1,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join (select ContentID,cast(Config as xml) xConfig from Contents) C on C.ContentID = I.ContentID - outer apply C.xConfig.nodes('//MasterSlave') m1(s1) -where Z.[Apple] = 1 --- Siblings -Union All - select case when s1.value('@Applicability','varchar(max)') is null or ',' + s1.value('@Applicability','varchar(max)') + ',' like '%,' + @UnitID + ',%' then 1 else 0 end apple -,[Level] ,Z.[ParentID], -case when Z.[Apple] = 1 then Z.[Ordinal] +1 else Z.[Ordinal] end, I.[ItemID], -case when Z.[Apple] = 1 then I.[PreviousID] else Z.[PreviousID] end, [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join (select ContentID,cast(Config as xml) xConfig from Contents) C on C.ContentID = I.ContentID - outer apply C.xConfig.nodes('//MasterSlave') m1(s1) - where Z.[Level] > 0 -) -select I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - [pContentID],[pDTS],[pUserID],[pLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - CASE WHEN I.ItemID IN (SELECT ParentID FROM ItemZ WHERE apple = 1) THEN (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) ELSE 0 END [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - from ItemZ I - join Contents C on C.ContentID = I.ContentID -where i.apple = 1 - order by I.[Level] , I.[FromType], I.[Ordinal] - OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Procedure Creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemAndChildrenByUnit Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemAndChildrenByUnit Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[vesp_WillTransitionsBeValid] Script Date: 10/15/2012 14:37:32 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_WillTransitionsBeValid]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_WillTransitionsBeValid]; -GO -/* -dbo.vesp_WillTransitionsBeValid 10616,'2' -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE vesp_WillTransitionsBeValid -( - @ItemID int, - @NewAppl varchar(max) -) -AS BEGIN - select *, dbo.ve_GetShortPath(@ItemID) SrcStep, dbo.ve_GetShortPath(myitemid) TgtStep - from - ( - select tt.toid MyItemID, dbo.vefn_WillTransitionBeValidFrom(tt.toid,@NewAppl) Valid, @NewAppl SrcAppl, dbo.ve_GetItemDerivedApplicability(tt.toid) TgtAppl - from transitions tt - inner join items ii on tt.fromid = ii.contentid - where fromid in (select contentid from dbo.vefn_childitems(@ItemID)) - union - select ii.itemid MyItemID, dbo.vefn_WillTransitionBeValidTo(ii.itemid,@NewAppl) Valid, dbo.ve_GetItemDerivedApplicability(ii.itemid) SrcAppl, @NewAppl TgtAppl - from transitions tt - inner join items ii on tt.fromid = ii.contentid - where toid in (select itemid from dbo.vefn_childitems(@ItemID)) - ) ah - where Valid = 0 -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_WillTransitionsBeValid Succeeded' -ELSE PRINT 'Procedure Creation: vesp_WillTransitionsBeValid Error on Creation' -GO - -/****** Object: StoredProcedure [dbo].[vefn_NextCount] Script Date: 02/05/2013 11:58:00 ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_NextCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP Function [vefn_NextCount]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create FUNCTION [dbo].[vefn_NextCount](@ItemID int) -RETURNS Int -WITH EXECUTE AS OWNER -AS -BEGIN -declare @Count int; -with Itemz([NextCnt], [ItemID], [PreviousID]) as ( - Select 0 [NextCnt], [ItemID], [PreviousID] - FROM [Items] - where [ItemID]=@ItemID --- Siblings -Union All - select Z.[NextCnt] +1, I.[ItemID], I.[PreviousID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -Select @Count = Count(*) from Itemz -OPTION (MAXRECURSION 10000) -RETURN @Count -END -GO -IF (@@Error = 0) PRINT 'Function Creation: vefn_NextCount Succeeded' -ELSE PRINT 'Function Creation: vefn_NextCount Error on Creation' -GO -/****** Object: StoredProcedure [vesp_ListItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItems]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItems]; -GO - ---vesp_ListItems 1 - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItems] -( -@ItemID int = 0 -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz(knt, ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged]) as ( - Select 0 knt, ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged] - from Items - where ItemID=@ItemID - Union All --- - Select Z.knt + 1,C.ItemID,C.PreviousID,C.ContentID,C.[DTS],C.[UserID],C.[LastChanged] - from Items C - Join Itemz Z on C.PreviousID=Z.ItemID -) -Select ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[Itemz].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[Itemz].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[Itemz].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[Itemz].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[Itemz].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[Itemz].[ItemID]) [Transition_ToIDCount] -from Itemz order by knt -OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItems Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItems Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListItemsAndContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListItemsAndContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListItemsAndContent]; -GO - ---vesp_ListItemsAndContent 1 - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ListItemsAndContent] -( -@ItemID int = 0 -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz(knt, ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged]) as ( - Select 0 knt, ItemID,PreviousID,ContentID,[DTS],[UserID],[LastChanged] - from Items - where ItemID=@ItemID - Union All --- - Select z.knt + 1, I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged] - from Items I - Join Itemz Z on I.PreviousID=Z.ItemID -) -Select I.ItemID,I.PreviousID,I.ContentID,I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Children] WHERE [Children].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] -from Itemz I Join Contents C on I.ContentID = C.ContentID Order by knt -OPTION (MAXRECURSION 10000) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListItemsAndContent Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListItemsAndContent Error on Creation' -GO -/****** Object: StoredProcedure [vesp_SortProcedures] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SortProcedures]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SortProcedures]; -GO - -/* -select versionid, ff.folderid, ff.name,itemid -from docversions dv -join folders ff on dv.folderid=ff.folderid - -Westinghouse Data -exec vesp_SortProcedures 1 -- Abnormal Procedures ---exec vesp_SortProcedures 4 -- Emergency Operating Procedures - Rev 2 -exec vesp_SortProcedures 5 -- System Operating Procedures -exec vesp_SortProcedures 6 -- Maintenance, Test, Inspection, Surveillance Procedures ---exec vesp_SortProcedures 7 -- Severe Accident Management Guidelines ---exec vesp_SortProcedures 8 -- Emergency Response Guidelines -exec vesp_SortProcedures 9 -- General Operating Procedures -exec vesp_SortProcedures 11 -- Post 72-Hour Procedures 103811 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SortProcedures]( @VersionID int ) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @TopID int - select @TopID = ItemID from DocVersions where versionID = @VersionID - DECLARE @Procs TABLE - ( - ItemID int PRIMARY KEY, - ProcNum nvarchar(255) - ) - DECLARE @Organize TABLE - ( - ItemID int PRIMARY KEY, - NewPreviousID int - ) - DECLARE @NewTopID as int - INSERT INTO @Procs select ZZ.ItemID, isnull(Replace(CC.Number,'\u8209?','-'),'') + ':' + substring('0000000000000000' + cast(ItemID as varchar(16)), 1+ len( cast(ItemID as varchar(16))), 16) ProcNum from vefn_SiblingItems(@TopID,0) ZZ Join Contents CC on CC.ContentID = ZZ.ContentID - --select * from @Procs order by ProcNum + cast(ItemID as nvarchar(max)) - select top 1 @NewTopID = ItemID from @Procs order by ProcNum - INSERT INTO @Organize - select ItemID, (select top 1 ItemID from @Procs P2 where P1.ProcNum > P2.ProcNum order by P2.ProcNum DESC ) NewPreviousID - from @Procs P1 order by isnull(ProcNum,'') + cast(ItemID as nvarchar(max)) - --select * from @Organize - Update DocVersions Set ItemID = @NewTopID where versionID = @VersionID - Update II Set II.PreviousID = ZZ.NewPreviousID - from Items II join @Organize ZZ On II.ItemID = ZZ.ItemID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SortProcedures Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SortProcedures Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_RemoveExtraText] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_RemoveExtraText]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_RemoveExtraText]; -GO - -/* -select text, .dbo.vefn_RemoveExtraText(text,2,0,0) StrippedText from Contents where ContentID=373 -select text, .dbo.vefn_RemoveExtraText(text,1,0,0) StrippedText from Contents where ContentID=373 -select text, .dbo.vefn_RemoveExtraText(text,0,0,0) StrippedText ,.dbo.vefn_FirstLink(text,0), PATINDEX('%[' + nchar(9516) + nchar(9574) + char(21) + ']%' , text) from Contents where ContentID=373 -select .dbo.vefn_RemoveExtraText('\b Bold\b0',0,0,0) -select .dbo.vefn_RemoveExtraText('\b Bold\b0',0,1,0) -select .dbo.vefn_RemoveExtraText('A\u1?B\u12?C\u123?D\u1234?E',0,0,0) -select .dbo.vefn_RemoveExtraText('A\u1?B\u12?C\u123?D\u1234?E',0,0,1) -*/ - - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_RemoveExtraText](@text nvarchar(MAX),@includeLink int, @includeRtfFormatting int , @includeSpecialCharacters int) -RETURNS varchar(MAX) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @index int -DECLARE @index2 int --- Replace Hard Hyphen with Hyphen -SET @text = replace(@text,'\u8209?','-') --- Replace Hard Space with Space -SET @text = replace(@text,'\u160?',' ') -set @text = replace(@text,nchar(160),' ') --- Strip Links -IF @includeLink = 0 -- Remove Links - SET @text = [dbo].[vefn_RemoveRange](@text,'') -IF @includeLink < 2 -- Remove Comments - SET @text = [dbo].[vefn_RemoveRange](@text,'\v' ,'\v0') -if(@includeRtfFormatting=0) - -- Remove Rtf Formatting - BEGIN - SET @text = Replace(@text, '\b0 ', ''); - SET @text = Replace(@text, '\b ', ''); - SET @text = Replace(@text, '\ulnone ', ''); - SET @text = Replace(@text, '\ul0 ', ''); - SET @text = Replace(@text, '\ul ', ''); - SET @text = Replace(@text, '\i0 ', ''); - SET @text = Replace(@text, '\i ', ''); - SET @text = Replace(@text, '\super ', ''); - SET @text = Replace(@text, '\sub ', ''); - SET @text = Replace(@text, '\nosupersub ', ''); - SET @text = Replace(@text, '\b0', ''); - SET @text = Replace(@text, '\b', ''); - SET @text = Replace(@text, '\ul0', ''); - SET @text = Replace(@text, '\ul', ''); - SET @text = Replace(@text, '\i0', ''); - SET @text = Replace(@text, '\i', ''); - SET @text = Replace(@text, '\super', ''); - SET @text = Replace(@text, '\sub', ''); - SET @text = Replace(@text, '\nosupersub', ''); - END -if(@includeSpecialCharacters=0) - -- Remove Special Characters - BEGIN - SET @index = PATINDEX('%\u[0-9]?%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+4,len(@text)) - SET @index = PATINDEX('%\u[0-9]?%',@text) - END - SET @index = PATINDEX('%\u[0-9][0-9]?%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+5,len(@text)) - SET @index = PATINDEX('%\u[0-9][0-9]?%',@text) - END - SET @index = PATINDEX('%\u[0-9][0-9][0-9]?%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+6,len(@text)) - SET @index = PATINDEX('%\u[0-9][0-9][0-9]?%',@text) - END - SET @index = PATINDEX('%\u[0-9][0-9][0-9][0-9]?%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+7,len(@text)) - SET @index = PATINDEX('%\u[0-9][0-9][0-9][0-9]?%',@text) - END - SET @index = PATINDEX('%\''[0-9A-Fa-f][0-9A-Fa-f]%',@text) - while(@index != 0) - BEGIN - SET @text = substring(@text,1,@index-1) + substring(@text,@index+4,len(@text)) - SET @index = PATINDEX('%\''[0-9A-Fa-f][0-9A-Fa-f]%',@text) - END - - END - -- Replace Hyphen with Hard Hyphen -SET @text = replace(@text,'-','\u8209?') - -RETURN @text -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_RemoveExtraText Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_RemoveExtraText Error on Creation' -GO - - -/****** Object: Table Function [vefn_FindSpecialChars] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindSpecialChars]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindSpecialChars]; -GO - -/* - -select * from vefn_FindSpecialChars('\u160?\ulnone \u8209?') - -select MIN(ContentID) MinContentID,Count(*) HowMany,UChar SpecialChar from Contents -cross apply vefn_FindSpecialChars(text) SC -where text like '%\u[0-9]%' -group by UChar - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindSpecialChars](@text varchar(MAX)) -RETURNS @SpecialChars TABLE -( - uchar varchar(10) -) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @index1 int - DECLARE @index2 int - SET @index1 = -1 - SET @index1 = PATINDEX('%\u[0-9]%' , @text) - WHILE (@index1 > 0) - BEGIN - SET @index2 = CHARINDEX('?' , @text, @index1 + 3) - if @index2 > 0 - BEGIN - INSERT INTO @SpecialChars VALUES (substring(@text,@index1,1 + @index2-@index1)) - SET @Text = substring(@text,@index2 + 1,len(@text)) - END - SET @index1 = PATINDEX('%\u[0-9]%' , @text) - END - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindSpecialChars Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindSpecialChars Error on Creation' -GO - -/****** Object: Table Function [vefn_FindSpecialChars2] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindSpecialChars2]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindSpecialChars2]; -GO - -/* - -select * from vefn_FindSpecialChars2(nchar(255) + nchar(8209) + nchar(160)) - -select MIN(ContentID) MinContentID,Count(*) HowMany,UChar SpecialChar from Contents -cross apply vefn_FindSpecialChars2(text) SC -group by UChar - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindSpecialChars2](@text nvarchar(MAX)) -RETURNS @SpecialChars TABLE -( - uchar int -) -WITH EXECUTE AS OWNER -AS -BEGIN - WHILE (len(@text) > 0) - BEGIN - if(unicode(@text) > 127) - INSERT INTO @SpecialChars VALUES (unicode(@text)) - SET @Text = substring(@text,2,len(@text)) - END - RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindSpecialChars2 Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindSpecialChars2 Error on Creation' -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[MoveItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [MoveItem]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[MoveItem](@ItemID int, @Index int) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DECLARE @ItemsChanged TABLE - ( - ItemID int Primary Key - ) - DECLARE @Siblings TABLE - ( - ItemID int PRIMARY KEY, - Ordinal int - ) - DECLARE @OldPreviousID int - SELECT @OldPreviousID = PreviousID FROM [Items] where ItemID = @ItemID - DECLARE @OldNextID int - SELECT @OldNextID = ItemID FROM [Items] where PreviousID = @ItemID - insert into @Siblings select * from vefn_AllSiblingItems(@ItemID) - DECLARE @NewNextID int - SELECT @NewNextID = ItemID from @Siblings where Ordinal = @index - DECLARE @NewPreviousID int - SELECT @NewPreviousID = ItemID from @Siblings where Ordinal = @index -1 - --PRINT '****************************************************************' - --PRINT '@ItemID = ' + isnull(Cast( @ItemID as varchar(20)),'{null}') - --PRINT '@OldPreviousID = ' + isnull(Cast( @OldPreviousID as varchar(20)),'{null}') - --PRINT '@OldNextID = ' + isnull(Cast( @OldNextID as varchar(20)),'{null}') - --PRINT '@NewPreviousID = ' + isnull(Cast( @NewPreviousID as varchar(20)),'{null}') - --PRINT '@NewNextID = ' + isnull(Cast( @NewNextID as varchar(20)),'{null}') - Update Items set PreviousID = @NewPreviousID where ItemID = @ItemID - Insert INTO @ItemsChanged Select @ItemID - IF @OldNextID is not Null - BEGIN - Update Items set PreviousID = @OldPreviousID where ItemID = @OldNextID - Insert INTO @ItemsChanged Select @OldNextID - END - IF @NewNextID is not Null - BEGIN - Update Items set PreviousID = @ItemID where ItemID = @NewNextID - Insert INTO @ItemsChanged Select @NewNextID - END - IF @OldPreviousID is null - BEGIN - Update Parts set ItemID = @OldNextID where ItemID = @ItemID - Update DocVersions set ItemID = @OldNextID where ItemID = @ItemID - END - IF @NewPreviousID is null - BEGIN - Update Parts set ItemID = @ItemID where ItemID = @NewNextID - Update DocVersions set ItemID = @ItemID where ItemID = @NewNextID - END - SELECT - ii.[ItemID], - [PreviousID], - ii.[ContentID], - ii.[DTS], - ii.[UserID], - ii.[LastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ii.[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ii.[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ii.[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ii.[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ii.[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ii.[ItemID]) [Transition_ToIDCount] - FROM [Items] ii - WHERE ItemID in (Select ItemID from @ItemsChanged) - IF( @@TRANCOUNT > 0 ) - BEGIN - PRINT 'COMMIT' - COMMIT - END -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) - BEGIN - PRINT 'ROLLBACK' - ROLLBACK -- Only rollback if top level - END - ELSE IF( @@TRANCOUNT > 1 ) - BEGIN - PRINT 'COMMIT' - COMMIT -- Otherwise commit. Top level will rollback - END - EXEC vlnErrorHandler -END CATCH -GO -IF (@@Error = 0) PRINT 'Procedure Creation: MoveItem Succeeded' -ELSE PRINT 'Procedure Creation: MoveItem Error on Creation' -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_AllSiblingItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_AllSiblingItems]; -GO -/* -DECLARE @ItemID int -select @ItemID = ItemID from DocVersions where VersionID = 1 -Select * from vefn_AllSiblingItems(@ItemID) order by Ordinal -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_AllSiblingItems](@ItemID int) -RETURNS @Siblings TABLE -( - ItemID int, - Ordinal int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([ItemID], [PreviousID], [Ordinal]) as ( - Select [ItemID], [PreviousID], case when [PreviousID] is null then 0 else -1 end - FROM [Items] - where [ItemID]=@ItemID --- Previous Siblings -Union All - select I.[ItemID], I.[PreviousID] ,case when I.[PreviousID] is null then 0 else Z.[Ordinal] -1 end - from Itemz Z - join Items I on I.ItemID = Z.PreviousID - where Z.Ordinal < 0 --- Next Siblings -Union All - select I.[ItemID], I.[PreviousID] ,Z.[Ordinal] +1 - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.Ordinal >= 0 -) -insert into @Siblings select ItemID, Ordinal from Itemz Where Ordinal >= 0 -OPTION (MAXRECURSION 10000) -RETURN -END - -GO -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_AllSiblingItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_AllSiblingItems Error on Creation' -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_JustSiblingItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_JustSiblingItems]; -GO -/* -DECLARE @ItemID int -select @ItemID = ItemID from DocVersions where VersionID = 1 -Select * from vefn_JustSiblingItems(@ItemID) order by Ordinal - -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_JustSiblingItems](@FirstItemID int) -RETURNS @Siblings TABLE -( - ItemID int PRIMARY KEY, - Ordinal int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([ItemID],[Ordinal]) as ( - Select [ItemID],0 - FROM [Items] - where [ItemID]=@FirstItemID --- Siblings -Union All - select I.[ItemID],Z.[Ordinal] +1 - from Itemz Z - join Items I on I.PreviousID = Z.ItemID -) -insert into @Siblings select ItemID, Ordinal from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_JustSiblingItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_JustSiblingItems Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindContentText] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindContentText]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindContentText]; -GO - -/* -SELECT * From vefn_FindContentText('1','%RCP%') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindContentText]( -@DocVersionList nvarchar(MAX) -,@SearchString varchar(MAX)) -RETURNS @FoundContents TABLE -( - ContentID int PRIMARY KEY - ,Type int - ,Text varchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -IF(ISNULL(@DocVersionList,'')='') - BEGIN - INSERT INTO @FoundContents -- Do a case insensitive search - select ContentID,Type,Text from contents - where Replace(Replace([Text],'-','\u8209?'),'\u160?',' ') like @SearchString Collate SQL_Latin1_General_CP1_CI_AS - END -ELSE - BEGIN - INSERT INTO @FoundContents -- Do a case insensitive search - select ContentID,Type,Text from contents - where [ContentID] in (select [ContentID] from vefn_DVContent(@DocVersionList)) - AND Replace(Replace([Text],'-','\u8209?'),'\u160?',' ') like @SearchString Collate SQL_Latin1_General_CP1_CI_AS - END - -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindContentText Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindContentText Error on Creation' -GO -/****** Object: StoredProcedure [vesp_ResetFolderManualOrder] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ResetFolderManualOrder]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ResetFolderManualOrder]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ResetFolderManualOrder] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION -update fld - set Fld.ManualOrder =Fld.MyRow -from (Select ROW_NUMBER() OVER(Partition by ParentID Order BY FolderID) MyRow,* from folders ) fld - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ResetFolderManualOrder Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ResetFolderManualOrder Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ResetFolderManualOrderAlphabetical] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ResetFolderManualOrderAlphabetical]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ResetFolderManualOrderAlphabetical]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ResetFolderManualOrderAlphabetical] -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION -update fld - set Fld.ManualOrder =Fld.MyRow -from (Select case when FolderID <> ParentID then ROW_NUMBER() OVER(Partition by ParentID Order BY Name) else 0 end MyRow,* from folders) fld - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ResetFolderManualOrderAlphabetical Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ResetFolderManualOrderAlphabetical Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[tr_Documents_Delete]') AND OBJECTPROPERTY(id,N'IsTrigger') = 1) - DROP TRIGGER [tr_Documents_Delete]; - - /****** Object: Trigger [dbo].[tr_Documents_Delete] Script Date: 03/28/2013 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/****** Object: Trigger [tr_Documents_Delete] ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE trigger [dbo].[tr_Documents_Delete] on [dbo].[Documents] instead of delete as - begin - update ii set DeleteStatus = Isnull((select max(DeleteID) from DeleteLog where SPID = @@spid),-1), DTS = getdate(), - UserID = IsNull((select top 1 UserID from DeleteLog where SPID = @@spid order by deleteid desc),ii.UserID) - from tblDocuments ii inner join deleted dd on dd.DocID = ii.DocID - insert into DocumentAudits(DocID,LibTitle,DocContent,DocAscii,Config,DTS,UserID,FileExtension,DeleteStatus) - select ii.DocID,ii.LibTitle,ii.DocContent,ii.DocAscii,ii.Config,ii.DTS,ii.UserID,ii.FileExtension,ii.DeleteStatus - from tblDocuments ii inner join deleted dd on dd.DocID = ii.DocID - where ii.DeleteStatus != 0 - end -GO --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Trigger alteration: tr_Documents_Delete Succeeded' -ELSE PRINT 'Trigger alteration: tr_Documents_Delete Error on Alteration' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetVersionItems]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_GetVersionItems] ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -Select * from vefn_GetVersionItems('') -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetVersionItems](@DocVersionList varchar(MAX)) -RETURNS @VersionItems TABLE -( - VersionID int, - ItemID int, - ContentID int primary key -) -WITH EXECUTE AS OWNER -AS -BEGIN - BEGIN - with Itemz([VersionID], [ItemID], [ContentID]) as - (Select DV.VersionID, [I].[ItemID], [I].[ContentID] - FROM [Items] I - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] - Union All - -- Children - select Z.VersionID, I.[ItemID], I.[ContentID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - Union All - -- Siblings - select Z.VersionID, I.[ItemID], I.[ContentID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - ) - insert into @VersionItems - select VersionID, [ItemID], [ContentID] - from ItemZ I - --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) - OPTION (MAXRECURSION 10000) - END -RETURN -END - -go -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetVersionItems] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetVersionItems] Error on Creation' - -/****** Object: StoredProcedure [getAffectedRoUsages] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAffectedRoUsages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAffectedRoUsages]; -GO - -/* -getAffectedROUsages 1, '00010000019c0000', 'KBR Test', 'Changed', 'KBR' -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAffectedRoUsages] -( - @RODbID int, - @ROID nvarchar(16), - @RODesc nvarchar(MAX), - @Command nvarchar(10), - @UserID nvarchar(100), - @VersionList nvarchar(MAX) -) -WITH EXECUTE AS OWNER -AS - BEGIN - DECLARE @JustThisVersion TABLE - ( - ContentID int primary key - ) - Insert INTO @JustThisVersion - SELECT Distinct ContentID From vefn_GetVersionItems(@VersionList) - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - -- Add "Verification Required" Annotation for each ROUsage - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Referenced Object (' + @RODesc + ') ' + @Command,@UserID - FROM Items where CONTENTID in (SELECT ContentID FROM ROUSAGES - where RODbID = @RODbID AND ROID = @ROID AND ContentID in (select ContentID from @JustThisVersion)) - SELECT - [RoUsages].[ROUsageID], - [RoUsages].[ContentID], - [RoUsages].[ROID], - [RoUsages].[Config], - [RoUsages].[DTS], - [RoUsages].[UserID], - [RoUsages].[LastChanged], - [RoUsages].[RODbID], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [RoUsages] - JOIN [Contents] ON - [Contents].[ContentID]=[RoUsages].[ContentID] - WHERE - [RoUsages].[RODbID]=@RODbID AND [RoUsages].[ROID]=@ROID - AND [Contents].ContentID in (select ContentID from @JustThisVersion) -END -RETURN - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAffectedRoUsages Succeeded' -ELSE PRINT 'Procedure Creation: getAffectedRoUsages Error on Creation' -GO - -/****** Object: StoredProcedure [getAffectedDRoUsages] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAffectedDRoUsages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAffectedDRoUsages]; -GO - -/* -getAffectedDROUsages 1, '00010000019c0000', 'KBR Test', 'Changed', 'KBR','' -getAffectedDROUsages 1, '000300003D8E', 'KBR Test', 'Changed', 'KBR','' - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAffectedDRoUsages] -( - @RODbID int, - @ROID nvarchar(16), - @RODesc nvarchar(MAX), - @Command nvarchar(10), - @UserID nvarchar(100), - @VersionList nvarchar(max) -) -WITH EXECUTE AS OWNER -AS - BEGIN - DECLARE @JustThisVersion TABLE - ( - ContentID int primary key - ) - Insert INTO @JustThisVersion - SELECT Distinct ContentID From vefn_GetVersionItems(@VersionList) - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - DECLARE @DRoUsages TABLE - ( - DRoUsageID int primary key - ) - Insert INTO @DRoUsages - select DRoUsageID from DRoUsages where ROID like substring(@ROID,1,12) + '%' AND dbo.vefn_CompareROIDS(ROID,@ROID) > 0 - - -- Add "Verification Required" Annotation for each ROUsage - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Referenced Object (' + @RODesc + ') ' + @Command,@UserID - FROM Items where CONTENTID in (SELECT ContentID - FROM (select dr.* from DRoUsages dr join @DRoUsages dd on dr.DRoUsageid = dd.DRoUsageid) DR - JOIN Entries EE on EE.DocID = DR.DocID - where RODbID = @RODbID AND ContentID in (select ContentID from @JustThisVersion)) - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [Documents].[LibTitle] [Document_LibTitle], - [Documents].[DocContent] [Document_DocContent], - [Documents].[DocAscii] [Document_DocAscii], - [Documents].[Config] [Document_Config], - [Documents].[DTS] [Document_DTS], - [Documents].[UserID] [Document_UserID], - [Documents].[FileExtension] [Document_FileExtension] - FROM [DRoUsages] - JOIN [Documents] ON - [Documents].[DocID]=[DROUsages].[DocID] - WHERE - [DRoUsages].[DRoUsageID] in (select DRoUsageid from @DRoUsages) - AND [Documents].[DocID] in (select EE.DocID from Entries EE where ContentID in (select ContentID from @JustThisVersion)) - RETURN - END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAffectedDRoUsages Succeeded' -ELSE PRINT 'Procedure Creation: getAffectedDRoUsages Error on Creation' -GO - -/****** Object: StoredProcedure [deleteAnnotationType] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAnnotationType]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteAnnotationType]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteAnnotationType] - -( - @TypeID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [tblAnnotations] - WHERE [TypeID]=@TypeID - DELETE [AnnotationTypes] - WHERE [TypeID] = @TypeID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteAnnotationType Succeeded' -ELSE PRINT 'Procedure Creation: deleteAnnotationType Error on Creation' -GO - -/****** Object: StoredProcedure [getJustFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustFormat]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getJustFormat]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getJustFormat] - -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [FormatID], - [ParentID], - [Name], - [Description], - [Data], - [GenMac], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Contents] WHERE [Contents].[FormatID]=[Formats].[FormatID]) [ContentCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[FormatID]=[Formats].[FormatID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Folders] WHERE [Folders].[FormatID]=[Formats].[FormatID]) [FolderCount], - (SELECT COUNT(*) FROM [Formats] [Children] WHERE [Children].[ParentID]=[Formats].[FormatID]) [ChildCount] - FROM [Formats] - WHERE [FormatID]=@FormatID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getJustFormat Succeeded' -ELSE PRINT 'Procedure Creation: getJustFormat Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_TurnChangeManagerOFF] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_TurnChangeManagerOFF]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_TurnChangeManagerOFF]; -GO -/****** Object: StoredProcedure [dbo].[vesp_TurnChangeManagerOFF] Script Date: 03/20/2012 16:02:54 ******/ -/* -exec vesp_TurnChangeManagerOFF -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_TurnChangeManagerOFF] WITH EXECUTE AS OWNER AS -BEGIN - DECLARE @cmd VARCHAR(MAX) - SET @cmd = 'DISABLE TRIGGER tr_Annotations_Delete ON Annotations' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Contents_Delete ON Contents' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Documents_Delete ON Documents' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Entries_Delete ON Entries' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_GridAudits_insert ON GridAudits' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Grids_Delete ON Grids' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Images_Delete ON Images' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Items_Delete ON Items' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Parts_Delete ON Parts' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_ROUsages_Delete ON ROUsages' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblAnnotations_Update ON tblAnnotations' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblContents_Update ON tblContents' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblDocuments_Update ON tblDocuments' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblEntries_Update ON tblEntries' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblGrids_Update ON tblGrids' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblImages_Update ON tblImages' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblItems_Update ON tblItems' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblParts_Update ON tblParts' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblROUsages_Update ON tblROUsages' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_tblTransitions_Update ON tblTransitions' - EXEC (@cmd) - SET @cmd = 'DISABLE TRIGGER tr_Transitions_Delete ON Transitions' - EXEC (@cmd) - PRINT '***** Change Manager has been turned OFF *****' -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_TurnChangeManagerOFF Succeeded' -ELSE PRINT 'Procedure Creation: vesp_TurnChangeManagerOFF Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_TurnChangeManagerON] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_TurnChangeManagerON]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_TurnChangeManagerON]; -GO -/****** Object: StoredProcedure [dbo].[vesp_TurnChangeManagerON] Script Date: 03/20/2012 16:02:54 ******/ -/* -exec vesp_TurnChangeManagerON -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_TurnChangeManagerON] WITH EXECUTE AS OWNER AS -BEGIN - DECLARE @cmd VARCHAR(MAX) - SET @cmd = 'ENABLE TRIGGER tr_Annotations_Delete ON Annotations' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Contents_Delete ON Contents' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Documents_Delete ON Documents' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Entries_Delete ON Entries' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_GridAudits_insert ON GridAudits' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Grids_Delete ON Grids' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Images_Delete ON Images' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Items_Delete ON Items' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Parts_Delete ON Parts' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_ROUsages_Delete ON ROUsages' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblAnnotations_Update ON tblAnnotations' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblContents_Update ON tblContents' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblDocuments_Update ON tblDocuments' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblEntries_Update ON tblEntries' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblGrids_Update ON tblGrids' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblImages_Update ON tblImages' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblItems_Update ON tblItems' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblParts_Update ON tblParts' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblROUsages_Update ON tblROUsages' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_tblTransitions_Update ON tblTransitions' - EXEC (@cmd) - SET @cmd = 'ENABLE TRIGGER tr_Transitions_Delete ON Transitions' - EXEC (@cmd) - PRINT '***** Change Manager has been turned ON *****' -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_TurnChangeManagerON Succeeded' -ELSE PRINT 'Procedure Creation: vesp_TurnChangeManagerON Error on Creation' -GO -/****** Object: TableFunction [vefn_FindROUsageIDs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindROUsageIDs]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindROUsageIDs]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindROUsageIDs](@ContentAuditID int) -RETURNS @IDs TABLE -( - ROUsageID int PRIMARY KEY, - ROUsageAction char(3) -) -WITH EXECUTE AS OWNER -AS -BEGIN - - DECLARE @ContentID int - DECLARE @text varchar(max) - SELECT @ContentID = ContentID,@text = Text FROM ContentAudits WHERE AuditID = @ContentAuditID - DECLARE @index1 int - DECLARE @index2 int - DECLARE @tid varchar(max) - DECLARE @trid int - WHILE (LEN(@text) > 0) - BEGIN - SET @index1 = CHARINDEX('#Link:ReferencedObject' , @text) - IF (@index1 > 0) - BEGIN - SET @text = RIGHT(@text, (LEN(@text) - (22 + @index1))) - SET @index1 = CHARINDEX(' ', @text) - SET @tid = LTRIM(LEFT(@text, @index1)) - SET @trid = CAST(@tid AS INT) - IF EXISTS (SELECT ROUsageID FROM tblROUsages WHERE ROUsageID = @trid AND DeleteStatus < 0) - INSERT INTO @IDs VALUES (@trid, 'ADD') - ELSE - INSERT INTO @IDs VALUES (@trid, NULL) - END - ELSE - SET @text = '' - END - INSERT INTO @IDs SELECT tt.ROUsageID,'DEL' FROM tblROUsages tt LEFT JOIN @IDs ti ON tt.ROUsageID = ti.ROUsageID WHERE tt.ContentID = @ContentID - AND ti.ROUsageID IS NULL - DELETE FROM @IDs WHERE ROUsageAction IS NULL - RETURN -END -GO --- Display the status of func creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindROUsageIDs Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindROUsageIDs Error on Creation' -GO -/****** Object: TableFunction [vefn_GetVersionFormatItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionFormatItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetVersionFormatItems]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetVersionFormatItems](@DocVersionList varchar(MAX)) -RETURNS @VersionItems TABLE -( - VersionID int, - ItemID int, - ContentID int primary key, - FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - BEGIN - with Itemz([VersionID], [ItemID], [ContentID], [FormatID], [ParentFormatID]) as - (Select DV.VersionID, [I].[ItemID], [I].[ContentID], - isnull(C.[FormatID],isnull(DV2.[FormatID],isnull(F.[FormatID],P.[FormatID]))), - isnull(DV2.[FormatID],isnull(F.[FormatID],P.[FormatID])) - FROM [Items] I - JOIN vefn_DocVersionSplit(@DocVersionList) DV ON I.[ItemID] = DV.[ItemID] - join docversions DV2 on DV.[VersionID] = DV2.[VersionID] - join folders F on DV2.[FolderID] = F.[FolderID] - join folders P on P.[FolderID] = F.[ParentID] - join Contents C on I.ContentID = C.ContentID - - Union All - -- Children - select Z.VersionID, I.[ItemID], I.[ContentID], isnull(C.[FormatID],Z.[FormatID]), Z.[FormatID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on I.ContentID = C.ContentID - Union All - -- Siblings - select Z.VersionID, I.[ItemID], I.[ContentID], isnull(C.[FormatID],Z.[ParentFormatID]), Z.[ParentFormatID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on I.ContentID = C.ContentID - ) - insert into @VersionItems - select VersionID, [ItemID], [ContentID], [FormatID] - from ItemZ I - --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) - OPTION (MAXRECURSION 10000) - END -RETURN -END -GO --- Display the status of func creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetVersionFormatItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetVersionFormatItems Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDRoUsagesByROIDsAndVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDRoUsagesByROIDsAndVersions]; -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDRoUsagesByROIDsAndVersions] -( - @ROIDs nvarchar(MAX), - @Versions nvarchar(MAX) -) -WITH EXECUTE AS OWNER -AS - SELECT - [DROUsages].[DROUsageID], - [DROUsages].[DocID], - [DROUsages].[ROID], - [DROUsages].[Config], - [DROUsages].[DTS], - [DROUsages].[UserID], - [DROUsages].[LastChanged], - [DROUsages].[RODbID], - [Documents].[LibTitle] [Document_LibTitle], - [Documents].[DocContent] [Document_DocContent], - [Documents].[DocAscii] [Document_DocAscii], - [Documents].[Config] [Document_Config], - [Documents].[DTS] [Document_DTS], - [Documents].[UserID] [Document_UserID], - [Documents].[FileExtension] [Document_FileExtension] - FROM [DRoUsages] - JOIN vefn_SplitROSearch(@ROIDs) SS - ON [DRoUsages].RODBID = SS.[RODBID] and [DRoUsages].[ROID] like SS.[ROID] + '%' - JOIN [Documents] ON - [Documents].[DocID]=[DROUsages].[DocID] - Where [Documents].[DocID] in - (Select Distinct [DocID] from [ENTRIES] - JOIN [VEFN_GetVersionItems](@Versions) VV ON [Entries].ContentID = VV.ContentID) - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDRoUsagesByROIDsAndVersions Succeeded' -ELSE PRINT 'Procedure Creation: getDRoUsagesByROIDsAndVersions Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsagesByROIDsAndVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoUsagesByROIDsAndVersions]; -GO - -CREATE PROCEDURE [dbo].[getRoUsagesByROIDsAndVersions] -( - @ROIDs nvarchar(MAX), - @Versions nvarchar(MAX) -) -WITH EXECUTE AS OWNER -AS - SELECT - [RoUsages].[ROUsageID], - [RoUsages].[ContentID], - [RoUsages].[ROID], - [RoUsages].[Config], - [RoUsages].[DTS], - [RoUsages].[UserID], - [RoUsages].[LastChanged], - [RoUsages].[RODbID], - [Contents].[Number] [Content_Number], - [Contents].[Text] [Content_Text], - [Contents].[Type] [Content_Type], - [Contents].[FormatID] [Content_FormatID], - [Contents].[Config] [Content_Config], - [Contents].[DTS] [Content_DTS], - [Contents].[UserID] [Content_UserID] - FROM [RoUsages] - JOIN vefn_SplitROSearch(@ROIDs) SS - ON [RoUsages].RODBID = SS.[RODBID] and [RoUsages].[ROID] like SS.[ROID] + '%' - JOIN [Contents] ON - [Contents].[ContentID]=[RoUsages].[ContentID] - JOIN [VEFN_GetVersionItems](@Versions) VV ON [Contents].ContentID = VV.ContentID - RETURN -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsagesByROIDsAndVersions Succeeded' -ELSE PRINT 'Procedure Creation: getRoUsagesByROIDsAndVersions Error on Creation' -GO - -/****** Object: TableFunction [vefn_GetROTokens] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetROTokens]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetROTokens]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION [dbo].[vefn_GetROTokens](@text varchar(MAX)) -RETURNS @Tokens TABLE -( - Token varchar(MAX) -) -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @index int -SET @index = -1 -DECLARE @indexb int -DECLARE @indexc int -DECLARE @indexd int -DECLARE @indexNext int -DECLARE @indexReturn int -WHILE (LEN(@text) > 0) - BEGIN - SET @index = PATINDEX('%<[A-Z]-%' , @text) - SET @indexb = PATINDEX('%<[A-Z][A-Z0-9]-%' , @text) - if((@index=0 and @indexb>0) or (@indexb > 0 and @index > @indexb)) - SET @index = @indexb - SET @indexc = PATINDEX('%<[A-Z][A-Z][A-Z0-9]-%' , @text) - if((@index=0 and @indexc>0) or (@indexc > 0 and @index > @indexc)) - SET @index = @indexc - SET @indexd = PATINDEX('%<[A-Z][A-Z][A-Z][A-Z0-9]-%' , @text) - if((@index=0 and @indexd>0) or (@indexd > 0 and @index > @indexd)) - SET @index = @indexd - IF @index = 0 - BREAK - SET @indexNext = @index + CHARINDEX('<' , substring(@text,@index+1,len(@text))) - IF @IndexNext=@index - SET @IndexNext = len(@text)+ 3 - SET @indexReturn = @index + CHARINDEX(char(13) , substring(@text,@index+1,len(@text))) - IF @IndexReturn=@index - SET @IndexReturn = len(@text)+3 - DECLARE @index2 int - SET @index2 = @index + CHARINDEX('>' , substring(@text,@index,len(@text))) - if @index2 = @index - BREAK - if(@index2 > @indexNext or @index2 > @indexReturn) - SET @text = RIGHT(@text, (LEN(@text) - @index)) - else - BEGIN - INSERT INTO @Tokens VALUES (substring(@text, @index,@index2-@index)) - if(len(@text) > @index2) - SET @text = substring(@text, @index2 , len(@text)) - else - SET @Text = '' - END - END - RETURN -END -GO --- Display the status of func creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetROTokens Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetROTokens Error on Creation' -GO - -/****** Object: TableFunction [vefn_GetVersionNames] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionNames]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetVersionNames]; -GO - --- --- select * from vefn_GetVersionNames() --- - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION [dbo].[vefn_GetVersionNames]() -RETURNS @Versions TABLE -( - VersionID int primary Key, - GrandParentName nvarchar(100), - ParentName nvarchar(100), - FolderName nvarchar(100) -) -WITH EXECUTE AS OWNER -AS -BEGIN - INSERT INTO @Versions - select versionid,gf.name GrandParentName, pf.name ParentName, ff.name FolderName - from docversions dv - Join folders ff on ff.FolderID = DV.FolderID - Join folders pf on pf.FolderID = ff.parentID - Join folders gf on gf.FolderID = pf.parentid - RETURN -END -GO --- Display the status of func creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetVersionNames Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetVersionNames Error on Creation' -GO - - - - --- =========================================== End of Functions and Procedures - --- Turn off Auto Close and Auto Shrink -declare @CMD varchar(max) -set @CMD = 'ALTER DATABASE [' + db_name() +'] SET AUTO_CLOSE OFF' -exec(@CMD) -GO -declare @CMD varchar(max) -set @CMD = 'ALTER DATABASE [' + db_name() +'] SET AUTO_SHRINK OFF' -exec(@CMD) -GO - ---added by JCB for Security and MultiUser support ---ALTER TABLE Sessions add MachineName and ProcessID columns if they do not exist -IF COL_LENGTH('Sessions','MachineName') IS NULL - ALTER TABLE Sessions ADD [MachineName] [nvarchar](100) NOT NULL,[ProcessID] [int] NOT NULL; -GO ---ALTER TABLE Sessions change DTSActivity column to not null -ALTER TABLE sessions ALTER COLUMN [DTSActivity] [datetime] NOT NULL -GO ---ALTER TABLE Sessions set DTSActivity column default value to getdate() -IF OBJECT_ID('DF_Sessions_DTSActivity', 'D') IS NULL - ALTER TABLE sessions ADD CONSTRAINT [DF_Sessions_DTSActivity] DEFAULT (getdate()) for [DTSActivity]; -GO - -/****** Object: StoredProcedure [purgeData] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[purgeData]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [purgeData]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[purgeData] - -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - delete from [AnnotationAudits] - dbcc checkident([AnnotationAudits],reseed,0) - delete from [Applicabilities] - dbcc checkident([Applicabilities],reseed,0) - delete from [ApplicableStructures] - delete from [Assignments] - dbcc checkident([Assignments],reseed,0) - delete from [Associations] - dbcc checkident([Associations],reseed,0) - delete from [Checks] - dbcc checkident([Checks],reseed,0) - delete from [ContentAudits] - dbcc checkident([ContentAudits],reseed,0) - delete from [DeleteLog] - dbcc checkident([DeleteLog],reseed,0) - delete from [Details] - dbcc checkident([Details],reseed,0) - delete from [DocumentAudits] - dbcc checkident([DocumentAudits],reseed,0) - delete from [DocVersions] - dbcc checkident([DocVersions],reseed,0) - delete from [DROUsages] - dbcc checkident([DROUsages],reseed,0) - delete from [EntryAudits] - dbcc checkident([EntryAudits],reseed,0) - delete from [Figures] - dbcc checkident([Figures],reseed,0) - delete from [Folders] - dbcc checkident([Folders],reseed,0) - delete from [GridAudits] - dbcc checkident([GridAudits],reseed,0) - delete from [ImageAudits] - dbcc checkident([ImageAudits],reseed,0) - delete from [ItemAudits] - dbcc checkident([ItemAudits],reseed,0) - delete from [Memberships] - dbcc checkident([Memberships],reseed,0) - delete from [PartAudits] - dbcc checkident([PartAudits],reseed,0) - delete from [Pdfs] - delete from [Permissions] - dbcc checkident([Permissions],reseed,0) - delete from [ROFsts] - dbcc checkident([ROFsts],reseed,0) - delete from [ROImages] - dbcc checkident([ROImages],reseed,0) - delete from [Roles] - dbcc checkident([Roles],reseed,0) - delete from [ROUsageAudits] - dbcc checkident([ROUsageAudits],reseed,0) - delete from [tblAnnotations] - dbcc checkident([tblAnnotations],reseed,0) - delete from [tblEntries] - delete from [tblGrids] - delete from [tblImages] - delete from [tblParts] - delete from [tblROUsages] - dbcc checkident([tblROUsages],reseed,0) - delete from [TransitionAudits] - dbcc checkident([TransitionAudits],reseed,0) - delete from [Users] - dbcc checkident([Users],reseed,0) - delete from [Versions] - dbcc checkident([Versions],reseed,0) - delete from [ZContents] - delete from [ZTransitions] - delete from [AnnotationTypes] - dbcc checkident([AnnotationTypes],reseed,0) - delete from [Connections] - dbcc checkident([Connections],reseed,0) - delete from [Groups] - dbcc checkident([Groups],reseed,0) - delete from [Revisions] - dbcc checkident([Revisions],reseed,0) - delete from [RODbs] - dbcc checkident([RODbs],reseed,0) - delete from [Stages] - dbcc checkident([Stages],reseed,0) - delete from [tblDocuments] - dbcc checkident([tblDocuments],reseed,0) - delete from [tblTransitions] - dbcc checkident([tblTransitions],reseed,0) - delete from [tblItems] - dbcc checkident([tblItems],reseed,0) - delete from [tblContents] - dbcc checkident([tblContents],reseed,0) - delete from [Formats] - dbcc checkident([Formats],reseed,0) - delete from [Sessions] - dbcc checkident([Sessions],reseed,0) - delete from [Owners] - dbcc checkident([Owners],reseed,0) - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: purgeData Succeeded' -ELSE PRINT 'Procedure Creation: purgeData Error on Creation' -GO - -/****** Object: StoredProcedure [getSessions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getSessions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getSessions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getSessions] - -WITH EXECUTE AS OWNER -AS - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID] - FROM [Sessions] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getSessions Succeeded' -ELSE PRINT 'Procedure Creation: getSessions Error on Creation' -GO - -/****** Object: StoredProcedure [updateSession] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateSession]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateSession] - -( - @SessionID int, - @UserID nvarchar(100), - @DTSDtart datetime, - @DTSEnd datetime=null, - @DTSActivity datetime, - @LastChanged timestamp, - @MachineName nvarchar(100), - @ProcessID int, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Sessions] - SET - [UserID]=@UserID, - [DTSDtart]=@DTSDtart, - [DTSEnd]=@DTSEnd, - [DTSActivity]=@DTSActivity, - [MachineName]=@MachineName, - [ProcessID]=@ProcessID - WHERE [SessionID]=@SessionID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Sessions] WHERE [SessionID]=@SessionID) - RAISERROR('Session record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Session has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Sessions] WHERE [SessionID]=@SessionID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateSession Succeeded' -ELSE PRINT 'Procedure Creation: updateSession Error on Creation' -GO - -/****** Object: StoredProcedure [addSession] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addSession]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addSession] - -( - @UserID nvarchar(100), - @DTSDtart datetime, - @DTSEnd datetime=null, - @DTSActivity datetime, - @MachineName nvarchar(100), - @ProcessID int, - @newSessionID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Sessions] - ( - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [MachineName], - [ProcessID] - ) - VALUES - ( - @UserID, - @DTSDtart, - @DTSEnd, - @DTSActivity, - @MachineName, - @ProcessID - ) - SELECT @newSessionID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Sessions] WHERE [SessionID]=@newSessionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addSession Succeeded' -ELSE PRINT 'Procedure Creation: addSession Error on Creation' -GO - -/****** Object: StoredProcedure [deleteSession] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteSession]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteSession] - -( - @SessionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Sessions] - WHERE [SessionID] = @SessionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteSession Succeeded' -ELSE PRINT 'Procedure Creation: deleteSession Error on Creation' -GO - -/****** Object: StoredProcedure [getSession] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getSession]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getSession] - -( - @SessionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID] - FROM [Sessions] - WHERE [SessionID]=@SessionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getSession Succeeded' -ELSE PRINT 'Procedure Creation: getSession Error on Creation' -GO - -/****** Object: StoredProcedure [existsSession] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsSession]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsSession] - -( - @SessionID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Sessions] WHERE [SessionID]=@SessionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsSession Succeeded' -ELSE PRINT 'Procedure Creation: existsSession Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SessionCleanup] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionBegin]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SessionBegin]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SessionBegin] - -( - @UserID nvarchar(100), - @MachineName nvarchar(100), - @ProcessID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - DECLARE @oCount int - SELECT @oCount = count(*) FROM Owners WHERE OwnerType = 3 - IF @oCount > 0 BEGIN - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID] - FROM [Sessions] - WHERE [SessionID]=0 - END - ELSE BEGIN - BEGIN TRANSACTION - --delete old closed sessions - DELETE FROM Sessions WHERE UserID = @UserID and DTSEnd is not null - --delete old owners from inactive sessions - DELETE FROM Owners WHERE SessionID in (SELECT SessionID FROM Sessions WHERE UserID = @UserID and DTSEnd is null and DTSActivity < DATEADD(minute, -5, getdate())) - DELETE FROM Owners WHERE SessionID in (SELECT SessionID FROM Sessions WHERE DTSEnd is null and DTSActivity < DATEADD(minute, -15, getdate())) - --delete inactive sessions where last activity is before 15 minutes ago - DELETE FROM Sessions WHERE UserID = @UserID and DTSEnd is null and DTSActivity < DATEADD(minute, -5, getdate()) - DELETE FROM Sessions WHERE DTSEnd is null and DTSActivity < DATEADD(minute, -15, getdate()) - DELETE FROM Owners WHERE SessionID not in (SELECT SessionID FROM Sessions) - INSERT INTO [Sessions]([UserID],[MachineName],[ProcessID]) - VALUES (@UserID, @MachineName, @ProcessID) - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID] - FROM [Sessions] - WHERE [SessionID]=SCOPE_IDENTITY() - IF( @@TRANCOUNT > 0 ) COMMIT - END -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionBegin Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SessionBegin Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SessionPing] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionPing]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SessionPing]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE vesp_SessionPing -( - @SessionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - --update active session dtsactivity value - UPDATE Sessions SET DTSActivity = getdate() WHERE SessionID = @SessionID -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionPing Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SessionPing Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SessionPing] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionEnd]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SessionEnd]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE vesp_SessionEnd -( - @SessionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - --delete unclosed owners for session being closed - DELETE FROM Owners WHERE SessionID = @SessionID - --update active session dtsend value - UPDATE Sessions SET DTSEnd = getdate() WHERE SessionID = @SessionID -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionEnd Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SessionEnd Error on Creation' -GO - -/****** Object: StoredProcedure [getOwners] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwners]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getOwners]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwners] - -WITH EXECUTE AS OWNER -AS - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - [LastChanged] - FROM [Owners] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwners Succeeded' -ELSE PRINT 'Procedure Creation: getOwners Error on Creation' -GO - -/****** Object: StoredProcedure [getOwnersBySessionID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnersBySessionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getOwnersBySessionID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwnersBySessionID] -( - @SessionID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - [LastChanged] - FROM [Owners] - WHERE [SessionID] = @SessionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwnersBySessionID Succeeded' -ELSE PRINT 'Procedure Creation: getOwnersBySessionID Error on Creation' -GO - -/****** Object: StoredProcedure [updateOwner] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateOwner]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateOwner] - -( - @OwnerID int, - @SessionID int, - @OwnerType tinyint, - @OwnerItemID int, - @DTSStart datetime, - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Owners] - SET - [SessionID]=@SessionID, - [OwnerType]=@OwnerType, - [OwnerItemID]=@OwnerItemID, - [DTSStart]=@DTSStart - WHERE [OwnerID]=@OwnerID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Owners] WHERE [OwnerID]=@OwnerID) - RAISERROR('Owner record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Owner has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Owners] WHERE [OwnerID]=@OwnerID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateOwner Succeeded' -ELSE PRINT 'Procedure Creation: updateOwner Error on Creation' -GO - -/****** Object: StoredProcedure [addOwner] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addOwner]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addOwner] - -( - @SessionID int, - @OwnerType tinyint, - @OwnerItemID int, - @DTSStart datetime, - @newOwnerID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Owners] - ( - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart] - ) - VALUES - ( - @SessionID, - @OwnerType, - @OwnerItemID, - @DTSStart - ) - SELECT @newOwnerID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Owners] WHERE [OwnerID]=@newOwnerID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addOwner Succeeded' -ELSE PRINT 'Procedure Creation: addOwner Error on Creation' -GO - -/****** Object: StoredProcedure [deleteOwner] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteOwner]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteOwner] - -( - @OwnerID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Owners] - WHERE [OwnerID] = @OwnerID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteOwner Succeeded' -ELSE PRINT 'Procedure Creation: deleteOwner Error on Creation' -GO - -/****** Object: StoredProcedure [getOwner] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getOwner]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwner] - -( - @OwnerID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - [LastChanged] - FROM [Owners] - WHERE [OwnerID]=@OwnerID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwner Succeeded' -ELSE PRINT 'Procedure Creation: getOwner Error on Creation' -GO - -/****** Object: StoredProcedure [existsOwner] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsOwner]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsOwner]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsOwner] - -( - @OwnerID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Owners] WHERE [OwnerID]=@OwnerID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsOwner Succeeded' -ELSE PRINT 'Procedure Creation: existsOwner Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SessionCanCheckOutItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionCanCheckOutItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SessionCanCheckOutItem]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/* -exec dbo.vesp_SessionCanCheckOutItem 25915,0 -exec dbo.vesp_SessionCanCheckOutItem 554,1 -exec dbo.vesp_SessionCanCheckOutItem 13,2 -*/ -CREATE PROCEDURE [dbo].[vesp_SessionCanCheckOutItem] -( - @ObjectID int, - @ObjectType int -) -WITH EXECUTE AS OWNER -AS -BEGIN - DECLARE @CheckOuts TABLE - ( - SessionID int - ) - --look to see if anyone else has a session. if they do, then cannot check out - DECLARE @sCount int - SELECT @sCount = count(*) FROM Sessions - IF @ObjectType = 3 BEGIN - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID] - FROM [Sessions] - WHERE DTSEnd IS NULL - END ELSE BEGIN - --look to see if object is already checked out in owner table as passed object type - INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners WHERE OwnerItemID = @ObjectID AND OwnerType = @ObjectType - --look to see if object is part of a checked out docversion as passed object type - DECLARE @VersionIDList varchar(max) - SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(OwnerItemID as varchar(4)) FROM Owners WHERE OwnerType = 2 - IF ISNULL(@VersionIDList,'') != '' AND @ObjectType = 0 BEGIN --procedure - INSERT INTO @CheckOuts - SELECT ss.SessionID FROM dbo.vefn_GetVersionItems(@VersionIDList) vi - INNER JOIN Contents cc ON vi.ContentID = cc.ContentID - INNER JOIN Owners oo ON vi.VersionID = oo.OwnerItemID - INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID - WHERE cc.Type = 0 AND vi.ItemID = @ObjectID - END - IF ISNULL(@VersionIDList,'') != '' AND @ObjectType = 1 BEGIN --document - INSERT INTO @CheckOuts - SELECT ss.SessionID FROM dbo.vefn_GetVersionItems(@VersionIDList) vi - INNER JOIN Contents cc ON vi.ContentID = cc.ContentID - INNER JOIN Entries ee ON vi.ContentID = ee.ContentID - INNER JOIN Owners oo ON vi.VersionID = oo.OwneritemID - INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID - WHERE ee.DocID = @ObjectID - END - --look to see if object type is docversion that no part of docversion passed is checked out - IF @ObjectType = 2 BEGIN - --see what procedures maybe checked out - INSERT INTO @CheckOuts - SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@ObjectID) vi - INNER JOIN Contents cc ON vi.ContentID = cc.ContentID - INNER JOIN Owners oo ON vi.ItemID = oo.OwnerItemID - INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID - WHERE cc.Type = 0 - --see what documents maybe checked out - INSERT INTO @CheckOuts - SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@ObjectID) vi - INNER JOIN Contents cc ON vi.ContentID = cc.ContentID - INNER JOIN Entries ee ON vi.ContentID = ee.ContentID - INNER JOIN Owners oo ON ee.DocID = oo.OwnerItemID - INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID - END - - SELECT - [SessionID], - [UserID], - [DTSDtart], - [DTSEnd], - [DTSActivity], - [LastChanged], - [MachineName], - [ProcessID] - FROM [Sessions] - WHERE [SessionID] IN (SELECT SessionID FROM @CheckOuts) - END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionCanCheckOutItem Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SessionCanCheckOutItem Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SessionCheckOutItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionCheckOutItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SessionCheckOutItem]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SessionCheckOutItem] -( - @SessionID int, - @ItemID int, - @ItemType int, - @OwnerID int OUTPUT -) -WITH EXECUTE AS OWNER -AS -BEGIN - INSERT INTO Owners (SessionID, OwnerItemID, OwnerType) VALUES (@SessionID, @ItemID, @ItemType) - SELECT @OwnerID = SCOPE_IDENTITY() -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionCheckOutItem Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SessionCheckOutItem Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_SessionCheckInItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SessionCheckInItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_SessionCheckInItem]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_SessionCheckInItem] -( - @OwnerID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - DELETE FROM Owners WHERE OwnerID = @OwnerID -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SessionCheckInItem Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SessionCheckInItem Error on Creation' -GO - -/****** Object: StoredProcedure [getOwnerByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnerByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getOwnerByItemID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwnerByItemID] - -( - @ItemID int, - @ItemType int -) -WITH EXECUTE AS OWNER -AS - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - [LastChanged] - FROM [Owners] - WHERE [OwnerItemID]=@ItemID AND [OwnerType]=@ItemType - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwnerByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getOwnerByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getOwnerBySessionIDandVersionID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnerBySessionIDandVersionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getOwnerBySessionIDandVersionID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwnerBySessionIDandVersionID] - -( - @SessionID int, - @VersionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - [LastChanged] - FROM [Owners] oo - INNER JOIN - ( - SELECT 0 ObjectType,ItemID ObjectID FROM dbo.vefn_GetVersionItems(@VersionID) - UNION - SELECT 1 ObjectType,ee.DocID ObjectID FROM dbo.vefn_GetVersionItems(@VersionID) vi - INNER JOIN Contents cc ON vi.ContentID = cc.ContentID - INNER JOIN Entries ee ON vi.ContentID = ee.ContentID - UNION - SELECT 2 ObjectType, @VersionID ObjectID - ) tt ON oo.OwnerType = tt.ObjectType and oo.OwnerItemID = tt.ObjectID - WHERE [SessionID] = @SessionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwnerBySessionIDandVersionID Succeeded' -ELSE PRINT 'Procedure Creation: getOwnerBySessionIDandVersionID Error on Creation' -GO - -/****** Object: StoredProcedure [getUserByUserID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getUserByUserID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getUserByUserID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getUserByUserID] - -( - @UserID varchar(100) -) -WITH EXECUTE AS OWNER -AS - SELECT - [UID], - [UserID], - [FirstName], - [MiddleName], - [LastName], - [Suffix], - [CourtesyTitle], - [PhoneNumber], - [CFGName], - [UserLogin], - [UserName], - [Config], - [DTS], - [UsrID], - [LastChanged], - (SELECT COUNT(*) FROM [Memberships] WHERE [Memberships].[UID]=[Users].[UID]) [MembershipCount] - FROM [Users] - WHERE [UserID]=@UserID - - SELECT - [Memberships].[UGID], - [Memberships].[UID], - [Memberships].[GID], - [Memberships].[StartDate], - [Memberships].[EndDate], - [Memberships].[Config], - [Memberships].[DTS], - [Memberships].[UsrID], - [Memberships].[LastChanged], - [Groups].[GroupName] [Group_GroupName], - [Groups].[GroupType] [Group_GroupType], - [Groups].[Config] [Group_Config], - [Groups].[DTS] [Group_DTS], - [Groups].[UsrID] [Group_UsrID] - FROM [Memberships] - JOIN [Groups] ON - [Groups].[GID]=[Memberships].[GID] - JOIN [Users] ON [Memberships].[UID] = [Users].[UID] - WHERE - [Users].[UserID]=@UserID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getUserByUserID Succeeded' -ELSE PRINT 'Procedure Creation: getUserByUserID Error on Creation' -GO - ---need to check to see if security is already defined. if not then do this stuff -declare @aCount int -select @aCount = count(*) from assignments -if @aCount = 0 -begin ---clean up security related tables - EXEC sp_executesql N' - delete from [Assignments]' - EXEC sp_executesql N' - dbcc checkident([Assignments],reseed,0)' - EXEC sp_executesql N' - delete from [Memberships]' - EXEC sp_executesql N' - dbcc checkident([Memberships],reseed,0)' - EXEC sp_executesql N' - delete from [Permissions]' - EXEC sp_executesql N' - dbcc checkident([Permissions],reseed,0)' - EXEC sp_executesql N' - delete from [Roles]' - EXEC sp_executesql N' - dbcc checkident([Roles],reseed,0)' - EXEC sp_executesql N' - delete from [Users]' - EXEC sp_executesql N' - dbcc checkident([Users],reseed,0)' - EXEC sp_executesql N' - delete from [Groups]' - EXEC sp_executesql N' - dbcc checkident([Groups],reseed,0)' - - --define Roles - EXEC sp_executesql N' - insert into Roles (Name,Title,DTS,UsrID) values - (''Administrator'',''Manage Generic Data;Manage Security;Edit RO Values,Create FST,Update RO Values;Update Formats;PROMS Settings;Create/Update/Delete Folders,DocVersions,Procedures,Sections,Steps,All Annotations'',getdate(),''VEPROMS'')' - EXEC sp_executesql N' - insert into Roles (Name,Title,DTS,UsrID) values - (''Set Administrator'',''Edit RO Values,Create FST,Update RO Values;Create/Update/Delete Folders,DocVersions,Procedures,Sections,Steps,All Set Annotations'',getdate(),''VEPROMS'')' - EXEC sp_executesql N' - insert into Roles (Name,Title,DTS,UsrID) values - (''Writer'',''Create/Update/Delete Procedures,Sections,Steps,All Set Annotations'',getdate(),''VEPROMS'')' - EXEC sp_executesql N' - insert into Roles (Name,Title,DTS,UsrID) values - (''Reviewer'',''Create/Update/Delete User Annotations'',getdate(),''VEPROMS'')' - EXEC sp_executesql N' - insert into Roles (Name,Title,DTS,UsrID) values - (''RO Editor'',''Edit RO Values,Create FST'',getdate(),''VEPROMS'')' - - --define Permissions for Roles - EXEC sp_executesql N' - declare @rid int; - select @rid = rid from roles where name = ''Administrator''; - insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values - (@rid,1,3,15,0,getdate(),getdate(),''VEPROMS'')' - EXEC sp_executesql N' - declare @rid int; - select @rid = rid from roles where name = ''Set Administrator''; - insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values - (@rid,2,3,15,0,getdate(),getdate(),''VEPROMS'')' - EXEC sp_executesql N' - declare @rid int; - select @rid = rid from roles where name = ''Writer''; - insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values - (@rid,4,3,15,0,getdate(),getdate(),''VEPROMS'')' - EXEC sp_executesql N' - declare @rid int; - select @rid = rid from roles where name = ''Reviewer''; - insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values - (@rid,7,3,15,0,getdate(),getdate(),''VEPROMS'')' - EXEC sp_executesql N' - declare @rid int; - select @rid = rid from roles where name = ''RO Editor''; - insert into permissions (rid,permlevel,versiontype,permvalue,permad,startdate,dts,usrid) values - (@rid,3,3,15,0,getdate(),getdate(),''VEPROMS'')' - - --define adminstrator Group - EXEC sp_executesql N' - insert into groups (groupname,dts,usrid) - select name + ''s'',getdate(),''VEPROMS'' from roles where name = ''Administrator''' - - --define administrator Assignment - EXEC sp_executesql N' - insert into assignments (gid,rid,folderid,startdate,dts,usrid) - select gg.gid,rr.rid,1,getdate(),getdate(),''VEPROMS'' from roles rr inner join groups gg on rr.name + ''s'' = gg.groupname' - EXEC sp_executesql N' - print ''MultiUser and Security Created''' -end -else begin - EXEC sp_executesql N' - print ''MultiUser and Security Exists''' -end -GO - ---added jcb 1st round fixes multiuser and security testting ---ALTER TABLE Groups change GroupName column to 100 characters -ALTER TABLE groups ALTER COLUMN [GroupName] [nvarchar](100) NOT NULL -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ResetSecurity]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ResetSecurity]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_ResetSecurity] -AS -BEGIN - DELETE FROM [Memberships] - DELETE FROM [Assignments] WHERE [AID] != 1 - DELETE FROM [Groups] WHERE [GID] != 1 - DELETE FROM [Users] - DECLARE @gid VARCHAR(10) - SELECT @gid = x1.value('@Group','varchar(10)') - FROM - ( - SELECT folderid,CAST(config as xml) xconfig FROM folders ff WHERE ff.folderid = 1 - ) ah - CROSS APPLY xconfig.nodes('//Security') t1(x1) - UPDATE folders SET config = replace(config,'Security Group="' + @gid + '"','Security Group="1"') WHERE folderid = 1 -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ResetSecurity Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ResetSecurity Error on Creation' -GO - -/****** Object: StoredProcedure [getRevisionsByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRevisionsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRevisionsByItemID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRevisionsByItemID] -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] - WHERE [ItemID] = @ItemID -and (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) > 0 - ORDER BY [RevisionID] DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRevisionsByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getRevisionsByItemID Error on Creation' -GO -/****** Object: StoredProcedure [getRoUsagesForDocVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsagesForDocVersion]') AND OBJECTPROPERTY - -(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoUsagesForDocVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRoUsagesForDocVersion] -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ROUsageID], - rr.[ContentID], - [ROID], - [Config], - [DTS], - [UserID], - [LastChanged], - [RODbID] - FROM [RoUsages] rr - INNER JOIN vefn_getversionitems(@VersionID) vi on rr.contentid = vi.contentid - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsagesForDocVersion Succeeded' -ELSE PRINT 'Procedure Creation: getRoUsagesForDocVersion Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_ListTables3] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_ListTables3]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_ListTables3]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE procedure [dbo].[vesp_ListTables3] -WITH EXECUTE AS OWNER -AS -begin -select o.name TableName,c.name ColumnName, -case c.system_type_id - when 56 then 'int' - when 231 then 'nvarchar' - when 165 then 'varbinary' - when 167 then 'varchar' - when 239 then 'nchar' - when 175 then 'char' - when 61 then 'datetime' - when 104 then 'bit' - when 48 then 'TinyInt' - when 127 then 'BigInt' - when 241 then 'Xml' - when 62 then 'float' - when 189 then 'timestamp' - else '???' + cast(c.system_type_id as varchar(10)) end ItemType, -case c.system_type_id - when 56 then '0' - when 231 then case c.max_length when -1 then 'Max' else cast(c.max_length/2 as varchar(10)) end - when 165 then case c.max_length when -1 then 'Max' else cast(c.max_length as varchar(10)) end - when 167 then case c.max_length when -1 then 'Max' else cast(c.max_length as varchar(10)) end - when 239 then case c.max_length when -1 then 'Max' else cast(c.max_length/2 as varchar(10)) end - when 175 then case c.max_length when -1 then 'Max' else cast(c.max_length as varchar(10)) end - when 61 then '0' - when 104 then '0' - when 48 then '0' - when 189 then '0' - else '0' end ItemSize, - - case when c.is_nullable=1 then 'Yes' else '' end AllowNulls, - case when c.is_identity=1 then 'Identity' else dc.definition end DefaultValue, - x.value Description -from sys.objects o -join sys.columns c on o.object_id=c.object_id -left join sysconstraints cn on o.object_id=cn.id and c.column_id=cn.colid -left join sys.default_constraints dc on dc.object_id = cn.constid -left join sys.extended_properties x on x.major_id = o.OBJECT_ID AND x.minor_id=c.column_id AND x.Name='MS_Description' -where o.type='U' -order by o.name,c.column_id -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_ListTables3 Succeeded' -ELSE PRINT 'Procedure Creation: vesp_ListTables3 Error on Creation' -GO - -/****** Object: StoredProcedure [getOwnersByVersionID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getOwnersByVersionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getOwnersByVersionID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getOwnersByVersionID] -( - @VersionID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - oo.[LastChanged] - FROM [Owners] oo - JOIN vefn_GetVersionItems(@VersionID) vi ON oo.OwnerItemID = vi.ItemID - WHERE oo.OwnerType = 0 - UNION - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - oo.[LastChanged] - FROM [Owners] oo - JOIN [Entries] ee on oo.OwnerItemID = ee.DocID - JOIN vefn_GetVersionItems(@VersionID) vi on ee.ContentID = vi.ContentID - WHERE oo.OwnerType = 1 - UNION - SELECT - [OwnerID], - [SessionID], - [OwnerType], - [OwnerItemID], - [DTSStart], - oo.[LastChanged] - FROM [Owners] oo - WHERE oo.OwnerType = 2 - AND oo.OwnerItemID = @VersionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getOwnersByVersionID Succeeded' -ELSE PRINT 'Procedure Creation: getOwnersByVersionID Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CompareROIDs]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_CompareROIDs]; -/****** Object: UserDefinedFunction [dbo].[vefn_CompareROIDs] Script Date: 07/21/2014 17:50:44 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -create function vefn_CompareROIDs (@roid1 varchar(16), @roid2 varchar(16)) -returns int -as begin - declare @len1 int - declare @len2 int - if @roid1 = @roid2 - return 1 - set @len1 = len(@roid1) - set @len2 = len(@roid2) - if @len1 = @len2 - begin - if @len1 = 16 and substring(@roid1,13,4) = '0000' and substring(@roid2,13,4) = '0041' - return 2 - if @len1 = 16 and substring(@roid2,13,4) = '0000' and substring(@roid1,13,4) = '0041' - return 3 - return 0 - end - if substring(@roid1,1,12) = substring(@roid2,1,12) - return 4 - return 0 -end -GO --- Display the status of ScalarFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_CompareROIDs Succeeded' -ELSE PRINT 'Function: vefn_CompareROIDs Error on Creation' -GO - -/****** Object: Index [IX_tblContentsForCopy] Script Date: 8/26/2014 8:55:16 PM ******/ -IF NOT EXISTS (SELECT * FROM dbo.sysindexes WHERE name = 'IX_tblContentsForCopy') -BEGIN -CREATE NONCLUSTERED INDEX [IX_tblContentsForCopy] ON [dbo].[tblContents] -( - [DTS] ASC, - [UserID] ASC, - [Type] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -END -GO - -/****** Object: Index [IX_tblItemsForCopy1] Script Date: 8/27/2014 5:26:31 PM ******/ -IF NOT EXISTS (SELECT * FROM dbo.sysindexes WHERE name = 'IX_tblItemsForCopy1') -BEGIN -CREATE NONCLUSTERED INDEX [IX_tblItemsForCopy1] ON [dbo].[tblItems] -( - [ContentID] ASC, - [DTS] ASC, - [UserID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -END -GO - -/****** Object: Index [IX_tblItemsForCopy2] Script Date: 8/27/2014 5:26:37 PM ******/ -IF NOT EXISTS (SELECT * FROM dbo.sysindexes WHERE name = 'IX_tblItemsForCopy2') -BEGIN -CREATE NONCLUSTERED INDEX [IX_tblItemsForCopy2] ON [dbo].[tblItems] -( - [PreviousID] ASC, - [DTS] ASC, - [UserID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -END -GO - -/****** Object: StoredProcedure [CopyItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[CopyItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [CopyItemAndChildren]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[CopyItemAndChildren] -( - @StartItemID INT, - @DestFormatID INT, - @UserID NVARCHAR(100), - @NewStartItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - ---+-----------------------------------------------------------------+ ---¦ BEGIN TRANSACTION to make these changes temporary ¦ ---+-----------------------------------------------------------------+ - BEGIN TRANSACTION - if exists (select * from tblitems where itemid = @StartItemID and DeleteStatus !=0) - BEGIN - RAISERROR ('###Cannot Paste Step###This step has been deleted',16,1) - RETURN - END -DECLARE @Children AS TABLE -( - ItemID INT PRIMARY KEY, - NewItemID INT, - ContentID INT, - NewContentID INT, - FormatID INT, - NewFormatID INT -) -DECLARE @NewDocuments AS TABLE -( - DocID INT PRIMARY KEY, - NewDocID INT -) --- Locals -DECLARE @DTS DATETIME -- DTS of all New Items -DECLARE @StartContentID INT -Select @StartContentID = ContentID from Items where ItemID = @StartItemID -SET @DTS = GETDATE() -- Get the current Date and Time --- Get a list of all of the Items to be copied based upon StartItemID and EndItemID --- If the StartItemID = EndItemID then it is a single item and it's children -INSERT INTO @Children SELECT ItemID,ItemID,ContentID,ContentID,FormatID,FormatID FROM vefn_ChildItemsRange(@StartItemID,@StartItemID,null) --- <<< Copy Contents >>> --- Create new content rows to match the existing rows. Set the type to the Current ContentID temporarily --- so that the new content rows can be associated with the existing content rows. -INSERT INTO Contents - ([Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID]) - select CASE when [ContentID] = @StartContentID and [Type]<20000 then 'Copy Of ' + [Number] else [Number] end, - [Text],[ContentID],[FormatID],[Config],@DTS,@UserID - from Contents where ContentID in(Select ContentID from @Children) --- Update the @Children with the NewConentIDs ---print 'A ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -UPDATE NN set NN.NewContentID = CC.ContentID -From Contents CC -Join @Children NN on NN.ContentID = CC.Type AND CC.DTS = @DTS and CC.UserID = @UserID --- Reset the Type column in the Contents table with the Type column from the original Records. ---print 'B ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -DECLARE @SourceType INT -Select @SourceType = Type from Contents where ContentID = @StartContentID -if @SourceType = 0 - BEGIN - UPDATE CC set CC.Type = CC2.Type, CC.DTS = CC2.DTS, CC.UserID = CC2.UserID - From Contents CC - Join @Children NN on NN.NewContentID = CC.ContentID - Join Contents CC2 on NN.ContentID = CC2.ContentID - END -else - BEGIN -UPDATE CC set CC.Type = CC2.Type -From Contents CC -Join @Children NN on NN.NewContentID = CC.ContentID -Join Contents CC2 on NN.ContentID = CC2.ContentID - END ---print 'B1 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Contents are done - -- SELECT * From Contents where DTS = @DTS and UserID = @UserID --- <<< Copy Grids >>> -INSERT INTO [Grids]([ContentID],[Data],[Config],[DTS],[UserID]) - SELECT NN.[NewContentID],[Data],[Config],@DTS,@UserID - FROM [Grids] GG Join @Children NN on GG.ContentID = NN.ContentID --- <<< Copy Images >>> ---print 'B2 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -INSERT INTO [Images]([ContentID],[ImageType],[FileName],[Data],[Config],[DTS],[UserID]) - SELECT NN.[NewContentID],[ImageType],[FileName],[Data],[Config],@DTS,@UserID - FROM [Images] II Join @Children NN on II.ContentID = NN.ContentID --- Create new item rows based upon the current item rows and the @Children table, with the NewContentIDs ---print 'B3 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -INSERT INTO [Items] ([PreviousID],[ContentID],[DTS],[UserID]) - SELECT II.[PreviousID], -- Leave the PreviousID as is for now - NN.NewContentID, @DTS, @UserID - from @Children NN - join Items II on II.ContentID = NN.ContentID --- Update the @Children with the NewItemIDs ---print 'B4 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -UPDATE NN set NN.NewItemID = II.ItemID -From Items II -Join @Children NN on NN.NewContentID = II.ContentID AND II.DTS = @DTS and II.UserID = @UserID -DECLARE @NewItemID int -SELECT @NewItemID = NewItemID - FROM @Children - WHERE ItemID = @StartItemID ---print 'B5 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -UPDATE NN SET NN.[NewFormatID] = CC.[FormatID] - FROM @Children NN - Join vefn_ChildItemsRange(@NewItemID,@NewItemID,@DestFormatID) CC - ON NN.NewItemID = CC.ItemID --- The @Children table is now complete - --SELECT * From @Children --- Update the PreviousID in the new Item rows, to the new ItemIDs based upon the old ItemIDs ---print 'B6 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -Update II Set II.[PreviousID] = NN.NewItemID -from Items II -Join @Children NN on NN.ItemID = II.PreviousID AND II.DTS = @DTS and II.UserID = @UserID --- Get the new ItemIDs based upon the old ItemIDs -SELECT @NewStartItemID = NewItemID from @Children where ItemID = @StartItemID ---SELECT @NewEndItemID = NewItemID from @Children where ItemID = @EndItemID --- Set the PreviousID for the starting Item to null temporarily. --- This will be adjusted based upon where the step is inserted. ---print 'B7 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -Update Items Set PreviousID = null where ItemID = @NewStartItemID -if @SourceType = 0 - BEGIN - UPDATE II SET II.DTS = II2.DTS, II.UserID = II2.UserID - From Items II - Join @Children NN on NN.NewItemID = II.ItemID - Join Items II2 on NN.ItemID = II2.ItemID - WHERE NN.ItemID = @StartItemID - END ---print 'C ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Items are done - --SELECT * From Items where DTS = @DTS and UserID = @UserID --- <<< Copy Parts >>> -INSERT INTO [Parts] ([ContentID],[FromType],[ItemID],[DTS],[UserID]) -Select NNF.NewContentID,[FromType],NNT.NewItemID, @DTS, @UserID from Parts PP -JOIN @Children NNF on PP.ContentID = NNF.ContentID -JOIN @Children NNT on PP.ItemID = NNT.ItemID ---print 'D ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Parts are done - -- SELECT * From Parts where DTS = @DTS and UserID = @UserID --- <<< Copy Annotations >>> -INSERT INTO [Annotations] ([ItemID],[TypeID],[RtfText],[SearchText],[Config],[DTS],[UserID]) - Select NewItemID, TypeID, RtfText, SearchText, Config, @DTS, @UserID - from Annotations AA Join @Children NN on AA.ItemID = NN.ItemID ---print 'E ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Annotations are done - -- SELECT * From Annotations where DTS = @DTS and UserID = @UserID --- <<< Copy Documents and Entries>>> --- logic to create Entries for Library Documents -INSERT INTO [Entries] ([ContentID],[DocID],[DTS],[UserID]) - SELECT NN.[NewContentID],EE.[DocID],@DTS,@UserID - FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID - JOIN [Documents] DD on EE.[DocID] = DD.[DocID] and Isnull(LibTitle,'') <> '' --- Logic to create new documents for any documents used that do not have libtitles -INSERT INTO [Documents] ([LibTitle],[DocContent],[DocAscii],[Config],[DTS],[UserID],[FileExtension]) - OUTPUT CAST(INSERTED.[LibTitle] as INT),INSERTED.[DocID] INTO @NewDocuments - SELECT str(DD.[DocID]),[DocContent],[DocAscii],[Config],@DTS,@UserID,[FileExtension] - FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID - JOIN [Documents] DD on EE.[DocID] = DD.[DocID] and Isnull(LibTitle,'') = '' -UPDATE DD SET LibTitle = '' - FROM Documents DD JOIN @NewDocuments ND on DD.[DocID] = ND.[NewDocID] - where DTS = @DTS and UserID = @UserID ---print 'F ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Documents are Done - -- SELECT * From Documents where DTS = @DTS and UserID = @UserID --- Logic to create entries for these newly created documents -INSERT INTO [Entries] ([ContentID],[DocID],[DTS],[UserID]) - SELECT NN.[NewContentID],ND.[NewDocID],@DTS,@UserID - FROM [Entries] EE JOIN @Children NN on NN.ContentID = EE.ContentID - JOIN @NewDocuments ND on EE.[DocID] = ND.[DocID] --- Logic to Create DROUsages for these newly created documents -INSERT INTO [DROUsages] ([DocID],[ROID],[Config],[DTS],[UserID],[RODbID]) - SELECT ND.[NewDocID],[ROID],[Config],@DTS,@UserID,[RODbID] - FROM [DROUsages] RR - JOIN @NewDocuments ND on RR.[DocID] = ND.[DocID] - ---print 'G ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Entries are done - -- SELECT * From Entries EE JOIN Documents DD on ee.DocID = DD.DocID where EE.DTS = @DTS and EE.UserID = @UserID --- <<< Copy RoUsages >>> -INSERT INTO [RoUsages] ([ContentID],[ROID],[Config],[DTS],[UserID],[RODbID]) - SELECT NN.[NewContentID],CAST([ROUsageID] as nvarchar(16)),[Config],@DTS,@UserID,[RODbID] - FROM [RoUsages] RR Join @Children NN on RR.ContentID = NN.ContentID --- Update content records for newly copied records to use correct RO usage ids in the RO tags -DECLARE @RowsAffected int -SET @RowsAffected=1 -WHILE @RowsAffected > 0 -BEGIN - UPDATE CC SET [TEXT] = C2.NewText - FROM CONTENTS CC - JOIN (SELECT C1.ContentID, .dbo.vefn_FixROText(C1.Text, CAST([ROID] as int), [ROUsageID]) NewText - FROM CONTENTS C1 - JOIN @Children NN on C1.ContentID = NN.NewContentID - JOIN RoUsages RO on NN.NewContentID = RO.ContentID where Len([ROID]) < 12) C2 ON CC.ContentID = C2.ContentID - WHERE [TEXT] <> C2.NewText - SET @RowsAffected = @@RowCount -END --- Update grid records for newly copied records to use correct RO usage ids in the RO tags -SET @RowsAffected=1 -WHILE @RowsAffected > 0 -BEGIN - UPDATE GG SET [Data] = G2.NewData - FROM GRIDS GG - JOIN (SELECT G1.ContentID, .dbo.vefn_FixROData(G1.Data, CAST([ROID] as int), [ROUsageID]) NewData - FROM GRIDS G1 - JOIN @Children NN on G1.ContentID = NN.NewContentID - JOIN RoUsages RO on NN.NewContentID = RO.ContentID where Len([ROID]) < 12) G2 ON GG.ContentID = G2.ContentID - WHERE Cast([Data] as nvarchar(max)) <> cast(G2.NewData as nvarchar(max)) - SET @RowsAffected = @@RowCount -END -UPDATE RON SET [ROID] = ROO.[ROID] - FROM RoUsages RON - JOIN @Children NN on RON.ContentID = NN.NewContentID - JOIN RoUsages ROO on CAST(RON.ROID as int) = ROO.RoUsageID - where Len(RON.[ROID]) < 12 ---print 'H ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- RoUsages are done - -- SELECT * From RoUsages where DTS = @DTS and UserID = @UserID - --- <<< Copy Transtions >>> --- Note that the inserted record has the 'TranType' field set to old transitionid. This is done --- so that the next step can replace the old transitionid with the new transitionid in the --- content record's transition tokens. The TranType gets reset after the content records are --- updated. --- Also note that the 'toid/rangeid' may need converted to newly copied ids or may not. If it's --- not a range, then it always is converted to new, if there is a new. If it's a range, both --- the toid & the rangeid must be new in order for the conversion to be correct. You cannot --- have part of the range pointing to the new and part of the range pointing to the original --- locations. - -INSERT INTO .[dbo].[Transitions] ([FromID],[ToID],[RangeID],[IsRange],[TranType],[Config],[DTS],[UserID]) - SELECT NNF.[NewContentID], - -- if both toid & range are null, use the original toid & rangeid - CASE WHEN NNT.[NewItemID] is null or NNR.[NewItemID] is null THEN [ToID] ELSE NNT.[NewItemID] END, - CASE WHEN NNT.[NewItemID] is null or NNR.[NewItemID] is null THEN [RangeID] ELSE NNR.[NewItemID] END, - [IsRange],[TransitionID],[Config],@DTS,@UserID - FROM .[dbo].[Transitions] TT - JOIN @Children NNF on TT.[FromID] = NNF.[ContentID] - LEFT JOIN @Children NNT on TT.[ToID] = NNT.[ItemID] - LEFT JOIN @Children NNR on TT.[RangeID] = NNR.[ItemID] ---print 'H1 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- -- Update content records for newly copied records to use correct TransitionIDs in the Transition tags -SET @RowsAffected=1 -WHILE @RowsAffected > 0 -BEGIN -UPDATE CC SET [TEXT] = C2.NewText - FROM CONTENTS CC - JOIN (SELECT C1.ContentID, .dbo.vefn_FixTransitionTextForCopy(C1.Text, TRO.TransitionID, TRO.TranType, TRO.[ToID], TRO.[RangeID],TR.[TransitionID], TR.[ToID], TR.[RangeID], .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType)) NewText - FROM CONTENTS C1 - JOIN @Children NN on C1.ContentID = NN.NewContentID - JOIN Transitions TR on NN.NewContentID = TR.FromID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID) C2 ON CC.ContentID = C2.ContentID - WHERE [TEXT] <> C2.NewText - SET @RowsAffected = @@RowCount -END ---print 'H2 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) ---set nocount off --- -- Update grid records for newly copied records to use correct TransitionIDs in the Transition tags -declare @grids table -( -contentid int primary key, -data xml -) -insert into @grids select gg.contentid,gg.data from GRIDS GG - where gg.contentid in (select nn.newcontentid from - @Children NN - JOIN Transitions TR on NN.NewContentID = TR.FromID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID) ---print 'H2.1 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) ---select * from @grids -SET @RowsAffected=1 -WHILE @RowsAffected > 0 -BEGIN -UPDATE GG SET [DATA] = G2.NewData - FROM @GRIDS GG - JOIN (SELECT G1.ContentID, .dbo.vefn_FixTransitionDataForCopy(G1.Data, TRO.TransitionID, TRO.TranType, TRO.[ToID], TRO.[RangeID],TR.[TransitionID], TR.[ToID], TR.[RangeID], .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType)) NewData - FROM @GRIDS G1 - JOIN @Children NN on G1.ContentID = NN.NewContentID - JOIN Transitions TR on NN.NewContentID = TR.FromID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID) G2 ON GG.ContentID = G2.ContentID - WHERE Cast([DATA] as nvarchar(max)) <> CAST(G2.NewData as nvarchar(max)) - SET @RowsAffected = @@RowCount -END ---print 'H2.2 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -update GG set data = g1.data from Grids gg join @grids g1 on gg.contentid = g1.contentid ---print 'H3 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) ---set nocount on --- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition whose transition format changes -INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT NN.NewItemID, @typeID,'Verify Transition Format',@UserID - FROM Transitions TR - JOIN @Children NN on TR.FromID = NN.NewContentID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID - WHERE .dbo.vefn_CompareTranFormat(NN.FormatID, NN.NewFormatID, TRO.TranType) <> 0 ---print 'H4 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) -UPDATE TR SET TR.[TranType] = .dbo.vefn_GetNewTranType(NN.FormatID, NN.NewFormatID, TRO.TranType) - FROM Transitions TR - JOIN @Children NN on TR.FromID = NN.NewContentID - JOIN Transitions TRO on TR.TranType = TRO.TransitionID ---print 'H5 ' + cast(datediff(s,@dts,getdate()) as varchar(100)) --- Transitions are done - -- SELECT * From Transitions where DTS = @DTS and UserID = @UserID ---print 'Z ' + cast(datediff(s,@dts,getdate()) as varchar(100)) ---foldouts fixing code -if exists (select * from contents where contentid in (select newcontentid from @children) and config like '%FloatingFoldout%') -begin - --insert into #mytemp - select cc.contentid,xsteps.value('@FloatingFoldout','int') oldfoldoutid,(select newitemid - from @children - where itemid = xsteps.value('@FloatingFoldout','int')) newfoldoutid,xconfig - into #mytemp - from (select *,cast(config as xml) xconfig from contents where contentid in (select newcontentid from @children)) cc - cross apply xconfig.nodes('Config/Step') tsteps(xsteps) - --build @cmd string - declare @cmd nvarchar(max) - declare cmds cursor for - select distinct 'update #mytemp set xconfig.modify(''replace value of (Config/Step/@FloatingFoldout)[1] with "' - + cast(newfoldoutid as varchar(10)) - + '"'') where xconfig.value(''(Config/Step/@FloatingFoldout)[1]'',''int'') = ' - + cast(oldfoldoutid as varchar(10)) - from #mytemp - --execute cursor over rows - open cmds - fetch next from cmds into @cmd - while @@fetch_status = 0 - begin - exec sp_executesql @cmd - fetch next from cmds into @cmd - end - close cmds - deallocate cmds - --actually update contents - update cc set config = cast(xconfig as varchar(max)) from contents cc join #mytemp mt on cc.contentid = mt.contentid - --get rid of #mytemp - drop table #mytemp -end ---end foldouts fixing code ---section start -DECLARE @NewContentID int -Select @NewContentID = NewContentID from @Children where ItemID = @StartItemID -DECLARE @Config varchar(max) -DECLARE @XConfig xml -select @Config = config from contents where contentid = @NewContentID -select @XConfig = cast(@Config as xml) -if @Config like '%SectionStart%' begin - DECLARE @SectionStart int - select @SectionStart = xproc.value('@SectionStart','int') from @xconfig.nodes('Config/Procedure') tproc(xproc) - DECLARE @NewSectionStart int - select @NewSectionStart = newitemid from @children where itemid = @SectionStart - DECLARE @cmd2 nvarchar(max) - set @cmd2 = ' - declare @XConfig xml; - set @XConfig = cast(''' + @Config + ''' as xml); - set @XConfig.modify(''replace value of (Config/Procedure/@SectionStart)[1] with "' + cast(@NewSectionStart as nvarchar(10)) + '"''); - update contents set config = cast(@XConfig as varchar(max)) where contentid = ' + cast(@NewContentID as nvarchar(10)) + ';' - exec sp_executesql @cmd2 -end ---end section start - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -go --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: CopyItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: CopyItemAndChildren Error on Creation' -GO -Delete From Formats where name like 'WPS%' -PRINT 'Kewaunee formats removed' -GO - -/****** Object: StoredProcedure [CopyItemAndChildren] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DeleteItemAndChildren]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [DeleteItemAndChildren]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[DeleteItemAndChildren] -( - @ItemID int, - @UserID AS VARCHAR(100) -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - declare @DeleteID int - DECLARE @ContentID AS INT - DECLARE @NextItemID AS INT - DECLARE @PreviousItemID AS INT - DECLARE @ExternalChildCount AS INT - DECLARE @ExternalCount AS INT - DECLARE @Path AS VARCHAR(MAX) - DECLARE @Children AS TABLE - ( - ItemID INT PRIMARY KEY, - ContentID INT - ) - DECLARE @ExternalTrans TABLE - ( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL - ) - SET NOCOUNT ON - SELECT @ContentID = ContentID, @PreviousItemID = PreviousID FROM Items WHERE ItemID = @ItemID - SELECT @NextItemID = ItemID FROM Items WHERE PreviousID = @ItemID - SELECT @ExternalCount = count(*) FROM vefn_FindExternalTransitions(@ItemID) where rangeid = toid or toid = @ItemID - SELECT @ExternalChildCount = count(*) FROM vefn_FindExternalChildTransitions(@ItemID) - SET @Path = [dbo].[ve_GetShortPath](@ItemID) - - IF @ExternalCount > 0 AND @NextItemID is null - BEGIN - RAISERROR ('###Cannot Delete Item###Step %d has External Transitions and has no next step - (%s)',16,1,@ItemID,@Path) - RETURN - END - - IF @ExternalChildCount > 0 - BEGIN - RAISERROR ('###Cannot Delete Item###Step %d has External Transitions to it''s children - (%s)',16,1,@ItemID,@Path) - RETURN - END - --deletelog - INSERT INTO DeleteLog (UserID) values (@UserID) - Select @DeleteID = SCOPE_IDENTITY() - --end deletelog - -- Get list of Children - INSERT INTO @Children SELECT * FROM vefn_ChildItems(@ItemID) - -- UPDATE PreviousID in Items WHERE ItemID = @NextItemID - UPDATE Items SET PreviousID = @PreviousItemID WHERE ItemID=@NextItemID - -- UPDATE DocVersion - UPDATE DocVersions SET ItemID=@NextItemID where ItemID = @ItemID - -- UPDATE Parts - IF @NextItemID is not NULL -- Remove Part Record - BEGIN - UPDATE PARTS SET ItemID = @NextItemID where ItemID=@ItemID - END - ELSE - BEGIN - DELETE FROM Parts WHERE ItemID=@ItemID - END - -- Get external transitions that point to the specified Item - -- These will need to be adjusted to point to the next Item. - INSERT INTO @ExternalTrans SELECT * FROM vefn_FindExternalTransitions(@ItemID); - DECLARE @typeID int -- AnnotationType - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add 'Verification Required' annotions for transtions that point to different step - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where ItemID in (SELECT FromItemID FROM @ExternalTrans) - -- Update content records for the transitions - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@NextItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID != @ItemID or RangeID = ToID) - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ItemID,@PreviousItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID = @ItemID and RangeID != ToID) - -- Update transitions that point to @ItemID to Point to @NextItemID - UPDATE TRANSITIONS - SET ToID = case when ToID = @ItemID then @NextItemID else ToID END, - RangeID = case when RangeID = @ItemID then @NextItemID else RangeID END - WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID != @ItemID or RangeID = ToID) - UPDATE TRANSITIONS - SET ToID = case when ToID = @ItemID then @NextItemID else ToID END, - RangeID = case when RangeID = @ItemID then @PreviousItemID else RangeID END - WHERE TransitionID in(Select TransitionID from @ExternalTrans where RangeID = @ItemID and RangeID != ToID) - -- Delete Annotations for @ItemID and children - DELETE from Annotations where ItemID in(Select ItemID from @Children) - -- Delete Details associated with @ContentID and children - DELETE from Details where ContentID in(Select ContentID from @Children) - -- Delete Grids associated with @ContentID and children - DELETE from Grids where ContentID in(Select ContentID from @Children) - -- Delete Images associated with @ContentID and children - DELETE from Images where ContentID in(Select ContentID from @Children) - -- Delete Entries associated with @ContentID and children - DELETE from Entries where ContentID in(Select ContentID from @Children) - -- Delete ROUsages associated with @ContentID and children - DELETE from RoUsages where ContentID in(Select ContentID from @Children) - -- Delete ZTransitions records associated with @ContentID and children - DELETE FROM ZTransitions where TransitionID - in(SELECT TransitionID from Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID) - -- Delete Transitions associated with @ContentID and children - DELETE FROM Transitions where FromID in(SELECT ContentID FROM @Children) or FromID = @ContentID - -- Delete Parts associated with @ContentID and children - DELETE from Parts where ContentID in(Select ContentID from @Children) - -- Delete ZContents associated with @ContentID and children - DELETE from ZContents where ContentID in(Select ContentID from @Children) - -- Disconnect Items from Each Other - DELETE from Items where ItemID in(Select ItemID from @Children) and PreviousID Is Not Null - -- Disconnect Items to be deleted from each other - Update Items set PreviousID = null where ItemID in (Select ItemID from @Children) and PreviousID Is Not Null - -- Delete Item Records - DELETE from Items where ItemID in(Select ItemID from @Children) - -- DELETE Contents - DELETE from Contents where ContentID in(Select ContentID from @Children) - --purge deletelog - DELETE from DeleteLog where DeleteID = @DeleteID - --end purge deletelog - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: DeleteItemAndChildren Succeeded' -ELSE PRINT 'Procedure Creation: DeleteItemAndChildren Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FixTransitionDataForCopy] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixTransitionDataForCopy]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FixTransitionDataForCopy]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FixTransitionDataForCopy] -(@data XML,@TransitionID int,@TranType int,@OldToID int,@OldRangeID int, @NewID int, @NewToID int, @NewRangeID int, @NewTranType int) -RETURNS XML -WITH EXECUTE AS OWNER -AS -BEGIN - - -- Build Search String and Replace String - DECLARE @offset int - DECLARE @lookFor nvarchar(MAX) - DECLARE @replaceWith nvarchar(MAX) - DECLARE @text nvarchar(MAX) - SET @text = Cast(@data as nvarchar(max)) - SET @lookFor = '#Link:Transition:' + ltrim(str(@TranType)) + ' ' + ltrim(str(@TransitionID)) - SET @offset = CHARINDEX(@lookFor,@text) - if(@offset = 0) - BEGIN - - SET @lookFor = '#Link:TransitionRange:' + ltrim(str(@TranType)) + ' ' + ltrim(str(@TransitionID)) - SET @offset = CHARINDEX(@lookFor,@text) - SET @replaceWith = '#Link:TransitionRange:' + ltrim(str(@NewTranType)) + ' ' + ltrim(str(@NewID)) - + ' ' + ltrim(str(@NewToID)) + ' ' + ltrim(str(@NewRangeID)) - SET @lookFor = @lookFor + ' ' + ltrim(str(@OldToID)) + ' ' + ltrim(str(@OldRangeID)) - END - ELSE - BEGIN - SET @replaceWith = '#Link:Transition:' + ltrim(str(@NewTranType)) + ' ' + ltrim(str(@NewID)) - + ' ' + ltrim(str(@NewToID)) - SET @lookFor = @lookFor + ' ' + ltrim(str(@OldToID)) - END - return Cast(replace(@text,@lookFor,@replaceWith) as XML) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FixTransitionDataForCopy Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_FixTransitionDataForCopy Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FixROData] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FixROData]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_FixROData]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create FUNCTION [dbo].[vefn_FixROData] -(@data XML,@ROUsageID int,@NewROUsageID int) -RETURNS XML -WITH EXECUTE AS OWNER -AS -BEGIN - -- Build Search String and Replace String - DECLARE @lookFor varchar(MAX) - DECLARE @replaceWith varchar(MAX) - SET @lookFor = '#Link:ReferencedObject:' + ltrim(str(@ROUsageID)) + ' ' - SET @replaceWith = '#Link:ReferencedObject:' + ltrim(str(@NewROUsageID)) + ' ' - return CAST(replace(CAST(@data AS NVarChar(max)),@lookFor,@replaceWith) AS XML) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_FixROData Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_FixROData Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_GetVersionProcedureItems] Script Date: 1/5/2015 3:58:49 PM ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionProcedureItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetVersionProcedureItems]; -GO -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO - -/* -Select * from vefn_GetVersionProcedureItems('') where procid = 63589 -Select * from vefn_GetVersionProcedureItems('1') where procid = 63589 -Select * from vefn_GetVersionProcedureItems('4') where procid = 63589 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetVersionProcedureItems](@DocVersionList varchar(MAX)) -RETURNS @VersionItems TABLE -( - VersionID int, - ProcID int, - ItemID int primary key, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - BEGIN - with Itemz([VersionID], ProcID, [ItemID], [ContentID]) as - (Select DV.VersionID, DV.ItemID ProcID, [I].[ItemID], [I].[ContentID] - FROM [Items] I - JOIN vefn_DocVersionSplit(@DocVersionList) DV - ON I.[ItemID] = DV.[ItemID] - Union All - -- Children - select Z.VersionID, Z.ProcID, I.[ItemID], I.[ContentID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - Union All - -- Siblings - select Z.VersionID, case when z.ProcID = z.ItemID then I.ItemID else Z.ProcID end ProcID, I.[ItemID], I.[ContentID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - ) - insert into @VersionItems - select VersionID, ProcID, [ItemID], [ContentID] - from ItemZ I - --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) - OPTION (MAXRECURSION 10000) - END -RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction vefn_GetVersionProcedureItems Succeeded' -ELSE PRINT 'TableFunction vefn_GetVersionProcedureItems Error on Creation' - -/****** Object: StoredProcedure [getTransitionSearchResults] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_SearchTransitions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [dbo].[vesp_SearchTransitions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/****** Object: StoredProcedure [dbo].[vesp_SearchTransitions] Script Date: 1/7/2015 6:15:17 PM ******/ -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO - -CREATE PROCEDURE [dbo].[vesp_SearchTransitions] -( - @DocVersionList varchar(max), - @TranType int, - @TranCategory varchar(20) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @itmp table - ( - vid int, - pid int, - iid int primary key, - cid int - ) - declare @ctmp table - ( - vid int, - pid int, - iid int, - cid int primary key - ) - declare @ttmp table - ( - itemid int, - dvpath varchar(max) - ) - insert into @itmp select * from vefn_getversionprocedureitems(@DocVersionList) - insert into @ctmp select * from @itmp - if @TranType = -1 and @TranCategory = '' begin - insert into @ttmp - select ii.ItemID,dv.DVPath - from vefn_DocVersionSplit(@DocVersionList) dv - join @ctmp ct on dv.VersionID = ct.vid - join Items ii on ct.cid = ii.ContentID - join Transitions tt on ii.ContentID = tt.FromID - end else if @TranType > -1 and @TranCategory = '' begin - insert into @ttmp - select ii.ItemID,dv.DVPath - from vefn_DocVersionSplit(@DocVersionList) dv - join @ctmp ct on dv.VersionID = ct.vid - join Items ii on ct.cid = ii.ContentID - join Transitions tt on ii.ContentID = tt.FromID - where tt.TranType = @TranType - end else if @TranType = -1 and @TranCategory != '' begin - insert into @ttmp - select ii.ItemID,dv.DVPath - from vefn_DocVersionSplit(@DocVersionList) dv - join @ctmp ct on dv.VersionID = ct.vid - join Items ii on ct.cid = ii.ContentID - join Transitions tt on ii.ContentID = tt.FromID - join @itmp it on tt.ToID = it.iid - where case when it.vid = ct.vid then case when it.pid = ct.pid then 'Internal' else 'External' end else 'Outside' end = @TranCategory - end else begin - insert into @ttmp - select ii.ItemID,dv.DVPath - from vefn_DocVersionSplit(@DocVersionList) dv - join @ctmp ct on dv.VersionID = ct.vid - join Items ii on ct.cid = ii.ContentID - join Transitions tt on ii.ContentID = tt.FromID - join @itmp it on tt.ToID = it.iid - where tt.TranType = @TranType and case when it.vid = ct.vid then case when it.pid = ct.pid then 'Internal' else 'External' end else 'Outside' end = @TranCategory - end - SELECT - tt.dvpath,I.[ItemID],I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged], - C.[Number],C.[Text],C.[Type],C.[FormatID],C.[Config],C.[DTS] [cDTS],C.[UserID] [cUserID],C.[LastChanged] [cLastChanged], - (SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=[I].[ItemID]) [AnnotationCount], - (SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=[I].[ItemID]) [DocVersionCount], - (SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=[I].[ItemID]) [NextCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=[I].[ItemID]) [PartCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=[I].[ItemID]) [Transition_RangeIDCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=[I].[ItemID]) [Transition_ToIDCount], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[C].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[C].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[C].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[C].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[C].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[C].[ContentID]) [cPartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[C].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[C].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[C].[ContentID]) [ZContentCount] - FROM [Items] I - join @ttmp tt on I.ItemID = tt.itemid - join Contents C on C.ContentID = I.ContentID - RETURN -END -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_SearchTransitions Succeeded' -ELSE PRINT 'Procedure Creation: vesp_SearchTransitions Error on Creation' -GO - -/****** Object: TableFunction [vefn_GetVersionFormatSections] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetVersionFormatSections]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetVersionFormatSections]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetVersionFormatSections](@DocVersionList varchar(MAX)) -RETURNS @VersionItems TABLE -( - VersionID int, - ItemID int, - ContentID int primary key, - FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - BEGIN - with Itemz([VersionID], [ItemID], [ContentID], [FormatID], [ParentFormatID]) as - (Select DV.VersionID, [I].[ItemID], [I].[ContentID], - isnull(C.[FormatID],isnull(DV2.[FormatID],isnull(F.[FormatID],P.[FormatID]))), - isnull(DV2.[FormatID],isnull(F.[FormatID],P.[FormatID])) - FROM [Items] I - JOIN vefn_DocVersionSplit(@DocVersionList) DV ON I.[ItemID] = DV.[ItemID] - join docversions DV2 on DV.[VersionID] = DV2.[VersionID] - join folders F on DV2.[FolderID] = F.[FolderID] - join folders P on P.[FolderID] = F.[ParentID] - join Contents C on I.ContentID = C.ContentID - - Union All - -- Children - select Z.VersionID, I.[ItemID], I.[ContentID], isnull(C.[FormatID],Z.[FormatID]), Z.[FormatID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on I.ContentID = C.ContentID - where c.Type < 20000 - Union All - -- Siblings - select Z.VersionID, I.[ItemID], I.[ContentID], isnull(C.[FormatID],Z.[ParentFormatID]), Z.[ParentFormatID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on I.ContentID = C.ContentID - ) - insert into @VersionItems - select VersionID, [ItemID], [ContentID], [FormatID] - from ItemZ I - --Select * From rousages RU Where RU.ContentID in (Select ContentID from ItemZ) - OPTION (MAXRECURSION 10000) - END -RETURN -END -GO --- Display the status of func creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_GetVersionFormatSections Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_GetVersionFormatSections Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetFormatVersions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetFormatVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [dbo].[vesp_GetFormatVersions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/****** Object: StoredProcedure [dbo].[vesp_GetFormatVersions] Script Date: 1/7/2015 6:15:17 PM ******/ -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO -CREATE PROCEDURE vesp_GetFormatVersions -WITH EXECUTE AS OWNER -AS -BEGIN - select ff.Name + ' - ' + ff.Description Title,vfi.FormatID,vn.VersionID - from vefn_GetVersionNames() vn - join vefn_GetVersionFormatSections('') vfi on vn.VersionID = vfi.VersionID - join Formats ff on vfi.FormatID = ff.FormatID - group by ff.Name + ' - ' + ff.Description,vfi.formatid,vn.VersionID - return -END -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetFormatVersions Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetFormatVersions Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetTranTypesByFormatID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetTranTypesByFormatID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [dbo].[vesp_GetTranTypesByFormatID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/****** Object: StoredProcedure [dbo].[vesp_GetTranTypesByFormatID] Script Date: 1/7/2015 6:15:17 PM ******/ -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO -/* -vesp_GetTranTypesByFormatID 102 -*/ -CREATE PROCEDURE vesp_GetTranTypesByFormatID -( - @FormatID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @t1 table - ( - formatid int, - transindex int, - transmenu varchar(max) - ) - declare @t2 table - ( - transindex int, - formatid int - ) - insert into @t1 - select ff.formatid,r1.value('@Index','int') transindex, r1.value('@TransMenu','varchar(max)') transmenu - from Formats ff - cross apply ff.Data.nodes('//TransTypes') t1(r1) - where ff.FormatID = @FormatID - union - select ff.formatid,r1.value('@Index','int') transindex, r1.value('@TransMenu','varchar(max)') transmenu - from Formats ff - cross apply ff.Data.nodes('//TransTypes') t1(r1) - where ff.FormatID = 1 - insert into @t2 - select transindex,max(formatid) formatid from @t1 group by transindex - select t1.transindex,t1.transmenu - from @t1 t1 - join @t2 t2 on t1.formatid = t2.formatid and t1.transindex = t2.transindex - order by t1.transindex - RETURN -END -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetTranTypesByFormatID Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetTranTypesByFormatID Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetTransitionReportData] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetTransitionReportData]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [dbo].[vesp_GetTransitionReportData]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -/****** Object: StoredProcedure [dbo].[vesp_GetTransitionReportData] Script Date: 1/7/2015 6:15:17 PM ******/ -SET ANSI_NULLS ON -GO - -SET QUOTED_IDENTIFIER ON -GO -/* -vesp_GetTransitionReportData 1,1 -*/ -CREATE PROCEDURE vesp_GetTransitionReportData -( - @VersionID int, - @ProcedureID int -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @itmp table - ( - vid int, - pid int, - iid int primary key, - cid int - ) - declare @ctmp table - ( - vid int, - pid int, - iid int, - cid int primary key - ) - declare @ttmp table - ( - tid int primary key - ) - insert into @itmp select * from vefn_getversionprocedureitems(@VersionID) - insert into @ctmp select * from @itmp - insert into @ttmp select tt.TransitionID from Transitions tt join @ctmp ct on tt.FromID = ct.cid join @itmp it on tt.ToID = it.iid - --internal - select 1 level,tt.*, - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] - from Transitions tt - join @ttmp tp on tt.TransitionID = tp.tid - join @ctmp ct on tt.FromID = ct.cid - join @itmp it on tt.ToID = it.iid - where ct.vid = it.vid and ct.pid = @ProcedureID and it.pid = @ProcedureID - --external from - union - select 2 level,tt.*, - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] - from Transitions tt - join @ttmp tp on tt.TransitionID = tp.tid - join @ctmp ct on tt.FromID = ct.cid - join @itmp it on tt.ToID = it.iid - where ct.pid = @ProcedureID and it.pid != @ProcedureID - --external to - union - select 3 level,tt.*, - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] - from Transitions tt - join @ttmp tp on tt.TransitionID = tp.tid - join @ctmp ct on tt.FromID = ct.cid - join @itmp it on tt.ToID = it.iid - where ct.pid != @ProcedureID and it.pid = @ProcedureID - --outside from - union - select 4 level,tt.*, - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] - from Transitions tt - join @ttmp tp on tt.TransitionID = tp.tid - join @ctmp ct on tt.FromID = ct.cid - join Items ii on tt.ToID = ii.ItemID - where ct.pid = @ProcedureID and ii.ItemID not in (select iid from @itmp) - --outside to - union - select 5 level,tt.*, - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=tt.[TransitionID]) [ZTransitionCount] - from Transitions tt - join @ttmp tp on tt.TransitionID = tp.tid - join @itmp it on tt.ToID = it.iid - join Items ii on tt.FromID = ii.ContentID - where it.pid = @ProcedureID and ii.ContentID not in (select cid from @ctmp) - RETURN -END -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetTransitionReportData Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetTransitionReportData Error on Creation' -GO - - -/****** Object: StoredProcedure [PasteItemChild] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteItemChild]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [PasteItemChild]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2015 - Volian Enterprises, Inc. All rights reserved. - -Copies & Pastes into a level above the copied item, for example copied item is step pasted into a section. - -Example test: - -declare @NewItemID int -declare @dts datetime -set @newitemid = 0 -set @dts = getdate() -exec PasteItemChild 1493,484,20041,2,@dts,'KATHY',@NewItemID output - -*****************************************************************************/ - -CREATE PROCEDURE [dbo].[PasteItemChild] -( - @ItemID int=null, @StartItemID int=null, -- ItemID is destination, StartItemID is top of copy - @Type int=null, @FromType int=null, @DTS datetime, @UserID nvarchar(100), -- Type is step/section type for content record, fromtype is for parts - @NewItemID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - if exists (select * from tblitems where itemid = @ItemID and DeleteStatus !=0) - BEGIN - RAISERROR ('###Cannot Paste Step###This current step has been deleted in another session',16,1) - RETURN - END - -- First make a copy of the input StartItemID - -- DestFormatID is the formatid for the destination parent's format - DECLARE @DestFormatID int - SET @DestFormatID = .dbo.vefn_GetInheritedFormat(@ItemID, 0) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - -- print 'testing PasteItemChild 1 ' + cast(dbo.ve_GetTransitionErrorCount() as varchar(20)) - DECLARE @ChildID int, @ContentID int, @ParentContentID int, @LastChanged timestamp - , @newLastChanged timestamp, @Error int, @Rowcount int, @ChildDeleted int - SELECT @ChildID = pp.[ItemID],@ParentContentID = ii.ContentID, @LastChanged = pp.LastChanged - FROM [ITEMS] ii - LEFT JOIN [PARTS] pp on pp.ContentID=ii.ContentID and pp.FromType=@FromType - WHERE ii.[ItemID]=@ItemID - IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[tblParts]') AND OBJECTPROPERTY(id,N'IsTable') = 1) - BEGIN - SELECT @ChildDeleted = pp.[ItemID],@ParentContentID = ii.ContentID, @LastChanged = pp.LastChanged - FROM [ITEMS] ii - LEFT JOIN [tblPARTS] pp on pp.ContentID=ii.ContentID and pp.FromType=@FromType - WHERE ii.[ItemID]=@ItemID and pp.DeleteStatus > 0 - END - -- No existing child - Add Parts record. Note that don't need to update any transition records if no existing children - IF @ChildID is null - BEGIN - IF @ChildDeleted is not null - DELETE FROM [tblParts] WHERE ItemID = @ChildDeleted - EXECUTE AddPart @ParentContentID, @FromType, @newItemID, @DTS, @UserID, @newLastChanged output - END - ELSE -- Children exist: Update existing Parts record and adjust transition records that may have pointed to 1st child. - BEGIN - EXECUTE UpdatePart @ParentContentID, @FromType, @newItemID, @DTS, @UserID, @LastChanged, @newLastChanged output - UPDATE [Items] SET [PreviousID]=@newItemID WHERE [ItemID]=@ChildID - - -- Update content records for the transitions, this only fixes the link portion. Code fixes the text. - Update CC - Set Text = DBO.vefn_FixTransitionText(Text,TT.TransitionID,TT.TranType,TT.ToID,TT.RangeID,@ChildID,@newItemID) - From CONTENTS CC - JOIN Transitions TT ON TT.FromID = CC.ContentID - WHERE TT.ToID = @ChildID OR TT.RangeID = @ChildID - -- Update transitions that pointed to @ItemID to point to @newItemID - Update TRANSITIONS - Set ToID = CASE ToID WHEN @ChildID THEN @newItemID ELSE ToID END, - RangeID = CASE RangeID WHEN @ChildID THEN @newItemID ELSE RangeID END - WHERE ToID = @ChildID OR RangeID = @ChildID - END - -- Add 'Verification Required' AnnotationType - DECLARE @typeID int - SELECT @typeID = TypeID from AnnotationTypes where Name = 'Verification Required' - IF(@typeID IS NULL) - BEGIN - INSERT INTO [AnnotationTypes] ([Name],[UserID]) VALUES ('Verification Required','Volian') - SELECT @typeID = SCOPE_IDENTITY() - END - -- Add "Verification Required" Annotation for each Transition that points to @newItemID or @NextID - -- I don't expect to see any transitions that point to @ChildID. They should have changed in - -- the update above to point to @newItemID. This is here for consistency with the other insert - -- stored procedures - INSERT INTO [Annotations] ([ItemID],[TypeID],[SearchText],[UserID]) - SELECT ItemID, @typeID,'Verify Transition Destination',@UserID - FROM Items where CONTENTID in (SELECT FromID FROM TRANSITIONS - where ToID IN(@ChildID,@newItemID) OR RangeID IN(@ChildID,@newItemID)) - -- Transition Text gets updated in ItemInsertExt.cs - IF( @@TRANCOUNT > 0 ) COMMIT - PRINT 'Child Added ' + ltrim(str(@newItemID)) - EXECUTE GetItem @newItemID - delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) - delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteItemChild Succeeded' -ELSE PRINT 'Procedure Creation: PasteItemChild Error on Creation' -GO - - -/****** Object: StoredProcedure [PasteDocVersionChild] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[PasteDocVersionChild]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [PasteDocVersionChild]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2014 - Volian Enterprises, Inc. All rights reserved. - -Copies & Pastes into a docversion that does NOT have any existing procedures. - -Example test: - -declare @NewItemID int -declare @dts datetime -set @newitemid = 0 -set @dts = getdate() -exec PasteDocVersionChild 5,30,@dts,'KATHY',@NewItemID output - -*****************************************************************************/ -CREATE PROCEDURE [dbo].[PasteDocVersionChild] -( - @VersionID int=null, @StartItemID int=null, -- VersionID is destination (docversion), StartItemID is top of copy (i.e. procedure) - @DTS datetime, @UserID nvarchar(100), - @ThisVersionID int output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - if not exists (select * from DocVersions where versionid = @VersionID) - BEGIN - RAISERROR ('###Cannot Paste Procedure###This document version has been deleted in another session',16,1) - RETURN - END - -- First make a copy of the input StartItemID (Procedure) - -- DestFormatID is the formatid for the destination parent's format - DECLARE @NewItemID int - DECLARE @DestFormatID int - SET @ThisVersionID = @VersionID - SET @DestFormatID = .dbo.vefn_GetDocVersionInheritedFormat(@VersionID) - EXECUTE CopyItemAndChildren @StartItemID, @DestFormatID, @UserID, @NewItemID OUTPUT - UPDATE [DOCVERSIONS] SET [ItemID] = @NewItemID where [VersionID]=@VersionID - IF( @@TRANCOUNT > 0 ) COMMIT - PRINT 'Child Added ' + ltrim(str(@newItemID)) - EXECUTE GetDocVersion @ThisVersionID - delete from itemaudits where itemid in (select itemid from vefn_ChildItems(@newitemid)) - delete from contentaudits where contentid in (select contentid from vefn_ChildItems(@newitemid)) -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: PasteDocVersionChild Succeeded' -ELSE PRINT 'Procedure Creation: PasteDocVersionChild Error on Creation' -GO - - -/****** Object: StoredProcedure [vefn_GetDocVersionInheritedFormat] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetDocVersionInheritedFormat]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetDocVersionInheritedFormat]; -GO - -CREATE FUNCTION [dbo].[vefn_GetDocVersionInheritedFormat] (@VersionID int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @FormatID as int - -- First get format for the input doc version - begin - with Itemz([Level], [VersionID], [FolderID], [ParentID], [FormatID]) as ( - -- DocVersion From Item - select 0 [Level], DV.VersionID, DV.FolderID, null, DV.FormatID - from DocVersions DV - where [VersionID] = @VersionID - Union All - -- Folders - select [Level] + 1, null, FF.ParentID, FF.FolderID, FF.FormatID - from Itemz Z - join Folders FF on FF.FolderID = Z.ParentID and FF.ParentID <> FF.FolderID - where Z.FormatID is null - ) - Select @FormatID = FormatID from Itemz ZZ Where FormatID is not null - OPTION (MAXRECURSION 10000) - RETURN @FormatID - END -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetDocVersionInheritedFormat Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_GetDocVersionInheritedFormat Error on Creation' -GO - -/*********the following funcion is for debugging copy/paste where transition text in content records does not get updated */ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[ve_GetTransitionErrorCount]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [ve_GetTransitionErrorCount]; -/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 03/20/2012 17:50:44 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/* -select dbo.ve_GetTransitionErrorCount () -print 'testing ' + cast(dbo.ve_GetTransitionErrorCount() as varchar(20)) -*/ - -CREATE FUNCTION [dbo].[ve_GetTransitionErrorCount] () RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN -DECLARE @Count int -select @Count = count(*) from ( -select dbo.ve_GetShortPathFromContentId(contentid) location, * from ( -select contentid, text, tt.*, -case when text like '%'+ case when tt.toid = tt.rangeid and tt.IsRange = 0 -then -'#Link:Transition:' + cast(TranType as nvarchar(2)) + -' ' + cast(TransitionID as nvarchar(10)) + ' ' + cast(ToID as nvarchar(10)) + '%' -else -'#Link:TransitionRange:' + cast(TranType as nvarchar(2)) + -' ' + cast(TransitionID as nvarchar(10)) + ' ' + cast(ToID as nvarchar(10)) + ' ' + cast(RangeID as nvarchar(10))+ '%' -end then 'matches' else 'different' end ContentMatchesTrans, -case when text like '%'+ -'#Link:TransitionRange:' + cast(TranType as nvarchar(2)) + -' ' + cast(TransitionID as nvarchar(10)) + ' ' + cast(ToID as nvarchar(10)) + ' ' + cast(RangeID as nvarchar(10))+ '%' -then 'matches' else 'different' end ContentMatchesRangeTrans -from Contents cc -join transitions tt on tt.fromid = cc.contentid) mm -where ContentMatchesTrans = 'different') mm -return @Count -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: ve_GetTransitionErrorCount Succeeded' -ELSE PRINT 'ScalarFunction Creation: ve_GetTransitionErrorCount Error on Creation' -GO - ---added by JCB for storing procedure xml for approved version ---ALTER TABLE Versions add ApprovedXML if it does not exist -IF COL_LENGTH('Versions','ApprovedXML') IS NULL - ALTER TABLE Versions ADD [ApprovedXML] [NVARCHAR](MAX) NULL; -GO - -/****** Object: StoredProcedure [addVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addVersion] - -( - @RevisionID int, - @StageID int, - @PDF varbinary(MAX)=null, - @SummaryPDF varbinary(MAX)=null, - @ApprovedXML nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(200), - @newVersionID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Versions] - ( - [RevisionID], - [StageID], - [PDF], - [SummaryPDF], - [ApprovedXML], - [DTS], - [UserID] - ) - VALUES - ( - @RevisionID, - @StageID, - @PDF, - @SummaryPDF, - @ApprovedXML, - @DTS, - @UserID - ) - SELECT @newVersionID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Versions] WHERE [VersionID]=@newVersionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addVersion Succeeded' -ELSE PRINT 'Procedure Creation: addVersion Error on Creation' -GO - -/****** Object: StoredProcedure [getVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getVersion] - -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [VersionID], - [RevisionID], - [StageID], - [PDF], - [SummaryPDF], - [ApprovedXML], - [DTS], - [UserID], - [LastChanged] - FROM [Versions] - WHERE [VersionID]=@VersionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getVersion Succeeded' -ELSE PRINT 'Procedure Creation: getVersion Error on Creation' -GO - -/****** Object: StoredProcedure [getVersions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getVersions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getVersions] - -WITH EXECUTE AS OWNER -AS - SELECT - [VersionID], - [RevisionID], - [StageID], - [PDF], - [SummaryPDF], - [ApprovedXML], - [DTS], - [UserID], - [LastChanged] - FROM [Versions] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getVersions Succeeded' -ELSE PRINT 'Procedure Creation: getVersions Error on Creation' -GO - -/****** Object: StoredProcedure [getVersionsByRevisionID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersionsByRevisionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getVersionsByRevisionID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getVersionsByRevisionID] - -( - @RevisionID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Versions].[VersionID], - [Versions].[RevisionID], - [Versions].[StageID], - [Versions].[PDF], - [Versions].[SummaryPDF], - [Versions].[ApprovedXML], - [Versions].[DTS], - [Versions].[UserID], - [Versions].[LastChanged], - [Stages].[Name] [Stage_Name], - [Stages].[Description] [Stage_Description], - [Stages].[IsApproved] [Stage_IsApproved], - [Stages].[DTS] [Stage_DTS], - [Stages].[UserID] [Stage_UserID] - FROM [Versions] - JOIN [Stages] ON - [Stages].[StageID]=[Versions].[StageID] - WHERE - [Versions].[RevisionID]=@RevisionID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getVersionsByRevisionID Succeeded' -ELSE PRINT 'Procedure Creation: getVersionsByRevisionID Error on Creation' -GO - -/****** Object: StoredProcedure [getVersionsByStageID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersionsByStageID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getVersionsByStageID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getVersionsByStageID] - -( - @StageID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Versions].[VersionID], - [Versions].[RevisionID], - [Versions].[StageID], - [Versions].[PDF], - [Versions].[SummaryPDF], - [Versions].[ApprovedXML], - [Versions].[DTS], - [Versions].[UserID], - [Versions].[LastChanged], - [Revisions].[ItemID] [Revision_ItemID], - [Revisions].[TypeID] [Revision_TypeID], - [Revisions].[RevisionNumber] [Revision_RevisionNumber], - [Revisions].[RevisionDate] [Revision_RevisionDate], - [Revisions].[Notes] [Revision_Notes], - [Revisions].[Config] [Revision_Config], - [Revisions].[DTS] [Revision_DTS], - [Revisions].[UserID] [Revision_UserID] - FROM [Versions] - JOIN [Revisions] ON - [Revisions].[RevisionID]=[Versions].[RevisionID] - WHERE - [Versions].[StageID]=@StageID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getVersionsByStageID Succeeded' -ELSE PRINT 'Procedure Creation: getVersionsByStageID Error on Creation' -GO - -/****** Object: StoredProcedure [updateVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateVersion] - -( - @VersionID int, - @RevisionID int, - @StageID int, - @PDF varbinary(MAX)=null, - @SummaryPDF varbinary(MAX)=null, - @ApprovedXML nvarchar(MAX)=null, - @DTS datetime, - @UserID nvarchar(200), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Versions] - SET - [RevisionID]=@RevisionID, - [StageID]=@StageID, - [PDF]=@PDF, - [SummaryPDF]=@SummaryPDF, - [ApprovedXML]=@ApprovedXML, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [VersionID]=@VersionID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Versions] WHERE [VersionID]=@VersionID) - RAISERROR('Version record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Version has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Versions] WHERE [VersionID]=@VersionID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateVersion Succeeded' -ELSE PRINT 'Procedure Creation: updateVersion Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetDisconnectedItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetDisconnectedItems]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_GetDisconnectedItems] ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - --- select * from vefn_GetDisconnectedItems() - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION [dbo].[vefn_GetDisconnectedItems]() -RETURNS @DiscItems TABLE -( - ItemID int primary Key, - ContentID int, - UNIQUE (ContentID) -) -WITH EXECUTE AS OWNER -AS -BEGIN - declare @UsedItems Table - ( itemid int primary key, contentid int) - insert into @UsedItems - Select ItemID, ContentID from vefn_GetVersionItems('') - insert into @DiscItems - select itemid,ii.contentid from ( - Select ItemID,ii.ContentID from Items II - where ItemID not in(select ItemID from @UsedItems)) ii - Join Contents CC ON CC.ContentID = II.ContentID - And CC.Type is not null - RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetDisconnectedItems] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetDisconnectedItems] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_TransitionsToDisconnected]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_TransitionsToDisconnected]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_TransitionsToDisconnected] ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - --- select * from vefn_TransitionsToDisconnected('1') - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION dbo.vefn_TransitionsToDisconnected(@DocVersionList nvarchar(MAX)) -RETURNS @Transitions TABLE -( - [TransitionID] int primary key - ,[FromID] int - ,[ToID] int - ,[RangeID] int - ,[IsRange] int - ,[TranType] int - ,[Config] nvarchar(max) - ,[DTS] datetime - ,[UserID] nvarchar(100) - ,UNIQUE(FromID,TransitionID) - ,UNIQUE(ToID,TransitionID) -) -WITH EXECUTE AS OWNER -AS -BEGIN - insert into @Transitions - select [TransitionID],[FromID],[ToID],[RangeID],[IsRange],[TranType],[Config],[DTS],[UserID] - from Transitions tt - join vefn_GetVersionItems(@DocVersionList) vi on tt.FromID = vi.ContentID - join vefn_GetDisconnectedItems() di on tt.ToID = di.ItemID - RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_TransitionsToDisconnected] Succeeded' -ELSE PRINT 'TableFunction [vefn_TransitionsToDisconnected] Error on Creation' -GO - -/****** Object: StoredProcedure [getTransitionsToDisconnected] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransitionsToDisconnected]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getTransitionsToDisconnected]; -GO - -/* -exec getTransitionsToDisconnected -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getTransitionsToDisconnected] -( - @DocVersionList nvarchar(MAX) -) -WITH EXECUTE AS OWNER -AS - SELECT - TT.[TransitionID], - TT.[FromID], - TT.[ToID], - TT.[RangeID], - TT.[IsRange], - TT.[TranType], - TT.[Config], - TT.[DTS], - TT.[UserID], - TT.[LastChanged], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=TT.[TransitionID]) [ZTransitionCount] - from transitions tt - join vefn_TransitionsToDisconnected(@DocVersionList) td on tt.TransitionID = td.TransitionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getTransitionsToDisconnected Succeeded' -ELSE PRINT 'Procedure Creation: getTransitionsToDisconnected Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetNonEditableItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetNonEditableItems]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_GetNonEditableItems] ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - --- select * from vefn_GetNonEditableItems() - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION vefn_GetNonEditableItems() -RETURNS @NonEditItems TABLE -( - ItemID int primary Key, - ContentID int, - UNIQUE (ContentID) -) -WITH EXECUTE AS OWNER -AS -BEGIN - insert into @NonEditItems - select ii.ItemID,ah.ContentID - from - ( - select cast(Config as xml) xconfig,ContentID from Contents where ContentID in - ( - select p1.ContentID from Parts p1 - join Parts p2 on p1.ContentID = p2.ContentID - where p1.FromType = 2 and p2.FromType = 6 - ) - and Config like '%edit%' - ) ah - cross apply xconfig.nodes('//SubSection') tSubsection(xSubsection) - join Items ii on ah.ContentID = ii.ContentID - where isnull(xSubsection.value('@Edit','varchar(1)'),'N') = 'N' - RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetNonEditableItems] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetNonEditableItems] Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_TransitionsToNonEditable]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_TransitionsToNonEditable]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_TransitionsToNonEditable] ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - --- select * from vefn_TransitionsToNonEditable('1') - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2013 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ - -CREATE FUNCTION dbo.vefn_TransitionsToNonEditable(@DocVersionList nvarchar(MAX)) -RETURNS @Transitions TABLE -( - [TransitionID] int primary key - ,[FromID] int - ,[ToID] int - ,[RangeID] int - ,[IsRange] int - ,[TranType] int - ,[Config] nvarchar(max) - ,[DTS] datetime - ,[UserID] nvarchar(100) - ,UNIQUE(FromID,TransitionID) - ,UNIQUE(ToID,TransitionID) -) -WITH EXECUTE AS OWNER -AS -BEGIN - insert into @Transitions - select [TransitionID],[FromID],[ToID],[RangeID],[IsRange],[TranType],[Config],[DTS],[UserID] - from Transitions tt - join vefn_GetVersionItems(@DocVersionList) vi on tt.FromID = vi.ContentID - join vefn_GetNonEditableItems() di on tt.ToID in (select ItemID from vefn_StepChildItems(di.ItemID)) - RETURN -END -GO -IF (@@Error = 0) PRINT 'TableFunction [vefn_TransitionsToNonEditable] Succeeded' -ELSE PRINT 'TableFunction [vefn_TransitionsToNonEditable] Error on Creation' -GO - -/****** Object: StoredProcedure [getTransitionsToNonEditable] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransitionsToNonEditable]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getTransitionsToNonEditable]; -GO - -/* -exec getTransitionsToNonEditable '8' -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getTransitionsToNonEditable] -( - @DocVersionList nvarchar(MAX) -) -WITH EXECUTE AS OWNER -AS - SELECT - TT.[TransitionID], - TT.[FromID], - TT.[ToID], - TT.[RangeID], - TT.[IsRange], - TT.[TranType], - TT.[Config], - TT.[DTS], - TT.[UserID], - TT.[LastChanged], - (SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=TT.[TransitionID]) [ZTransitionCount] - from transitions tt - join vefn_TransitionsToNonEditable(@DocVersionList) td on tt.TransitionID = td.TransitionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getTransitionsToNonEditable Succeeded' -ELSE PRINT 'Procedure Creation: getTransitionsToNonEditable Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_StepChildItems] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_StepChildItems]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_StepChildItems]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_StepChildItems](@ItemID int) -RETURNS @Children TABLE -( - ItemID int PRIMARY KEY, - ContentID int -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [ItemID], [ContentID]) as ( - Select 0 [Level], [ItemID], [ContentID] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1, I.[ItemID], I.[ContentID] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID and (Z.Level > 0 or p.FromType = 6) - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] , I.[ItemID], I.[ContentID] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children select ItemID, ContentID from Itemz -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_StepChildItems Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_StepChildItems Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getJustStage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [getJustStage]; -GO -/****** Object: StoredProcedure [dbo].[getJustStage] ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -Create PROCEDURE [dbo].[getJustStage] -( - @StageID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [StageID], - [Name], - [Description], - [IsApproved], - [DTS], - [UserID], - [LastChanged] - --(SELECT COUNT(*) FROM [DROUsages] WHERE [DROUsages].[RODbID]=[RODbs].[RODbID]) [DROUsageCount], - --(SELECT COUNT(*) FROM [ROFsts] WHERE [ROFsts].[RODbID]=[RODbs].[RODbID]) [ROFstCount], - --(SELECT COUNT(*) FROM [ROImages] WHERE [ROImages].[RODbID]=[RODbs].[RODbID]) [ROImageCount], - --(SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[RODbID]=[RODbs].[RODbID]) [RoUsageCount] - FROM [Stages] - WHERE [StageID]=@StageID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getJustStage Succeeded' -ELSE PRINT 'Procedure Creation: getJustStage Error on Creation' -GO \ No newline at end of file diff --git a/PROMS/DataLoader/PROMStoAPPR.sql b/PROMS/DataLoader/PROMStoAPPR.sql deleted file mode 100644 index 34ce8a68..00000000 --- a/PROMS/DataLoader/PROMStoAPPR.sql +++ /dev/null @@ -1,3372 +0,0 @@ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[Checks]') AND OBJECTPROPERTY(id,N'IsTable') = 1) -ALTER TABLE [dbo].[Checks] DROP CONSTRAINT [FK_Checks_Revisions] -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[Versions]') AND OBJECTPROPERTY(id,N'IsTable') = 1) -ALTER TABLE [dbo].[Versions] DROP CONSTRAINT [FK_Versions_Stages] -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[Versions]') AND OBJECTPROPERTY(id,N'IsTable') = 1) -ALTER TABLE [dbo].[Versions] DROP CONSTRAINT [FK_Versions_Revisions] -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[Checks]') AND OBJECTPROPERTY(id,N'IsTable') = 1) -ALTER TABLE [dbo].[Checks] DROP CONSTRAINT [FK_Checks_Stages] -GO - -/****** Object: Table [dbo].[Stages] Script Date: 10/21/2011 15:04:48 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[Stages]') AND OBJECTPROPERTY(id,N'IsTable') = 1) - DROP TABLE [Stages]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE TABLE [dbo].[Stages]( - [StageID] [int] IDENTITY(1,1) NOT NULL, - [Name] [nvarchar](50) NOT NULL, - [Description] [nvarchar](200) NULL, - [IsApproved] [int] NOT NULL CONSTRAINT [DF_Stages_IsApproved] DEFAULT ((0)), - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Stages_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) NOT NULL CONSTRAINT [DF_Stages_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Stages] PRIMARY KEY CLUSTERED -( - [StageID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] - -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Stages', @level2type=N'COLUMN',@level2name=N'DTS' - --- Display the status of Table creation -IF (@@Error = 0) PRINT 'Table Creation: Stages Succeeded' -ELSE PRINT 'Table Creation: Stages Error on Creation' -GO - -/****** Object: Table [dbo].[Revisions] Script Date: 10/21/2011 15:06:44 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[Revisions]') AND OBJECTPROPERTY(id,N'IsTable') = 1) - DROP TABLE [Revisions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE TABLE [dbo].[Revisions]( - [RevisionID] [int] IDENTITY(1,1) NOT NULL, - [ItemID] [int] NOT NULL, - [TypeID] [int] NOT NULL CONSTRAINT [DF_Revisions_TypeID] DEFAULT ((1)), - [RevisionNumber] [nvarchar](50) NULL, - [RevisionDate] [datetime] NULL, - [Notes] [nvarchar](max) NULL, - [Config] [xml] NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Revisions_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) NOT NULL CONSTRAINT [DF_Revisions_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Revisions] PRIMARY KEY CLUSTERED -( - [RevisionID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Revisions', @level2type=N'COLUMN',@level2name=N'RevisionDate' -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Revisions', @level2type=N'COLUMN',@level2name=N'DTS' -GO - --- Display the status of Table creation -IF (@@Error = 0) PRINT 'Table Creation: Revisions Succeeded' -ELSE PRINT 'Table Creation: Revisions Error on Creation' -GO - -/****** Object: Table [dbo].[Checks] Script Date: 10/21/2011 15:07:45 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[Checks]') AND OBJECTPROPERTY(id,N'IsTable') = 1) - DROP TABLE [Checks]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE TABLE [dbo].[Checks]( - [CheckID] [int] IDENTITY(1,1) NOT NULL, - [RevisionID] [int] NOT NULL, - [StageID] [int] NOT NULL, - [ConsistencyChecks] [xml] NULL, - [DTS] [datetime] NOT NULL CONSTRAINT [DF_Checks_DTS] DEFAULT (getdate()), - [UserID] [nvarchar](100) NOT NULL CONSTRAINT [DF_Checks_UserID] DEFAULT (upper(suser_sname())), - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Checks] PRIMARY KEY CLUSTERED -( - [CheckID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Checks', @level2type=N'COLUMN',@level2name=N'DTS' -GO - -ALTER TABLE [dbo].[Checks] WITH CHECK ADD CONSTRAINT [FK_Checks_Revisions] FOREIGN KEY([RevisionID]) -REFERENCES [dbo].[Revisions] ([RevisionID]) -GO -ALTER TABLE [dbo].[Checks] CHECK CONSTRAINT [FK_Checks_Revisions] -GO -ALTER TABLE [dbo].[Checks] WITH CHECK ADD CONSTRAINT [FK_Checks_Stages] FOREIGN KEY([StageID]) -REFERENCES [dbo].[Stages] ([StageID]) -GO -ALTER TABLE [dbo].[Checks] CHECK CONSTRAINT [FK_Checks_Stages] - --- Display the status of Table creation -IF (@@Error = 0) PRINT 'Table Creation: Checks Succeeded' -ELSE PRINT 'Table Creation: Checks Error on Creation' -GO - -/****** Object: Table [dbo].[Versions] Script Date: 10/21/2011 15:09:15 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -SET ANSI_PADDING ON -GO -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[Versions]') AND OBJECTPROPERTY(id,N'IsTable') = 1) - DROP TABLE [Versions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE TABLE [dbo].[Versions]( - [VersionID] [int] IDENTITY(1,1) NOT NULL, - [RevisionID] [int] NOT NULL, - [StageID] [int] NOT NULL, - [PDF] [varbinary](max) NULL, - [SummaryPDF] [varbinary](max) NULL, - [DTS] [datetime] NOT NULL, - [UserID] [nvarchar](200) NOT NULL, - [LastChanged] [timestamp] NOT NULL, - CONSTRAINT [PK_Version] PRIMARY KEY CLUSTERED -( - [VersionID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -) ON [PRIMARY] -GO -SET ANSI_PADDING OFF -GO -EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'{datetime}' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Versions', @level2type=N'COLUMN',@level2name=N'DTS' -GO - -ALTER TABLE [dbo].[Versions] WITH CHECK ADD CONSTRAINT [FK_Versions_Revisions] FOREIGN KEY([RevisionID]) -REFERENCES [dbo].[Revisions] ([RevisionID]) -GO -ALTER TABLE [dbo].[Versions] CHECK CONSTRAINT [FK_Versions_Revisions] -GO -ALTER TABLE [dbo].[Versions] WITH CHECK ADD CONSTRAINT [FK_Versions_Stages] FOREIGN KEY([StageID]) -REFERENCES [dbo].[Stages] ([StageID]) -GO -ALTER TABLE [dbo].[Versions] CHECK CONSTRAINT [FK_Versions_Stages] - --- Display the status of Table creation -IF (@@Error = 0) PRINT 'Table Creation: Versions Succeeded' -ELSE PRINT 'Table Creation: Versions Error on Creation' -GO - - ---put in stage data -INSERT INTO [dbo].[Stages] ([Name],[Description],[IsApproved],[DTS],[UserID]) VALUES ('Input to review','',0,getdate(),'VOLIAN\BODINE') -GO -INSERT INTO [dbo].[Stages] ([Name],[Description],[IsApproved],[DTS],[UserID]) VALUES ('Initial review','',0,getdate(),'VOLIAN\BODINE') -GO -INSERT INTO [dbo].[Stages] ([Name],[Description],[IsApproved],[DTS],[UserID]) VALUES ('Final review','',0,getdate(),'VOLIAN\BODINE') -GO -INSERT INTO [dbo].[Stages] ([Name],[Description],[IsApproved],[DTS],[UserID]) VALUES ('Verification','',0,getdate(),'VOLIAN\BODINE') -GO -INSERT INTO [dbo].[Stages] ([Name],[Description],[IsApproved],[DTS],[UserID]) VALUES ('Validation','',0,getdate(),'VOLIAN\BODINE') -GO -INSERT INTO [dbo].[Stages] ([Name],[Description],[IsApproved],[DTS],[UserID]) VALUES ('Issued','',1,getdate(),'VOLIAN\BODINE') -GO -INSERT INTO [dbo].[Stages] ([Name],[Description],[IsApproved],[DTS],[UserID]) VALUES ('Published','',1,getdate(),'VOLIAN\BODINE') -GO -INSERT INTO [dbo].[Stages] ([Name],[Description],[IsApproved],[DTS],[UserID]) VALUES ('Approved','',1,getdate(),'VOLIAN\BODINE') -GO ---end put in stage data - -/****** Object: StoredProcedure [addCheck] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addCheck]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addCheck]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addCheck] - -( - @RevisionID int, - @StageID int, - @ConsistencyChecks xml=null, - @DTS datetime, - @UserID nvarchar(100), - @newCheckID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Checks] - ( - [RevisionID], - [StageID], - [ConsistencyChecks], - [DTS], - [UserID] - ) - VALUES - ( - @RevisionID, - @StageID, - @ConsistencyChecks, - @DTS, - @UserID - ) - SELECT @newCheckID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Checks] WHERE [CheckID]=@newCheckID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addCheck Succeeded' -ELSE PRINT 'Procedure Creation: addCheck Error on Creation' -GO - -/****** Object: StoredProcedure [addRevision] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addRevision]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addRevision]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addRevision] - -( - @ItemID int, - @TypeID int, - @RevisionNumber nvarchar(50)=null, - @RevisionDate datetime=null, - @Notes nvarchar(MAX)=null, - @Config xml=null, - @DTS datetime, - @UserID nvarchar(100), - @newRevisionID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Revisions] - ( - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID] - ) - VALUES - ( - @ItemID, - @TypeID, - @RevisionNumber, - @RevisionDate, - @Notes, - @Config, - @DTS, - @UserID - ) - SELECT @newRevisionID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Revisions] WHERE [RevisionID]=@newRevisionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addRevision Succeeded' -ELSE PRINT 'Procedure Creation: addRevision Error on Creation' -GO - -/****** Object: StoredProcedure [addStage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addStage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addStage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addStage] - -( - @Name nvarchar(50), - @Description nvarchar(200)=null, - @IsApproved int, - @DTS datetime, - @UserID nvarchar(100), - @newStageID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Stages] - ( - [Name], - [Description], - [IsApproved], - [DTS], - [UserID] - ) - VALUES - ( - @Name, - @Description, - @IsApproved, - @DTS, - @UserID - ) - SELECT @newStageID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Stages] WHERE [StageID]=@newStageID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addStage Succeeded' -ELSE PRINT 'Procedure Creation: addStage Error on Creation' -GO - -/****** Object: StoredProcedure [addVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [addVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[addVersion] - -( - @RevisionID int, - @StageID int, - @PDF varbinary(MAX)=null, - @SummaryPDF varbinary(MAX)=null, - @DTS datetime, - @UserID nvarchar(200), - @newVersionID int output, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - INSERT INTO [Versions] - ( - [RevisionID], - [StageID], - [PDF], - [SummaryPDF], - [DTS], - [UserID] - ) - VALUES - ( - @RevisionID, - @StageID, - @PDF, - @SummaryPDF, - @DTS, - @UserID - ) - SELECT @newVersionID= SCOPE_IDENTITY() - SELECT @newLastChanged=[LastChanged] - FROM [Versions] WHERE [VersionID]=@newVersionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: addVersion Succeeded' -ELSE PRINT 'Procedure Creation: addVersion Error on Creation' -GO - -/****** Object: StoredProcedure [deleteCheck] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteCheck]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteCheck]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteCheck] - -( - @CheckID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Checks] - WHERE [CheckID] = @CheckID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteCheck Succeeded' -ELSE PRINT 'Procedure Creation: deleteCheck Error on Creation' -GO - -/****** Object: StoredProcedure [deleteRevision] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteRevision]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteRevision]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteRevision] - -( - @RevisionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Checks] - WHERE [RevisionID]=@RevisionID - DELETE [Versions] - WHERE [RevisionID]=@RevisionID - DELETE [Revisions] - WHERE [RevisionID] = @RevisionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteRevision Succeeded' -ELSE PRINT 'Procedure Creation: deleteRevision Error on Creation' -GO - -/****** Object: StoredProcedure [deleteStage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteStage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteStage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteStage] - -( - @StageID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Checks] - WHERE [StageID]=@StageID - DELETE [Versions] - WHERE [StageID]=@StageID - DELETE [Stages] - WHERE [StageID] = @StageID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteStage Succeeded' -ELSE PRINT 'Procedure Creation: deleteStage Error on Creation' -GO - -/****** Object: StoredProcedure [deleteVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteVersion] - -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - DELETE [Versions] - WHERE [VersionID] = @VersionID - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteVersion Succeeded' -ELSE PRINT 'Procedure Creation: deleteVersion Error on Creation' -GO - -/****** Object: StoredProcedure [existsCheck] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsCheck]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsCheck]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsCheck] - -( - @CheckID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Checks] WHERE [CheckID]=@CheckID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsCheck Succeeded' -ELSE PRINT 'Procedure Creation: existsCheck Error on Creation' -GO - -/****** Object: StoredProcedure [existsRevision] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsRevision]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsRevision]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsRevision] - -( - @RevisionID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Revisions] WHERE [RevisionID]=@RevisionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsRevision Succeeded' -ELSE PRINT 'Procedure Creation: existsRevision Error on Creation' -GO - -/****** Object: StoredProcedure [existsStage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsStage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsStage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsStage] - -( - @StageID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Stages] WHERE [StageID]=@StageID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsStage Succeeded' -ELSE PRINT 'Procedure Creation: existsStage Error on Creation' -GO - -/****** Object: StoredProcedure [existsVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[existsVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [existsVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[existsVersion] - -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS - SELECT COUNT(*) - FROM [Versions] WHERE [VersionID]=@VersionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: existsVersion Succeeded' -ELSE PRINT 'Procedure Creation: existsVersion Error on Creation' -GO - -/****** Object: StoredProcedure [getAnnotationAuditsChronologyByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationAuditsChronologyByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotationAuditsChronologyByItemID]; -GO - -/****** Object: StoredProcedure [getAnnotationAuditsChronologyByItemID] ******/ -/* -getAnnotationAuditsChronologyByItemID 3,1230 -getAnnotationAuditsChronologyByItemID 30,8570 -getAnnotationAuditsChronologyByItemID 30,8513 -getAnnotationAuditsChronologyByItemID 30,8505 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE procedure [dbo].[getAnnotationAuditsChronologyByItemID] -( - @ProcItemID int, - @ItemID int, - @DTS datetime -) -WITH EXECUTE AS OWNER -AS -begin --- declare @dts datetime --- set @dts = (select dts from items where itemid = @procitemid) - declare @tci table - ( - ItemID int, - IContentID int, - IDeleteStatus int, - ProcDTS datetime, - Path nvarchar(max), - OrdinalPath nvarchar(max) - ) - insert into @tci - select * from vefn_tblchilditems(@ProcItemID,@ItemID,0) - select - case - when lastauditid is null and dts > itemdts then 'Added' - when deletestatus > 0 then 'Deleted' - when lastauditid = deletedauditid then 'Restored' - else 'Changed' - end ActionWhat - ,case - when lastauditid is null and dts > itemdts then dts - when deletestatus > 0 then ActionDTS - when lastauditid = deletedauditid then ActionDTS - else dts - end ActionWhen - ,* - from - ( - select - cast(ident_current('annotationaudits') + 1 as bigint) auditid - -- (select max(auditid) + 1 from annotationaudits) auditid - -- 0 auditid - ,aa.annotationid - ,aa.itemid - ,aa.typeid - ,aa.rtftext - ,aa.searchtext - ,aa.config - ,aa.dts - ,aa.userid - ,0 deletestatus - ,aa.ActionDTS - ,ii.contentid icontentid - ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid) LastAuditID - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and deletestatus > 0 and aa.dts = dts) DeletedAuditID -,tci.ordinalpath - from tblannotations aa - inner join items ii on aa.itemid = ii.itemid -join @tci tci on tci.itemid = ii.itemid - where aa.deletestatus = 0 - union - select - aa.auditid - ,aa.annotationid - ,aa.itemid - ,aa.typeid - ,aa.rtftext - ,aa.searchtext - ,aa.config - ,aa.dts - ,aa.userid - ,aa.deletestatus - ,aa.ActionDTS - ,ii.contentid icontentid - ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid ) LastAuditID - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid and deletestatus > 0 and aa.dts = dts) DeletedAuditID -,tci.ordinalpath - from annotationaudits aa - inner join items ii on aa.itemid = ii.itemid -join @tci tci on tci.itemid = ii.itemid - ) ah - where itemid in (select itemid from @tci) - and dts > @dts - --(select dts from versions where versionid = (select max(versionid) from revisions rr inner join versions vv on rr.revisionid = vv.revisionid - --inner join stages ss on vv.stageid = ss.stageid where itemid = @procitemid and ss.isapproved = 1)) - order by ordinalpath,annotationid,auditid--actionwhen -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationAuditsChronologyByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getCheck] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getCheck]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getCheck]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getCheck] - -( - @CheckID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [CheckID], - [RevisionID], - [StageID], - [ConsistencyChecks], - [DTS], - [UserID], - [LastChanged] - FROM [Checks] - WHERE [CheckID]=@CheckID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getCheck Succeeded' -ELSE PRINT 'Procedure Creation: getCheck Error on Creation' -GO - -/****** Object: StoredProcedure [getChecks] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getChecks]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getChecks]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getChecks] - -WITH EXECUTE AS OWNER -AS - SELECT - [CheckID], - [RevisionID], - [StageID], - [ConsistencyChecks], - [DTS], - [UserID], - [LastChanged] - FROM [Checks] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getChecks Succeeded' -ELSE PRINT 'Procedure Creation: getChecks Error on Creation' -GO - -/****** Object: StoredProcedure [getChecksByRevisionID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getChecksByRevisionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getChecksByRevisionID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getChecksByRevisionID] - -( - @RevisionID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Checks].[CheckID], - [Checks].[RevisionID], - [Checks].[StageID], - [Checks].[ConsistencyChecks], - [Checks].[DTS], - [Checks].[UserID], - [Checks].[LastChanged], - [Stages].[Name] [Stage_Name], - [Stages].[Description] [Stage_Description], - [Stages].[IsApproved] [Stage_IsApproved], - [Stages].[DTS] [Stage_DTS], - [Stages].[UserID] [Stage_UserID] - FROM [Checks] - JOIN [Stages] ON - [Stages].[StageID]=[Checks].[StageID] - WHERE - [Checks].[RevisionID]=@RevisionID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getChecksByRevisionID Succeeded' -ELSE PRINT 'Procedure Creation: getChecksByRevisionID Error on Creation' -GO - -/****** Object: StoredProcedure [getChecksByStageID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getChecksByStageID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getChecksByStageID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getChecksByStageID] - -( - @StageID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Checks].[CheckID], - [Checks].[RevisionID], - [Checks].[StageID], - [Checks].[ConsistencyChecks], - [Checks].[DTS], - [Checks].[UserID], - [Checks].[LastChanged], - [Revisions].[ItemID] [Revision_ItemID], - [Revisions].[TypeID] [Revision_TypeID], - [Revisions].[RevisionNumber] [Revision_RevisionNumber], - [Revisions].[RevisionDate] [Revision_RevisionDate], - [Revisions].[Notes] [Revision_Notes], - [Revisions].[Config] [Revision_Config], - [Revisions].[DTS] [Revision_DTS], - [Revisions].[UserID] [Revision_UserID] - FROM [Checks] - JOIN [Revisions] ON - [Revisions].[RevisionID]=[Checks].[RevisionID] - WHERE - [Checks].[StageID]=@StageID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getChecksByStageID Succeeded' -ELSE PRINT 'Procedure Creation: getChecksByStageID Error on Creation' -GO - -/****** Object: StoredProcedure [getContentAuditsByContentIDandDTS] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsByContentIDandDTS]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAuditsByContentIDandDTS]; -GO - -/* -declare @dts datetime -set @dts = (select dts from items where itemid = 41) -print @dts -exec .dbo.getContentAuditsByContentIDandDTS 9701,@dts -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsByContentIDandDTS] -( - @ContentID int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -declare @audits table -( - [AuditID] [bigint], - [ContentID] [int], - [Number] [nvarchar](512), - [Text] [nvarchar](max), - [Type] [int], - [FormatID] [int], - [Config] [nvarchar](max), - [DTS] [datetime], - [UserID] [nvarchar](200), - [DeleteStatus] [int], - [ActionWhat] [nvarchar](max) -) -insert into @audits - SELECT - [AuditID], - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [DeleteStatus], - case when auditid = (select min(auditid) from contentaudits where contentid = @ContentID) then 'Original' - when deletestatus > 0 then 'Deleted' - else 'Changed' end ActionWhat - FROM [ContentAudits] - WHERE ContentID = @ContentID -and DTS > @DTS -insert into @audits - SELECT - [AuditID], - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [DeleteStatus], -'Original' ActionWhat --- case when auditid = (select min(auditid) from contentaudits where contentid = @ContentID) then 'Original' --- when deletestatus > 0 then 'Deleted' --- else 'Changed' end ActionWhat - FROM [ContentAudits] - WHERE ContentID = @ContentID -and auditid = (select max(auditid) from contentaudits where contentid = @contentid and auditid not in (select auditid from @audits)) -and number is not null -select * from @audits - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsByContentIDandDTS Succeeded' -ELSE PRINT 'Procedure Creation: getContentAuditsByContentIDandDTS Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetMyChronology]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetMyChronology]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_GetMyChronology] Script Date: 11/07/2012 18:09:17 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetMyChronology](@ProcItemID int, @ItemID int, @IncludeDeletedChildren int, @DTS datetime) -RETURNS @Chrono TABLE -( -[AuditID] bigint, -[ContentID] int, -[Number] nvarchar(max), -[Text] nvarchar(max), -[Type] int, -[FormatID] int, -[Config] nvarchar(max), -[DTS] datetime, -[UserID] nvarchar(max), -[DeleteStatus] int, -[ActionDTS] datetime, -[ActionWhat] nvarchar(max), -[ActionWhen] datetime, -[Path] nvarchar(max), -ItemID int, -TypeName nvarchar(max), -ordinalpath nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -insert into @Chrono -select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath - from - ( - select - case - when lastauditid is null then 'Added' - when r.deletestatus > 0 then 'Deleted' - when lastauditid = -1 then 'Changed' - when DeletedAuditID is not null then 'Restored' --- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' - else 'Changed' - end actionwhat -,actiondts actionwhen --- ,case --- when lastauditid is null then dts --- when r.deletestatus > 0 then ActionDTS --- when lastauditid = -1 then dts --- when DeletedAuditID is not null then ActionDTS --- else dts --- end actionwhen -,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName - ,* - from vefn_tblchilditems (@ProcItemID,@ItemID,@IncludeDeletedChildren) t - inner join vefn_chronologyreport(@ProcItemID,@DTS) r - on t.icontentid = r.contentid --- where ActionDTS > procdts or dts > procdts - ) ah - order by OrdinalPath, contentid,auditid--actionwhen - RETURN -END -go -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetMyChronology] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetMyChronology] Error on Creation' -go - -/****** Object: StoredProcedure [getContentAuditsChronologyByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsChronologyByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAuditsChronologyByItemID]; -GO - -/****** Object: StoredProcedure [getContentAuditsChronologyByItemID] ******/ -/* -getContentAuditsChronologyByItemID 146,146,0 -getContentAuditsChronologyByItemID 42,42,0 -getContentAuditsChronologyByItemID 9,9,0 -getContentAuditsChronologyByItemID 146,146,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsChronologyByItemID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin - select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) --- select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah --- order by OrdinalPath, contentid,auditid--actionwhen - RETURN -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsChronologyByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getContentAuditsChronologyByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getContentAuditsSummaryByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsSummaryByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAuditsSummaryByItemID]; -GO - -/****** Object: StoredProcedure [getContentAuditsSummaryByItemID] ******/ -/* -getContentAuditsSummaryByItemID 146,146,0 -getContentAuditsSummaryByItemID 42,42,0 -getContentAuditsSummaryByItemID 9,9,0 -getContentAuditsSummaryByItemID 146,146,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsSummaryByItemID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin -DECLARE @Chrono TABLE -( -[AuditID] bigint, -[ContentID] int, -[Number] nvarchar(max), -[Text] nvarchar(max), -[Type] int, -[FormatID] int, -[Config] nvarchar(max), -[DTS] datetime, -[UserID] nvarchar(max), -[DeleteStatus] int, -[ActionDTS] datetime, -[ActionWhat] nvarchar(max), -[ActionWhen] datetime, -[Path] nvarchar(max), -ItemID int, -TypeName nvarchar(max), -ordinalpath nvarchar(max) -) -insert into @Chrono -select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) -select * from @Chrono -where AuditID is null OR AuditID in (select min(auditID) from @Chrono group by contentid UNION select max(auditID) from @Chrono group by contentid) -order by OrdinalPath, contentid,auditid ---select z.* from ---( ---select contentid,min(auditid) auditid from ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) x ---group by contentid ---) y ---inner join ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) z on y.contentid = z.contentid and y.auditid = z.auditid ---union ---select z.* from ---( ---select contentid,max(auditid) auditid from ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) x ---group by contentid ---) y ---inner join ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) z on y.contentid = z.contentid and y.auditid = z.auditid --- order by OrdinalPath, contentid,auditid--actionwhen - RETURN -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsSummaryByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getContentAuditsSummaryByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getCurrentRevisionByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getCurrentRevisionByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getCurrentRevisionByItemID]; -GO - -/* -getCurrentRevisionByItemID 41 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create PROCEDURE [dbo].[getCurrentRevisionByItemID] -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [Revisions].[RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] -inner join -( -select top 1 revisionid,mxvid from -( -select rr.revisionid,max(vv.versionid) mxvid -from items ii -inner join revisions rr on ii.itemid = rr.itemid -inner join versions vv on rr.revisionid = vv.revisionid -inner join stages ss on vv.stageid = ss.stageid -where ss.isapproved = 1 -and ii.itemid = @ItemID -group by rr.revisionid -union -select null,null -) ds -order by mxvid desc -) rr on [Revisions].revisionid = rr.revisionid --- WHERE [ItemID] = @ItemID --- ORDER BY [RevisionID] DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getCurrentRevisionByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getCurrentRevisionByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getLibDocsForProc] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getLibDocsForProc]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getLibDocsForProc]; -GO - -/* -getLibDocsForProc 10 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getLibDocsForProc] -( - @ItemID int -) - -WITH EXECUTE AS OWNER -AS -SELECT dd.[DocID] - ,[LibTitle] - ,[DocContent] - ,[DocAscii] - ,[Config] - ,dd.[DTS] - ,dd.[UserID] - ,dd.[LastChanged] - ,[FileExtension], - (SELECT COUNT(*) FROM [DROUsages] WHERE [DROUsages].[DocID]=[dd].[DocID]) [DROUsageCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[DocID]=[dd].[DocID]) [EntryCount], - (SELECT COUNT(*) FROM [Pdfs] WHERE [Pdfs].[DocID]=[dd].[DocID]) [PdfCount] - - FROM [Documents] dd - INNER JOIN [Entries] ee on dd.docid = ee.docid - INNER JOIN vefn_ChildItems(@ItemID) cc on cc.contentid = ee.contentid - RETURN - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getLibDocsForProc Succeeded' -ELSE PRINT 'Procedure Creation: getLibDocsForProc Error on Creation' -GO - -/****** Object: StoredProcedure [getPreviousRevisionByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPreviousRevisionByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPreviousRevisionByItemID]; -GO - -/* -getPreviousRevisionByItemID(41) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create PROCEDURE [dbo].[getPreviousRevisionByItemID] -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [Revisions].[RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] -inner join -( -select top 1 revisionid,mxvid from -( -select top 2 revisionid,mxvid from -( -select rr.revisionid,max(vv.versionid) mxvid -from items ii -inner join revisions rr on ii.itemid = rr.itemid -inner join versions vv on rr.revisionid = vv.revisionid -inner join stages ss on vv.stageid = ss.stageid -where ss.isapproved = 1 -and ii.itemid = @ItemID -group by rr.revisionid -union -select null,null -) ds -order by mxvid desc -) ah -order by revisionid -) rr on [Revisions].revisionid = rr.revisionid --- WHERE [ItemID] = @ItemID --- ORDER BY [RevisionID] DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPreviousRevisionByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getPreviousRevisionByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getRevision] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRevision]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRevision]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRevision] - -( - @RevisionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] - WHERE [RevisionID]=@RevisionID - - SELECT - [Checks].[CheckID], - [Checks].[RevisionID], - [Checks].[StageID], - [Checks].[ConsistencyChecks], - [Checks].[DTS], - [Checks].[UserID], - [Checks].[LastChanged], - [Stages].[Name] [Stage_Name], - [Stages].[Description] [Stage_Description], - [Stages].[IsApproved] [Stage_IsApproved], - [Stages].[DTS] [Stage_DTS], - [Stages].[UserID] [Stage_UserID] - FROM [Checks] - JOIN [Stages] ON - [Stages].[StageID]=[Checks].[StageID] - WHERE - [Checks].[RevisionID]=@RevisionID - - - SELECT - [Versions].[VersionID], - [Versions].[RevisionID], - [Versions].[StageID], - [Versions].[PDF], - [Versions].[SummaryPDF], - [Versions].[DTS], - [Versions].[UserID], - [Versions].[LastChanged], - [Stages].[Name] [Stage_Name], - [Stages].[Description] [Stage_Description], - [Stages].[IsApproved] [Stage_IsApproved], - [Stages].[DTS] [Stage_DTS], - [Stages].[UserID] [Stage_UserID] - FROM [Versions] - JOIN [Stages] ON - [Stages].[StageID]=[Versions].[StageID] - WHERE - [Versions].[RevisionID]=@RevisionID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRevision Succeeded' -ELSE PRINT 'Procedure Creation: getRevision Error on Creation' -GO - -/****** Object: StoredProcedure [getRevisionByItemIDandRevisionNumber] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRevisionByItemIDandRevisionNumber]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRevisionByItemIDandRevisionNumber]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRevisionByItemIDandRevisionNumber] - -( - @ItemID int, - @RevisionNumber nvarchar(50) -) -WITH EXECUTE AS OWNER -AS -declare @RevisionID int -set @RevisionID = (select revisionid from revisions where itemid = @itemid and revisionnumber = @RevisionNumber) - SELECT - [RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] - WHERE [RevisionID]=@RevisionID - - SELECT - [Checks].[CheckID], - [Checks].[RevisionID], - [Checks].[StageID], - [Checks].[ConsistencyChecks], - [Checks].[DTS], - [Checks].[UserID], - [Checks].[LastChanged], - [Stages].[Name] [Stage_Name], - [Stages].[Description] [Stage_Description], - [Stages].[IsApproved] [Stage_IsApproved], - [Stages].[DTS] [Stage_DTS], - [Stages].[UserID] [Stage_UserID] - FROM [Checks] - JOIN [Stages] ON - [Stages].[StageID]=[Checks].[StageID] - WHERE - [Checks].[RevisionID]=@RevisionID - - - SELECT - [Versions].[VersionID], - [Versions].[RevisionID], - [Versions].[StageID], - [Versions].[DTS], - [Versions].[UserID], - [Versions].[LastChanged], - [Versions].[PDF], - [Versions].[SummaryPDF], - [Stages].[Name] [Stage_Name], - [Stages].[Description] [Stage_Description], - [Stages].[IsApproved] [Stage_IsApproved], - [Stages].[DTS] [Stage_DTS], - [Stages].[UserID] [Stage_UserID] - FROM [Versions] - JOIN [Stages] ON - [Stages].[StageID]=[Versions].[StageID] - WHERE - [Versions].[RevisionID]=@RevisionID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRevisionByItemIDandRevisionNumber Succeeded' -ELSE PRINT 'Procedure Creation: getRevisionByItemIDandRevisionNumber Error on Creation' -GO - -/****** Object: StoredProcedure [getRevisions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRevisions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRevisions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRevisions] - -WITH EXECUTE AS OWNER -AS - SELECT - [RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRevisions Succeeded' -ELSE PRINT 'Procedure Creation: getRevisions Error on Creation' -GO - -/****** Object: StoredProcedure [getRevisionsByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRevisionsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRevisionsByItemID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getRevisionsByItemID] -( - @ItemID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [RevisionID], - [ItemID], - [TypeID], - [RevisionNumber], - [RevisionDate], - [Notes], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[RevisionID]=[Revisions].[RevisionID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[RevisionID]=[Revisions].[RevisionID]) [VersionCount] - FROM [Revisions] - WHERE [ItemID] = @ItemID - ORDER BY [RevisionID] DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRevisionsByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getRevisionsByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getRoUsagesForProc] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getRoUsagesForProc]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getRoUsagesForProc]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create PROCEDURE [dbo].[getRoUsagesForProc] -( - @ItemID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [ROUsageID], - rr.[ContentID], - [ROID], - [Config], - [DTS], - [UserID], - [LastChanged], - [RODbID] - FROM [RoUsages] rr - INNER JOIN vefn_ChildItems(@ItemID) cc on cc.contentid = rr.contentid - RETURN - -/****** Object: UserDefinedFunction [dbo].[vefn_CheckXML] Script Date: 10/25/2011 18:36:53 ******/ -SET ANSI_NULLS ON -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getRoUsagesForProc Succeeded' -ELSE PRINT 'Procedure Creation: getRoUsagesForProc Error on Creation' -GO - -/****** Object: StoredProcedure [getRoUsagesForProc] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDROUsagesForProc]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDROUsagesForProc]; -GO - ---[dbo].[getDROUsagesForProc] 2 -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDROUsagesForProc] -( - @ItemID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [DROUsageID], - rr.[DocID], - [ROID], - [Config], - rr.[DTS], - rr.[UserID], - rr.[LastChanged], - [RODbID] - FROM [DROUsages] rr - INNER JOIN Entries ee on rr.docid = ee.docid - INNER JOIN vefn_ChildItems(@ItemID) cc on cc.contentid = ee.contentid - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDROUsagesForProc Succeeded' -ELSE PRINT 'Procedure Creation: getDROUsagesForProc Error on Creation' -GO - -/****** Object: StoredProcedure [getStage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getStage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getStage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getStage] - -( - @StageID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [StageID], - [Name], - [Description], - [IsApproved], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[StageID]=[Stages].[StageID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[StageID]=[Stages].[StageID]) [VersionCount] - FROM [Stages] - WHERE [StageID]=@StageID - - SELECT - [Checks].[CheckID], - [Checks].[RevisionID], - [Checks].[StageID], - [Checks].[ConsistencyChecks], - [Checks].[DTS], - [Checks].[UserID], - [Checks].[LastChanged], - [Revisions].[ItemID] [Revision_ItemID], - [Revisions].[TypeID] [Revision_TypeID], - [Revisions].[RevisionNumber] [Revision_RevisionNumber], - [Revisions].[RevisionDate] [Revision_RevisionDate], - [Revisions].[Notes] [Revision_Notes], - [Revisions].[Config] [Revision_Config], - [Revisions].[DTS] [Revision_DTS], - [Revisions].[UserID] [Revision_UserID] - FROM [Checks] - JOIN [Revisions] ON - [Revisions].[RevisionID]=[Checks].[RevisionID] - WHERE - [Checks].[StageID]=@StageID - - - SELECT - [Versions].[VersionID], - [Versions].[RevisionID], - [Versions].[StageID], - [Versions].[PDF], - [Versions].[SummaryPDF], - [Versions].[DTS], - [Versions].[UserID], - [Versions].[LastChanged], - [Revisions].[ItemID] [Revision_ItemID], - [Revisions].[TypeID] [Revision_TypeID], - [Revisions].[RevisionNumber] [Revision_RevisionNumber], - [Revisions].[RevisionDate] [Revision_RevisionDate], - [Revisions].[Notes] [Revision_Notes], - [Revisions].[Config] [Revision_Config], - [Revisions].[DTS] [Revision_DTS], - [Revisions].[UserID] [Revision_UserID] - FROM [Versions] - JOIN [Revisions] ON - [Revisions].[RevisionID]=[Versions].[RevisionID] - WHERE - [Versions].[StageID]=@StageID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getStage Succeeded' -ELSE PRINT 'Procedure Creation: getStage Error on Creation' -GO - -/****** Object: StoredProcedure [getStages] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getStages]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getStages]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getStages] - -WITH EXECUTE AS OWNER -AS - SELECT - [StageID], - [Name], - [Description], - [IsApproved], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Checks] WHERE [Checks].[StageID]=[Stages].[StageID]) [CheckCount], - (SELECT COUNT(*) FROM [Versions] WHERE [Versions].[StageID]=[Stages].[StageID]) [VersionCount] - FROM [Stages] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getStages Succeeded' -ELSE PRINT 'Procedure Creation: getStages Error on Creation' -GO - -/****** Object: StoredProcedure [getTransitionsFromProc] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransitionsFromProc]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getTransitionsFromProc]; -GO - -/* -getTransitionsFromProc 10 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create PROCEDURE [dbo].[getTransitionsFromProc] -( - @ItemID int -) - -WITH EXECUTE AS OWNER -AS -SELECT tt.[TransitionID] - ,[FromID] - ,[ToID] - ,[RangeID] - ,[IsRange] - ,[TranType] - ,tt.[Config] - ,tt.[DTS] - ,tt.[UserID] - ,tt.[LastChanged] - ,(SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=[tt].[TransitionID]) [ZTransitionCount] -,cc.text ContentText - FROM [Transitions] tt -inner join contents cc on tt.fromid = cc.contentid - WHERE transitionid in (select transitionid from vefn_FindExternalFromTransitions(@ItemID)) - RETURN - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getTransitionsFromProc Succeeded' -ELSE PRINT 'Procedure Creation: getTransitionsFromProc Error on Creation' -GO - -/****** Object: StoredProcedure [getTransitionsToProc] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getTransitionsToProc]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getTransitionsToProc]; -GO - -/* -getTransitionsToProc 10 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getTransitionsToProc] -( - @ItemID int -) - -WITH EXECUTE AS OWNER -AS -SELECT tt.[TransitionID] - ,[FromID] - ,[ToID] - ,[RangeID] - ,[IsRange] - ,[TranType] - ,tt.[Config] - ,tt.[DTS] - ,tt.[UserID] - ,tt.[LastChanged] - ,(SELECT COUNT(*) FROM [ZTransitions] WHERE [ZTransitions].[TransitionID]=[tt].[TransitionID]) [ZTransitionCount] -,cc.text ContentText - FROM [Transitions] tt -inner join contents cc on tt.fromid = cc.contentid - WHERE transitionid in (select transitionid from vefn_FindExternalTransitions(@ItemID)) - RETURN - -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getTransitionsToProc Succeeded' -ELSE PRINT 'Procedure Creation: getTransitionsToProc Error on Creation' -GO - -/****** Object: StoredProcedure [getVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getVersion] - -( - @VersionID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [VersionID], - [RevisionID], - [StageID], - [PDF], - [SummaryPDF], - [DTS], - [UserID], - [LastChanged] - FROM [Versions] - WHERE [VersionID]=@VersionID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getVersion Succeeded' -ELSE PRINT 'Procedure Creation: getVersion Error on Creation' -GO - -/****** Object: StoredProcedure [getVersions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersions]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getVersions]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getVersions] - -WITH EXECUTE AS OWNER -AS - SELECT - [VersionID], - [RevisionID], - [StageID], - [PDF], - [SummaryPDF], - [DTS], - [UserID], - [LastChanged] - FROM [Versions] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getVersions Succeeded' -ELSE PRINT 'Procedure Creation: getVersions Error on Creation' -GO - -/****** Object: StoredProcedure [getVersionsByRevisionID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersionsByRevisionID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getVersionsByRevisionID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getVersionsByRevisionID] - -( - @RevisionID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Versions].[VersionID], - [Versions].[RevisionID], - [Versions].[StageID], - [Versions].[PDF], - [Versions].[SummaryPDF], - [Versions].[DTS], - [Versions].[UserID], - [Versions].[LastChanged], - [Stages].[Name] [Stage_Name], - [Stages].[Description] [Stage_Description], - [Stages].[IsApproved] [Stage_IsApproved], - [Stages].[DTS] [Stage_DTS], - [Stages].[UserID] [Stage_UserID] - FROM [Versions] - JOIN [Stages] ON - [Stages].[StageID]=[Versions].[StageID] - WHERE - [Versions].[RevisionID]=@RevisionID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getVersionsByRevisionID Succeeded' -ELSE PRINT 'Procedure Creation: getVersionsByRevisionID Error on Creation' -GO - -/****** Object: StoredProcedure [getVersionsByStageID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getVersionsByStageID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getVersionsByStageID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getVersionsByStageID] - -( - @StageID int -) -WITH EXECUTE AS OWNER -AS - - SELECT - [Versions].[VersionID], - [Versions].[RevisionID], - [Versions].[StageID], - [Versions].[PDF], - [Versions].[SummaryPDF], - [Versions].[DTS], - [Versions].[UserID], - [Versions].[LastChanged], - [Revisions].[ItemID] [Revision_ItemID], - [Revisions].[TypeID] [Revision_TypeID], - [Revisions].[RevisionNumber] [Revision_RevisionNumber], - [Revisions].[RevisionDate] [Revision_RevisionDate], - [Revisions].[Notes] [Revision_Notes], - [Revisions].[Config] [Revision_Config], - [Revisions].[DTS] [Revision_DTS], - [Revisions].[UserID] [Revision_UserID] - FROM [Versions] - JOIN [Revisions] ON - [Revisions].[RevisionID]=[Versions].[RevisionID] - WHERE - [Versions].[StageID]=@StageID - - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getVersionsByStageID Succeeded' -ELSE PRINT 'Procedure Creation: getVersionsByStageID Error on Creation' -GO - -/****** Object: StoredProcedure [updateCheck] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateCheck]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateCheck]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateCheck] - -( - @CheckID int, - @RevisionID int, - @StageID int, - @ConsistencyChecks xml=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Checks] - SET - [RevisionID]=@RevisionID, - [StageID]=@StageID, - [ConsistencyChecks]=@ConsistencyChecks, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [CheckID]=@CheckID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Checks] WHERE [CheckID]=@CheckID) - RAISERROR('Check record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Check has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Checks] WHERE [CheckID]=@CheckID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateCheck Succeeded' -ELSE PRINT 'Procedure Creation: updateCheck Error on Creation' -GO - -/****** Object: StoredProcedure [updateRevision] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateRevision]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateRevision]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateRevision] - -( - @RevisionID int, - @ItemID int, - @TypeID int, - @RevisionNumber nvarchar(50)=null, - @RevisionDate datetime=null, - @Notes nvarchar(MAX)=null, - @Config xml=null, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Revisions] - SET - [ItemID]=@ItemID, - [TypeID]=@TypeID, - [RevisionNumber]=@RevisionNumber, - [RevisionDate]=@RevisionDate, - [Notes]=@Notes, - [Config]=@Config, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [RevisionID]=@RevisionID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Revisions] WHERE [RevisionID]=@RevisionID) - RAISERROR('Revision record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Revision has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Revisions] WHERE [RevisionID]=@RevisionID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateRevision Succeeded' -ELSE PRINT 'Procedure Creation: updateRevision Error on Creation' -GO - -/****** Object: StoredProcedure [updateStage] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateStage]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateStage]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateStage] - -( - @StageID int, - @Name nvarchar(50), - @Description nvarchar(200)=null, - @IsApproved int, - @DTS datetime, - @UserID nvarchar(100), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Stages] - SET - [Name]=@Name, - [Description]=@Description, - [IsApproved]=@IsApproved, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [StageID]=@StageID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Stages] WHERE [StageID]=@StageID) - RAISERROR('Stage record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Stage has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Stages] WHERE [StageID]=@StageID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateStage Succeeded' -ELSE PRINT 'Procedure Creation: updateStage Error on Creation' -GO - -/****** Object: StoredProcedure [updateVersion] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateVersion]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [updateVersion]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[updateVersion] - -( - @VersionID int, - @RevisionID int, - @StageID int, - @PDF varbinary(MAX)=null, - @SummaryPDF varbinary(MAX)=null, - @DTS datetime, - @UserID nvarchar(200), - @LastChanged timestamp, - @newLastChanged timestamp output -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - UPDATE [Versions] - SET - [RevisionID]=@RevisionID, - [StageID]=@StageID, - [PDF]=@PDF, - [SummaryPDF]=@SummaryPDF, - [DTS]=@DTS, - [UserID]=@UserID - WHERE [VersionID]=@VersionID AND [LastChanged]=@LastChanged - IF @@ROWCOUNT = 0 - BEGIN - IF NOT exists(select * from [Versions] WHERE [VersionID]=@VersionID) - RAISERROR('Version record has been deleted by another user', 16, 1) - ELSE - RAISERROR('Version has been edited by another user', 16, 1) - END - - SELECT @newLastChanged=[LastChanged] - FROM [Versions] WHERE [VersionID]=@VersionID - - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: updateVersion Succeeded' -ELSE PRINT 'Procedure Creation: updateVersion Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_CheckAllXML] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CheckAllXML]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_CheckAllXML]; -GO - -/* -select [dbo].[vefn_CheckAllXML](1) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE function [dbo].[vefn_CheckAllXML](@DocVersionID int) -returns xml -begin ---temp table for max checkid - declare @tChecks table (CheckID int) - insert into @tChecks - select max(cc.checkid) checkid from checks cc inner join stages ss on cc.stageid = ss.stageid - inner join revisions rr on cc.revisionid = rr.revisionid where ss.isapproved = 1 group by rr.itemid ---temp table for sibling itemid - declare @tItems table (ItemID int) - insert into @tItems - select itemid from vefn_siblingitems((select itemid from docversions where versionid = @docversionid),0) ---temp table for multi valued roids - declare @mvROIDS table (ROID varchar(max)) - insert into @mvROIDS - select roid from (select distinct r1.value('@ROID','varchar(max)') roid,r1.value('@ROValue','varchar(max)') rovalue - from checks cc cross apply cc.consistencychecks.nodes('//ROCheck') t1(r1)) t1 group by roid having count(*) > 1 ---temp table for multi valued transitionids - declare @mvTransitions table (TransitionID int) - insert into @mvTransitions - select transitionid from (select distinct r1.value('@TransitionID','int') transitionid,r1.value('@TransitionValue','varchar(max)') transitionvalue - from checks cc cross apply cc.consistencychecks.nodes('//TransitionCheck') t1(r1)) t1 group by transitionid having count(*) > 1 ---temp table for multi valued docids - declare @mvLibDocs table (DocID int) - insert into @mvLibDocs - select docid from (select distinct r1.value('@DocID','int') docid,r1.value('@DocDate','datetime') docdate - from checks cc cross apply cc.consistencychecks.nodes('//LibDocCheck') t1(r1)) t1 group by docid having count(*) > 1 ---temp table for roids - declare @tROIDS table (ItemID int,ROID varchar(max),ROValue varchar(max),CheckID int) - insert into @tROIDS - select rr.itemid,r1.value('@ROID','varchar(max)') roid,r1.value('@ROValue','varchar(max)') rovalue, cc.checkid - from checks cc inner join revisions rr on cc.revisionid = rr.revisionid - cross apply cc.consistencychecks.nodes('//ROCheck') t1(r1) ---temp table for transitions - declare @tTransitions table (ItemID int,TransitionID int,TransitionValue varchar(max),CheckID int) - insert into @tTransitions - select rr.itemid,r1.value('@TransitionID','int') transitionid,r1.value('@TransitionValue','varchar(max)') transitionvalue,cc.checkid - from checks cc inner join revisions rr on cc.revisionid = rr.revisionid - cross apply cc.consistencychecks.nodes('//TransitionCheck') t1(r1) ---temp table for libdocs - declare @tLibDocs table (ItemID int, DocID int, DocDate datetime,CheckID int) - insert into @tLibDocs - select rr.itemid,r1.value('@DocID','int') docid,r1.value('@DocDate','datetime') docdate,cc.checkid - from checks cc inner join revisions rr on cc.revisionid = rr.revisionid - cross apply cc.consistencychecks.nodes('//LibDocCheck') t1(r1) - ---get all inconsitencies accross set - declare @ChkXML xml - set @ChkXML = - ( - select - (--ro inconsistencies accross set - select ROCheck.ItemID,ROCheck.ROID,ROCheck.ROValue from @tROIDS ROCheck - inner join @tChecks tc on ROCheck.checkid = tc.checkid - inner join @tItems ti on ROCheck.itemid = ti.itemid - inner join @mvROIDS mv on ROCheck.roid = mv.roid - order by ROCheck.itemid - for xml auto,root('ROChecks'),type - ), - (--transition inconsistencies accross set - select TransitionCheck.ItemID,TransitionCheck.TransitionID,TransitionCheck.TransitionValue from @tTransitions TransitionCheck - inner join @tChecks tc on TransitionCheck.checkid = tc.checkid - inner join @tItems ti on TransitionCheck.itemid = ti.itemid - inner join @mvTransitions mv on TransitionCheck.TransitionID = mv.TransitionID - order by TransitionCheck.itemid - for xml auto,root('TransitionChecks'),type - ), - (--libdoc inconsistencies accross set - select LibDocCheck.ItemID,LibDocCheck.DocID,LibDocCheck.DocDate from @tLibDocs LibDocCheck - inner join @tChecks tc on LibDocCheck.checkid = tc.checkid - inner join @tItems ti on LibDocCheck.itemid = ti.itemid - inner join @mvLibDocs mv on LibDocCheck.docid = mv.docid - order by LibDocCheck.itemid - for xml auto,root('LibDocChecks'),type - ) - for xml path(''),ROOT ('ConsistencyChecks'),type - ) - return @ChkXML -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_CheckAllXML Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_CheckAllXML Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_CheckAllXMLByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CheckAllXMLByItemID]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_CheckAllXMLByItemID]; -GO - -/* -declare @myxml xml -set @myxml = (select dbo.vefn_checkallxml(1)) -select dbo.vefn_checkallxmlbyitemid(1,@myxml) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE function [dbo].[vefn_CheckAllXMLByItemID](@ItemID int,@MyXml xml) -returns xml -begin - declare @ChkXML xml - declare @ROCheck table - ( - ItemID int, - ROID varchar(max), - ROValue varchar(max) - ) - insert into @ROCheck - select r2.value('@ItemID','int'),r2.value('@ROID','varchar(max)'),r2.value('@ROValue','varchar(max)') - from @MyXml.nodes('//ROCheck') t2(r2) ---jcb - declare @TransitionCheck table - ( - ItemID int, - TransitionID int, - TransitionValue varchar(max) - ) - insert into @TransitionCheck - select r2.value('@ItemID','int'),r2.value('@TransitionID','int'),r2.value('@TransitionValue','varchar(max)') - from @MyXml.nodes('//TransitionCheck') t2(r2) ---end jcb - declare @LibDocCheck table - ( - ItemID int, - DocID int, - DocDate datetime - ) - insert into @LibDocCheck - select r2.value('@ItemID','int'),r2.value('@DocID','int'),r2.value('@DocDate','datetime') - from @MyXml.nodes('//LibDocCheck') t2(r2) - set @ChkXML = - ( - select - (select * from @ROCheck ROCheck where itemid = @ItemID for xml auto, root('ROChecks'),type), - (select * from @TransitionCheck TransitionCheck where itemid = @ItemID for xml auto, root('TransitionChecks'),type), - (select * from @LibDocCheck LibDocCheck where itemid = @ItemID for xml auto, root('LibDocChecks'),type) - for xml path(''),ROOT ('ConsistencyChecks'),type - ) - return @ChkXML -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_CheckAllXMLByItemID Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_CheckAllXMLByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_CheckXML] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_CheckXML]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_CheckXML]; -GO - -/* -declare @NewXML xml -select @NewXML = consistencychecks from checks where checkid = 48 -set @NewXML = cast(replace(cast(@NewXML as varchar(max)),'2011-08-24T11:20:57.027','2011-12-25T00:00:00.000') as xml) -set @NewXML = cast(replace(cast(@NewXML as varchar(max)),'88%','88.12345%') as xml) -set @NewXML = cast(replace(cast(@NewXML as varchar(max)),'="6%','="6.12345%') as xml) -set @NewXML = cast(replace(cast(@NewXML as varchar(max)),'23%','23.12345%') as xml) -set @NewXML = cast(replace(cast(@NewXML as varchar(max)),'90%','90.12345%') as xml) -set @NewXML = cast(replace(cast(@NewXML as varchar(max)),', Step 13',', Step 14') as xml)r -declare @OldXML xml -select @OldXML = consistencychecks from checks where checkid = 1 ---select .dbo.vefn_CheckXML(@NewXML, @OldXML) -select ii.*,ss.*,.dbo.vefn_CheckXML(@NewXML, consistencychecks) chkxml from checks cc -inner join revisions rr on cc.revisionid = rr.revisionid -inner join items ii on rr.itemid = ii.itemid -inner join stages ss on cc.stageid = ss.stageid -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE function [dbo].[vefn_CheckXML](@NewXML xml, @OldXML xml) -returns xml -begin -declare @ChkXML xml -set @ChkXML = -( -select -( -select * from -( - select ah.ROID,OldROValue,ROValue from - ( - select r1.value('@ROID','varchar(20)') roid,r1.value('@ROValue','varchar(max)') oldrovalue - from @OldXML.nodes('//ROCheck') as t1(r1) - ) ah - inner join - ( - select distinct r2.value('@ROID','varchar(20)') roid,r2.value('@ROValue','varchar(max)') rovalue - from @NewXML.nodes('//ROCheck') as t2(r2) - ) ds - on ah.roid = ds.roid - and oldrovalue != rovalue -) ROCheck -for xml auto,root('ROChecks'),type -) - , - ( -select * from -( - select ah.TransitionID,OldTransitionValue,TransitionValue from - ( - select r1.value('@TransitionID','int') TransitionID,r1.value('@TransitionValue','varchar(max)') OldTransitionValue - from @OldXML.nodes('//TransitionCheck') as t1(r1) - ) ah - inner join - ( - select distinct r2.value('@TransitionID','int') TransitionID,r2.value('@TransitionValue','varchar(max)') TransitionValue - from @NewXML.nodes('//TransitionCheck') as t2(r2) - ) ds - on ah.TransitionID = ds.TransitionID - and OldTransitionValue != TransitionValue -) TransitionCheck - for xml auto,root('TransitionChecks'),type -) - , - ( -select * from -( - select ah.DocID,OldDocDate,DocDate from - ( - select r1.value('@DocID','int') docid,r1.value('@DocDate','datetime') olddocdate - from @OldXML.nodes('//LibDocCheck') as t1(r1) - ) ah - inner join - ( - select distinct r2.value('@DocID','int') docid,r2.value('@DocDate','datetime') docdate - from @NewXML.nodes('//LibDocCheck') as t2(r2) - ) ds - on ah.docid = ds.docid - and olddocdate != docdate -) LibDocCheck - for xml auto,root('LibDocChecks'),type -) -for xml path(''),ROOT ('ConsistencyChecks'),type -) -return @ChkXML -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_CheckXML Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_CheckXML Error on Creation' -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChronologyReport]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChronologyReport]; -/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 03/20/2012 17:50:44 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/* -select * from vefn_chronologyreport(2) where type > 0 order by contentid,auditid -*/ -/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 05/18/2011 11:20:48 ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE function [dbo].[vefn_ChronologyReport](@ProcItemID int, @DTS datetime) -returns @Report table -( -src int, -AuditID bigint, -ContentID int, -Number nvarchar(512), -Text nvarchar(max), -Type int, -FormatID int, -Config nvarchar(max), -DTS datetime, -UserID nvarchar(200), -DeleteStatus int, -ActionDTS datetime, -ItemDTS datetime, -LastAuditID int, -DeletedAuditID int -) -WITH EXECUTE AS OWNER -AS -BEGIN ---added rhm/jcb 20121218i -declare @tmpTable table -( - icontentid int primary key -) -insert into @tmpTable select icontentid from vefn_tblchilditems(@ProcItemID,@ProcItemID,1) ---added jcb 20111122 ---declare @dts datetime ---set @dts = (select dts from items where itemid = @ProcItemID ) ---set @dts = (SELECT .[dbo].[vefn_GetPreviousRevisionDTSByItemID] (@ProcItemID)) ---end added jcb 20111122 - insert into @Report - SELECT -1 src, - [AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid - where Number is not null ---added jcb 20111028_1827 -and ca.contentid != (select contentid from items where itemid = @procitemid) -and ca.contentid in (select icontentid from @tmpTable) ---end added jcb 20111028_1827 ---added jcb 20111122 ---and ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > (select dts from items where itemid = @ProcItemID )) -and ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > @dts) ---and ca.dts > (select dts from items where itemid = @ProcItemID ) -and ca.dts > @dts ---end added jcb 20111122 --- UNION --- SELECT ---2 src, --- cast(ident_current('contentaudits') + 1 as bigint) auditid ----- (select max(auditid) + 1 from contentaudits) [AuditID] ----- 0 [AuditID] --- ,ca.[ContentID] --- ,[Number] --- ,[Text] --- ,[Type] --- ,[FormatID] --- ,[Config] --- ,ca.[DTS] cadts --- ,ca.[UserID] --- ,ca.[DeleteStatus] --- ,ActionDTS --- ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS ---,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID ---,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID --- FROM tblContents ca ----- inner join tblitems ti on ca.contentid = ti.contentid ---WHERE ca.DeleteStatus = 0 AND -----added jcb 20111028_1827 ---ca.contentid != (select contentid from items where itemid = @procitemid) and -----end added jcb 20111028_1827 -----ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > (select dts from items where itemid = @ProcItemID )) -----added jcb 20111122 -----ca.ContentID in (SELECT [ContentID] FROM Contents where dts > (select dts from items where itemid = @ProcItemID )) ---ca.ContentID in (SELECT [ContentID] FROM Contents where dts > @dts) -----end added jcb 20111122 -----order by ca.DTS,ActionDTS - UNION - SELECT -3 src, - cast(ident_current('contentaudits') + 1 as bigint) auditid --- (select max(auditid) + 1 from contentaudits) [AuditID] --- 0 [AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM tblContents ca --- inner join tblitems ti on ca.contentid = ti.contentid -WHERE ca.DeleteStatus = 0 AND ---added jcb 20111028_1827 -ca.contentid != (select contentid from items where itemid = @procitemid) -and ca.contentid in (select icontentid from @tmpTable) ---end added jcb 20111028_1827 ---added jcb 20111122 ---ca.dts > (select dts from items where itemid = @ProcItemID ) -and (ca.dts > @dts or ca.actiondts > @dts) ---end added jcb 20111122 - UNION - SELECT distinct -5 src, --- cast(ident_current('contentaudits') + 1 as bigint) auditid --- (select max(auditid) + 1 from contentaudits) [AuditID] - ca.[AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid -WHERE ca.DeleteStatus > 0 ---added jcb 20111028_1827 - --ca.contentid != (select contentid from items where itemid = @procitemid) and ---end added jcb 20111028_1827 ---added jcb 20111122 ---ca.dts > (select dts from items where itemid = @ProcItemID ) -and ca.contentid in (select icontentid from @tmpTable) -and (ca.dts > @dts or ca.actiondts > @dts) ---end added jcb 20111122 -order by ca.DTS,ActionDTS - - insert into @Report - SELECT -4 src, - ca.[AuditID] - ,ca.[ContentID] - ,ca.[Number] - ,ca.[Text] - ,ca.[Type] - ,ca.[FormatID] - ,ca.[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ca.ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid - inner join @Report rpt on ca.contentid = rpt.contentid and ca.auditid = rpt.lastauditid -where ca.auditid not in (select auditid from @report) -and rpt.lastauditid is not null -and ca.contentid in (select icontentid from @tmpTable) - return -end -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_ChronologyReport Succeeded' -ELSE PRINT 'Function: vefn_ChronologyReport Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_FindExternalFromTransitions] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindExternalFromTransitions]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindExternalFromTransitions]; -GO - -/* -Select * from vefn_FindExternalFromTransitions(185) -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create FUNCTION [dbo].[vefn_FindExternalFromTransitions](@ItemID int) -RETURNS @Children TABLE -( - [FromItemID] int, - [TransitionID] [int] NOT NULL, - [FromID] [int] NOT NULL, - [ToID] [int] NOT NULL, - [RangeID] [int] NOT NULL, - [Config] [nvarchar](max) NULL -) -WITH EXECUTE AS OWNER -AS -BEGIN -with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as ( - Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - ,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged] - FROM [Items] - where [ItemID]=@ItemID -Union All --- Children - select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID --- Siblings -Union All - select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - ,null,null,null,null - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 -) -insert into @Children -select ItemID [FromItemID], TT.[TransitionID], TT.[FromID], TT.[ToID], TT.[RangeID], TT.[Config] - from Transitions TT - join Items II on II.ContentID=TT.FromID -where (ToID not in(select ItemID from Itemz) OR RangeID not in(select ItemID from Itemz)) -AND FromID in(Select ContentID from ItemZ) -OPTION (MAXRECURSION 10000) -RETURN -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindExternalFromTransitions Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindExternalFromTransitions Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetFormatIDByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetFormatIDByItemID]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetFormatIDByItemID]; -GO - -/* -select dbo.vefn_GetFormatIDByItemID(41) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE function [dbo].[vefn_GetFormatIDByItemID] -(@ItemID int) -returns int -as begin - declare @FormatID int; - with itemz - ( - itemid,previousid,formatid,folderid,parentid - ) as - ( - select itemid,previousid,formatid,null,null - from items ii - join contents cc on ii.contentid = cc.contentid - where itemid = @ItemID - --siblins - union all - select ii.itemid,ii.previousid,cc.formatid,null,null - from items ii - join contents cc on ii.contentid = cc.contentid - join itemz zz on zz.previousid = ii.itemid - where zz.formatid is null - --chillins - union all - select ii.itemid,ii.previousid,cc.formatid,null,null - from parts pp - join items ii on ii.contentid = pp.contentid - join contents cc on ii.contentid = cc.contentid - join itemz zz on zz.itemid = pp.itemid - where zz.formatid is null - --docversions - union all - select 0,0,dv.formatid,0,dv.folderid - from docversions dv - join itemz zz on dv.itemid = zz.itemid - where zz.formatid is null - --folders - union all - select 0,0,ff.formatid,ff.folderid,ff.parentid - from folders ff - join itemz zz on ff.folderid = zz.parentid - where zz.folderid != zz.parentid - and zz.formatid is null - ) - select @FormatID = formatid from itemz zz - where formatid is not null - OPTION (MAXRECURSION 10000) - return @FormatID -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetFormatIDByItemID Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_GetFormatIDByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetPreviousRevisionDTSByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetPreviousRevisionDTSByItemID]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetPreviousRevisionDTSByItemID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE function [dbo].[vefn_GetPreviousRevisionDTSByItemID](@ItemID int) -returns datetime -WITH EXECUTE AS OWNER -AS -begin - declare @dts datetime - SELECT - @dts = [RevisionDate] - FROM [Revisions] - inner join - ( - select top 1 revisionid,mxvid from - ( - select top 2 revisionid,mxvid from - ( - select rr.revisionid,max(vv.versionid) mxvid - from items ii - inner join revisions rr on ii.itemid = rr.itemid - inner join versions vv on rr.revisionid = vv.revisionid - inner join stages ss on vv.stageid = ss.stageid - where ss.isapproved = 1 - and ii.itemid = @ItemID - group by rr.revisionid - union - select null,null - ) ds - order by mxvid desc - ) ah - order by revisionid - ) rr on [Revisions].revisionid = rr.revisionid - -- WHERE [ItemID] = @ItemID - -- ORDER BY [RevisionID] DESC - return @dts -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetPreviousRevisionDTSByItemID Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_GetPreviousRevisionDTSByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [vefn_GetStepTypeNameByItemIDandTypeID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetStepTypeNameByItemIDandTypeID]') AND OBJECTPROPERTY(id,N'IsScalarFunction') = 1) - DROP FUNCTION [vefn_GetStepTypeNameByItemIDandTypeID]; -GO - -/* -select dbo.vefn_GetStepTypeNameByItemIDandTypeID(9830,20005) -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE function [dbo].[vefn_GetStepTypeNameByItemIDandTypeID](@ItemID int, @TypeID int) -returns varchar(max) -as begin - declare @typename varchar(max) - select @typename = r1.value('@Type','varchar(max)') - from items ii - inner join formats ff on 1=1 - cross apply ff.data.nodes('//Step') t1(r1) - where ii.itemid = @ItemID - and ff.formatid = (select dbo.vefn_GetFormatIDByItemID(@ItemID)) - and r1.value('@Index','int') = @TypeID - 20000 - return @typename -end -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'ScalarFunction Creation: vefn_GetStepTypeNameByItemIDandTypeID Succeeded' -ELSE PRINT 'ScalarFunction Creation: vefn_GetStepTypeNameByItemIDandTypeID Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetAllConsistencyIssues] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetAllConsistencyIssues]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetAllConsistencyIssues]; -GO - -/* -[dbo].[vesp_GetAllConsistencyIssues] 1 - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetAllConsistencyIssues] -( - @DocVersionID int -) -AS BEGIN - declare @myxml xml - set @myxml = (select dbo.vefn_checkallxml(@DocVersionID)) - DECLARE @Items TABLE - ( - ItemID int PRIMARY KEY - ) - INSERT INTO @Items - select r1.value('@ItemID','int') itemid - from @myxml.nodes('//ROCheck') t1(r1) - union - select r1.value('@ItemID','int') itemid - from @myxml.nodes('//TransitionCheck') t1(r1) - union - select r1.value('@ItemID','int') itemid - from @myxml.nodes('//LibDocCheck') t1(r1) - SELECT - ii.[ItemID] - ,ii.[PreviousID] - ,ii.[ContentID] - ,ii.[DTS] - ,ii.[UserID] - ,ii.[LastChanged] - ,CC.[Number] - ,CC.[Text] - ,CC.[Type] - ,CC.[FormatID] - ,CC.[Config] - ,CC.[DTS] [cDTS] - ,CC.[UserID] [cUserID] - ,CC.[LastChanged] [cLastChanged] - ,(SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ii.[ItemID]) [AnnotationCount] - ,(SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ii.[ItemID]) [DocVersionCount] - ,(SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ii.[ItemID]) [NextCount] - ,(SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ii.[ItemID]) [PartCount] - ,(SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ii.[ItemID]) [Transition_RangeIDCount] - ,(SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ii.[ItemID]) [Transition_ToIDCount] - ,(SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=CC.[ContentID]) [DetailCount] - ,(SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=CC.[ContentID]) [EntryCount] - ,(SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=CC.[ContentID]) [GridCount] - ,(SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=CC.[ContentID]) [ImageCount] - ,(SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=CC.[ContentID]) [ItemCount] - ,(SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=CC.[ContentID]) [cPartCount] - ,(SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=CC.[ContentID]) [RoUsageCount] - ,(SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=CC.[ContentID]) [TransitionCount] - ,(SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=CC.[ContentID]) [ZContentCount] - ,(select dbo.vefn_CheckAllXMLByItemID(ii.itemid,@myxml)) ChkXml - FROM [Items] ii - INNER JOIN [Contents] cc ON ii.[ContentID] = cc.[ContentID] - where ii.ItemID in (select ItemID from @Items) --- order by ii.itemid -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetAllConsistencyIssues Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetAllConsistencyIssues Error on Creation' -GO - -/****** Object: StoredProcedure [vesp_GetConsistencyCheckProcedures] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vesp_GetConsistencyCheckProcedures]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [vesp_GetConsistencyCheckProcedures]; -GO - -/* -declare @myxml xml -select @myxml = consistencychecks from checks where checkid = 2 -declare @docversionid int -set @docversionid = 1 -exec vesp_GetConsistencyCheckProcedures @docversionid, @myxml -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[vesp_GetConsistencyCheckProcedures] -( - @DocVersionID int, - @MyXml xml -) -AS BEGIN ---to be removed --- set @myxml = cast(replace(cast(@myxml as varchar(max)),'2011-08-24T11:20:57.027','2011-12-25T00:00:00.000') as xml) --- set @myxml = cast(replace(cast(@myxml as varchar(max)),'88%','88.12345%') as xml) --- set @myxml = cast(replace(cast(@myxml as varchar(max)),'="6%','="6.12345%') as xml) --- set @myxml = cast(replace(cast(@myxml as varchar(max)),'23%','23.12345%') as xml) --- set @myxml = cast(replace(cast(@myxml as varchar(max)),'90%','90.12345%') as xml) --- set @myxml = cast(replace(cast(@myxml as varchar(max)),', Step 13',', Step 14') as xml) ---end to be removed - DECLARE @Items TABLE - ( - ID int identity(1,1), - ItemID int - ) - INSERT INTO @Items (itemid) - select roc.value('@ItemID','int') itemid - from @myxml.nodes('//ConsistencyChecks') t1(roc) - declare @LatestApproved TABLE - ( - ItemID int PRIMARY KEY, - CheckID int - ) - insert into @LatestApproved - select rr.itemid,max(checkid) checkid - from revisions rr - inner join checks cc on rr.revisionid = cc.revisionid - inner join stages ss on cc.stageid = ss.stageid - where ss.isapproved = 1 - and rr.itemid in - (select itemid from vefn_siblingitems((select itemid from docversions where versionid = @docversionid),0)) - group by rr.itemid - - SELECT - ii.[ItemID] - ,ii.[PreviousID] - ,ii.[ContentID] - ,ii.[DTS] - ,ii.[UserID] - ,ii.[LastChanged] - ,CC.[Number] - ,CC.[Text] - ,CC.[Type] - ,CC.[FormatID] - ,CC.[Config] - ,CC.[DTS] [cDTS] - ,CC.[UserID] [cUserID] - ,CC.[LastChanged] [cLastChanged] - ,(SELECT COUNT(*) FROM [Annotations] WHERE [Annotations].[ItemID]=ii.[ItemID]) [AnnotationCount] - ,(SELECT COUNT(*) FROM [DocVersions] WHERE [DocVersions].[ItemID]=ii.[ItemID]) [DocVersionCount] - ,(SELECT COUNT(*) FROM [Items] [Next] WHERE [Next].[PreviousID]=ii.[ItemID]) [NextCount] - ,(SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ItemID]=ii.[ItemID]) [PartCount] - ,(SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[RangeID]=ii.[ItemID]) [Transition_RangeIDCount] - ,(SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[ToID]=ii.[ItemID]) [Transition_ToIDCount] - ,(SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=CC.[ContentID]) [DetailCount] - ,(SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=CC.[ContentID]) [EntryCount] - ,(SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=CC.[ContentID]) [GridCount] - ,(SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=CC.[ContentID]) [ImageCount] - ,(SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=CC.[ContentID]) [ItemCount] - ,(SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=CC.[ContentID]) [cPartCount] - ,(SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=CC.[ContentID]) [RoUsageCount] - ,(SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=CC.[ContentID]) [TransitionCount] - ,(SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=CC.[ContentID]) [ZContentCount] - ,ribeye.ChkXml - FROM [Items] ii - INNER JOIN [Contents] cc ON ii.[ContentID] = cc.[ContentID] - inner join - ( - select la.itemid,.dbo.vefn_checkxml(@myxml,cc.consistencychecks) chkxml - from checks cc - inner join @LatestApproved la on cc.checkid = la.checkid - ) ribeye on ii.itemid = ribeye.itemid -left join @items iii on ii.itemid = iii.itemid - where chkxml.exist('//ROChecks') | chkxml.exist('//TransitionChecks') | chkxml.exist('//LibDocChecks') > 0 or - ii.ItemID in (select ItemID from @Items) - order by isnull(iii.id,999999) -END -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: vesp_GetConsistencyCheckProcedures Succeeded' -ELSE PRINT 'Procedure Creation: vesp_GetConsistencyCheckProcedures Error on Creation' -GO - -/****** Object: StoredProcedure [purgeData] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[purgeData]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [purgeData]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[purgeData] - -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION - delete from [AnnotationAudits] - dbcc checkident([AnnotationAudits],reseed,0) - delete from [Applicabilities] - dbcc checkident([Applicabilities],reseed,0) - delete from [ApplicableStructures] - delete from [Assignments] - dbcc checkident([Assignments],reseed,0) - delete from [Associations] - dbcc checkident([Associations],reseed,0) - delete from [Checks] - dbcc checkident([Checks],reseed,0) - delete from [ContentAudits] - dbcc checkident([ContentAudits],reseed,0) - delete from [DeleteLog] - dbcc checkident([DeleteLog],reseed,0) - delete from [Details] - dbcc checkident([Details],reseed,0) - delete from [DocumentAudits] - dbcc checkident([DocumentAudits],reseed,0) - delete from [DocVersions] - dbcc checkident([DocVersions],reseed,0) - delete from [DROUsages] - dbcc checkident([DROUsages],reseed,0) - delete from [EntryAudits] - dbcc checkident([EntryAudits],reseed,0) - delete from [Figures] - dbcc checkident([Figures],reseed,0) - delete from [Folders] - dbcc checkident([Folders],reseed,0) - delete from [GridAudits] - dbcc checkident([GridAudits],reseed,0) - delete from [ImageAudits] - dbcc checkident([ImageAudits],reseed,0) - delete from [ItemAudits] - dbcc checkident([ItemAudits],reseed,0) - delete from [Memberships] - dbcc checkident([Memberships],reseed,0) - delete from [PartAudits] - dbcc checkident([PartAudits],reseed,0) - delete from [Pdfs] - delete from [Permissions] - dbcc checkident([Permissions],reseed,0) - delete from [ROFsts] - dbcc checkident([ROFsts],reseed,0) - delete from [ROImages] - dbcc checkident([ROImages],reseed,0) - delete from [Roles] - dbcc checkident([Roles],reseed,0) - delete from [ROUsageAudits] - dbcc checkident([ROUsageAudits],reseed,0) - delete from [tblAnnotations] - dbcc checkident([tblAnnotations],reseed,0) - delete from [tblEntries] - delete from [tblGrids] - delete from [tblImages] - delete from [tblParts] - delete from [tblROUsages] - dbcc checkident([tblROUsages],reseed,0) - delete from [TransitionAudits] - dbcc checkident([TransitionAudits],reseed,0) - delete from [Users] - dbcc checkident([Users],reseed,0) - delete from [Versions] - dbcc checkident([Versions],reseed,0) - delete from [ZContents] - delete from [ZTransitions] - delete from [AnnotationTypes] - dbcc checkident([AnnotationTypes],reseed,0) - delete from [Connections] - dbcc checkident([Connections],reseed,0) - delete from [Groups] - dbcc checkident([Groups],reseed,0) - delete from [Revisions] - dbcc checkident([Revisions],reseed,0) - delete from [RODbs] - dbcc checkident([RODbs],reseed,0) - delete from [Stages] - dbcc checkident([Stages],reseed,0) - delete from [tblDocuments] - dbcc checkident([tblDocuments],reseed,0) - delete from [tblTransitions] - dbcc checkident([tblTransitions],reseed,0) - delete from [tblItems] - dbcc checkident([tblItems],reseed,0) - delete from [tblContents] - dbcc checkident([tblContents],reseed,0) - delete from [Formats] - dbcc checkident([Formats],reseed,0) - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: purgeData Succeeded' -ELSE PRINT 'Procedure Creation: purgeData Error on Creation' -GO diff --git a/PROMS/DataLoader/PROMStoCM.sql b/PROMS/DataLoader/PROMStoCM.sql deleted file mode 100644 index b0713187..00000000 --- a/PROMS/DataLoader/PROMStoCM.sql +++ /dev/null @@ -1,3236 +0,0 @@ -/****** Object: StoredProcedure [dbo].[jcbAuditConfig] Script Date: 03/29/2011 17:32:35 ******/ -IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[jcbAuditConfig]') AND type in (N'P', N'PC')) -DROP PROCEDURE [dbo].[jcbAuditConfig] -GO - -/****** Object: StoredProcedure [dbo].[jcbAuditConfig] Script Date: 03/29/2011 17:33:30 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create procedure [dbo].[jcbAuditConfig] -@tablename varchar(max) -as begin ---print 'table name: ' + @tablename - declare @cmd varchar(max) - set @cmd = '' - - --new table name variable - declare @newtablename varchar(max) - set @newtablename = 'tbl' + @tablename ---print 'new table name: ' + @newtablename - - --rename table - set @cmd = 'sp_rename ' + '''' + @tablename + '''' + ',' + '''' + @newtablename + '''' ---print 'rename table: ' + @cmd - exec (@cmd) - set @cmd = '' - - --add column DeleteStatus - set @cmd = 'alter table ' + @newtablename + ' add DeleteStatus int not null constraint DF_' + @newtablename + '_DeleteStatus default ((0))' ---print 'add column deletestatus: ' + @cmd - exec (@cmd) - set @cmd = '' - - --create index on deletestatus - set @cmd = 'CREATE NONCLUSTERED INDEX IX_' + @newtablename + 'DeleteStatus ON ' + @newtablename + ' - ( - [DeleteStatus] ASC - )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] - ' - exec (@cmd) - set @cmd = '' - - --primary key variable - declare @primarykey varchar(max) - select @primarykey = coalesce(@primarykey + ' and ','') + - 'dd.' + c.name + ' = ' + 'ii.' + c.name - from sysindexes i - inner join sysobjects o ON i.id = o.id - inner join sysobjects pk ON i.name = pk.name and pk.parent_obj = i.id and pk.xtype = 'PK' - inner join sysindexkeys ik on i.id = ik.id and i.indid = ik.indid - inner join syscolumns c ON ik.id = c.id and ik.colid = c.colid - where o.name = @newtablename - order by ik.keyno ---print 'primary key: ' + @primarykey - - --shadow table name variable - declare @shadowtablename varchar(max) - if substring(@tablename,len(@tablename)-2,3) = 'ies' - set @shadowtablename = replace(@tablename,'ies','y') + 'Audits' - else - set @shadowtablename = substring(@tablename,1,len(@tablename)-1) + 'Audits' ---print 'shadow table name: ' + @shadowtablename - - --create base shadow table - set @cmd = 'create table ' + @shadowtablename + '(AuditID bigint identity (1,1) not null CONSTRAINT [PK_' + @shadowtablename + '] PRIMARY KEY CLUSTERED ([AuditID] ASC))' ---print 'create shadow table: ' + @cmd - exec (@cmd) - set @cmd = '' - - --temp variables for cursor - declare @columnname varchar(max) - declare @columntype varchar(max) - declare @columnlength smallint - declare @columnnullable int - declare @columncollation sysname - declare @columnprecision tinyint - declare @columnscale tinyint - - --separator variable - declare @sep varchar(max) - set @sep = '' - - --table columns variable - declare @tablecolumns varchar(max) - set @tablecolumns = '' - - --ii table columns variable - declare @iitablecolumns varchar(max) - set @iitablecolumns = '' - - --dd table columns variable - declare @ddtablecolumns varchar(max) - set @ddtablecolumns = '' - - --view columns variable - declare @viewcolumns varchar(max) - set @viewcolumns = '' - - --trigger columns variable - declare @trigcolumns varchar(max) - set @trigcolumns = '' - - --cursor for getting columns - declare tc cursor read_only for - select c.name,t.name typename,c.length,c.isnullable,c.collation,c.xprec,c.xscale - from sysobjects o - inner join syscolumns c on o.id = c.id - inner join systypes t on c.xtype = t.xtype - where 1=1 - and o.name = @newtablename - and t.name != 'sysname' - order by c.colorder - - --alter shadow table command - set @cmd = 'alter table ' + @shadowtablename + ' add ' ---print 'alter shadow table start: ' + @cmd - - open tc - fetch next from tc - into @columnname,@columntype,@columnlength,@columnnullable,@columncollation,@columnprecision,@columnscale - while @@fetch_status = 0 - begin - if @columntype not in ('text','ntext','image') - begin - if @columntype not in ('timestamp') - begin - set @cmd = @cmd + @sep + @columnname + ' ' + @columntype - if @columntype in ('binary','char','nchar','nvarchar','varbinary','varchar') - begin - if @columnlength = -1 - set @cmd = @cmd + '(max)' - else - set @cmd = @cmd + '(' + cast(@columnlength as varchar(10)) + ')' - end - if @columntype in ('decimal','numeric') - set @cmd = @cmd + '(' + cast(@columnprecision as varchar(10)) + ',' + cast(@columnscale as varchar(10)) + ')' - if @columntype in ('char','nchar','nvarchar','varchar') - set @cmd = @cmd + ' collate ' + @columncollation + ' ' - if @columnnullable = 0 - set @cmd = @cmd + ' not' - set @cmd = @cmd + ' null' - set @tablecolumns = @tablecolumns + @sep + @columnname - set @iitablecolumns = @iitablecolumns + @sep + 'ii.' + @columnname - set @ddtablecolumns = @ddtablecolumns + @sep + 'dd.' + @columnname - end - if @columnname <> 'DeleteStatus' - begin - set @viewcolumns = @viewcolumns + @sep + @columnname - if @columntype not in ('timestamp') - begin - set @trigcolumns = @trigcolumns + @sep + @columnname - end - end - set @sep = ',' - end - fetch next from tc - into @columnname,@columntype,@columnlength,@columnnullable,@columncollation,@columnprecision,@columnscale - end - close tc - deallocate tc - - --modify shadow table ---print 'modify shadow table: ' + @cmd - exec (@cmd) - set @cmd = '' - - --add extended property for shadow table dts - set @cmd = 'sys.sp_addextendedproperty @name=N''MS_Description'', @value=N''{datetime}'' , @level0type=N''SCHEMA'',@level0name=N''dbo'', @level1type=N''TABLE'',@level1name=N''' + @shadowtablename + ''', @level2type=N''COLUMN'',@level2name=N''DTS''' - exec (@cmd) - set @cmd = '' - - --add original indexes to shadowtable - --variables for cursor - declare @indexcolumnname varchar(max) - declare ic cursor for - select - c.name columnname - from sysindexes i - inner join sysobjects o ON i.id = o.id - inner join sysindexkeys ik on i.id = ik.id and i.indid = ik.indid - inner join syscolumns c ON ik.id = c.id and ik.colid = c.colid - where o.name = @newtablename - - open ic - fetch next from ic into @indexcolumnname - while @@fetch_status = 0 - begin - set @cmd = 'CREATE NONCLUSTERED INDEX IX_' + @shadowtablename + @indexcolumnname + ' on ' + @shadowtablename + ' - (' + @indexcolumnname + ') - WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]' - exec (@cmd) - set @cmd = '' - fetch next from ic into @indexcolumnname - end - close ic - deallocate ic - - --create view - set @cmd = 'create view ' + @tablename + ' as select ' + @viewcolumns + ' from ' + @newtablename + ' where DeleteStatus = 0' ---print 'create view: ' + @cmd - exec (@cmd) - set @cmd = '' - - --create update trigger on table - set @cmd = 'create trigger tr_' + @newtablename + '_Update on ' + @newtablename + - ' for update as - begin - if exists (select * from inserted) - begin - insert into ' + @shadowtablename + '(' + @tablecolumns + ') - select ' + @ddtablecolumns + ' from deleted dd - inner join inserted ii on ' + @primarykey + ' - end - end' ---print 'table trigger update: ' + @cmd - exec (@cmd) - set @cmd = '' - - --create delete trigger on view - set @cmd = 'create trigger tr_' + @tablename + '_Delete on ' + @tablename + - ' instead of delete as - begin - update ii set DeleteStatus = (select max(DeleteID) from DeleteLog where SPID = @@spid), DTS = getdate(), - UserID = (select top 1 UserID from DeleteLog where SPID = @@spid order by deleteid desc) - from ' + @newtablename + ' ii inner join deleted dd on ' + @primarykey + ' - insert into ' + @shadowtablename + '(' + @tablecolumns + ') - select ' + @iitablecolumns + ' - from ' + @newtablename + ' ii inner join deleted dd on ' + @primarykey + ' - where ii.DeleteStatus > 0 - end' ---print 'view trigger delete: ' + @cmd - exec (@cmd) - set @cmd = '' -end -GO -jcbAuditConfig 'Annotations' -go -jcbAuditConfig 'Contents' -go -jcbAuditConfig 'Documents' -go -jcbAuditConfig 'Entries' -go -jcbAuditConfig 'Grids' -go -jcbAuditConfig 'Images' -go -jcbAuditConfig 'Items' -go -jcbAuditConfig 'Parts' -go ---new stuff -jcbAuditConfig 'ROUsages' -go -jcbAuditConfig 'Transitions' -go - -/****** Object: Alter Table: contentaudits ******/ ---alter table contentaudits add ActionDTS datetime, ActionType varchar(100) -alter table contentaudits add ActionDTS datetime -go --- Display the status of alter table -IF (@@Error = 0) PRINT 'Alter Table: contentaudits Succeeded' -ELSE PRINT 'Alter Table: contentaudits Error on Creation' -GO - -/****** Object: Alter Table: tblcontents ******/ ---alter table tblcontents add ActionDTS datetime, ActionType varchar(100) -alter table tblcontents add ActionDTS datetime -go --- Display the status of alter table -IF (@@Error = 0) PRINT 'Alter Table: tblcontents Succeeded' -ELSE PRINT 'Alter Table: tblcontents Error on Creation' -GO - -/****** Object: Alter Table: annotationaudits ******/ ---alter table annotationaudits add ActionDTS datetime, ActionType varchar(100) -alter table annotationaudits add ActionDTS datetime -go --- Display the status of alter table -IF (@@Error = 0) PRINT 'Alter Table: annotationaudits Succeeded' -ELSE PRINT 'Alter Table: annotationaudits Error on Creation' -GO - -/****** Object: Alter Table: tblAnnotations ******/ ---alter table tblAnnotations add ActionDTS datetime, ActionType varchar(100) -alter table tblAnnotations add ActionDTS datetime -go --- Display the status of alter table -IF (@@Error = 0) PRINT 'Alter Table: tblAnnotations Succeeded' -ELSE PRINT 'Alter Table: tblAnnotations Error on Creation' -GO - -/****** Object: Alter Table: gridaudits ******/ -alter table gridaudits add ContentAuditID bigint NOT NULL CONSTRAINT [DF_GridAudits_ContentAuditID] DEFAULT ((0)) -go --- Display the status of alter table -IF (@@Error = 0) PRINT 'Alter Table: gridaudits Succeeded' -ELSE PRINT 'Alter Table: gridaudits Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[ve_GetPartType] Script Date: 05/18/2011 11:20:48 ******/ -/* -select ItemID, dbo.[ve_GetPartType](ItemID) -from Items II -where ItemID in(10181,10182,10183) -*/ --- drop function ve_GetPath -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create FUNCTION [dbo].[ve_GetPartType] (@ItemID int) RETURNS varchar(max) -WITH EXECUTE AS OWNER -AS -BEGIN --- declare @STructID int ---set @StructID=11 -declare @PartType varchar(max); -with Itemz(ItemID,PreviousID,PartType) as ( - Select ItemID,PreviousID,cast(null as varchar(max)) - from Items I - where ItemID=@ItemID - Union All --- siblings - Select Z.PreviousID,II.PreviousID,cast(null as varchar(max)) - from Items II - Join Itemz Z on II.ItemID = Z.PreviousID - where Z.PreviousID != 0 - and Z.PartType is null - Union All --- children - select Z.ItemID,Z.PreviousID, - cast(case P.FromType - when 1 then 'Procedure' - when 2 then 'Section' - when 3 then 'Caution' - when 4 then 'Note' - when 5 then 'RNO' - when 6 then 'Step' - when 7 then 'Table' - else 'Unknown' - end as varchar(max)) PartType - from Parts P - join Itemz Z on P.ItemID=Z.ItemID - where Z.PartType is null -) -select @PartType = PartType From Itemz where PartType is not null -OPTION (MAXRECURSION 10000) -return @PartType -END; -GO --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Function: ve_GetPartType Succeeded' -ELSE PRINT 'Function: ve_GetPartType Error on Creation' -go - -/****** Object: UserDefinedFunction [dbo].[ve_GetPartContentID] Script Date: 05/18/2011 11:20:48 ******/ -/* -select ItemID, dbo.[ve_GetPartContentID](ItemID) -from ItemAudits II -where ii.ItemID in(10181,10182,10183) -*/ --- drop function ve_GetPath -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[ve_GetPartContentID] (@ItemID int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN --- declare @STructID int ---set @StructID=11 -declare @ContentID int; -with Itemz(ItemID,PreviousID,ContentID,path) as ( - Select ItemID,PreviousID,cast(null as int),'.' + cast(itemid as varchar(max)) + '.' - from ItemAudits I - where ItemID=@ItemID -and i.deletestatus > 0 - Union All --- siblings - Select Z.PreviousID,II.PreviousID,cast(null as int),z.path + '.' + cast(z.previousid as varchar(max)) + '.' - from Items II - Join Itemz Z on II.ItemID = Z.PreviousID - where Z.PreviousID != 0 - and Z.ContentID is null - Union All --- siblings - Select Z.PreviousID,II.PreviousID,cast(null as int),z.path + '.' + cast(z.previousid as varchar(max)) + '.' - from ItemAudits II - Join Itemz Z on II.ItemID = Z.PreviousID - where Z.PreviousID != 0 - and Z.ContentID is null -and ii.deletestatus > 0 -and z.path not like '%.' + cast(z.previousid as varchar(max)) + '.%' - Union All --- children - select Z.ItemID,Z.PreviousID, -P.Contentid,z.path + '.' + cast(Z.ItemID as varchar(max)) + '.' - from Parts P - join Itemz Z on P.ItemID=Z.ItemID - where Z.ContentID is null - Union All --- children - select Z.ItemID,Z.PreviousID, -P.Contentid,z.path + '.' + cast(Z.ItemID as varchar(max)) + '.' - from PartAudits P - join Itemz Z on P.ItemID=Z.ItemID - where Z.ContentID is null -) -select @ContentID = min(ContentID) From Itemz where ContentID is not null -OPTION (MAXRECURSION 10000) -return @ContentID -END; -GO --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Function: ve_GetPartContentID Succeeded' -ELSE PRINT 'Function: ve_GetPartContentID Error on Creation' -go - -/****** Object: UserDefinedFunction [dbo].[ve_GetPartFromType] Script Date: 05/18/2011 11:20:48 ******/ -/* -select ItemID, dbo.[ve_GetPartFromType](ItemID) -from ItemAudits II -where ii.ItemID in(10181,10182,10183) -*/ --- drop function ve_GetPath -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create FUNCTION [dbo].[ve_GetPartFromType] (@ItemID int) RETURNS int -WITH EXECUTE AS OWNER -AS -BEGIN --- declare @STructID int ---set @StructID=11 -declare @FromType int; -with Itemz(ItemID,PreviousID,FromType,path) as ( - Select ItemID,PreviousID,cast(null as int),'.' + cast(itemid as varchar(max)) + '.' - from ItemAudits I - where ItemID=@ItemID -and i.deletestatus > 0 - Union All --- siblings - Select Z.PreviousID,II.PreviousID,cast(null as int),z.path + '.' + cast(z.previousid as varchar(max)) + '.' - from Items II - Join Itemz Z on II.ItemID = Z.PreviousID - where Z.PreviousID != 0 - and Z.FromType is null - Union All --- siblings - Select Z.PreviousID,II.PreviousID,cast(null as int),z.path + '.' + cast(z.previousid as varchar(max)) + '.' - from ItemAudits II - Join Itemz Z on II.ItemID = Z.PreviousID - where Z.PreviousID != 0 - and Z.FromType is null -and ii.deletestatus > 0 -and z.path not like '%.' + cast(z.previousid as varchar(max)) + '.%' - Union All --- children - select Z.ItemID,Z.PreviousID, -P.FromType,z.path + '.' + cast(Z.ItemID as varchar(max)) + '.' - from Parts P - join Itemz Z on P.ItemID=Z.ItemID - where Z.FromType is null - Union All --- children - select Z.ItemID,Z.PreviousID, -P.FromType,z.path + '.' + cast(Z.ItemID as varchar(max)) + '.' - from PartAudits P - join Itemz Z on P.ItemID=Z.ItemID - where Z.FromType is null -) -select @FromType = min(FromType) From Itemz where FromType is not null -OPTION (MAXRECURSION 10000) -return @FromType -END; -GO --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Function: ve_GetPartFromType Succeeded' -ELSE PRINT 'Function: ve_GetPartFromType Error on Creation' -go - - -/****** Object: StoredProcedure [getAnnotationAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotationAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAnnotationAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [AnnotationID], - [ItemID], - [TypeID], - [RtfText], - [SearchText], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [AnnotationAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationAudits Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getAnnotationAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotationAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAnnotationAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [AnnotationID], - [ItemID], - [TypeID], - [RtfText], - [SearchText], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [AnnotationAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationAudit Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getAnnotationAuditsByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationAuditsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotationAuditsByItemID]; -GO - -/* -exec getannotationauditsbyitemid 894 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAnnotationAuditsByItemID] -( - @ItemID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [AnnotationID], - [ItemID], - [TypeID], - [RtfText], - [SearchText], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [AnnotationAudits] - WHERE ItemID = @ItemID - AND AnnotationID NOT IN (SELECT AnnotationID FROM Annotations) - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationAuditsByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationAuditsByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getAnnotationAuditsByAnnotationID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getAnnotationAuditsByAnnotationID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getAnnotationAuditsByAnnotationID]; -GO - -/* -exec getannotationauditsbyannotationid 53 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getAnnotationAuditsByAnnotationID] -( - @AnnotationID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [AnnotationID], - [ItemID], - [TypeID], - [RtfText], - [SearchText], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [AnnotationAudits] - WHERE AnnotationID = @AnnotationID - AND DeleteStatus = 0 - --AND AnnotationID IN (SELECT AnnotationID FROM Annotations) - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getAnnotationAuditsByAnnotationID Succeeded' -ELSE PRINT 'Procedure Creation: getAnnotationAuditsByAnnotationID Error on Creation' -GO - -/****** Object: StoredProcedure [getContentAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ContentAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAudits Succeeded' -ELSE PRINT 'Procedure Creation: getContentAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getContentAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ContentAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAudit Succeeded' -ELSE PRINT 'Procedure Creation: getContentAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getContentAuditsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAuditsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsByContentID] -( - @ContentID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ContentAudits] - WHERE ContentID = @ContentID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getContentAuditsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getContentAuditsByDeleteStatus] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsByDeleteStatus]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getContentAuditsByDeleteStatus]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsByDeleteStatus] -( - @DeleteStatus int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ContentAudits] - WHERE DeleteStatus = @DeleteStatus - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getContentAuditsByDeleteStatus Succeeded' -ELSE PRINT 'Procedure Creation: getContentAuditsByDeleteStatus Error on Creation' -GO - -/****** Object: StoredProcedure [getDocumentAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocumentAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocumentAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocumentAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [DocID], - [LibTitle], - [DocContent], - [DocAscii], - [Config], - [DTS], - [UserID], - [FileExtension], - [DeleteStatus] - FROM [DocumentAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocumentAudits Succeeded' -ELSE PRINT 'Procedure Creation: getDocumentAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getDocumentAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocumentAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocumentAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocumentAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [DocID], - [LibTitle], - [DocContent], - [DocAscii], - [Config], - [DTS], - [UserID], - [FileExtension], - [DeleteStatus] - FROM [DocumentAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocumentAudit Succeeded' -ELSE PRINT 'Procedure Creation: getDocumentAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getDocumentAuditsByDocID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getDocumentAuditsByDocID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getDocumentAuditsByDocID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getDocumentAuditsByDocID] -( - @DocID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [DocID], - [LibTitle], - [DocContent], - [DocAscii], - [Config], - [DTS], - [UserID], - [FileExtension], - [DeleteStatus] - FROM [DocumentAudits] - WHERE DocID = @DocID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getDocumentAuditsByDocID Succeeded' -ELSE PRINT 'Procedure Creation: getDocumentAuditsByDocID Error on Creation' -GO - -/****** Object: StoredProcedure [getEntryAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getEntryAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getEntryAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getEntryAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [DocID], - [DTS], - [UserID], - [DeleteStatus] - FROM [EntryAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getEntryAudits Succeeded' -ELSE PRINT 'Procedure Creation: getEntryAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getEntryAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getEntryAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getEntryAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getEntryAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [DocID], - [DTS], - [UserID], - [DeleteStatus] - FROM [EntryAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getEntryAudit Succeeded' -ELSE PRINT 'Procedure Creation: getEntryAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getEntryAuditsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getEntryAuditsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getEntryAuditsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getEntryAuditsByContentID] -( - @ContentID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [DocID], - [DTS], - [UserID], - [DeleteStatus] - FROM [EntryAudits] - WHERE ContentID = @ContentID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getEntryAuditsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getEntryAuditsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getGridAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGridAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getGridAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGridAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Data], - [Config], - [DTS], - [UserID], - [DeleteStatus], - [ContentAuditID] - FROM [GridAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getGridAudits Succeeded' -ELSE PRINT 'Procedure Creation: getGridAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getGridAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGridAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getGridAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGridAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Data], - [Config], - [DTS], - [UserID], - [DeleteStatus], - [ContentAuditID] - FROM [GridAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getGridAudit Succeeded' -ELSE PRINT 'Procedure Creation: getGridAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getGridAuditsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getGridAuditsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getGridAuditsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getGridAuditsByContentID] -( - @ContentID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Data], - [Config], - [DTS], - [UserID], - [DeleteStatus], - [ContentAuditID] - FROM [GridAudits] - WHERE ContentID = @ContentID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getGridAuditsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getGridAuditsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getImageAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getImageAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getImageAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getImageAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [ImageType], - [FileName], - [Data], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ImageAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getImageAudits Succeeded' -ELSE PRINT 'Procedure Creation: getImageAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getImageAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getImageAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getImageAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getImageAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [ImageType], - [FileName], - [Data], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ImageAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getImageAudit Succeeded' -ELSE PRINT 'Procedure Creation: getImageAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getImageAuditsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getImageAuditsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getImageAuditsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getImageAuditsByContentID] -( - @ContentID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [ImageType], - [FileName], - [Data], - [Config], - [DTS], - [UserID], - [DeleteStatus] - FROM [ImageAudits] - WHERE ContentID = @ContentID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getImageAuditsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getImageAuditsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getItemAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ItemID], - [PreviousID], - [ContentID], - [DTS], - [UserID], - [DeleteStatus] - FROM [ItemAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemAudits Succeeded' -ELSE PRINT 'Procedure Creation: getItemAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getItemAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ItemID], - [PreviousID], - [ContentID], - [DTS], - [UserID], - [DeleteStatus] - FROM [ItemAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemAudit Succeeded' -ELSE PRINT 'Procedure Creation: getItemAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getItemAuditsByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getItemAuditsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getItemAuditsByItemID]; -GO - -/* -getitemauditsbyitemid 10183 - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getItemAuditsByItemID] -( - @ItemID int -) - -WITH EXECUTE AS OWNER -AS -/* - with Itemz([AuditType],[Level], [ParentID], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged]) as ( - Select 'root' [AuditType], 0 [Level], 0 [ParentID], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged] - FROM [Items] - where [ItemID]= @ItemID - Union All - -- Children - select 'chld' [AuditType], [Level] + 2,Z.ItemID,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - -- Siblings - Union All - select 'sibl' [AuditType], [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged] - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - where Z.[Level] > 0 - ) -*/ - -select * from -( - --get deleted previous item - select 0 Level,ia.*,dbo.[ve_GetPartType](@ItemID) ItemType from - itemaudits ia - inner join itemaudits iaa on ia.itemid = iaa.previousid - where iaa.itemid = @ItemID - and ia.itemid not in (select itemid from items where itemid = ia.itemid) - and ia.deletestatus in (select max(deletestatus) from itemaudits where itemid = ia.itemid) - union - --get deleted next item -/* - select 1 Level,ia.*,@itemtype ItemType from itemaudits ia - where ia.previousid = @ItemID - and ia.itemid not in (select itemid from items where itemid = ia.itemid) - and ia.deletestatus in (select max(deletestatus) from itemaudits where itemid = ia.itemid) -*/ - select 1 Level, - ia.[AuditID], - ia.[ItemID], - ia.[PreviousID], - ia.[ContentID], - ia.[DTS], - ia.[UserID], - ti.[DeleteStatus] -,dbo.[ve_GetPartType](@ItemID) ItemType - from itemaudits ia - inner join tblitems ti on ia.itemid = ti.itemid - where ia.previousid = @ItemID - and ti.deletestatus > 0 -and ia.dts = ti.dts - union - --get chillins - select 2 Level,ia.*, -case -when pa.fromtype = 1 then 'Procedure' -when pa.fromtype = 2 then 'Section' -when pa.fromtype = 3 then 'Caution' -when pa.fromtype = 4 then 'Note' -when pa.fromtype = 5 then 'RNO' -when pa.fromtype = 6 then 'Step' -when pa.fromtype = 7 then 'Table' -else 'Unknown' -end itemtype - from itemaudits ia - inner join partaudits pa on ia.itemid = pa.itemid - inner join items ii on pa.contentid = ii.contentid - where ii.itemid = @ItemID - and ia.itemid not in (select itemid from items where itemid = ia.itemid) - and ia.deletestatus in (select max(deletestatus) from itemaudits where itemid = ia.itemid) -) ia -order by deletestatus desc -OPTION (MAXRECURSION 10000) ---select * from itemz order by parentid,ordinal - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getItemAuditsByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getItemAuditsByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [restoreDeletedItem] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[restoreDeletedItem]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [restoreDeletedItem]; -GO -/* -restoreDeletedItem 2274,1,1940,2 -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[restoreDeletedItem] -( - @ItemID int, - @DeleteID int, - @CurrentID int, - @Level int -) - -WITH EXECUTE AS OWNER -AS - DECLARE @PreviousID int - DECLARE @NextID int - DECLARE @ContentID int -declare @fromtype int - IF @Level = 0 - BEGIN - SET @NextID = @CurrentID - SELECT @PreviousID = PreviousID FROM Items WHERE ItemID = @CurrentID - END - IF @Level = 1 - BEGIN - SELECT @NextID = ItemID FROM Items WHERE PreviousID = @CurrentID - SET @PreviousID = @CurrentID - END - SELECT @ContentID = dbo.[ve_GetPartContentID](@ItemID) -select @fromtype = dbo.[ve_GetPartFromType](@ItemID) -if @level = 2 -begin - select @NextID = itemid from parts where contentid = @contentid and fromtype = @fromtype -end - UPDATE tblParts SET DeleteStatus = 0 WHERE ItemID IN (SELECT ItemID FROM PartAudits WHERE DeleteStatus = @DeleteID) -update tblparts set deletestatus = 0 where contentid = @contentid and fromtype = @fromtype - UPDATE tblContents SET DeleteStatus = 0, ActionDTS = getdate() WHERE ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblItems SET DeleteStatus = 0,PreviousID = CASE WHEN ItemID = @ItemID THEN @PreviousID ELSE PreviousID END - WHERE ItemID IN (SELECT ItemID FROM ItemAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblGrids SET DeleteStatus = 0 WHERE ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblEntries SET DeleteStatus = 0 WHERE DocID IN (SELECT DocID FROM EntryAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblAnnotations SET DeleteStatus = 0, ActionDTS = getdate() WHERE deletestatus = @deleteid -- ItemID in (SELECT ItemID FROM ItemAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblROUsages SET DeleteStatus = 0 WHERE deletestatus = @deleteid --ContentID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - UPDATE tblTransitions SET DeleteStatus = 0 WHERE deletestatus = @deleteid --FromID IN (SELECT ContentID FROM ContentAudits WHERE DeleteStatus = @DeleteID) - IF @NextID IS NOT NULL - BEGIN - UPDATE Items SET PreviousID = @ItemID WHERE ItemID = @NextID - IF @ContentID IS NOT NULL - BEGIN - UPDATE Parts SET ItemID = @ItemID WHERE ItemID = @NextID and ContentID = @ContentID - END - END ---else --- begin ---update parts set itemid = @itemid where contentid = @contentid and fromtype = @fromtype --- end - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: restoreDeletedItem Succeeded' -ELSE PRINT 'Procedure Creation: restoreDeletedItem Error on Creation' -GO - -/****** Object: StoredProcedure [restoreDeletedAnnotation] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[restoreDeletedAnnotation]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [restoreDeletedAnnotation]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[restoreDeletedAnnotation] -( - @AnnotationID int -) - -WITH EXECUTE AS OWNER -AS - UPDATE tblAnnotations SET DeleteStatus = 0, ActionDTS = getdate() WHERE DeleteStatus = (SELECT DeleteStatus FROM tblAnnotations WHERE AnnotationID = @AnnotationID) - RETURN -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: restoreDeletedAnnotation Succeeded' -ELSE PRINT 'Procedure Creation: restoreDeletedAnnotation Error on Creation' -GO - -/****** Object: StoredProcedure [getPartAudits] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPartAudits]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPartAudits]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPartAudits] - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [FromType], - [ItemID], - [DTS], - [UserID], - [DeleteStatus] - FROM [PartAudits] - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPartAudits Succeeded' -ELSE PRINT 'Procedure Creation: getPartAudits Error on Creation' -GO - -/****** Object: StoredProcedure [getPartAudit] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPartAudit]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPartAudit]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPartAudit] - -( - @AuditID bigint -) -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [FromType], - [ItemID], - [DTS], - [UserID], - [DeleteStatus] - FROM [PartAudits] - WHERE [AuditID]=@AuditID - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPartAudit Succeeded' -ELSE PRINT 'Procedure Creation: getPartAudit Error on Creation' -GO - -/****** Object: StoredProcedure [getPartAuditsByContentID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPartAuditsByContentID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPartAuditsByContentID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPartAuditsByContentID] -( - @ContentID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [FromType], - [ItemID], - [DTS], - [UserID], - [DeleteStatus] - FROM [PartAudits] - WHERE ContentID = @ContentID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPartAuditsByContentID Succeeded' -ELSE PRINT 'Procedure Creation: getPartAuditsByContentID Error on Creation' -GO - -/****** Object: StoredProcedure [getPartAuditsByItemID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPartAuditsByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPartAuditsByItemID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPartAuditsByItemID] -( - @ItemID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [FromType], - [ItemID], - [DTS], - [UserID], - [DeleteStatus] - FROM [PartAudits] - WHERE ItemID = @ItemID - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPartAuditsByItemID Succeeded' -ELSE PRINT 'Procedure Creation: getPartAuditsByItemID Error on Creation' -GO - -/****** Object: StoredProcedure [getPartAuditsByDeleteStatus] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getPartAuditsByDeleteStatus]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [getPartAuditsByDeleteStatus]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getPartAuditsByDeleteStatus] -( - @DeleteStatus int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [FromType], - [ItemID], - [DTS], - [UserID], - [DeleteStatus] - FROM [PartAudits] - WHERE DeleteStatus = @DeleteStatus - ORDER BY AuditID DESC - RETURN -GO --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: getPartAuditsByDeleteStatus Succeeded' -ELSE PRINT 'Procedure Creation: getPartAuditsByDeleteStatus Error on Creation' -GO - -/****** Object: Trigger [tr_tblContents_Update] ******/ -ALTER trigger [dbo].[tr_tblContents_Update] on [dbo].[tblContents] for update as - begin - if exists (select * from inserted) - begin - if update(Number) or update(Text) or update(Type) or update(FormatID) or update(Config) or update(DeleteStatus) - begin - insert into ContentAudits(ContentID,Number,Text,Type,FormatID,Config,DTS,UserID,DeleteStatus,ActionDTS) - select dd.ContentID,dd.Number,dd.Text,dd.Type,dd.FormatID,dd.Config,dd.DTS,dd.UserID,dd.DeleteStatus,dd.ActionDTS - from deleted dd - inner join inserted ii on dd.ContentID = ii.ContentID - where dd.Text not like '% 0 - end -GO - --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Trigger Ateration: tr_ROUsages_Delete Succeeded' -ELSE PRINT 'Trigger Ateration: tr_ROUsages_Delete Error on Creation' -GO - -/****** Object: StoredProcedure [restoreChangedAnnotation] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[restoreChangedAnnotation]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [restoreChangedAnnotation]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[restoreChangedAnnotation] -( - @AuditID int -) - -WITH EXECUTE AS OWNER -AS - DECLARE @AnnotationID int - DECLARE @RtfText nvarchar(max) - DECLARE @SearchText nvarchar(max) - DECLARE @Config nvarchar(max) - DECLARE @DTS datetime - SELECT @AnnotationID = AnnotationID,@RtfText = RtfText,@SearchText = SearchText,@Config = Config,@DTS = DTS - FROM AnnotationAudits WHERE AuditID = @AuditID - UPDATE tblAnnotations SET RtfText = @RtfText,SearchText = @SearchText,Config = @Config,DTS = @DTS WHERE AnnotationID = @AnnotationID - RETURN -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: restoreChangedAnnotation Succeeded' -ELSE PRINT 'Procedure Creation: restoreChangedAnnotation Error on Creation' -GO - -/****** Object: TableFunction [vefn_FindTransitionIDs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindTransitionIDs]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindTransitionIDs]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindTransitionIDs](@ContentAuditID int) -RETURNS @IDs TABLE -( - TransitionID int PRIMARY KEY, - TransitionAction char(3) -) -WITH EXECUTE AS OWNER -AS -BEGIN - - DECLARE @ContentID int - DECLARE @text varchar(max) - SELECT @ContentID = ContentID,@text = Text FROM ContentAudits WHERE AuditID = @ContentAuditID - DECLARE @index1 int - DECLARE @index2 int - DECLARE @tid varchar(max) - DECLARE @trid int - WHILE (LEN(@text) > 0) - BEGIN - SET @index1 = CHARINDEX('#Link:Transition' , @text) - IF (@index1 > 0) - BEGIN - SET @text = RIGHT(@text, (LEN(@text) - @index1)) - SET @index1 = CHARINDEX(' ', @text) - SET @text = RIGHT(@text, (LEN(@text) - @index1)) - SET @index2 = CHARINDEX(' ', @text) - SET @tid = LTRIM(LEFT(@text, @index2)) - SET @text = RIGHT(@text, (len(@text) - @index2)) - SET @trid = CAST(@tid AS INT) - IF EXISTS (SELECT TransitionID FROM tblTransitions WHERE TransitionID = @trid AND DeleteStatus < 0) - INSERT INTO @IDs VALUES (@trid, 'ADD') - ELSE - INSERT INTO @IDs VALUES (@trid, NULL) - END - ELSE - SET @text = '' - END - INSERT INTO @IDs SELECT tt.TransitionID,'DEL' FROM tblTransitions tt LEFT JOIN @IDs ti ON tt.TransitionID = ti.TransitionID WHERE tt.FromID = @ContentID - AND ti.TransitionID IS NULL - DELETE FROM @IDs WHERE TransitionAction IS NULL - RETURN -END -GO - --- Display the status of func creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindTransitionIDs Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindTransitionIDs Error on Creation' -GO - -/****** Object: TableFunction [vefn_FindROUsageIDs] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_FindROUsageIDs]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_FindROUsageIDs]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_FindROUsageIDs](@ContentAuditID int) -RETURNS @IDs TABLE -( - ROUsageID int PRIMARY KEY, - ROUsageAction char(3) -) -WITH EXECUTE AS OWNER -AS -BEGIN - - DECLARE @ContentID int - DECLARE @text varchar(max) - SELECT @ContentID = ContentID,@text = Text FROM ContentAudits WHERE AuditID = @ContentAuditID - DECLARE @index1 int - DECLARE @index2 int - DECLARE @tid varchar(max) - DECLARE @trid int - WHILE (LEN(@text) > 0) - BEGIN - SET @index1 = CHARINDEX('#Link:Transition' , @text) - IF (@index1 > 0) - BEGIN - SET @text = RIGHT(@text, (LEN(@text) - @index1)) - SET @index1 = CHARINDEX(' ', @text) - SET @text = RIGHT(@text, (LEN(@text) - @index1)) - SET @index2 = CHARINDEX(' ', @text) - SET @tid = LTRIM(LEFT(@text, @index2)) - SET @text = RIGHT(@text, (len(@text) - @index2)) - SET @trid = CAST(@tid AS INT) - IF EXISTS (SELECT ROUsageID FROM tblROUsages WHERE ROUsageID = @trid AND DeleteStatus < 0) - INSERT INTO @IDs VALUES (@trid, 'ADD') - ELSE - INSERT INTO @IDs VALUES (@trid, NULL) - END - ELSE - SET @text = '' - END - INSERT INTO @IDs SELECT tt.ROUsageID,'DEL' FROM tblROUsages tt LEFT JOIN @IDs ti ON tt.ROUsageID = ti.ROUsageID WHERE tt.ContentID = @ContentID - AND ti.ROUsageID IS NULL - DELETE FROM @IDs WHERE ROUsageAction IS NULL - RETURN -END -GO - --- Display the status of func creation -IF (@@Error = 0) PRINT 'TableFunction Creation: vefn_FindROUsageIDs Succeeded' -ELSE PRINT 'TableFunction Creation: vefn_FindROUsageIDs Error on Creation' -GO - -/****** Object: StoredProcedure [restoreChangedContent] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[restoreChangedContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [restoreChangedContent]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[restoreChangedContent] -( - @AuditID int -) - -WITH EXECUTE AS OWNER -AS - DECLARE @ContentID int - DECLARE @Number nvarchar(256) - DECLARE @Text nvarchar(max) - DECLARE @Type int - DECLARE @FormatID int - DECLARE @Config nvarchar(max) - DECLARE @DTS datetime - DECLARE @Data xml - DECLARE @ConfigX xml - SELECT @Contentid = Contentid,@Number = Number,@Text = Text,@Type = Type,@FormatID = FormatID,@Config = Config,@DTS = DTS - FROM ContentAudits WHERE AuditID = @AuditID --- SELECT @Data = Data,@ConfigX = Config FROM GridAudits WHERE ContentID = @ContentID and DTS = @DTS - SELECT @Data = Data,@ConfigX = Config FROM GridAudits WHERE ContentID = @ContentID and ContentAuditID = @AuditID - UPDATE tblContents SET Number = @Number,Text = @Text,Type = @Type,FormatID = @FormatID,Config = @Config,DTS = @DTS, ActionDTS = getdate() - WHERE ContentID = @ContentID - UPDATE tblGrids SET Data = @Data,Config = @ConfigX WHERE ContentID = @ContentID ---transitions -update tblTransitions set deletestatus = 0 where transitionid in (select transitionid from vefn_FindTransitionIDs(@AuditID) where TransitionAction = 'ADD') -delete from transitions where transitionid in (select transitionid from vefn_FindTransitionIDs(@AuditID) where TransitionAction = 'DEL') ---transitions end ---rousages -update tblROUsages set deletestatus = 0 where rousageid in (select rousageid from vefn_FindROUsageIDs(@AuditID) where rousageaction = 'ADD') -delete from rousages where rousageid in (select rousageid from vefn_FindROUsageIDs(@AuditID) where rousageaction = 'DEL') ---rousages end - RETURN -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: restoreChangedContent Succeeded' -ELSE PRINT 'Procedure Creation: restoreChangedContent Error on Creation' -GO - -/****** Object: Trigger [tr_tblAnnotations_Update] ******/ -ALTER trigger [dbo].[tr_tblAnnotations_Update] on [dbo].[tblAnnotations] for update as - begin - if exists (select * from inserted) - begin - insert into AnnotationAudits(AnnotationID,ItemID,TypeID,RtfText,SearchText,Config,DTS,UserID,DeleteStatus,ActionDTS) - select dd.AnnotationID,dd.ItemID,dd.TypeID,dd.RtfText,dd.SearchText,dd.Config,dd.DTS,dd.UserID,dd.DeleteStatus,dd.ActionDTS - from deleted dd - inner join inserted ii on dd.AnnotationID = ii.AnnotationID - where (select count(*) from annotationaudits where annotationid = dd.annotationid and dts = dd.dts and ActionDTS = dd.ActionDTS) = 0 - end - end -GO - --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Trigger Ateration: tr_tblAnnotations_Update Succeeded' -ELSE PRINT 'Trigger Ateration: tr_tblAnnotations_Update Error on Creation' -GO - -/****** Object: StoredProcedure [deleteAnnotationWithUserID] ******/ -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[deleteAnnotationWithUserID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) - DROP PROCEDURE [deleteAnnotationWithUserID]; -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[deleteAnnotationWithUserID] - -( - @AnnotationID int, - @UserID varchar(200) -) -WITH EXECUTE AS OWNER -AS -BEGIN TRY -- Try Block - BEGIN TRANSACTION ---delete log add - DECLARE @DeleteID int - INSERT INTO DeleteLog (UserID) VALUES (@UserID) - SELECT @DeleteID = SCOPE_IDENTITY() ---end delete log add - DELETE [Annotations] - WHERE [AnnotationID] = @AnnotationID ---delete log purge - DELETE from DeleteLog where DeleteID = @DeleteID ---end delete log purge - IF( @@TRANCOUNT > 0 ) COMMIT -END TRY -BEGIN CATCH -- Catch Block - IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level - ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit. Top level will rollback - EXEC vlnErrorHandler -END CATCH -GO - --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'Procedure Creation: deleteAnnotationWithUserID Succeeded' -ELSE PRINT 'Procedure Creation: deleteAnnotationWithUserID Error on Creation' -GO - -/****** Object: Trigger [tr_Annotations_Delete] ******/ -ALTER trigger [dbo].[tr_Annotations_Delete] on [dbo].[Annotations] instead of delete as - begin - update ii set DeleteStatus = (select max(DeleteID) from DeleteLog where SPID = @@spid),ActionDTS = getdate() ---DTS = getdate(), -,DTS = dd.dts, - UserID = (select top 1 UserID from DeleteLog where SPID = @@spid order by deleteid desc) - from tblAnnotations ii inner join deleted dd on dd.AnnotationID = ii.AnnotationID - insert into AnnotationAudits(AnnotationID,ItemID,TypeID,RtfText,SearchText,Config,DTS,UserID,DeleteStatus,ActionDTS) - select ii.AnnotationID,ii.ItemID,ii.TypeID,ii.RtfText,ii.SearchText,ii.Config,ii.DTS,ii.UserID,ii.DeleteStatus,ii.ActionDTS - from tblAnnotations ii inner join deleted dd on dd.AnnotationID = ii.AnnotationID - where ii.DeleteStatus > 0 - end -GO - --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Trigger Ateration: tr_Annotations_Delete Succeeded' -ELSE PRINT 'Trigger Ateration: tr_Annotations_Delete Error on Creation' -GO - -/****** Object: Trigger [tr_tblItems_Update] ******/ -ALTER trigger [dbo].[tr_tblItems_Update] on [dbo].[tblItems] for update as - begin - if exists (select * from inserted) - begin - insert into ItemAudits(ItemID,PreviousID,ContentID,DTS,UserID,DeleteStatus) - select dd.ItemID,dd.PreviousID,dd.ContentID,dd.DTS,dd.UserID,dd.DeleteStatus from deleted dd - inner join inserted ii on dd.ItemID = ii.ItemID - where dd.deletestatus = 0 or ii.deletestatus != 0 - end - end -GO - --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Trigger Ateration: tr_tblItems_Update Succeeded' -ELSE PRINT 'Trigger Ateration: tr_tblItems_Update Error on Creation' -GO - -/****** Object: Trigger [tr_Contents_Delete] ******/ -ALTER trigger [dbo].[tr_Contents_Delete] on [dbo].[Contents] instead of delete as - begin - update ii set DeleteStatus = (select max(DeleteID) from DeleteLog where SPID = @@spid), ActionDTS = getdate(), - UserID = (select top 1 UserID from DeleteLog where SPID = @@spid order by deleteid desc) - from tblContents ii inner join deleted dd on dd.ContentID = ii.ContentID - insert into ContentAudits(ContentID,Number,Text,Type,FormatID,Config,DTS,UserID,DeleteStatus,ActionDTS) - select ii.ContentID,ii.Number,ii.Text,ii.Type,ii.FormatID,ii.Config,ii.DTS,ii.UserID,ii.DeleteStatus,ii.ActionDTS - from tblContents ii inner join deleted dd on dd.ContentID = ii.ContentID - where ii.DeleteStatus > 0 - update ga set ga.contentauditid = (select max(auditid) from contentaudits where contentid = ga.contentid and deletestatus = ga.deletestatus) - from gridaudits ga join deleted dd on ga.contentid = dd.contentid where ga.contentauditid = 0 - end -go - --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Trigger Ateration: tr_Contents_Delete Succeeded' -ELSE PRINT 'Trigger Ateration: tr_Contents_Delete Error on Creation' -GO - -/****** Object: UserDefinedFunction [dbo].[vefn_tblChildItems] Script Date: 05/18/2011 11:20:48 ******/ -/* -select * from vefn_SiblingAndChildrenItemsByProc(30) II -join -*/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_SiblingAndChildrenItemsByProc](@ProcID int) -RETURNS @SiblingAndChildren TABLE -( - [ItemID] int PRIMARY KEY - , [DVPath] nvarchar(max) - , [Path] nvarchar(max) - , [Level] int - , [FromType] int - , [Ordinal] int - , [ParentID] int - , [PreviousID] int - , [ContentID] int - , [DTS] datetime - , [UserID] nvarchar(100) - , [pContentID] int - , [pDTS] datetime - , [pUserID] nvarchar(100) - , [IsRNO] int - --- , [PPath] nvarchar(max) --- , [POrdinalPath] nvarchar(max) - , [OrdinalPath] nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -BEGIN -with Itemz([ItemID], [DVPath], [Level], [ParentID], [Ordinal], [PreviousID], [FromType], [ContentID], [DTS], [UserID],[pContentID], - [pDTS],[pUserID],PPath, [Path], [IsRNO], [POrdinalPath], [OrdinalPath]) as ( - Select [I].[ItemID], '' DVPath, 0 [Level], 0 [ParentID], 0 [Ordinal], [PreviousID],0 [FromType],[I].[ContentID],[I].[DTS],[I].[UserID] - ,0 [pContentID],[I].[DTS] [pDTS], [I].[UserID] [pUserID], - Cast('' as nvarchar(max)) [PPath], - Cast(Case when C.Type < 20000 then @Delim + C.Number + @DelimNumber + C.Text else '1' end as nvarchar(max)) [Path], - 0 IsRNO, Cast('' as nvarchar(max)) [POrdinalPath], Cast('0001' as nvarchar(max)) [OrdinalPath] - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - WHERE I.[ItemID] = @ProcID -Union All --- Children - select I.[ItemID], DVPath, [Level] + 1,Z.ItemID,0, I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID], - P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID] - ,PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim +C.Number + @DelimNumber + C.Text - when 1 then @Delim +C.Number + @DelimNumber + C.Text - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + cast(1 as varchar(3)) - end end Path, - case when P.FromType = 5 then -1 else 0 end IsRNO, - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001' - from Itemz Z - join Parts P on P.ContentID = Z.ContentID - join Items I on I.ItemID = P.ItemID - join Contents C on C.ContentID = I.ContentID -Union All --- Siblings - select I.[ItemID], DVPath, [Level] ,Z.[ParentID],Z.[Ordinal] +1, I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID] - ,null,null,null, - PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + C.Number + @DelimNumber + C.Text - when 1 then @Delim + C.Number + @DelimNumber + C.Text - else case when Path like '%.%' then @DelimStep else @Delim end + cast(Ordinal + 2 as varchar(3)) - end Path, 0, - POrdinalPath, - POrdinalPath + right('00000' + cast(Z.[Ordinal] + 2 as varchar(5)), 5) - from Itemz Z - join Items I on I.PreviousID = Z.ItemID - join Contents C on C.ContentID = I.ContentID - --where Z.[Level] > 0 - -) -insert into @SiblingAndChildren -select I.[ItemID], [DvPath], [Path], I.[Level],I.[FromType],I.[Ordinal], I.[ParentID], I.[PreviousID],I.[ContentID],I.[DTS],I.[UserID], - [pContentID],[pDTS],[pUserID],[IsRNO]/*,[PPath],[POrdinalPath]*/,[OrdinalPath] - from ItemZ I -OPTION (MAXRECURSION 10000) -END -RETURN -END -GO --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Function: vefn_SiblingAndChildrenItemsByProc Succeeded' -ELSE PRINT 'Function: vefn_SiblingAndChildrenItemsByProc Error on Creation' - -go - -/****** Object: UserDefinedFunction [dbo].[vefn_ProcedureByProcID] Script Date: 05/18/2011 11:20:48 ******/ - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create FUNCTION [dbo].[vefn_ProcedureByProcID](@ProcID int) -RETURNS @SiblingAndChildren TABLE -( - [ItemID] int PRIMARY KEY - , [DVPath] nvarchar(max) - , [Path] nvarchar(max) - , [Level] int - , [FromType] int - , [Ordinal] int - , [ParentID] int - , [PreviousID] int - , [ContentID] int - , [DTS] datetime - , [UserID] nvarchar(100) - , [pContentID] int - , [pDTS] datetime - , [pUserID] nvarchar(100) - , [IsRNO] int - --- , [PPath] nvarchar(max) --- , [POrdinalPath] nvarchar(max) - , [OrdinalPath] nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -BEGIN -insert into @SiblingAndChildren - Select -[I].[ItemID] -, '' DVPath -, Cast(Case when C.Type < 20000 then @Delim + C.Number + @DelimNumber + C.Text else '1' end as nvarchar(max)) [Path] -,0 [Level] -,0 [FromType] -, 0 [Ordinal] -, 0 [ParentID] -, [PreviousID] -,[I].[ContentID] -,[I].[DTS] -,[I].[UserID] - ,0 [pContentID] -,[I].[DTS] [pDTS] -, [I].[UserID] [pUserID] -,0 IsRNO - , Cast('0001' as nvarchar(max)) [OrdinalPath] - FROM [Items] I - Join Contents C on C.ContentID=I.ContentID - WHERE I.[ItemID] = @ProcID -END -RETURN -END -go --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Function: vefn_ProcedureByProcID Succeeded' -ELSE PRINT 'Function: vefn_ProcedureByProcID Error on Creation' - -go - - -/****** Object: UserDefinedFunction [dbo].[vefn_tblChildItems] Script Date: 05/18/2011 11:20:48 ******/ - -/* -declare @PreviousID as int -declare @ItemID as int -set @ItemID = 450 -select @PreviousID = PreviousID from items where ItemID = @ItemID - -Select * from Items where ItemID = @ItemID - -select * from Transitions -where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) -AND (ToID = @ItemID or RangeID = @ItemID) - -select CC.Text from Transitions TT -join contents CC on TT.FromID = CC.ContentID -where FromID in (Select ContentID from vefn_ChildItems(@PreviousID)) -AND (ToID = @ItemID or RangeID = @ItemID) - -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_tblChildItems](@ProcItemID int, @ItemID int, @IncludeDeletedChildren int) -RETURNS @Children TABLE -( - ItemID int PRIMARY KEY, - IContentID int, - IDeleteStatus int, - ProcDTS datetime, - Path nvarchar(max), - OrdinalPath nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -declare @path nvarchar(max) -declare @ppath nvarchar(max) -declare @ordinalpath nvarchar(max) -declare @pordinalpath nvarchar(max) -declare @ordinal int -declare @pitemid int -select @path = path,@ordinalpath = ordinalpath,@ordinal = ordinal,@pitemid = parentid from vefn_ProcedureByProcID(@ProcItemID) where itemid = @ItemID -if @pitemid = 0 begin - set @pordinalpath = '' - set @ppath = '' -end -else begin - select @ppath = path,@pordinalpath = ordinalpath from vefn_ProcedureByProcID(@ProcItemID) where itemid = @pitemID -end -declare @procdts datetime -select @procdts = dts from items where itemid = @ProcItemID -Declare @Delim char(1) -Set @Delim=char(7) -Declare @DelimNumber char(1) -Set @DelimNumber=char(17) -Declare @DelimStep char(1) -Set @DelimStep='.' -begin -with Itemz([Level], [ItemID], [ContentID], DeleteStatus, ProcDTS, PPath, [Path], [POrdinalPath], [OrdinalPath], [FromType], [Ordinal]) as ( - Select 0 [Level], [ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, - @ppath [PPath], - @path [Path], - @pordinalpath [POrdinalPath], - @ordinalpath [OrdinalPath], -0 [FromType],@ordinal [Ordinal] - FROM [tblItems] I ---inner join tblContents C on C.ContentID=I.ContentID - where I.[ItemID]=@ItemID -Union All --- Children - select [Level] + 1, I.[ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, - PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim +C.Number + @DelimNumber + C.Text - when 1 then @Delim +C.Number + @DelimNumber + C.Text - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + -case when I.deletestatus != 0 then 'Old ' else '' end + cast(1 as varchar(3)) - end end Path, - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001', -P.[FromType],0 - from Itemz Z - join tblParts P on P.ContentID = Z.ContentID - join tblItems I on I.ItemID = P.ItemID -inner join tblContents C on C.ContentID=I.ContentID - where @IncludeDeletedChildren = 1 or z.DeleteStatus = 0 -Union All --- Children2 - select [Level] + 1, I.[ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, - PATH + --'' - case C.Type/10000 - when 2 then - case P.FromType - when 3 then @DelimStep + 'Caution' - when 4 then @DelimStep + 'Note' - else '' end - else '' end - PPath, - Path + case C.Type/10000 - when 0 then @Delim +C.Number + @DelimNumber + C.Text - when 1 then @Delim +C.Number + @DelimNumber + C.Text - else - case P.FromType - --when 1 then 'PRC' + @Delim + cast(1 as varchar(3)) - --when 2 then 'SEC' + @Delim + cast(1 as varchar(3)) - when 3 then @DelimStep +'Caution' + @DelimStep + cast(1 as varchar(3)) - when 4 then @DelimStep +'Note' + @DelimStep + cast(1 as varchar(3)) - when 5 then @DelimStep +'RNO' + @DelimStep - when 7 then @DelimStep +'Table' + @DelimStep - else case when Z.FromType < 3 then @Delim else @DelimStep end + -case when I.deletestatus != 0 then 'Old ' else '' end + cast(1 as varchar(3)) - end end Path, - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-' , - OrdinalPath + '.' + Right('000' + Cast(P.FromType as varchar(4)), 4) + '-00001', -P.[FromType],0 - from Itemz Z - join PartAudits P on P.ContentID = Z.ContentID - join tblItems I on I.ItemID = P.ItemID and i.PreviousID is null -inner join tblContents C on C.ContentID=I.ContentID - where @IncludeDeletedChildren = 1 or z.DeleteStatus >= 0 --- Siblings -Union All - select [Level] , I.[ItemID], I.[ContentID], I.DeleteStatus, @procdts procdts, - PPath, - --'1' + - PPath + case C.Type/10000 - when 0 then @Delim + C.Number + @DelimNumber + C.Text - when 1 then @Delim + C.Number + @DelimNumber + C.Text - else case when Path like '%.%' then @DelimStep else @Delim end + -case when I.deletestatus != 0 then 'Old ' else '' end + cast(Ordinal + 2 as varchar(3)) - end Path, - POrdinalPath, - POrdinalPath + right('00000' + cast(Z.[Ordinal] + 2 as varchar(5)), 5), -FromType,Z.[Ordinal] +1 - from Itemz Z - join tblItems I on I.PreviousID = Z.ItemID -inner join tblContents C on C.ContentID=I.ContentID - where Z.[Level] > 0 -) -insert into @Children select distinct ItemID, ContentID, DeleteStatus, ProcDTS, Path, OrdinalPath from Itemz -RETURN -END -end - -go --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Function: vefn_tblChildItems Succeeded' -ELSE PRINT 'Function: vefn_tblChildItems Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_GetMyChronology]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_GetMyChronology]; -GO -/****** Object: UserDefinedFunction [dbo].[vefn_GetMyChronology] Script Date: 11/07/2012 18:09:17 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE FUNCTION [dbo].[vefn_GetMyChronology](@ProcItemID int, @ItemID int, @IncludeDeletedChildren int, @DTS datetime) -RETURNS @Chrono TABLE -( -[AuditID] bigint, -[ContentID] int, -[Number] nvarchar(max), -[Text] nvarchar(max), -[Type] int, -[FormatID] int, -[Config] nvarchar(max), -[DTS] datetime, -[UserID] nvarchar(max), -[DeleteStatus] int, -[ActionDTS] datetime, -[ActionWhat] nvarchar(max), -[ActionWhen] datetime, -[Path] nvarchar(max), -ItemID int, -TypeName nvarchar(max), -ordinalpath nvarchar(max) -) -WITH EXECUTE AS OWNER -AS -BEGIN -insert into @Chrono -select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath - from - ( - select - case - when lastauditid is null then 'Added' - when r.deletestatus > 0 then 'Deleted' - when lastauditid = -1 then 'Changed' - when DeletedAuditID is not null then 'Restored' --- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' - else 'Changed' - end actionwhat -,actiondts actionwhen --- ,case --- when lastauditid is null then dts --- when r.deletestatus > 0 then ActionDTS --- when lastauditid = -1 then dts --- when DeletedAuditID is not null then ActionDTS --- else dts --- end actionwhen -,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName - ,* - from vefn_tblchilditems (@ProcItemID,@ItemID,@IncludeDeletedChildren) t - inner join vefn_chronologyreport(@ProcItemID,@DTS) r - on t.icontentid = r.contentid --- where ActionDTS > procdts or dts > procdts - ) ah - order by OrdinalPath, contentid,auditid--actionwhen - RETURN -END -go -IF (@@Error = 0) PRINT 'TableFunction [vefn_GetMyChronology] Succeeded' -ELSE PRINT 'TableFunction [vefn_GetMyChronology] Error on Creation' -go - -/****** Object: StoredProcedure [dbo].[getContentAuditsChronologyByItemID] Script Date: 03/21/2012 15:58:26 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[getContentAuditsChronologyByItemID]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1) -DROP PROCEDURE [getContentAuditsChronologyByItemID]; -GO -/****** Object: StoredProcedure [getContentAuditsChronologyByItemID] ******/ -/* -getContentAuditsChronologyByItemID 10154,10154,0 -getContentAuditsChronologyByItemID 42,42,0 -getContentAuditsChronologyByItemID 9,9,0 -getContentAuditsChronologyByItemID 146,146,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE PROCEDURE [dbo].[getContentAuditsChronologyByItemID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin - select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) --- select distinct [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah --- order by OrdinalPath, contentid,auditid--actionwhen - RETURN -end -go --- Display the status of Proc creation -IF (@@Error = 0) PRINT 'StoredProcedure [getContentAuditsChronologyByItemID] Succeeded' -ELSE PRINT 'StoredProcedure [getContentAuditsChronologyByItemID] Error on Creation' -go - -IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[vefn_ChronologyReport]') AND OBJECTPROPERTY(id,N'IsTableFunction') = 1) - DROP FUNCTION [vefn_ChronologyReport]; -/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 03/20/2012 17:50:44 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -/* -select * from vefn_chronologyreport(2) where type > 0 order by contentid,auditid -*/ -/****** Object: UserDefinedFunction [dbo].[vefn_ChronologyReport] Script Date: 05/18/2011 11:20:48 ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE function [dbo].[vefn_ChronologyReport](@ProcItemID int, @DTS datetime) -returns @Report table -( -src int, -AuditID bigint, -ContentID int, -Number nvarchar(512), -Text nvarchar(max), -Type int, -FormatID int, -Config nvarchar(max), -DTS datetime, -UserID nvarchar(200), -DeleteStatus int, -ActionDTS datetime, -ItemDTS datetime, -LastAuditID int, -DeletedAuditID int -) -WITH EXECUTE AS OWNER -AS -BEGIN ---added rhm/jcb 20121218i -declare @tmpTable table -( - icontentid int primary key -) -insert into @tmpTable select icontentid from vefn_tblchilditems(@ProcItemID,@ProcItemID,1) ---added jcb 20111122 ---declare @dts datetime ---set @dts = (select dts from items where itemid = @ProcItemID ) ---set @dts = (SELECT .[dbo].[vefn_GetPreviousRevisionDTSByItemID] (@ProcItemID)) ---end added jcb 20111122 - insert into @Report - SELECT -1 src, - [AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid - where Number is not null ---added jcb 20111028_1827 -and ca.contentid != (select contentid from items where itemid = @procitemid) -and ca.contentid in (select icontentid from @tmpTable) ---end added jcb 20111028_1827 ---added jcb 20111122 ---and ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > (select dts from items where itemid = @ProcItemID )) -and ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > @dts) ---and ca.dts > (select dts from items where itemid = @ProcItemID ) -and ca.dts > @dts ---end added jcb 20111122 --- UNION --- SELECT ---2 src, --- cast(ident_current('contentaudits') + 1 as bigint) auditid ----- (select max(auditid) + 1 from contentaudits) [AuditID] ----- 0 [AuditID] --- ,ca.[ContentID] --- ,[Number] --- ,[Text] --- ,[Type] --- ,[FormatID] --- ,[Config] --- ,ca.[DTS] cadts --- ,ca.[UserID] --- ,ca.[DeleteStatus] --- ,ActionDTS --- ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS ---,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID ---,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID --- FROM tblContents ca ----- inner join tblitems ti on ca.contentid = ti.contentid ---WHERE ca.DeleteStatus = 0 AND -----added jcb 20111028_1827 ---ca.contentid != (select contentid from items where itemid = @procitemid) and -----end added jcb 20111028_1827 -----ca.ContentID in (SELECT [ContentID] FROM ContentAudits where dts > (select dts from items where itemid = @ProcItemID )) -----added jcb 20111122 -----ca.ContentID in (SELECT [ContentID] FROM Contents where dts > (select dts from items where itemid = @ProcItemID )) ---ca.ContentID in (SELECT [ContentID] FROM Contents where dts > @dts) -----end added jcb 20111122 -----order by ca.DTS,ActionDTS - UNION - SELECT -3 src, - cast(ident_current('contentaudits') + 1 as bigint) auditid --- (select max(auditid) + 1 from contentaudits) [AuditID] --- 0 [AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM tblContents ca --- inner join tblitems ti on ca.contentid = ti.contentid -WHERE ca.DeleteStatus = 0 AND ---added jcb 20111028_1827 -ca.contentid != (select contentid from items where itemid = @procitemid) -and ca.contentid in (select icontentid from @tmpTable) ---end added jcb 20111028_1827 ---added jcb 20111122 ---ca.dts > (select dts from items where itemid = @ProcItemID ) -and (ca.dts > @dts or ca.actiondts > @dts) ---end added jcb 20111122 - UNION - SELECT distinct -5 src, --- cast(ident_current('contentaudits') + 1 as bigint) auditid --- (select max(auditid) + 1 from contentaudits) [AuditID] - ca.[AuditID] - ,ca.[ContentID] - ,[Number] - ,[Text] - ,[Type] - ,[FormatID] - ,[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid -WHERE ca.DeleteStatus > 0 ---added jcb 20111028_1827 - --ca.contentid != (select contentid from items where itemid = @procitemid) and ---end added jcb 20111028_1827 ---added jcb 20111122 ---ca.dts > (select dts from items where itemid = @ProcItemID ) -and ca.contentid in (select icontentid from @tmpTable) -and (ca.dts > @dts or ca.actiondts > @dts) ---end added jcb 20111122 -order by ca.DTS,ActionDTS - - insert into @Report - SELECT -4 src, - ca.[AuditID] - ,ca.[ContentID] - ,ca.[Number] - ,ca.[Text] - ,ca.[Type] - ,ca.[FormatID] - ,ca.[Config] - ,ca.[DTS] cadts - ,ca.[UserID] - ,ca.[DeleteStatus] - ,ca.ActionDTS - ,(select min(dts) from itemaudits where contentid = ca.contentid) ItemDTS -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null) LastAuditID -,(select max(auditid) from contentaudits where ca.contentid = contentid and ca.auditid > auditid and number is not null and deletestatus > 0 and ca.dts = dts) DeletedAuditID - FROM ContentAudits ca --- inner join tblitems ti on ca.contentid = ti.contentid - inner join @Report rpt on ca.contentid = rpt.contentid and ca.auditid = rpt.lastauditid -where ca.auditid not in (select auditid from @report) -and rpt.lastauditid is not null -and ca.contentid in (select icontentid from @tmpTable) - return -end -GO --- Display the status of TableFunction creation -IF (@@Error = 0) PRINT 'Function: vefn_ChronologyReport Succeeded' -ELSE PRINT 'Function: vefn_ChronologyReport Error on Creation' -GO - -/****** Object: StoredProcedure [getAnnotationAuditsChronologyByItemID] ******/ -/* -getAnnotationAuditsChronologyByItemID 30,30 -getAnnotationAuditsChronologyByItemID 30,8570 -getAnnotationAuditsChronologyByItemID 30,8513 -getAnnotationAuditsChronologyByItemID 30,8505 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create procedure [dbo].[getAnnotationAuditsChronologyByItemID] -( - @ProcItemID int, - @ItemID int, - @DTS datetime -) -WITH EXECUTE AS OWNER -AS -begin --- declare @dts datetime --- set @dts = (select dts from items where itemid = @procitemid) - declare @tci table - ( - ItemID int, - IContentID int, - IDeleteStatus int, - ProcDTS datetime, - Path nvarchar(max), - OrdinalPath nvarchar(max) - ) - insert into @tci - select * from vefn_tblchilditems(@ProcItemID,@ItemID,0) - select - case - when lastauditid is null and dts > itemdts then 'Added' - when deletestatus > 0 then 'Deleted' - when lastauditid = deletedauditid then 'Restored' - else 'Changed' - end ActionWhat - ,case - when lastauditid is null and dts > itemdts then dts - when deletestatus > 0 then ActionDTS - when lastauditid = deletedauditid then ActionDTS - else dts - end ActionWhen - ,* - from - ( - select - cast(ident_current('annotationaudits') + 1 as bigint) auditid - -- (select max(auditid) + 1 from annotationaudits) auditid - -- 0 auditid - ,aa.annotationid - ,aa.itemid - ,aa.typeid - ,aa.rtftext - ,aa.searchtext - ,aa.config - ,aa.dts - ,aa.userid - ,0 deletestatus - ,aa.ActionDTS - ,ii.contentid icontentid - ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid) LastAuditID - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and deletestatus > 0 and aa.dts = dts) DeletedAuditID -,tci.ordinalpath - from tblannotations aa - inner join items ii on aa.itemid = ii.itemid -join @tci tci on tci.itemid = ii.itemid - where aa.deletestatus = 0 - union - select - aa.auditid - ,aa.annotationid - ,aa.itemid - ,aa.typeid - ,aa.rtftext - ,aa.searchtext - ,aa.config - ,aa.dts - ,aa.userid - ,aa.deletestatus - ,aa.ActionDTS - ,ii.contentid icontentid - ,(select min(dts) from tblitems where itemid = ii.itemid) ItemDTS - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid ) LastAuditID - ,(select max(auditid) from annotationaudits where annotationid = aa.annotationid and itemid = ii.itemid and aa.auditid > auditid and deletestatus > 0 and aa.dts = dts) DeletedAuditID -,tci.ordinalpath - from annotationaudits aa - inner join items ii on aa.itemid = ii.itemid -join @tci tci on tci.itemid = ii.itemid - ) ah - where itemid in (select itemid from @tci) - and dts > @dts - --(select dts from versions where versionid = (select max(versionid) from revisions rr inner join versions vv on rr.revisionid = vv.revisionid - --inner join stages ss on vv.stageid = ss.stageid where itemid = @procitemid and ss.isapproved = 1)) - order by ordinalpath,annotationid,auditid--actionwhen -end -go --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'StoredProcedure [getAnnotationAuditsChronologyByItemID] Succeeded' -ELSE PRINT 'StoredProcedure [getAnnotationAuditsChronologyByItemID] Error on Creation' -go - - -/****** Object: Trigger [dbo].[tr_GridAudits_insert] Script Date: 06/06/2011 16:58:07 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create trigger [dbo].[tr_GridAudits_insert] -on [dbo].[GridAudits] -after INSERT -AS -begin - update ga set ga.contentauditid = (select isnull(max(auditid),0) from contentaudits where contentid = ii.contentid) - from inserted ii - inner join gridaudits ga on ii.auditid = ga.auditid -end -go --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'Trigger Creation: tr_GridAudits_insert Succeeded' -ELSE PRINT 'Trigger Creation: tr_GridAudits_insert Error on Creation' -GO - - -/****** Object: Index [IX_GridAuditsContentAuditID] Script Date: 06/08/2011 11:13:09 ******/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -CREATE NONCLUSTERED INDEX [IX_GridAuditsContentAuditID] ON [dbo].[GridAudits] -( - [ContentAuditID] ASC -)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -GO --- Display the status of index creation -IF (@@Error = 0) PRINT 'Index Creation: IX_GridAuditsContentAuditID Succeeded' -ELSE PRINT 'Index Creation: IX_GridAuditsContentAuditID Error on Creation' -GO - -/****** Object: StoredProcedure [getContentAuditsSummaryByItemID] ******/ -/* -getContentAuditsSummaryByItemID 146,146,0 -getContentAuditsSummaryByItemID 30,30,0 -getContentAuditsSummaryByItemID 9,9,0 -getContentAuditsSummaryByItemID 146,146,1 -*/ -/***************************************************************************** - Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE - Copyright 2012 - Volian Enterprises, Inc. All rights reserved. -*****************************************************************************/ -create PROCEDURE [dbo].[getContentAuditsSummaryByItemID] -( - @ProcedureItemID int, - @SelectedItemID int, - @IncludeDeletedChildren int, - @DTS datetime -) - -WITH EXECUTE AS OWNER -AS -begin -DECLARE @Chrono TABLE -( -[AuditID] bigint, -[ContentID] int, -[Number] nvarchar(max), -[Text] nvarchar(max), -[Type] int, -[FormatID] int, -[Config] nvarchar(max), -[DTS] datetime, -[UserID] nvarchar(max), -[DeleteStatus] int, -[ActionDTS] datetime, -[ActionWhat] nvarchar(max), -[ActionWhen] datetime, -[Path] nvarchar(max), -ItemID int, -TypeName nvarchar(max), -ordinalpath nvarchar(max) -) -insert into @Chrono -select * from vefn_GetMyChronology(@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren,@DTS) -select * from @Chrono -where AuditID is null OR AuditID in (select min(auditID) from @Chrono group by contentid UNION select max(auditID) from @Chrono group by contentid) -order by OrdinalPath, contentid,auditid ---select z.* from ---( ---select contentid,min(auditid) auditid from ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) x ---group by contentid ---) y ---inner join ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) z on y.contentid = z.contentid and y.auditid = z.auditid ---union ---select z.* from ---( ---select contentid,max(auditid) auditid from ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) x ---group by contentid ---) y ---inner join ---( --- select [AuditID],[ContentID],[Number],[Text],[Type],[FormatID],[Config],[DTS],[UserID],[DeleteStatus],[ActionDTS],[ActionWhat],[ActionWhen],[Path],ItemID,TypeName,ordinalpath --- from --- ( --- select --- case --- when lastauditid is null then 'Added' --- when r.deletestatus > 0 then 'Deleted' --- when lastauditid = -1 then 'Changed' --- when DeletedAuditID is not null then 'Restored' ----- when DeletedAuditID is not null and lastauditid = deletedauditid then 'Restored' --- else 'Changed' --- end actionwhat ---,actiondts actionwhen ----- ,case ----- when lastauditid is null then dts ----- when r.deletestatus > 0 then ActionDTS ----- when lastauditid = -1 then dts ----- when DeletedAuditID is not null then ActionDTS ----- else dts ----- end actionwhen ---,(select dbo.vefn_GetStepTypeNameByItemIDandTypeID(t.itemid,r.type)) TypeName --- ,* --- from vefn_tblchilditems (@ProcedureItemID,@SelectedItemID,@IncludeDeletedChildren) t --- inner join vefn_chronologyreport(@ProcedureItemID) r --- on t.icontentid = r.contentid ----- where ActionDTS > procdts or dts > procdts --- ) ah ---) z on y.contentid = z.contentid and y.auditid = z.auditid --- order by OrdinalPath, contentid,auditid--actionwhen - RETURN -end --- Display the status of Trigger alter -IF (@@Error = 0) PRINT 'StoredProcedure [getAnnotationAuditsSummaryByItemID] Succeeded' -ELSE PRINT 'StoredProcedure [getAnnotationAuditsSummaryByItemID] Error on Creation' -go - - -ALTER PROCEDURE [dbo].[getContentAuditsByContentID] -( - @ContentID int -) - -WITH EXECUTE AS OWNER -AS - SELECT - [AuditID], - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [DeleteStatus], - case when auditid = (select min(auditid) from contentaudits where contentid = @ContentID) then 'Original' - when deletestatus > 0 then 'Deleted' - else 'Changed' end ActionWhat - FROM [ContentAudits] - WHERE ContentID = @ContentID - ORDER BY AuditID DESC - RETURN -go - ---NEW STUFF 1 -GO -/****** Object: StoredProcedure [dbo].[getContent] Script Date: 07/07/2011 15:46:16 ******/ -SET ANSI_NULLS ON -GO -SET QUOTED_IDENTIFIER ON -GO - -ALTER PROCEDURE [dbo].[getContent] - -( - @ContentID int -) -WITH EXECUTE AS OWNER -AS - SELECT - [ContentID], - [Number], - [Text], - [Type], - [FormatID], - [Config], - [DTS], - [UserID], - [LastChanged], - (SELECT COUNT(*) FROM [Details] WHERE [Details].[ContentID]=[Contents].[ContentID]) [DetailCount], - (SELECT COUNT(*) FROM [Entries] WHERE [Entries].[ContentID]=[Contents].[ContentID]) [EntryCount], - (SELECT COUNT(*) FROM [Grids] WHERE [Grids].[ContentID]=[Contents].[ContentID]) [GridCount], - (SELECT COUNT(*) FROM [Images] WHERE [Images].[ContentID]=[Contents].[ContentID]) [ImageCount], - (SELECT COUNT(*) FROM [Items] WHERE [Items].[ContentID]=[Contents].[ContentID]) [ItemCount], - (SELECT COUNT(*) FROM [Parts] WHERE [Parts].[ContentID]=[Contents].[ContentID]) [PartCount], - (SELECT COUNT(*) FROM [RoUsages] WHERE [RoUsages].[ContentID]=[Contents].[ContentID]) [RoUsageCount], - (SELECT COUNT(*) FROM [Transitions] WHERE [Transitions].[FromID]=[Contents].[ContentID]) [TransitionCount], - (SELECT COUNT(*) FROM [ZContents] WHERE [ZContents].[ContentID]=[Contents].[ContentID]) [ZContentCount] - FROM [Contents] - WHERE [ContentID]=@ContentID - - SELECT - [Details].[DetailID], - [Details].[ContentID], - [Details].[ItemType], - [Details].[Text], - [Details].[Config], - [Details].[DTS], - [Details].[UserID], - [Details].[LastChanged] - FROM [Details] - WHERE - [Details].[ContentID]=@ContentID - - - SELECT - [Entries].[ContentID], - [Entries].[DocID], - [Entries].[DTS], - [Entries].[UserID], - [Entries].[LastChanged], - [Documents].[LibTitle] [Document_LibTitle], - [Documents].[DocContent] [Document_DocContent], - [Documents].[DocAscii] [Document_DocAscii], - [Documents].[Config] [Document_Config], - [Documents].[DTS] [Document_DTS], - [Documents].[UserID] [Document_UserID], - [Documents].[FileExtension] [Document_FileExtension] - FROM [Entries] - JOIN [Documents] ON - [Documents].[DocID]=[Entries].[DocID] - WHERE - [Entries].[ContentID]=@ContentID - - - SELECT - [Grids].[ContentID], - [Grids].[Data], - [Grids].[Config], - [Grids].[DTS], - [Grids].[UserID], - [Grids].[LastChanged] - FROM [Grids] - WHERE - [Grids].[ContentID]=@ContentID - - - SELECT - [Images].[ContentID], - [Images].[ImageType], - [Images].[FileName], - [Images].[Data], - [Images].[Config], - [Images].[DTS], - [Images].[UserID], - [Images].[LastChanged] - FROM [Images] - WHERE - [Images].[ContentID]=@ContentID - - - SELECT - [Items].[ItemID], - [Items].[PreviousID], - [Items].[ContentID], - [Items].[DTS], - [Items].[UserID], - [Items].[LastChanged] - FROM [Items] - WHERE - [Items].[ContentID]=@ContentID - - - SELECT - [Parts].[ContentID], - [Parts].[FromType], - [Parts].[ItemID], - [Parts].[DTS], - [Parts].[UserID], - [Parts].[LastChanged], - [Items].[PreviousID] [Item_PreviousID], - [Items].[ContentID] [Item_ContentID], - [Items].[DTS] [Item_DTS], - [Items].[UserID] [Item_UserID] - FROM [Parts] - JOIN [Items] ON - [Items].[ItemID]=[Parts].[ItemID] - WHERE - [Parts].[ContentID]=@ContentID - - - SELECT - [RoUsages].[ROUsageID], - [RoUsages].[ContentID], - [RoUsages].[ROID], - [RoUsages].[Config], - [RoUsages].[DTS], - [RoUsages].[UserID], - [RoUsages].[LastChanged], - [RoUsages].[RODbID], - [RODbs].[ROName] [RODb_ROName], - [RODbs].[FolderPath] [RODb_FolderPath], - [RODbs].[DBConnectionString] [RODb_DBConnectionString], - [RODbs].[Config] [RODb_Config], - [RODbs].[DTS] [RODb_DTS], - [RODbs].[UserID] [RODb_UserID] - FROM [RoUsages] - JOIN [RODbs] ON - [RODbs].[RODbID]=[RoUsages].[RODbID] - WHERE - [RoUsages].[ContentID]=@ContentID - - - SELECT - [Transitions].[TransitionID], - [Transitions].[FromID], - [Transitions].[ToID], - [Transitions].[RangeID], - [Transitions].[IsRange], - [Transitions].[TranType], - [Transitions].[Config], - [Transitions].[DTS], - [Transitions].[UserID], - [Transitions].[LastChanged], - [Items_RangeID].[PreviousID] [Item_RangeID_PreviousID], - [Items_RangeID].[ContentID] [Item_RangeID_ContentID], - [Items_RangeID].[DTS] [Item_RangeID_DTS], - [Items_RangeID].[UserID] [Item_RangeID_UserID], - [Items_ToID].[PreviousID] [Item_ToID_PreviousID], - [Items_ToID].[ContentID] [Item_ToID_ContentID], - [Items_ToID].[DTS] [Item_ToID_DTS], - [Items_ToID].[UserID] [Item_ToID_UserID] - FROM [Transitions] - LEFT JOIN [Items] [Items_RangeID] ON - [Items_RangeID].[ItemID]=[Transitions].[RangeID] - LEFT JOIN [Items] [Items_ToID] ON - [Items_ToID].[ItemID]=[Transitions].[ToID] - WHERE - [Transitions].[FromID]=@ContentID - - - SELECT - [ZContents].[ContentID], - [ZContents].[OldStepSequence], - [ZContents].[LastChanged] - FROM [ZContents] - WHERE - [ZContents].[ContentID]=@ContentID - - RETURN -GO - - diff --git a/PROMS/DataLoader/PrivateProfile.cs b/PROMS/DataLoader/PrivateProfile.cs deleted file mode 100644 index 14c090a0..00000000 --- a/PROMS/DataLoader/PrivateProfile.cs +++ /dev/null @@ -1,285 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== - -using System; -using System.IO; -using System.Xml; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Drawing; -using VEPROMS.CSLA.Library; - -namespace Config -{ - /// - /// PrivateProfile opens a private profile string and stores it's contents in an xml document. - /// - public class PrivateProfile - { - #region Log4Net - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - #endregion - - private string ppName; - private XmlDocument ppXml; - private List attr; - private List ele; - - private XmlNode AddNode(XmlNode xParent, string sName, string sValue ) - { - XmlNode nd=AddNode(xParent,sName); - nd.Value=sValue; - return nd; - } - private XmlNode AddNode(XmlNode xParent, string sName) - { - XmlNode nd; - // Add a node - string tsName = sName.Replace(' ', '_').Replace("applicability", "Applicability").Replace("unit", "Unit"); - nd=xParent.OwnerDocument.CreateNode(System.Xml.XmlNodeType.Element,tsName,""); - xParent.AppendChild(nd); - return nd; - } - private void AddAttribute(XmlNode xParent, string sName, string sValue) - { - XmlNode xa = xParent.Attributes.GetNamedItem(sName); - // bug fix. 09/15/03 - // If there was a space after an equal sign, that space character - // was becomming part of the value string (reading the user.CFG file). - // This was giving us a "Must have semi-colon" error message. - // We now strip spaces before and after any Attribute that is written. - sValue = sValue.Trim(' '); - sName = sName.Replace(' ', '_'); - sName = sName.Replace("\\", "_slash_"); - sName = sName.Replace("/", "_fslash_"); - - if (xParent.Name == "color") - { - string[] parts = sValue.Split(",".ToCharArray()); - sValue = ColorConfig.FindKnownColor(int.Parse(parts[0]), int.Parse(parts[1]), int.Parse(parts[2])).ToString(); - } - // Add an attribute - if (sValue == "") - { - if (xa != null) - { - xParent.Attributes.RemoveNamedItem(sName); - } - } - else - { - if (xa == null) - { - xa = xParent.OwnerDocument.CreateNode(System.Xml.XmlNodeType.Attribute, sName, ""); - xParent.Attributes.SetNamedItem(xa); - } - xa.Value = sValue; - } - - } - private XmlNode AddSection(XmlNode xParent, string sSection) - { - // get the name. If it's not in the 'migrated elements' list, then - // preface the name with a 'z'. - string elename = sSection.Substring(1, sSection.IndexOf("]") - 1); - while(elename.IndexOf(' ')>-1) elename = elename.Remove(elename.IndexOf(' '),1); - if (!ele.Contains(elename.ToLower())) elename = 'z' + elename; - elename = elename.Replace("\\", "_slash_"); - // Add a section [name] - XmlNode nd = AddNode(xParent, elename); - //AddAttribute(nd,"name",sSection.Substring(1,sSection.IndexOf("]")-1)); - return nd; - } - private XmlNode AddSection_UC(XmlNode xParent, string sSection ) - { - // Add a section [name] - string name_uc = sSection.Substring(1,sSection.IndexOf("]")-1).ToUpper() + "__UC"; - XmlNode nd =AddNode(xParent,name_uc); - // AddAttribute(nd,"name",name_uc); - return nd; - } - private void AddComment(XmlNode xParent, string sComment) - { - - if(xParent.ChildNodes.Count > 0) - { - XmlNode ndlast=xParent.ChildNodes.Item(xParent.ChildNodes.Count-1); - if(ndlast.Name=="comment") - { - XmlNode xa = ndlast.Attributes.GetNamedItem("text"); - xa.Value=xa.Value + "\r\n" + sComment; - return; - } - } - // Add a comment text - XmlNode nd =AddNode(xParent,"comment"); - AddAttribute(nd,"text",sComment); - } - private void AddLine(XmlNode xParent, string sLine) - { - // Add a comment text - XmlNode nd =AddNode(xParent,"line"); - AddAttribute(nd,"text",sLine); - } - private void AddParam(XmlNode xParent, string sParam) - { - int i = sParam.IndexOf("="); - // get the name. If it's not in the 'migrated attribute' list, then - // preface the name with a 'z'. - string attrname = sParam.Substring(0, i); - while (attrname.IndexOf(' ') > -1) attrname = attrname.Remove(attrname.IndexOf(' '), 1); - if (!attr.Contains(attrname.ToLower())) attrname = 'z' + attrname; - string sValue=sParam.Substring(i+1); - string sName = attrname.Trim(' '); - sName = sName.Replace("id", "ID").Replace("name", "Name").Replace("number", "Number").Replace("text", "Text").Replace("other", "Other").Replace("masterdir","MasterDir"); - AddAttribute(xParent, sName, sValue); - } - private void AddParam_UC(XmlNode xParent, string sParam) - { - int i = sParam.IndexOf("="); - // add a param name=value - string sName=sParam.Substring(0,i); - string sValue=sParam.Substring(i+1); - //XmlNode nd =AddNode(xParent,"paramUC"); - sName = sName.Trim(' '); - AddAttribute(xParent, sName, sValue); - //AddAttribute(nd,"name",sName.ToUpper()+"__UC"); - //AddAttribute(nd,"value",sValue); - } - private void LoadXML() - { - string sLine; - ppXml.LoadXml("");// initialize ppXml - XmlNode xmlTop=ppXml.DocumentElement; - XmlNode xmlNd=ppXml.DocumentElement; - //XmlNode xmlNd_UC=ppXml.DocumentElement; - StreamReader myReader = new StreamReader(ppName);// Open file - while( (sLine = myReader.ReadLine())!= null)// read line-by-line - { - // add structure - try - { - if (sLine.Length > 0) - { - switch (sLine.Substring(0, 1)) - { - case "[": - xmlNd = AddSection(xmlTop, sLine); - //xmlNd_UC=AddSection_UC(xmlTop, sLine); - break; - case ";": - //AddComment(xmlNd, sLine); - break; - default: - if (sLine.IndexOf("=") >= 0) - { - AddParam(xmlNd, sLine); - //AddParam_UC(xmlNd_UC, sLine); - } - else - { - //AddLine(xmlNd, sLine); - } - break; - } - } - } - catch (Exception ex) - { - log.ErrorFormat("error parsing .INI file: {0} - Directory: {1}", ex.Message,ppName); - } - } - myReader.Close(); - } - public PrivateProfile(string sFileName, List listIni_EleName, List listIni_AttrName) - { - ppName=sFileName; - ppXml= new XmlDocument(); - attr = listIni_AttrName; - ele = listIni_EleName; - LoadXML(); - } - ~PrivateProfile() - { - // Clean-up - // - } - public string PrettyNode(XmlNode nd,int level) - { - string retval=""; - string prefix=new string(' ',level*2); - if(nd.ChildNodes.Count > 0) - { - retval = prefix + "<" + nd.Name; - for(int i=0;i"; - for(int i=0;i"; - } - else - { - retval = prefix + "<" + nd.Name; - for(int i=0;i"; - } - return retval; - } - public string PrettyXML() - { - return PrettyNode(ppXml.DocumentElement,0); - } - public XmlDocument XML() - { - // return XML Document - return ppXml; - } - public override string ToString() - { - // return string - return ""; - } - public void Save() - { - SaveAs(ppName); - } - public void SaveAs(string sName) - { - } - public string Attr(string sPath) - { - string retval=""; - XmlNode xn = ppXml.SelectSingleNode(sPath); - if(xn != null) - { - string quots = xn.Value; - if (quots.Substring(0,1)=="\"" && quots.Substring(quots.Length-1,1)=="\"") - retval = quots.Substring(1,quots.Length-2); - else - retval=xn.Value; - } - return retval; - } - - public string Attr(string sSection, string sParameter) - { - string findstr = "/ini/sectionUC[@name='" + sSection.ToUpper() + "__UC']/paramUC[@name='" + sParameter.ToUpper() + "__UC']/@value"; - return Attr(findstr); - } - } -} diff --git a/PROMS/DataLoader/PrivateProfile.cs.bak b/PROMS/DataLoader/PrivateProfile.cs.bak deleted file mode 100644 index 206849d5..00000000 --- a/PROMS/DataLoader/PrivateProfile.cs.bak +++ /dev/null @@ -1,284 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== - -using System; -using System.IO; -using System.Xml; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Drawing; -using VEPROMS.CSLA.Library; - -namespace Config -{ - /// - /// PrivateProfile opens a private profile string and stores it's contents in an xml document. - /// - public class PrivateProfile - { - #region Log4Net - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - #endregion - - private string ppName; - private XmlDocument ppXml; - private List attr; - private List ele; - - private XmlNode AddNode(XmlNode xParent, string sName, string sValue ) - { - XmlNode nd=AddNode(xParent,sName); - nd.Value=sValue; - return nd; - } - private XmlNode AddNode(XmlNode xParent, string sName) - { - XmlNode nd; - // Add a node - string tsName = sName.Replace(' ', '_').Replace("applicability", "Applicability").Replace("unit", "Unit"); - nd=xParent.OwnerDocument.CreateNode(System.Xml.XmlNodeType.Element,tsName,""); - xParent.AppendChild(nd); - return nd; - } - private void AddAttribute(XmlNode xParent, string sName, string sValue) - { - XmlNode xa = xParent.Attributes.GetNamedItem(sName); - // bug fix. 09/15/03 - // If there was a space after an equal sign, that space character - // was becomming part of the value string (reading the user.CFG file). - // This was giving us a "Must have semi-colon" error message. - // We now strip spaces before and after any Attribute that is written. - sValue = sValue.Trim(' '); - sName = sName.Replace(' ', '_'); - sName = sName.Replace("\\", "_slash_"); - sName = sName.Replace("/", "_fslash_"); - if (xParent.Name == "color") - { - string[] parts = sValue.Split(",".ToCharArray()); - sValue = ColorConfig.FindKnownColor(int.Parse(parts[0]), int.Parse(parts[1]), int.Parse(parts[2])).ToString(); - } - // Add an attribute - if (sValue == "") - { - if (xa != null) - { - xParent.Attributes.RemoveNamedItem(sName); - } - } - else - { - if (xa == null) - { - xa = xParent.OwnerDocument.CreateNode(System.Xml.XmlNodeType.Attribute, sName, ""); - xParent.Attributes.SetNamedItem(xa); - } - xa.Value = sValue; - } - - } - private XmlNode AddSection(XmlNode xParent, string sSection) - { - // get the name. If it's not in the 'migrated elements' list, then - // preface the name with a 'z'. - string elename = sSection.Substring(1, sSection.IndexOf("]") - 1); - while(elename.IndexOf(' ')>-1) elename = elename.Remove(elename.IndexOf(' '),1); - if (!ele.Contains(elename.ToLower())) elename = 'z' + elename; - elename = elename.Replace("\\", "_slash_"); - // Add a section [name] - XmlNode nd = AddNode(xParent, elename); - //AddAttribute(nd,"name",sSection.Substring(1,sSection.IndexOf("]")-1)); - return nd; - } - private XmlNode AddSection_UC(XmlNode xParent, string sSection ) - { - // Add a section [name] - string name_uc = sSection.Substring(1,sSection.IndexOf("]")-1).ToUpper() + "__UC"; - XmlNode nd =AddNode(xParent,name_uc); - // AddAttribute(nd,"name",name_uc); - return nd; - } - private void AddComment(XmlNode xParent, string sComment) - { - - if(xParent.ChildNodes.Count > 0) - { - XmlNode ndlast=xParent.ChildNodes.Item(xParent.ChildNodes.Count-1); - if(ndlast.Name=="comment") - { - XmlNode xa = ndlast.Attributes.GetNamedItem("text"); - xa.Value=xa.Value + "\r\n" + sComment; - return; - } - } - // Add a comment text - XmlNode nd =AddNode(xParent,"comment"); - AddAttribute(nd,"text",sComment); - } - private void AddLine(XmlNode xParent, string sLine) - { - // Add a comment text - XmlNode nd =AddNode(xParent,"line"); - AddAttribute(nd,"text",sLine); - } - private void AddParam(XmlNode xParent, string sParam) - { - int i = sParam.IndexOf("="); - // get the name. If it's not in the 'migrated attribute' list, then - // preface the name with a 'z'. - string attrname = sParam.Substring(0, i); - while (attrname.IndexOf(' ') > -1) attrname = attrname.Remove(attrname.IndexOf(' '), 1); - if (!attr.Contains(attrname.ToLower())) attrname = 'z' + attrname; - string sValue=sParam.Substring(i+1); - string sName = attrname.Trim(' '); - sName = sName.Replace("id", "ID").Replace("name", "Name").Replace("number", "Number").Replace("text", "Text").Replace("other", "Other").Replace("masterdir","MasterDir"); - AddAttribute(xParent, sName, sValue); - } - private void AddParam_UC(XmlNode xParent, string sParam) - { - int i = sParam.IndexOf("="); - // add a param name=value - string sName=sParam.Substring(0,i); - string sValue=sParam.Substring(i+1); - //XmlNode nd =AddNode(xParent,"paramUC"); - sName = sName.Trim(' '); - AddAttribute(xParent, sName, sValue); - //AddAttribute(nd,"name",sName.ToUpper()+"__UC"); - //AddAttribute(nd,"value",sValue); - } - private void LoadXML() - { - string sLine; - ppXml.LoadXml("");// initialize ppXml - XmlNode xmlTop=ppXml.DocumentElement; - XmlNode xmlNd=ppXml.DocumentElement; - //XmlNode xmlNd_UC=ppXml.DocumentElement; - StreamReader myReader = new StreamReader(ppName);// Open file - while( (sLine = myReader.ReadLine())!= null)// read line-by-line - { - // add structure - try - { - if (sLine.Length > 0) - { - switch (sLine.Substring(0, 1)) - { - case "[": - xmlNd = AddSection(xmlTop, sLine); - //xmlNd_UC=AddSection_UC(xmlTop, sLine); - break; - case ";": - //AddComment(xmlNd, sLine); - break; - default: - if (sLine.IndexOf("=") >= 0) - { - AddParam(xmlNd, sLine); - //AddParam_UC(xmlNd_UC, sLine); - } - else - { - //AddLine(xmlNd, sLine); - } - break; - } - } - } - catch (Exception ex) - { - log.Error("error parsing .INI file:", ex); - } - } - myReader.Close(); - } - public PrivateProfile(string sFileName, List listIni_EleName, List listIni_AttrName) - { - ppName=sFileName; - ppXml= new XmlDocument(); - attr = listIni_AttrName; - ele = listIni_EleName; - LoadXML(); - } - ~PrivateProfile() - { - // Clean-up - // - } - public string PrettyNode(XmlNode nd,int level) - { - string retval=""; - string prefix=new string(' ',level*2); - if(nd.ChildNodes.Count > 0) - { - retval = prefix + "<" + nd.Name; - for(int i=0;i"; - for(int i=0;i"; - } - else - { - retval = prefix + "<" + nd.Name; - for(int i=0;i"; - } - return retval; - } - public string PrettyXML() - { - return PrettyNode(ppXml.DocumentElement,0); - } - public XmlDocument XML() - { - // return XML Document - return ppXml; - } - public override string ToString() - { - // return string - return ""; - } - public void Save() - { - SaveAs(ppName); - } - public void SaveAs(string sName) - { - } - public string Attr(string sPath) - { - string retval=""; - XmlNode xn = ppXml.SelectSingleNode(sPath); - if(xn != null) - { - string quots = xn.Value; - if (quots.Substring(0,1)=="\"" && quots.Substring(quots.Length-1,1)=="\"") - retval = quots.Substring(1,quots.Length-2); - else - retval=xn.Value; - } - return retval; - } - - public string Attr(string sSection, string sParameter) - { - string findstr = "/ini/sectionUC[@name='" + sSection.ToUpper() + "__UC']/paramUC[@name='" + sParameter.ToUpper() + "__UC']/@value"; - return Attr(findstr); - } - } -} diff --git a/PROMS/DataLoader/Procedures.cs b/PROMS/DataLoader/Procedures.cs deleted file mode 100644 index 002295ae..00000000 --- a/PROMS/DataLoader/Procedures.cs +++ /dev/null @@ -1,605 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - public partial class Loader - { - #region Log4Net - public static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - //public static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - #endregion - public static int HandleCount - { - get { return System.Diagnostics.Process.GetCurrentProcess().HandleCount; } - } - private bool RunWithDB2K = false; - private Item MigrateProcedure(OleDbConnection cn, DataRow dr, Item FromItem, string pth, DocVersion docver, bool convertProcedures, FormatInfo activeFormat) - { - dicOldStepSequence = new Dictionary(); - Stack SubSectLevels = new Stack(); // levels of subsections - ProcFileName = dr["Entry"].ToString(); - ProcNumber = dr["Number"].ToString(); - frmMain.Status = "Processing Procedure " + ProcNumber + " - " + ProcFileName; - GC.Collect(); - frmMain.AddInfo("Processing Procedure {0} {1}", ProcNumber, GC.GetTotalMemory(true)); - //frmMain.MyInfo = CSLACache.UsageNotFinalized; - - - DateTime dts = GetDTS(dr["Date"].ToString(), dr["Time"].ToString()); - string userid = dr["initials"].ToString().Trim(); - if (userid == null || userid == "") userid = "Migration"; - - ConfigInfo ci = null; - string tstr = dr["Proccode"].ToString(); - if (tstr != null && tstr != "") - { - ci = new ConfigInfo(null); - ci.AddItem("Procedure", "ProcCode", tstr); - } - //load revdate - string tstr2 = dts.ToString("MM/dd/yyyy"); - if (tstr2 != null && tstr2 != "") - { - if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Procedure", "RevDate", tstr2); - } - if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("History", "ProcName", ProcFileName.ToUpper()); - - // Load in format data, i.e. default number of columns: - string tstr1 = dr["Format"].ToString(); - if (tstr1 != null && tstr1 != "") - { - switch (tstr1) - { - case "1": - case "2": - case "3": - case "4": - if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Format", "Columns", tstr1); - break; - default: - break; - } - } - // try to load in fix file data: - FileInfo fi = new FileInfo(pth + @"\" + ProcFileName + @".fix"); - if (fi.Exists) - { - FixItems fixItems = new FixItems(fi); - if (fixItems.Count > 0) - { - if (ci == null) ci = new ConfigInfo(null); - if (fixItems[0].Rev != null && fixItems[0].Rev != "") ci.AddItem("Procedure", "Rev", fixItems[0].Rev); - if (fixItems[0].RevDate != null && fixItems[0].RevDate != "") ci.AddItem("Procedure", "RevDate", fixItems[0].RevDate); - if (fixItems[0].ReviewDate != null && fixItems[0].ReviewDate != "") ci.AddItem("Procedure", "ReviewDate", fixItems[0].ReviewDate); - } - } - fi = new FileInfo(pth + @"\" + ProcFileName + @".apl"); - if (fi.Exists) - { - MyProcAPL = GetApple(fi.FullName); - } - // check that there is a "Series" column, i.e. the 10th column, some datasets - // may not have it, for example vetuec\master.sl1 - if (dr.ItemArray.Length > 10) - { - tstr = dr["Series"].ToString(); - if (tstr != null && tstr != "") - { - if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Procedure", "Series", tstr); - } - } - if (docver.DocVersionConfig.Unit_Count > 1) - { - for (int i = 1; i <= docver.DocVersionConfig.Unit_Count; i++) - { - ci.AddSlaveNode(i); - docver.DocVersionConfig.SelectedSlave = i; - string un = ".SL" + docver.DocVersionConfig.Old_Index; - - string mupth = pth.Replace(".prc", un); - fi = new FileInfo(mupth + @"\" + ProcFileName + @".fix"); - if (fi.Exists) - { - FixItems fixItems = new FixItems(fi); - if (fixItems.Count > 0) - { - if (fixItems[0].Rev != null && fixItems[0].Rev != "") - ci.AddSlaveItem(i, "Rev", fixItems[0].Rev); - else - ci.AddSlaveItem(i, "Rev", ""); - if (fixItems[0].RevDate != null && fixItems[0].RevDate != "") - ci.AddSlaveItem(i, "RevDate", fixItems[0].RevDate); - else - ci.AddSlaveItem(i, "RevDate", ""); - if (fixItems[0].ReviewDate != null && fixItems[0].ReviewDate != "") - ci.AddSlaveItem(i, "ReviewDate", fixItems[0].ReviewDate); - else - ci.AddSlaveItem(i, "ReviewDate", ""); - } - } - else - { - ci.AddSlaveItem(i, "Rev", ""); - ci.AddSlaveItem(i, "RevDate", ""); - ci.AddSlaveItem(i, "ReviewDate", ""); - } - } - } - DataSet ds = new DataSet(); - DataTable dt = null; - - // check that file exists, i.e. if proc file doesn't exist but has entry in set - // file, flag error, but continue. - string fname = pth + "\\" + dr["entry"] + ".dbf"; - if (File.Exists(fname)) - { - // if the dbt is bad, fix it. - DbtOk(dr["entry"].ToString(), pth); - // See if there is PSI and if so, add it to the xml. - OleDbDataAdapter dapsi = new OleDbDataAdapter("select * from [" + dr["entry"] + "] where [STEP] is null", cn); - int handleBefore = HandleCount; - TryToLoadDataSet(ds, fname, dapsi); - int handleAfter = HandleCount; - if (!RunWithDB2K && handleAfter - handleBefore > 10) - { - string msg = "It appears that handles are being created and not cleared."; - if (dB2KInstalled()) - { - msg += "\r\n\r\nThis is most likely because dB2K is installed." + - "\r\n\r\nUninstall dB2K and run again."; - if (MessageBox.Show(msg + "\r\n\r\nDo you want to continue?", "Run with dB2K", - MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - RunWithDB2K = true; - } - else - { - msg += "\r\n\r\nCall Volian for support."; - } - if (!RunWithDB2K) throw new Exception(msg); - } - dt = ds.Tables[0]; - - if (dt.Rows.Count > 0) - { - DataRow drpsi = dt.Rows[0]; - string psistr = drpsi["TEXTM"].ToString(); - try - { - if (psistr != null && psistr != "") - { - StringReader strrd = new StringReader(psistr); - - string sLine; - if (ci == null) ci = new ConfigInfo(null); - while ((sLine = strrd.ReadLine()) != null) - { - int indx = sLine.IndexOf(' '); - string nm = null; - string vl = null; - if (indx < 0) - nm = sLine; - else - { - nm = sLine.Substring(0, indx); - string tmpPsi = sLine.Substring(indx + 1, sLine.Length - indx - 1); - if (tmpPsi.Length > 0) tmpPsi = TextConvert.ConvertText(tmpPsi); - vl = tmpPsi; - } - ci.AddItem("PSI", nm, vl == null ? null : vl); - } - } - } - catch(Exception ex) - { - log.Warn("Failure during PSI", ex); - } - } - dapsi.Dispose(); - } - else // log an error - { - log.ErrorFormat("Missing DBF: {0}", fname); - } - - // Note, for now the data from the format field will be saved. Later, xpath, ?? - EditSectId = 0; - - // See if no caret convert... - //FormatInfo docverFormat = docver.MyDocVersionInfo.ActiveFormat; - bool do_cvt = activeFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta;//docverFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta; - // pass in a 0 on MakeContent for type of procedure, i.e. procedure = 0 (on type field) - - // can we save itm.ItemID in a dictionary of outside trans? ex: otrans("vehlp\procs\0POP05-EO00",itm.ItemID)? - Content cont = null; - Item itm = null; - string dicNumber = dr["Number"].ToString(); - string number = TextConvert.ConvertText(dr["Number"].ToString()); - frmMain.UpdateLabels(1, 0, 0); - //Console.WriteLine("number {0}", number); - //Console.WriteLine("Item Key {0} List {1}", Item.CacheCountPrimaryKey, Item.CacheCountList); - //Console.WriteLine("ItemInfo Key {0} List {1}", ItemInfo.CacheCountPrimaryKey, ItemInfo.CacheCountList); - DocVersionInfo dvi = DocVersionInfo.Get(docver.VersionID); - dvi.ResetProcedures(); // need this to clear out Procedures so that they are retrieved (resolves a caching problem) - foreach (ItemInfo ii in dvi.Procedures) - { - if (ii.MyContent.Number == number) - { - //Console.WriteLine(number); - itm = ii.Get(); - cont = ii.MyContent.Get(); - break; - } - } - if (!convertProcedures || (docver.VersionType != (int)VEPROMS.CSLA.Library.VersionTypeEnum.WorkingDraft && docver.VersionType != (int)VEPROMS.CSLA.Library.VersionTypeEnum.Approved)) - { - // if this procedure already exists for this docversion, just use it. - if (itm == null && cont == null) - { - cont = Content.New(number, TextConvert.ConvertText(dr["Title"].ToString(), do_cvt), 0, null, ci == null ? null : ci.ToString(), dts, userid); - itm = Item.MakeItem(FromItem, cont, dts, userid); - } - } - if (convertProcedures /* && number == "001\\u8209?007"/* && number == "0POP05-EO-EC00"*/) - { - OleDbDataAdapter da = new OleDbDataAdapter("select * from [" + dr["entry"] + "] where sequence like ' %' and [STEP] is not null", cn); - try - { - dicTrans_ItemDone[dicNumber] = itm; // will be null if only doing procs & no sections, etc. - LoadSection(ds, da, dr["entry"].ToString()); - da.SelectCommand.CommandText = "select * from [" + dr["entry"] + "] where step not like ' ' and sequence not like ' %'"; - da.Fill(ds, "Steps"); - dt = ds.Tables["Steps"]; - dt.CaseSensitive = true; - ds.Tables["Steps"].CaseSensitive = true; - dt.Columns.Add("CStep", System.Type.GetType("System.String")); - dt.Columns.Add("CSequence", System.Type.GetType("System.String")); - // set the cstep & csequence - couldn't do it in the add because it needed a sql function - foreach (DataRow drw in ds.Tables["Steps"].Rows) - { - drw["CStep"] = TextConvert.ConvertSeq(drw["Step"].ToString()); - drw["CSequence"] = TextConvert.ConvertSeq(drw["Sequence"].ToString()); - } - dt.Columns.Add("StepNo", System.Type.GetType("System.Int32"), "Convert(Convert(Substring(CStep,2,1),'System.Char'),'System.Int32')-48"); - dt.Columns.Add("Level", System.Type.GetType("System.Int32"), "Len(CSequence)"); - dt.Columns.Add("SubStepNo", System.Type.GetType("System.Int32"), "Convert(Convert(Substring(CSequence,Len(CSequence),1),'System.Char'),'System.Int32')-48"); - } - catch (Exception ex) - { - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - log.Error(ex.StackTrace); - frmMain.AddError(ex, "MigrateProcedure - {0}", ProcFileName); - } - da.Dispose(); - // dicSecCount is dictionary to track number of subsections for the parent at a level - // dicSecID is the parent at that level - Dictionary dicSecCount = new Dictionary(); - Dictionary dicSecParentItem = new Dictionary(); - frmMain.pbSectMaximum = ds.Tables["Sections"].Rows.Count; - frmMain.pbSectValue = 0; - - DataTable dtsect = ds.Tables["Sections"]; - dtsect.CaseSensitive = true; - DataView dv = new DataView(dtsect, "", "locb", DataViewRowState.CurrentRows); - Item SectItm = null; - int level = 0; - bool addpart = true; - Item parentitem = itm; - //if (ProcNumber == "001-002") - // Console.WriteLine("proc 001-002"); - foreach (DataRowView drw in dv) - { - //if (ProcNumber == "016-001") //"017-001") //"082-002AB") - // Console.WriteLine("016-001"); //("017-001"); //"082-002AB"); - - // If there is a '~' in step[1] and the sequence number is blank, the this record - // is a multiline section title. Skip it from processing the section. This record - // will get read in the section code to get the section title. - string sequence = drw["CSequence"].ToString().PadRight(10); - string step = drw["CStep"].ToString(); - if (step[1]=='~' && sequence[1]==' ') break; - bool hasSubSects = (sequence[5] != ' ' && sequence[5] != '0'); - SectItm = MigrateSection(parentitem, ProcNumber, cn, drw, ds.Tables["Steps"], SectItm, hasSubSects, pth, docver, activeFormat, addpart ? cont : null); - addpart = false; - // if no children, add first child (cont) - //if (addpart) - //{ - // // ContentsParts.Add can use 'fromtype', item - fromtype here = 2, section - // cont.ContentParts.Add(2, SectItm); - // if (cont.MyZContent.OldStepSequence == null || cont.MyZContent.OldStepSequence == "") cont.MyZContent.OldStepSequence = ProcNumber; - // if (!cont.IsSavable) ErrorRpt.ErrorReport(cont); - // cont.Save(); - // addpart = false; - //} - //FrType = 0; - //Console.WriteLine("'before',{0},{1},{2},{3}", SectItm == null ? "" : SectItm.DisplayNumber, parentitem.DisplayNumber, level, dicSecCount.Count > 0 ? dicSecCount[level] : 0); - dicSecParentItem[level] = SectItm; - int subSecs = drw["Sequence"].ToString().PadRight(12, ' ')[5] - 48; - if (level > 0) - { - dicSecCount[level]--; // decrements number of sections to process - } - if (subSecs > 0) - { - dicSecCount[++level] = subSecs; - cont = SectItm.MyContent; - parentitem = SectItm; - addpart = true; - SectItm = null; // no previous sibling for the first child node. - } - if (level > 0) - { - while (level > 0 && dicSecCount[level] == 0) - { - // shift up a level, i.e. give me the parent for the previous level - dicSecCount.Remove(level); - SectItm = dicSecParentItem[--level]; - if (level > 0) - parentitem = dicSecParentItem[level - 1]; - else - parentitem = itm; - } - } - //Console.WriteLine("'after',{0},{1},{2},{3}", SectItm == null ? "" : SectItm.DisplayNumber, parentitem.DisplayNumber, level, dicSecCount.Count > 0 ? dicSecCount[level] : 0); - } - dv.Dispose(); - //foreach (Item secItm in dicSecParentItem.Values) - // secItm.Dispose(); - // need section start - if (EditSectId != 0) - { - if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Procedure", "SectionStart", string.Format("{0}", EditSectId)); - itm.MyContent.Config = (ci == null) ? null : ci.ToString(); - if (!itm.IsSavable) ErrorRpt.ErrorReport(itm); - itm.Save(); - } - } - ds.Dispose(); - - // if there are any floating foldouts & associated steps, set config on steps for foldout association. - // the free the lists for the next procedure: - if (FoldoutStpSeq != null && FoldoutStpSeq.Count>0) - { - string cmd = "SELECT * FROM [tran] WHERE [FROMNUMBER]='" + ProcNumber.Replace("'", "''") + "' AND [TYPE] ='R'"; - OleDbDataAdapter da = new OleDbDataAdapter(cmd, cn); - // get transition records for this step. - ds = new DataSet(); - try - { - da.Fill(ds); - DataTable dtt = ds.Tables[0]; - dtt.CaseSensitive = true; - Dictionary stpFoldSeq = new Dictionary(); - foreach (DataRow drt in dtt.Rows) - { - // get from/to seq, subtract off '0' to get stepnumber. - // The 'oldto' field stores which foldout section these steps go - // to. However, if reset, the 'oldto' may not contain a reference - // to a foldout, i.e. may contain 'junk' data. Only add the - // reference to the dictionary if it's a foldout. - int fromStep = TextConvert.ConvertSeq(drt["FROMSEQUEN"].ToString())[1] - '0'; - int toStep = TextConvert.ConvertSeq(drt["TOSEQUENCE"].ToString())[1] - '0'; - string foldSeq = drt["OLDTO"].ToString().Substring(0, 2); - if (foldSeq[1] == 'F') - { - for (int istp = fromStep; istp <= toStep; istp++) - stpFoldSeq.Add(istp, foldSeq); - } - } - ds.Dispose(); - da.Dispose(); - // now read in the HLS's and set their config to the appropriate foldout. - // stpFoldSeq contains 16 bit step to foldout associations, i.e. an integer step - // number (ordinal) and string sequence of foldout. - // FloatingFoldoutHLS contains each 16bit ordinal step number (all steps, whether - // they have a foldout or not) and the associated itemid in 32bit - // FoldoutStpSeq contains all foldouts, i.e. the string representing the sequence - // number if 16bit and the resulting 32bit itemid. - foreach (KeyValuePair kvp in stpFoldSeq) - { - int hlsItemId = FloatingFoldoutHLS[kvp.Key-1]; // -1 for indexes starting at 0 (not 1) - using (Item itmF = Item.Get(hlsItemId)) - { - // be sure that the dictionaries contain the key. - // Some data may be 'corrupt' and not have the appropriate linkages - // to floating foldouts. - if (FoldoutStpSeq.ContainsKey(kvp.Value)) - { - int fldItemId = FoldoutStpSeq[kvp.Value]; - ConfigInfo ciFold = new ConfigInfo(itmF.MyContent.Config); - ciFold.AddItem("Step", "FloatingFoldout", fldItemId.ToString()); - itmF.MyContent.Config = ciFold.ToString(); - itmF.Save(); - } - } - } - } - catch (Exception ex) - { - frmMain.AddError(ex, "Error resolving Floating Foldout Data '{0}'", ProcNumber); - log.Error("Error resolving Floating Foldout Data"); - log.ErrorFormat("from number = {0}", ProcNumber); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - ds.Dispose(); - da.Dispose(); - } - } - if (FoldoutStpSeq!=null) FoldoutStpSeq.Clear(); - if (FloatingFoldoutHLS!=null) FloatingFoldoutHLS.Clear(); - //Console.WriteLine("End MigrateProcedure number {0}", number); - //Console.WriteLine("End MigrateProcedure Item Key {0} List {1}", Item.CacheCountPrimaryKey, Item.CacheCountList); - //Console.WriteLine("End MigrateProcedure ItemInfo Key {0} List {1}", ItemInfo.CacheCountPrimaryKey, ItemInfo.CacheCountList); - return itm; - } - - private static void TryToLoadDataSet(DataSet ds, string fname, OleDbDataAdapter dapsi) - { - try - { - dapsi.Fill(ds); - } - catch (Exception ex) - { - FileInfo fi; - switch (ex.Message) - { - case "Index file not found.":// then delete inf file - fi = new FileInfo(fname.ToLower().Replace(".dbf",".inf")); - fi.Delete(); - TryToLoadDataSet(ds, fname, dapsi); // Try again - break; - case "External table is not in the expected format.": // then pad dbt file with 128 zeros. - fi = new FileInfo(fname.ToLower().Replace(".dbf", ".dbt")); - FileStream fs = fi.OpenWrite(); - fs.Position = fs.Length; - byte[] buf = new byte[128]; - for (int i = 0; i < 128; i++) buf[i] = 0; - fs.Write(buf, 0, 128); - fs.Close(); - TryToLoadDataSet(ds, fname, dapsi); // Try again - break; - default: // Unrecognized error - Console.WriteLine(ex.Message); - //Application.Exit(); - throw new Exception("Error in MigrateProcedure: " + fname, ex); - } - } - } - private bool dB2KInstalled() - { - Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"software\dBase\dB2K"); - bool retval = key != null; - if(key != null)key.Close(); - return retval; - } - - // check for duplicate SET file data - jsj 2/11/10 - private bool OKtoProcessDBF(DataRow dr, string pth) - { - string pfn = dr["Entry"].ToString(); - string pn = dr["Number"].ToString(); - FileInfo fi = new FileInfo(pth + "\\" + pfn + ".dbf"); - if (!fi.Exists) - { - _MyLog.WarnFormat("Data file does not exist {0}", fi.FullName); - frmMain.AddError("Data file does not exist {0}", fi.FullName); - return false; - } - if (!dicSetfileEntries.ContainsValue(pfn) && !dicSetfileEntries.ContainsKey(pn)) - { - dicSetfileEntries.Add(pn, pfn); - return true; - } - return false; - } - private Item MigrateProcedures(OleDbConnection cn, string pth, DocVersion docver, bool convertProcedures, FormatInfo activeFormat) - { - - Item FirstItm = docver.MyItem;// null; - // Loop through Set File for each Procedure - try - { - OleDbDataAdapter da = new OleDbDataAdapter("Select * from [set] where entry is not null", cn); - DataSet ds = new DataSet(); - da.Fill(ds); - Item FrItm = null; - if (FirstItm != null) - FrItm = ItemInfo.Get(FirstItm.ItemID).LastSibling.Get(); - frmMain.pbProcMaximum = ds.Tables[0].Rows.Count; - frmMain.UpdateLabels(0, 0, 0); - dicSetfileEntries = new Dictionary(); // used to check for duplicate SET file info - jsj 2/11/10 - int i = 0; - frmMain.ShowSections = convertProcedures; - foreach (DataRow dr in ds.Tables[0].Rows) - { - i++; - if (i > frmMain.SkipProcedures && (frmMain.HowManyProcedures == 0|| i <= (frmMain.SkipProcedures + frmMain.HowManyProcedures) )) - { - if (OKtoProcessDBF(dr, pth)) // look for duplicate SET file info - jsj 2/11/10 - { - List cacheContentInfo = ContentInfo.CacheList; - List cacheItemInfo = ItemInfo.CacheList; - List cacheEntryInfo = EntryInfo.CacheList; - List cachePdfInfo = PdfInfo.CacheList; - List cacheDocVersionInfo = DocVersionInfo.CacheList; - List cachePartInfo = PartInfo.CacheList; - frmMain.pbStepValue = 0;//Reset Step Count - FrItm = MigrateProcedure(cn, dr, FrItm, pth, docver, convertProcedures, activeFormat); - if (FirstItm == null) FirstItm = FrItm; - //frmMain.MyInfo = string.Format("Before Restore {0}", GC.GetTotalMemory(true)); - ContentInfo.RestoreCacheList(cacheContentInfo); - PartInfo.RestoreCacheList(cachePartInfo); - ItemInfo.RestoreCacheList(cacheItemInfo); - EntryInfo.RestoreCacheList(cacheEntryInfo); - PdfInfo.RestoreCacheList(cachePdfInfo); - DocVersionInfo.RestoreCacheList(cacheDocVersionInfo); - //frmMain.MyInfo = string.Format("After Restore {0}", GC.GetTotalMemory(true)); - } - } - //GC.Collect(); - } - ds.Dispose(); - da.Dispose(); - } - catch (Exception ex) - { - _MyLog.ErrorFormat("MigrateProcedures - {0} - {1}\r\n\r\n{2}", pth,ex.Message, ex.InnerException); - //throw new Exception("Error in MigrateProcedures: " + pth, ex); - } - frmMain.MyInfo = CSLACache.UsageAll; - frmMain.AddInfo(Content.MyStack); - frmMain.AddInfo(ContentInfo.MyStack); - frmMain.AddInfo(DocVersionInfo.MyStack); - return FirstItm; - } - private void DbtOk(string fname, string pth) - { - string dbtname = pth + "\\" + fname + ".dbt"; - if (File.Exists(dbtname)) - { - // check if dbt is at least 512, if not append 508 bytes. This is to fix - // a problem where dbts were created with only 4 bytes in the 16-bit code. - // if only 4 bytes, ado.net gives an "External table not in expected format" - // error - FileInfo fi = new FileInfo(dbtname); - if (fi.Length < 512) - { - FileStream fs = new FileStream(dbtname, FileMode.Open, FileAccess.Write, FileShare.ReadWrite); - BinaryWriter bw = new BinaryWriter(fs); - bw.Seek(0, SeekOrigin.End); - byte[] wrBytes = new byte[512 - fi.Length]; - for (int i = 0; i < 512 - fi.Length; i++) wrBytes[i] = 0; - wrBytes[4] = 0x02; - bw.Write(wrBytes); - bw.Close(); - } - fi = null; - } - } - } -} diff --git a/PROMS/DataLoader/Procedures.cs.bak b/PROMS/DataLoader/Procedures.cs.bak deleted file mode 100644 index bba624f5..00000000 --- a/PROMS/DataLoader/Procedures.cs.bak +++ /dev/null @@ -1,294 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - public partial class Loader - { - #region Log4Net - public static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - //public static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - #endregion - private Item MigrateProcedure(OleDbConnection cn, DataRow dr, Item FromItem, string pth, DocVersion docver, bool convertProcedures) - { - dicOldStepSequence = new Dictionary(); - Stack SubSectLevels = new Stack(); // levels of subsections - ProcFileName = dr["Entry"].ToString(); - ProcNumber = dr["Number"].ToString(); - DateTime dts = GetDTS(dr["Date"].ToString(), dr["Time"].ToString()); - string userid = dr["initials"].ToString().Trim(); - if (userid == null || userid == "") userid = "Migration"; - - ConfigInfo ci = null; - string tstr = dr["Proccode"].ToString(); - if (tstr != null && tstr != "") - { - ci = new ConfigInfo(null); - ci.AddItem("Procedure", "ProcCode", tstr); - } - - // check that there is a "Series" column, i.e. the 10th column, some datasets - // may not have it, for example vetuec\master.sl1 - if (dr.ItemArray.Length > 10) - { - tstr = dr["Series"].ToString(); - if (tstr != null && tstr != "") - { - if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Procedure", "Series", tstr); - } - } - - DataSet ds = new DataSet(); - DataTable dt = null; - - // check that file exists, i.e. if proc file doesn't exist but has entry in set - // file, flag error, but continue. - //string fname = frmMain.tbSourceText +"\\"+ dr["entry"] + ".dbf"; - string fname = pth + "\\" + dr["entry"] + ".dbf"; - if (File.Exists(fname)) - { - // if the dbt is bad, fix it. - DbtOk(dr["entry"].ToString(),pth); - // See if there is PSI and if so, add it to the xml. - OleDbDataAdapter dapsi = new OleDbDataAdapter("select * from [" + dr["entry"] + "] where [STEP] is null", cn); - try - { - dapsi.Fill(ds); - } - catch (Exception ex) - { - Console.WriteLine(ex.Message); - Application.Exit(); - } - dt = ds.Tables[0]; - - if (dt.Rows.Count > 0) - { - DataRow drpsi = dt.Rows[0]; - string psistr = drpsi["TEXTM"].ToString(); - if (psistr != null && psistr != "") - { - StringReader strrd = new StringReader(psistr); - - string sLine; - if (ci == null) ci = new ConfigInfo(null); - while ((sLine = strrd.ReadLine()) != null) - { - int indx = sLine.IndexOf(' '); - string nm = null; - string vl = null; - if (indx < 0) - nm = sLine; - else - { - nm = sLine.Substring(0, indx); - vl = sLine.Substring(indx + 1, sLine.Length - indx - 1); - } - ci.AddItem("PSI", nm, vl == null ? null : vl); - } - } - } - dapsi.Dispose(); - } - else // log an error - { - log.ErrorFormat("Missing DBF: {0}", fname); - } - - // Note, for now the data from the format field will be saved. Later, xpath, ?? - EditSectId = 0; - - // See if no caret convert... - FormatInfo docverFormat = docver.MyDocVersionInfo.ActiveFormat; - bool do_cvt = docverFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta; - // pass in a 0 on MakeContent for type of procedure, i.e. procedure = 0 (on type field) - - // can we save itm.ItemID in a dictionary of outside trans? ex: otrans("vehlp\procs\0POP05-EO00",itm.ItemID)? - Content cont = null; - Item itm =null; - string number = TextConvert.ConvertText(dr["Number"].ToString()); - frmMain.UpdateLabels(1, 0, 0); - if (!convertProcedures || docver.VersionType != (int)VEPROMS.CSLA.Library.VersionTypeEnum.WorkingDraft) - { - cont = Content.New(number, TextConvert.ConvertText(dr["Title"].ToString(),do_cvt), 0, null, ci == null ? null : ci.ToString(), dts, userid); - itm = Item.MakeItem(FromItem, cont, dts, userid); - } - else - { - DocVersionInfo dvi = DocVersionInfo.Get(docver.VersionID); - foreach(ItemInfo ii in dvi.Procedures){ - if (ii.MyContent.Number == number) - { - Console.WriteLine(number); - itm = ii.Get(); - cont = ii.MyContent.Get(); - } - } - } - if (convertProcedures /*&& number == "0POP05\\u8209?EO\\u8209?ES32"*/) //0POP05\u8209?EO\u8209?ES32 - { - OleDbDataAdapter da = new OleDbDataAdapter("select * from [" + dr["entry"] + "] where sequence like ' %'", cn); - try - { - LoadSection(ds, da, dr["entry"].ToString()); - da.SelectCommand.CommandText = "select * from [" + dr["entry"] + "] where step not like ' ' and step not like '%~'"; - da.Fill(ds, "Steps"); - dt = ds.Tables["Steps"]; - dt.CaseSensitive = true; - ds.Tables["Steps"].CaseSensitive = true; - dt.Columns.Add("CStep", System.Type.GetType("System.String")); - dt.Columns.Add("CSequence", System.Type.GetType("System.String")); - // set the cstep & csequence - couldn't do it in the add because it needed a sql function - foreach (DataRow drw in ds.Tables["Steps"].Rows) - { - drw["CStep"] = TextConvert.ConvertSeq(drw["Step"].ToString()); - drw["CSequence"] = TextConvert.ConvertSeq(drw["Sequence"].ToString()); - } - dt.Columns.Add("StepNo", System.Type.GetType("System.Int32"), "Convert(Convert(Substring(CStep,2,1),'System.Char'),'System.Int32')-48"); - dt.Columns.Add("Level", System.Type.GetType("System.Int32"), "Len(CSequence)"); - dt.Columns.Add("SubStepNo", System.Type.GetType("System.Int32"), "Convert(Convert(Substring(CSequence,Len(CSequence),1),'System.Char'),'System.Int32')-48"); - } - catch (Exception ex) - { - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - log.Error(ex.StackTrace); - } - da.Dispose(); - - // dicSecCount is dictionary to track number of subsections for the parent at a level - // dicSecID is the parent at that level - Dictionary dicSecCount = new Dictionary(); - Dictionary dicSecParentItem = new Dictionary(); - frmMain.pbSectMaximum = ds.Tables["Sections"].Rows.Count; - frmMain.pbSectValue = 0; - - DataTable dtsect = ds.Tables["Sections"]; - dtsect.CaseSensitive = true; - DataView dv = new DataView(dtsect, "", "locb", DataViewRowState.CurrentRows); - Item SectItm = null; - int level = 0; - bool addpart = true; - Item parentitem = itm; - foreach (DataRowView drw in dv) - { - SectItm = MigrateSection(parentitem, ProcNumber, cn, drw, ds.Tables["Steps"], SectItm, dicSecCount.Count > 0 ? true : false, pth, docver); - // if no children, add first child (cont) - if (addpart) - { - // ContentsParts.Add can use 'fromtype', item - fromtype here = 2, section - cont.ContentParts.Add(2, SectItm); - if (cont.MyZContent.OldStepSequence == null || cont.MyZContent.OldStepSequence == "") cont.MyZContent.OldStepSequence = ProcNumber; - if (!cont.IsSavable) ErrorRpt.ErrorReport(cont); - cont.Save(); - addpart = false; - } - //FrType = 0; - dicSecParentItem[level] = SectItm; - if (level > 0) - { - if ((dicSecCount[level]) == 1) - // shift up a level, i.e. give me the parent for the previous level - SectItm = dicSecParentItem[--level]; - else - dicSecCount[level]--; // decrements number of sections to process - } - // get number of subsections for this section - int subSecs = drw["Sequence"].ToString().PadRight(12, ' ')[5] - 48; - if (subSecs > 0) - { - dicSecCount[++level] = subSecs; - cont = SectItm.MyContent; - parentitem = SectItm; - addpart = true; - SectItm = null; // no previous sibling for the first child node. - } - } - // need section start - if (EditSectId != 0) - { - if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Procedure", "SectionStart", string.Format("{0}", EditSectId)); - itm.MyContent.Config = (ci == null) ? null : ci.ToString(); - if (!itm.IsSavable) ErrorRpt.ErrorReport(itm); - itm.Save(); - } - } - ds.Dispose(); - return itm; - } - private Item MigrateProcedures(OleDbConnection cn, string pth, DocVersion docver, bool convertProcedures) - { - Item FirstItm = null; - // Loop through Set File for each Procedure - int whereami = 0; - try - { - OleDbDataAdapter da = new OleDbDataAdapter("Select * from [set] where entry is not null", cn); - DataSet ds = new DataSet(); - da.Fill(ds); - Item FrItm = null; - frmMain.pbProcMaximum = ds.Tables[0].Rows.Count; - frmMain.UpdateLabels(0, 0, 0); - - foreach (DataRow dr in ds.Tables[0].Rows) - { - FrItm = MigrateProcedure(cn, dr, FrItm, pth, docver, convertProcedures); - if (FirstItm == null) FirstItm = FrItm; - } - da.Dispose(); - } - catch (Exception ex) - { - Console.WriteLine("End of MigrateProcedures - ex = {0}", ex.Message); - _MyLog.ErrorFormat("MigrateProcedures - {0} - {1}\r\n\r\n{2}", pth,ex.Message, ex.InnerException); - } - return FirstItm; - } - private void DbtOk(string fname, string pth) - { - //string dbtname = frmMain.tbSourceText + "\\" + fname + ".dbt"; - string dbtname = pth + "\\" + fname + ".dbt"; - if (File.Exists(dbtname)) - { - // check if dbt is at least 512, if not append 508 bytes. This is to fix - // a problem where dbts were created with only 4 bytes in the 16-bit code. - // if only 4 bytes, ado.net gives an "External table not in expected format" - // error - FileInfo fi = new FileInfo(dbtname); - if (fi.Length < 512) - { - FileStream fs = new FileStream(dbtname, FileMode.Open, FileAccess.Write, FileShare.ReadWrite); - BinaryWriter bw = new BinaryWriter(fs); - bw.Seek(0, SeekOrigin.End); - byte[] wrBytes = new byte[512 - fi.Length]; - for (int i = 0; i < 512 - fi.Length; i++) wrBytes[i] = 0; - wrBytes[4] = 0x02; - bw.Write(wrBytes); - bw.Close(); - } - fi = null; - } - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/Program.cs b/PROMS/DataLoader/Program.cs deleted file mode 100644 index 5ba04ba7..00000000 --- a/PROMS/DataLoader/Program.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; - - -namespace DataLoader -{ - static class Program - { - // - //The main entry point for the application. - // - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new frmLoader()); - } - } -} diff --git a/PROMS/DataLoader/Properties/AssemblyInfo.cs b/PROMS/DataLoader/Properties/AssemblyInfo.cs deleted file mode 100644 index ee29bd60..00000000 --- a/PROMS/DataLoader/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("DataLoader")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Volian Enterprises, Inc.")] -[assembly: AssemblyProduct("DataLoader")] -[assembly: AssemblyCopyright("Copyright © Volian Enterprises, Inc. 2006")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("bcf6964e-0a2b-4e99-8dde-2dd62366294c")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/PROMS/DataLoader/Properties/Resources.Designer.cs b/PROMS/DataLoader/Properties/Resources.Designer.cs deleted file mode 100644 index bae8975a..00000000 --- a/PROMS/DataLoader/Properties/Resources.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.832 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace DataLoader.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.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() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [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("DataLoader.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [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/PROMS/DataLoader/Properties/Resources.resx b/PROMS/DataLoader/Properties/Resources.resx deleted file mode 100644 index af7dbebb..00000000 --- a/PROMS/DataLoader/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/PROMS/DataLoader/Properties/Settings.Designer.cs b/PROMS/DataLoader/Properties/Settings.Designer.cs deleted file mode 100644 index 5897d349..00000000 --- a/PROMS/DataLoader/Properties/Settings.Designer.cs +++ /dev/null @@ -1,422 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.5485 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace DataLoader.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.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; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string VeSamFilename { - get { - return ((string)(this["VeSamFilename"])); - } - set { - this["VeSamFilename"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string DbfPathname { - get { - return ((string)(this["DbfPathname"])); - } - set { - this["DbfPathname"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Checked")] - public global::System.Windows.Forms.CheckState LoadWordDoc { - get { - return ((global::System.Windows.Forms.CheckState)(this["LoadWordDoc"])); - } - set { - this["LoadWordDoc"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Unchecked")] - public global::System.Windows.Forms.CheckState LoadRTFDoc { - get { - return ((global::System.Windows.Forms.CheckState)(this["LoadRTFDoc"])); - } - set { - this["LoadRTFDoc"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Checked")] - public global::System.Windows.Forms.CheckState PurgeData { - get { - return ((global::System.Windows.Forms.CheckState)(this["PurgeData"])); - } - set { - this["PurgeData"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string VePromsFilename { - get { - return ((string)(this["VePromsFilename"])); - } - set { - this["VePromsFilename"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string LogFileLoc { - get { - return ((string)(this["LogFileLoc"])); - } - set { - this["LogFileLoc"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string BackupFileName { - get { - return ((string)(this["BackupFileName"])); - } - set { - this["BackupFileName"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string BackupFolder { - get { - return ((string)(this["BackupFolder"])); - } - set { - this["BackupFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Data Source=.\\SQLEXPRESS;Initial Catalog={DBName};Integrated Security=True")] - public string ConnectionString { - get { - return ((string)(this["ConnectionString"])); - } - set { - this["ConnectionString"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("VEPROMS")] - public string DBName { - get { - return ((string)(this["DBName"])); - } - set { - this["DBName"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string DBPath { - get { - return ((string)(this["DBPath"])); - } - set { - this["DBPath"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string PDFFolder { - get { - return ((string)(this["PDFFolder"])); - } - set { - this["PDFFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Unchecked")] - public global::System.Windows.Forms.CheckState CheckRTF { - get { - return ((global::System.Windows.Forms.CheckState)(this["CheckRTF"])); - } - set { - this["CheckRTF"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public int Skip { - get { - return ((int)(this["Skip"])); - } - set { - this["Skip"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("1")] - public int ConvertTo { - get { - return ((int)(this["ConvertTo"])); - } - set { - this["ConvertTo"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Checked")] - public global::System.Windows.Forms.CheckState RedPDFs { - get { - return ((global::System.Windows.Forms.CheckState)(this["RedPDFs"])); - } - set { - this["RedPDFs"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Checked")] - public global::System.Windows.Forms.CheckState OnlyThisSet { - get { - return ((global::System.Windows.Forms.CheckState)(this["OnlyThisSet"])); - } - set { - this["OnlyThisSet"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public int ExecutionMode { - get { - return ((int)(this["ExecutionMode"])); - } - set { - this["ExecutionMode"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Phase1")] - public string Phase1 { - get { - return ((string)(this["Phase1"])); - } - set { - this["Phase1"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Phase2")] - public string Phase2 { - get { - return ((string)(this["Phase2"])); - } - set { - this["Phase2"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Phase3")] - public string Phase3 { - get { - return ((string)(this["Phase3"])); - } - set { - this["Phase3"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("c:\\development\\fmtall")] - public string FormatFolder { - get { - return ((string)(this["FormatFolder"])); - } - set { - this["FormatFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("c:\\development\\genmacall")] - public string GenMacFolder { - get { - return ((string)(this["GenMacFolder"])); - } - set { - this["GenMacFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool LoadApproved { - get { - return ((bool)(this["LoadApproved"])); - } - set { - this["LoadApproved"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Phase4")] - public string Phase4 { - get { - return ((string)(this["Phase4"])); - } - set { - this["Phase4"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string ProcessOnlyInLocation { - get { - return ((string)(this["ProcessOnlyInLocation"])); - } - set { - this["ProcessOnlyInLocation"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public int WhatROsToConvert { - get { - return ((int)(this["WhatROsToConvert"])); - } - set { - this["WhatROsToConvert"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("-1")] - public int SelectedROFst { - get { - return ((int)(this["SelectedROFst"])); - } - set { - this["SelectedROFst"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool AnnotateWhenConvertingToText { - get { - return ((bool)(this["AnnotateWhenConvertingToText"])); - } - set { - this["AnnotateWhenConvertingToText"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool AnnotateWhenShowingMissingRO { - get { - return ((bool)(this["AnnotateWhenShowingMissingRO"])); - } - set { - this["AnnotateWhenShowingMissingRO"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool AnnotateWhenShowingDifferentRO { - get { - return ((bool)(this["AnnotateWhenShowingDifferentRO"])); - } - set { - this["AnnotateWhenShowingDifferentRO"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public int HowMany { - get { - return ((int)(this["HowMany"])); - } - set { - this["HowMany"] = value; - } - } - } -} diff --git a/PROMS/DataLoader/Properties/Settings.Designer.cs.org b/PROMS/DataLoader/Properties/Settings.Designer.cs.org deleted file mode 100644 index 564d3ec5..00000000 --- a/PROMS/DataLoader/Properties/Settings.Designer.cs.org +++ /dev/null @@ -1,314 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:2.0.50727.4216 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace DataLoader.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.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; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string VeSamFilename { - get { - return ((string)(this["VeSamFilename"])); - } - set { - this["VeSamFilename"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string DbfPathname { - get { - return ((string)(this["DbfPathname"])); - } - set { - this["DbfPathname"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Checked")] - public global::System.Windows.Forms.CheckState LoadWordDoc { - get { - return ((global::System.Windows.Forms.CheckState)(this["LoadWordDoc"])); - } - set { - this["LoadWordDoc"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Unchecked")] - public global::System.Windows.Forms.CheckState LoadRTFDoc { - get { - return ((global::System.Windows.Forms.CheckState)(this["LoadRTFDoc"])); - } - set { - this["LoadRTFDoc"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Checked")] - public global::System.Windows.Forms.CheckState PurgeData { - get { - return ((global::System.Windows.Forms.CheckState)(this["PurgeData"])); - } - set { - this["PurgeData"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string VePromsFilename { - get { - return ((string)(this["VePromsFilename"])); - } - set { - this["VePromsFilename"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string LogFileLoc { - get { - return ((string)(this["LogFileLoc"])); - } - set { - this["LogFileLoc"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string BackupFileName { - get { - return ((string)(this["BackupFileName"])); - } - set { - this["BackupFileName"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string BackupFolder { - get { - return ((string)(this["BackupFolder"])); - } - set { - this["BackupFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Data Source=.\\SQLEXPRESS;Initial Catalog={DBName};Integrated Security=True")] - public string ConnectionString { - get { - return ((string)(this["ConnectionString"])); - } - set { - this["ConnectionString"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("VEPROMS")] - public string DBName { - get { - return ((string)(this["DBName"])); - } - set { - this["DBName"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string DBPath { - get { - return ((string)(this["DBPath"])); - } - set { - this["DBPath"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string PDFFolder { - get { - return ((string)(this["PDFFolder"])); - } - set { - this["PDFFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Unchecked")] - public global::System.Windows.Forms.CheckState CheckRTF { - get { - return ((global::System.Windows.Forms.CheckState)(this["CheckRTF"])); - } - set { - this["CheckRTF"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public int Skip { - get { - return ((int)(this["Skip"])); - } - set { - this["Skip"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("1")] - public int ConvertTo { - get { - return ((int)(this["ConvertTo"])); - } - set { - this["ConvertTo"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Checked")] - public global::System.Windows.Forms.CheckState RedPDFs { - get { - return ((global::System.Windows.Forms.CheckState)(this["RedPDFs"])); - } - set { - this["RedPDFs"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Checked")] - public global::System.Windows.Forms.CheckState OnlyThisSet { - get { - return ((global::System.Windows.Forms.CheckState)(this["OnlyThisSet"])); - } - set { - this["OnlyThisSet"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("0")] - public int ExecutionMode { - get { - return ((int)(this["ExecutionMode"])); - } - set { - this["ExecutionMode"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Phase1")] - public string Phase1 { - get { - return ((string)(this["Phase1"])); - } - set { - this["Phase1"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Phase2")] - public string Phase2 { - get { - return ((string)(this["Phase2"])); - } - set { - this["Phase2"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Phase3")] - public string Phase3 { - get { - return ((string)(this["Phase3"])); - } - set { - this["Phase3"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("c:\\development\\fmtall")] - public string FormatFolder { - get { - return ((string)(this["FormatFolder"])); - } - set { - this["FormatFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("c:\\development\\genmacall")] - public string GenMacFolder { - get { - return ((string)(this["GenMacFolder"])); - } - set { - this["GenMacFolder"] = value; - } - } - } -} diff --git a/PROMS/DataLoader/Properties/Settings.settings b/PROMS/DataLoader/Properties/Settings.settings deleted file mode 100644 index 24ea2b23..00000000 --- a/PROMS/DataLoader/Properties/Settings.settings +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - Checked - - - Unchecked - - - Checked - - - - - - - - - - - - - - - Data Source=.\SQLEXPRESS;Initial Catalog={DBName};Integrated Security=True - - - VEPROMS - - - - - - - - - Unchecked - - - 0 - - - 1 - - - Checked - - - Checked - - - 0 - - - Phase1 - - - Phase2 - - - Phase3 - - - c:\development\fmtall - - - c:\development\genmacall - - - False - - - Phase4 - - - - - - 0 - - - -1 - - - False - - - False - - - False - - - 0 - - - \ No newline at end of file diff --git a/PROMS/DataLoader/Properties/licenses.licx b/PROMS/DataLoader/Properties/licenses.licx deleted file mode 100644 index d4ec2296..00000000 --- a/PROMS/DataLoader/Properties/licenses.licx +++ /dev/null @@ -1 +0,0 @@ -C1.Win.C1FlexGrid.C1FlexGrid, C1.Win.C1FlexGrid.2, Version=2.6.20101.528, Culture=neutral, PublicKeyToken=79882d576c6336da diff --git a/PROMS/DataLoader/ROFixer.cs b/PROMS/DataLoader/ROFixer.cs deleted file mode 100644 index be437fcf..00000000 --- a/PROMS/DataLoader/ROFixer.cs +++ /dev/null @@ -1,290 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using VEPROMS.CSLA.Library; -using System.Windows.Forms; - -namespace DataLoader -{ - public delegate void ROFixerEvent(object sender, ROFixerEventArgs args); - public class ROFixerEventArgs - { - private string _MyStatus; - - public string MyStatus - { - get { return _MyStatus; } - set { _MyStatus = value; } - } - public ROFixerEventArgs(string myStatus) - { - _MyStatus = myStatus; - } - } - class ROFixer - { - public static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public event ROFixerEvent StatusChanged; - private void OnStatusChanged(object sender, ROFixerEventArgs args) - { - if (StatusChanged != null) - StatusChanged(sender, args); - } - private string _Status; - - public string Status - { - get { return _Status; } - set - { - _Status = value; - OnStatusChanged(this, new ROFixerEventArgs(_Status)); - } - } - private int _ErrorCount = 0; - - public int ErrorCount - { - get { return _ErrorCount; } - set { _ErrorCount = value; } - } - private string _LogPath; - private frmLoader frmMain; - public ROFixer(string logpath, frmLoader myfrmMain) - { - _LogPath = logpath; - frmMain = myfrmMain; - } - public TimeSpan Process() - { - DateTime tstart = DateTime.Now; - ProcessROs(); - return DateTime.Now - tstart; - } - public TimeSpan Process(DocVersionInfo dvi) - { - DateTime tstart = DateTime.Now; - ProcessROs(dvi); - return DateTime.Now - tstart; - } - public TimeSpan Process(ProcedureInfo pi) - { - DateTime tstart = DateTime.Now; - ProcessROs(pi); - return DateTime.Now - tstart; - } - private void ProcessROs() - { - Status = "Getting List..."; - RoUsageInfoList myRoUsages = RoUsageInfoList.Get(); - DoProcessROs(myRoUsages); - } - //private void ProcessROs(FolderInfo fi) - //{ - // Status = "Getting List..."; - // RoUsageInfoList myRoUsages = RoUsageInfoList.GetByFolder(fi); - // DoProcessROs(myRoUsages); - //} - private void ProcessROs(DocVersionInfo dvi) - { - Status = "Getting List..."; - RoUsageInfoList myRoUsages = RoUsageInfoList.GetByDocVersion(dvi); - DoProcessROs(myRoUsages); - } - private void ProcessROs(ProcedureInfo pi) - { - Status = "Getting List..."; - RoUsageInfoList myRoUsages = RoUsageInfoList.GetByProcedure(pi); - DoProcessROs(myRoUsages); - } - private AnnotationType _VolianCommentType = null; // Using this to flag ro value issues with byron to braidwood - public AnnotationType VolianCommentType - { - get - { - if (_VolianCommentType == null) - _VolianCommentType = AnnotationType.GetByName("Volian Comment"); - if (_VolianCommentType == null) - _VolianCommentType = AnnotationType.MakeAnnotationType("Volian Comment",null); - return _VolianCommentType; - } - } - private void DoProcessROs(RoUsageInfoList myRoUsages) - { - int changeCount = 0; - // get list of content records - List myContentList = new List(); - Dictionary roFstLookups = new Dictionary(); - Dictionary oldRoFstLookups = null; - ROFstInfo oldRoFst = null; - if (frmMain.MySettings.SelectedROFst > 0) - { - oldRoFst = ROFstInfo.Get(frmMain.MySettings.SelectedROFst); - oldRoFstLookups = new Dictionary(); - } - foreach (RoUsageInfo rou in myRoUsages) - { - if (!myContentList.Contains(rou.ContentID)) - { - myContentList.Add(rou.ContentID); - } - } - int i = 0; - foreach (int cid in myContentList) - { - Status = string.Format("Processing {0} of {1} steps", ++i, myContentList.Count); - ContentInfo myContentInfo = ContentInfo.Get(cid); - DocVersionInfo dvi = myContentInfo.ContentItems[0].MyProcedure.MyDocVersion; - int versionId = dvi.VersionID; - ROFstInfo myRoFst = dvi.DocVersionAssociations[0].MyROFst; - if (!roFstLookups.ContainsKey(versionId)) - { - roFstLookups.Add(versionId, myRoFst.GetROFSTLookup(dvi)); - } - ROFSTLookup myLookup = roFstLookups[versionId]; - if (oldRoFstLookups != null && !oldRoFstLookups.ContainsKey(versionId)) - { - oldRoFstLookups.Add(versionId, oldRoFst.GetROFSTLookup(dvi)); - } - ROFSTLookup oldLookup = null; - if(oldRoFstLookups != null) - oldLookup = oldRoFstLookups[versionId]; - using (Content ctmp = myContentInfo.Get()) - { - ItemInfo ii = myContentInfo.ContentItems[0]; - foreach (RoUsageInfo ru in myContentInfo.ContentRoUsages) - { - string sameMsg = string.Empty; - bool theSame = false; - if (oldLookup != null) - theSame = CheckIfTheSame(ii, ru.ROID, myLookup, oldLookup, dvi, ref sameMsg); - ROFSTLookup.rochild rocc = myLookup.GetRoChild12(ru.ROID); - if (rocc.value == null) - rocc = myLookup.GetRoChild(ru.ROID); - int myType = rocc.type; - string myValue = myLookup.GetTranslatedRoValue(ru.ROID, ii.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); - myValue = myValue.Replace(@"\up2 \u8209?", @"\up2\u8209?");// Remove space between superscript command and non-breaking hyphen - string fileNameOnly = null; - if (myType == 8 && myValue.Contains("\n")) - { - fileNameOnly = myValue.Split("\n".ToCharArray())[0]; - myValue = myValue.Replace("\n", "");// Remove newlines in Figure data - } - string textB4 = ctmp.Text; - myRoFst.ROTableUpdate += new ROFstInfoROTableUpdateEvent(myRoFst_ROTableUpdate); - string oldval; - switch (frmMain.MySettings.WhatROsToConvert) - { - case ROUpdateMode.None: - oldval = ctmp.FixContentText(ru, myValue, myType, myRoFst, fileNameOnly,""); - if(myValue == "?" && frmMain.MySettings.AnnotateWhenShowingMissingRO) - Annotation.MakeAnnotation(ctmp.ContentItems[0].MyItem, VolianCommentType, "", string.Format("RO value ({0}) missing", ItemInfo.ConvertToDisplayText(oldval)), null); - else if (ctmp.Text != textB4 && frmMain.MySettings.AnnotateWhenShowingDifferentRO) - Annotation.MakeAnnotation(ctmp.ContentItems[0].MyItem, VolianCommentType, "", string.Format("Old RO value ({0}) different than new RO value({1})", ItemInfo.ConvertToDisplayText(oldval), ItemInfo.ConvertToDisplayText(myValue)), null); - break; - case ROUpdateMode.All: - oldval = ctmp.ConvertROToText(ru, myValue, myType, myRoFst); - if (frmMain.MySettings.AnnotateWhenConvertingToText) - Annotation.MakeAnnotation(ctmp.ContentItems[0].MyItem, VolianCommentType, "", string.Format("RO value ({0}) converted to text", ItemInfo.ConvertToDisplayText(oldval)), null); - break; - default: - if (myValue == "?") - { - oldval = ctmp.ConvertROToText(ru, myValue, myType, myRoFst); - if (frmMain.MySettings.AnnotateWhenConvertingToText) - Annotation.MakeAnnotation(ctmp.ContentItems[0].MyItem, VolianCommentType, "", string.Format("RO value ({0}) converted to text" + sameMsg, ItemInfo.ConvertToDisplayText(oldval)), null); - } - else - { - oldval = ctmp.FixContentText(ru, myValue, myType, myRoFst, fileNameOnly,""); - if (ctmp.Text != textB4 && frmMain.MySettings.AnnotateWhenShowingDifferentRO) - Annotation.MakeAnnotation(ctmp.ContentItems[0].MyItem, VolianCommentType, "", string.Format("Old RO value ({0}) different than new RO value({1})" + sameMsg, ItemInfo.ConvertToDisplayText(oldval), ItemInfo.ConvertToDisplayText(myValue)), null); - } - break; - } - myRoFst.ROTableUpdate -= new ROFstInfoROTableUpdateEvent(myRoFst_ROTableUpdate); - if (ctmp.Text != textB4) - { - changeCount++; - //Console.WriteLine("'{0}', '{1}', '{2}', '{3}'", replace(oldval, @"\u8209?", "-"), replace(myValue, @"\u8209?", "-"), ru.ROID, rocc.appid); - frmMain.AddInfo("'{0}','{1}','{2}','{3}','R{4}','{5}','{6}'", ii.MyDocVersion.MyFolder.Name, ii.ShortPath, - (oldval ?? "").Replace(@"\u8209?", "-").Replace("'", "''"), myValue.Replace(@"\u8209?", "-").Replace("'", "''"), ru.ROID, myLookup.GetAccPageID(ru.ROID), sameMsg); - } - else if (sameMsg != string.Empty && sameMsg != ", Exact Match") - { - frmMain.AddInfo("'{0}','{1}','{2}','{3}','R{4}','{5}','{6}'", ii.MyDocVersion.MyFolder.Name, ii.ShortPath, - (oldval ?? "").Replace(@"\u8209?", "-").Replace("'", "''"), myValue.Replace(@"\u8209?", "-").Replace("'", "''"), ru.ROID, myLookup.GetAccPageID(ru.ROID), sameMsg); - } - } - if (ctmp.IsDirty) - { - //ctmp.DTS = DateTime.Now; - ctmp.Save(); - ContentInfo.Refresh(ctmp); - } - } - } - frmMain.AddInfo("{0} RO Values Updated", changeCount); - MessageBox.Show(String.Format("{0} RO Values Updated", changeCount), "RO Value Update Complete", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - - private bool CheckIfTheSame(ItemInfo ii, string roid, ROFSTLookup myLookup, ROFSTLookup oldLookup, DocVersionInfo dvi, ref string sameMsg) - { - /* - ROFSTLookup.rochild rocc = myLookup.GetRoChild12(ru.ROID); - if (rocc.value == null) - rocc = myLookup.GetRoChild(ru.ROID); - int myType = rocc.type; - */ - ROFSTLookup.rochild roc = myLookup.GetRoChild12(roid); - if (roc.value == null) roc = myLookup.GetRoChild(roid); - ROFSTLookup.rochild oroc = oldLookup.GetRoChild12(roid); - if (oroc.value == null) oroc = oldLookup.GetRoChild(roid); - string myValue = myLookup.GetTranslatedRoValue(roid, ii.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); - myValue = myValue.Replace(@"\up2 \u8209?", @"\up2\u8209?");// Remove space between superscript command and non-breaking hyphen - string oldValue = oldLookup.GetTranslatedRoValue(roid, ii.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); - oldValue = oldValue.Replace(@"\up2 \u8209?", @"\up2\u8209?");// Remove space between superscript command and non-breaking hyphen - string myAccPageID = myLookup.GetAccPageID(roid); - string oldAccPageID = oldLookup.GetAccPageID(roid); - if (myValue == oldValue && roc.type == oroc.type && ((myAccPageID ?? "null") == (oldAccPageID ?? "null"))) - { - sameMsg = ", Exact Match"; - return true; - } - if (myValue != oldValue && roc.type == oroc.type && ((myAccPageID ?? "null") == (oldAccPageID ?? "null"))) - { - sameMsg = ", Different Value, Same RO"; - return false; - } - if ((myAccPageID ?? "null") != (oldAccPageID ?? "null")) - { - ROFSTLookup.rochild? myroc = myLookup.GetROChildByAccPageID(oldAccPageID, dvi.DocVersionConfig.RODefaults_setpointprefix, dvi.DocVersionConfig.RODefaults_graphicsprefix); - if (myroc != null) - { - string myValueNew = myLookup.GetTranslatedRoValue(((ROFSTLookup.rochild)myroc).roid, ii.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); - if(myValueNew == oldValue) - sameMsg = ", Same Value, Different RO"; - else - sameMsg = ", Different Value, Different RO"; - } - else - sameMsg = ", Missing RO"; - return false; - } - sameMsg = ", Unknown"; - - //if (myLookup.GetAccPageID(roid) == oldLookup.GetAccPageID(roid)) - //{ - // sameMsg = string.Format("ROID: {0}, AccPageID: {1}, OldAccPageID: {2}", roid, myLookup.GetAccPageID(roid), oldLookup.GetAccPageID(roid)); - // return false; - //} - //sameMsg = "Values and AccPageIDs are different for ROID: " + roid; - return false; - } - - private List myRoFst_ROTableUpdate(object sender, ROFstInfoROTableUpdateEventArgs args) - { - return Volian.Controls.Library.VlnFlexGrid.ROTableUpdate(sender,args); - } - } -} diff --git a/PROMS/DataLoader/ROFixer.cs.bak b/PROMS/DataLoader/ROFixer.cs.bak deleted file mode 100644 index f5622e33..00000000 --- a/PROMS/DataLoader/ROFixer.cs.bak +++ /dev/null @@ -1,290 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using VEPROMS.CSLA.Library; -using System.Windows.Forms; - -namespace DataLoader -{ - public delegate void ROFixerEvent(object sender, ROFixerEventArgs args); - public class ROFixerEventArgs - { - private string _MyStatus; - - public string MyStatus - { - get { return _MyStatus; } - set { _MyStatus = value; } - } - public ROFixerEventArgs(string myStatus) - { - _MyStatus = myStatus; - } - } - class ROFixer - { - public static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public event ROFixerEvent StatusChanged; - private void OnStatusChanged(object sender, ROFixerEventArgs args) - { - if (StatusChanged != null) - StatusChanged(sender, args); - } - private string _Status; - - public string Status - { - get { return _Status; } - set - { - _Status = value; - OnStatusChanged(this, new ROFixerEventArgs(_Status)); - } - } - private int _ErrorCount = 0; - - public int ErrorCount - { - get { return _ErrorCount; } - set { _ErrorCount = value; } - } - private string _LogPath; - private frmLoader frmMain; - public ROFixer(string logpath, frmLoader myfrmMain) - { - _LogPath = logpath; - frmMain = myfrmMain; - } - public TimeSpan Process() - { - DateTime tstart = DateTime.Now; - ProcessROs(); - return DateTime.Now - tstart; - } - public TimeSpan Process(DocVersionInfo dvi) - { - DateTime tstart = DateTime.Now; - ProcessROs(dvi); - return DateTime.Now - tstart; - } - public TimeSpan Process(ProcedureInfo pi) - { - DateTime tstart = DateTime.Now; - ProcessROs(pi); - return DateTime.Now - tstart; - } - private void ProcessROs() - { - Status = "Getting List..."; - RoUsageInfoList myRoUsages = RoUsageInfoList.Get(); - DoProcessROs(myRoUsages); - } - //private void ProcessROs(FolderInfo fi) - //{ - // Status = "Getting List..."; - // RoUsageInfoList myRoUsages = RoUsageInfoList.GetByFolder(fi); - // DoProcessROs(myRoUsages); - //} - private void ProcessROs(DocVersionInfo dvi) - { - Status = "Getting List..."; - RoUsageInfoList myRoUsages = RoUsageInfoList.GetByDocVersion(dvi); - DoProcessROs(myRoUsages); - } - private void ProcessROs(ProcedureInfo pi) - { - Status = "Getting List..."; - RoUsageInfoList myRoUsages = RoUsageInfoList.GetByProcedure(pi); - DoProcessROs(myRoUsages); - } - private AnnotationType _VolianCommentType = null; // Using this to flag ro value issues with byron to braidwood - public AnnotationType VolianCommentType - { - get - { - if (_VolianCommentType == null) - _VolianCommentType = AnnotationType.GetByName("Volian Comment"); - if (_VolianCommentType == null) - _VolianCommentType = AnnotationType.MakeAnnotationType("Volian Comment",null); - return _VolianCommentType; - } - } - private void DoProcessROs(RoUsageInfoList myRoUsages) - { - int changeCount = 0; - // get list of content records - List myContentList = new List(); - Dictionary roFstLookups = new Dictionary(); - Dictionary oldRoFstLookups = null; - ROFstInfo oldRoFst = null; - if (frmMain.MySettings.SelectedROFst > 0) - { - oldRoFst = ROFstInfo.Get(frmMain.MySettings.SelectedROFst); - oldRoFstLookups = new Dictionary(); - } - foreach (RoUsageInfo rou in myRoUsages) - { - if (!myContentList.Contains(rou.ContentID)) - { - myContentList.Add(rou.ContentID); - } - } - int i = 0; - foreach (int cid in myContentList) - { - Status = string.Format("Processing {0} of {1} steps", ++i, myContentList.Count); - ContentInfo myContentInfo = ContentInfo.Get(cid); - DocVersionInfo dvi = myContentInfo.ContentItems[0].MyProcedure.MyDocVersion; - int versionId = dvi.VersionID; - ROFstInfo myRoFst = dvi.DocVersionAssociations[0].MyROFst; - if (!roFstLookups.ContainsKey(versionId)) - { - roFstLookups.Add(versionId, myRoFst.GetROFSTLookup(dvi)); - } - ROFSTLookup myLookup = roFstLookups[versionId]; - if (oldRoFstLookups != null && !oldRoFstLookups.ContainsKey(versionId)) - { - oldRoFstLookups.Add(versionId, oldRoFst.GetROFSTLookup(dvi)); - } - ROFSTLookup oldLookup = null; - if(oldRoFstLookups != null) - oldLookup = oldRoFstLookups[versionId]; - using (Content ctmp = myContentInfo.Get()) - { - ItemInfo ii = myContentInfo.ContentItems[0]; - foreach (RoUsageInfo ru in myContentInfo.ContentRoUsages) - { - string sameMsg = string.Empty; - bool theSame = false; - //if (oldLookup != null) - // theSame = CheckIfTheSame(ii, ru.ROID, myLookup, oldLookup, dvi, ref sameMsg); - ROFSTLookup.rochild rocc = myLookup.GetRoChild12(ru.ROID); - if (rocc.value == null) - rocc = myLookup.GetRoChild(ru.ROID); - int myType = rocc.type; - string myValue = myLookup.GetTranslatedRoValue(ru.ROID, ii.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); - myValue = myValue.Replace(@"\up2 \u8209?", @"\up2\u8209?");// Remove space between superscript command and non-breaking hyphen - string fileNameOnly = null; - if (myType == 8 && myValue.Contains("\n")) - { - fileNameOnly = myValue.Split("\n".ToCharArray())[0]; - myValue = myValue.Replace("\n", "");// Remove newlines in Figure data - } - string textB4 = ctmp.Text; - myRoFst.ROTableUpdate += new ROFstInfoROTableUpdateEvent(myRoFst_ROTableUpdate); - string oldval; - switch (frmMain.MySettings.WhatROsToConvert) - { - case ROUpdateMode.None: - oldval = ctmp.FixContentText(ru, myValue, myType, myRoFst, fileNameOnly); - if(myValue == "?" && frmMain.MySettings.AnnotateWhenShowingMissingRO) - Annotation.MakeAnnotation(ctmp.ContentItems[0].MyItem, VolianCommentType, "", string.Format("RO value ({0}) missing", ItemInfo.ConvertToDisplayText(oldval)), null); - else if (ctmp.Text != textB4 && frmMain.MySettings.AnnotateWhenShowingDifferentRO) - Annotation.MakeAnnotation(ctmp.ContentItems[0].MyItem, VolianCommentType, "", string.Format("Old RO value ({0}) different than new RO value({1})", ItemInfo.ConvertToDisplayText(oldval), ItemInfo.ConvertToDisplayText(myValue)), null); - break; - case ROUpdateMode.All: - oldval = ctmp.ConvertROToText(ru, myValue, myType, myRoFst); - if (frmMain.MySettings.AnnotateWhenConvertingToText) - Annotation.MakeAnnotation(ctmp.ContentItems[0].MyItem, VolianCommentType, "", string.Format("RO value ({0}) converted to text", ItemInfo.ConvertToDisplayText(oldval)), null); - break; - default: - if (myValue == "?") - { - oldval = ctmp.ConvertROToText(ru, myValue, myType, myRoFst); - if (frmMain.MySettings.AnnotateWhenConvertingToText) - Annotation.MakeAnnotation(ctmp.ContentItems[0].MyItem, VolianCommentType, "", string.Format("RO value ({0}) converted to text" + sameMsg, ItemInfo.ConvertToDisplayText(oldval)), null); - } - else - { - oldval = ctmp.FixContentText(ru, myValue, myType, myRoFst, fileNameOnly); - if (ctmp.Text != textB4 && frmMain.MySettings.AnnotateWhenShowingDifferentRO) - Annotation.MakeAnnotation(ctmp.ContentItems[0].MyItem, VolianCommentType, "", string.Format("Old RO value ({0}) different than new RO value({1})" + sameMsg, ItemInfo.ConvertToDisplayText(oldval), ItemInfo.ConvertToDisplayText(myValue)), null); - } - break; - } - myRoFst.ROTableUpdate -= new ROFstInfoROTableUpdateEvent(myRoFst_ROTableUpdate); - if (ctmp.Text != textB4) - { - changeCount++; - //Console.WriteLine("'{0}', '{1}', '{2}', '{3}'", replace(oldval, @"\u8209?", "-"), replace(myValue, @"\u8209?", "-"), ru.ROID, rocc.appid); - frmMain.AddInfo("'{0}','{1}','{2}','{3}','R{4}','{5}','{6}'", ii.MyDocVersion.MyFolder.Name, ii.ShortPath, - (oldval ?? "").Replace(@"\u8209?", "-").Replace("'", "''"), myValue.Replace(@"\u8209?", "-").Replace("'", "''"), ru.ROID, myLookup.GetAccPageID(ru.ROID), sameMsg); - } - else if (sameMsg != string.Empty && sameMsg != ", Exact Match") - { - frmMain.AddInfo("'{0}','{1}','{2}','{3}','R{4}','{5}','{6}'", ii.MyDocVersion.MyFolder.Name, ii.ShortPath, - (oldval ?? "").Replace(@"\u8209?", "-").Replace("'", "''"), myValue.Replace(@"\u8209?", "-").Replace("'", "''"), ru.ROID, myLookup.GetAccPageID(ru.ROID), sameMsg); - } - } - if (ctmp.IsDirty) - { - //ctmp.DTS = DateTime.Now; - ctmp.Save(); - ContentInfo.Refresh(ctmp); - } - } - } - frmMain.AddInfo("{0} RO Values Updated", changeCount); - MessageBox.Show(String.Format("{0} RO Values Updated", changeCount), "RO Value Update Complete", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - - private bool CheckIfTheSame(ItemInfo ii, string roid, ROFSTLookup myLookup, ROFSTLookup oldLookup, DocVersionInfo dvi, ref string sameMsg) - { - /* - ROFSTLookup.rochild rocc = myLookup.GetRoChild12(ru.ROID); - if (rocc.value == null) - rocc = myLookup.GetRoChild(ru.ROID); - int myType = rocc.type; - */ - ROFSTLookup.rochild roc = myLookup.GetRoChild12(roid); - if (roc.value == null) roc = myLookup.GetRoChild(roid); - ROFSTLookup.rochild oroc = oldLookup.GetRoChild12(roid); - if (oroc.value == null) oroc = oldLookup.GetRoChild(roid); - string myValue = myLookup.GetTranslatedRoValue(roid, ii.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); - myValue = myValue.Replace(@"\up2 \u8209?", @"\up2\u8209?");// Remove space between superscript command and non-breaking hyphen - string oldValue = oldLookup.GetTranslatedRoValue(roid, ii.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); - oldValue = oldValue.Replace(@"\up2 \u8209?", @"\up2\u8209?");// Remove space between superscript command and non-breaking hyphen - string myAccPageID = myLookup.GetAccPageID(roid); - string oldAccPageID = oldLookup.GetAccPageID(roid); - if (myValue == oldValue && roc.type == oroc.type && ((myAccPageID ?? "null") == (oldAccPageID ?? "null"))) - { - sameMsg = ", Exact Match"; - return true; - } - if (myValue != oldValue && roc.type == oroc.type && ((myAccPageID ?? "null") == (oldAccPageID ?? "null"))) - { - sameMsg = ", Different Value, Same RO"; - return false; - } - if ((myAccPageID ?? "null") != (oldAccPageID ?? "null")) - { - ROFSTLookup.rochild? myroc = myLookup.GetROChildByAccPageID(oldAccPageID, dvi.DocVersionConfig.RODefaults_setpointprefix), dvi.DocVersionConfig.RODefaults_graphicsprefix); - if (myroc != null) - { - string myValueNew = myLookup.GetTranslatedRoValue(((ROFSTLookup.rochild)myroc).roid, ii.ActiveFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta); - if(myValueNew == oldValue) - sameMsg = ", Same Value, Different RO"; - else - sameMsg = ", Different Value, Different RO"; - } - else - sameMsg = ", Missing RO"; - return false; - } - sameMsg = ", Unknown"; - - //if (myLookup.GetAccPageID(roid) == oldLookup.GetAccPageID(roid)) - //{ - // sameMsg = string.Format("ROID: {0}, AccPageID: {1}, OldAccPageID: {2}", roid, myLookup.GetAccPageID(roid), oldLookup.GetAccPageID(roid)); - // return false; - //} - //sameMsg = "Values and AccPageIDs are different for ROID: " + roid; - return false; - } - - private List myRoFst_ROTableUpdate(object sender, ROFstInfoROTableUpdateEventArgs args) - { - return Volian.Controls.Library.VlnFlexGrid.ROTableUpdate(sender,args); - } - } -} diff --git a/PROMS/DataLoader/RefObjs.cs b/PROMS/DataLoader/RefObjs.cs deleted file mode 100644 index aa7845d2..00000000 --- a/PROMS/DataLoader/RefObjs.cs +++ /dev/null @@ -1,140 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - public partial class Loader - { - private List InvalidROs = new List(); - private string MigrateRos(OleDbConnection cn, string textm, string seqcvt, Content content, DocVersion docver, bool conv_caret,ref int rotype) - { - StringBuilder rotxt = new StringBuilder(); - int instance = 0; - int beg = 0; - DataTable dt = null; - DataSet ds = null; - OleDbDataAdapter da = null; - - string cmd = "SELECT * FROM USAGERO WHERE [NUMBER]='" + ProcNumber.Replace("'", "''") + "' AND [SEQUENCE] ='" + seqcvt + "' ORDER BY [INSTANCE]"; - da = new OleDbDataAdapter(cmd, cn); - // get usage records for the ROID. - ds = new DataSet(); - try - { - da.Fill(ds); - dt = ds.Tables[0]; - dt.CaseSensitive = true; - } - catch (Exception ex) - { - frmMain.AddError(ex, "migrateRos"); - log.Error("Error getting RO Usages"); - log.ErrorFormat("proc number = {0}, oldstepsequence = {1}",ProcNumber, seqcvt); - do - { - log.ErrorFormat("{0} - {1}", ex.GetType().Name, ex.Message); - ex = ex.InnerException; - } while (ex != null); - ds.Dispose(); - da.Dispose(); - return textm; - } - char[] chrrotrn = { '\x15', '\x3a6' }; - int tok = textm.IndexOfAny(chrrotrn); - while (tok > -1) - { - // found a token, add the roid & value into the string and - // add an ro usage for it. - rotxt.Append(textm.Substring(beg, tok - beg)); - if (instance < dt.Rows.Count) - { - DataRow dr = dt.Rows[instance]; - string ROID = dr["ROID"].ToString(); - RoUsage ro = RoUsage.MakeRoUsage(content, ROID, null, DateTime.Now, "Migration", rodb); - try - { - ROFSTLookup mylookup = rofstinfo.GetROFSTLookup(DocVersionInfo.Get(docver.VersionID)); - ROFSTLookup.rochild myro = mylookup.GetRoChild12(ROID.ToUpper()); - rotype = Math.Max(rotype, myro.type); - string roval = mylookup.GetTranslatedRoValue(ROID.ToUpper(), conv_caret); - if (textm[tok] == '\x3a6' && roval.IndexOf('\n')>-1) // figure - just get image name - { - roval = roval.Substring(0, roval.IndexOf('\n')); - } - roval = roval.Replace("{", @"\{"); - roval = roval.Replace("}", @"\}"); - // add an annotation stating "Invalid Unit RO 'ROID'. Need an Item for this, so just add - // it to a list of 'invalid ros' so that calling method can add annotations to the Item. - if (roval == "?") - { - if (ROID.StartsWith("FFFF")) - InvalidROs.Add(string.Format("Invalid Unit RO '{0}'", ROID.Substring(0, 12))); - else - InvalidROs.Add(string.Format("Invalid RO '{0}'", ROID.Substring(0, 12))); - } - //if (roval.Contains("\r") || roval.Contains("\n")) - // Console.WriteLine("RO has new Lines"); - //string results = string.Format(@"\v \v0 ", - // rofstinfo.ROFSTLookup.GetRoValue(ROID.Substring(0, 12).ToUpper()), ro.ROUsageID, ROID, rodb.RODbID); - // RHM 20100308 - string results = string.Format(@"\v \v0 ", - // RHM 20100308 - roval.Replace("\r\n","\\par\r\n"), ro.ROUsageID, ROID, rodb.RODbID); - string results = string.Format(@"\v \v0 ", - roval, ro.ROUsageID, ROID, rodb.RODbID); - rotxt.Append(results); - } - catch (Exception ex) - { - - frmMain.AddError(ex, "MigrateRos '{0}' '{1}' {2}", ProcNumber, seqcvt, instance); - log.Error("Error setting RO data in text field"); - log.ErrorFormat("Error Message = {0}", ex.Message); - log.ErrorFormat("proc number = {0}, oldstepsequence = {1}, instance = {2}", ProcNumber, seqcvt, instance); - } - instance++; - } - else - { - rotxt.Append("?"); - InvalidROs.Add("The ? in the step text represents an RO that was not connected to the ro database."); - log.Error("Error setting RO data in text field"); - log.ErrorFormat("proc number = {0}, oldstepsequence = {1}, instance = {2}", ProcNumber, seqcvt, instance); - } - beg = tok + 1; - if (beg > textm.Length) - { - tok = -1; - da.Dispose(); - } - else - tok = textm.IndexOf('\x15', beg); // there would only be one figure - only check for ro after 1st time - } - if (beg <= textm.Length - 1) - rotxt.Append(textm.Substring(beg, textm.Length - beg)); - - ds.Dispose(); - da.Dispose(); - return rotxt.ToString(); - } - } - -} \ No newline at end of file diff --git a/PROMS/DataLoader/RichTextBox41.Designer.cs b/PROMS/DataLoader/RichTextBox41.Designer.cs deleted file mode 100644 index 644e8174..00000000 --- a/PROMS/DataLoader/RichTextBox41.Designer.cs +++ /dev/null @@ -1,36 +0,0 @@ -namespace DataLoader -{ - partial class RichTextBox41 - { - /// - /// 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 Component Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - components = new System.ComponentModel.Container(); - } - - #endregion - } -} diff --git a/PROMS/DataLoader/RichTextBox41.cs b/PROMS/DataLoader/RichTextBox41.cs deleted file mode 100644 index 1f89b715..00000000 --- a/PROMS/DataLoader/RichTextBox41.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.ComponentModel; -using System.Collections.Generic; -using System.Diagnostics; -using System.Text; -using System.Windows.Forms; -using System.Runtime.InteropServices; - -namespace DataLoader -{ - public partial class RichTextBox41 : RichTextBox - { - [DllImport("kernel32.dll", CharSet = CharSet.Auto)] - static extern IntPtr LoadLibrary(string lpFileName); - protected override CreateParams CreateParams - { - get - { - CreateParams prams = base.CreateParams; - if (LoadLibrary("msftedit.dll") != IntPtr.Zero) - { - //prams.ExStyle |= 0x020; // transparent - prams.ClassName = "RICHEDIT50W"; - } - return prams; - } - } - public RichTextBox41() - { - InitializeComponent(); - } - public RichTextBox41(IContainer container) - { - container.Add(this); - - InitializeComponent(); - } - } -} diff --git a/PROMS/DataLoader/RoFst.cs b/PROMS/DataLoader/RoFst.cs deleted file mode 100644 index c78c99b7..00000000 --- a/PROMS/DataLoader/RoFst.cs +++ /dev/null @@ -1,235 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; -using System.Xml; -using System.Text.RegularExpressions; -using VEPROMS.CSLA.Library; -using Config; - -namespace DataLoader -{ - public partial class Loader - { - public void MigrateROFST(string fstPath, DocVersion docver) - { - //if (!File.Exists(fstPath + @"\ro.fst")) - //{ - // log.ErrorFormat("RO FST Does not exist: {0}", fstPath); - // return; - //} - // get the proc.ini value for the ropath. If it doesn't exist, use "..\" - ConfigFile cfg = new ConfigFile(); - XmlDocument d = cfg.IniToXml(fstPath + @"\proc.ini"); - string roDbpath = null; - string sp_prefix = null; - string img_prefix = null; - if (d != null) - { - XmlElement xml = d.DocumentElement; - XmlNode rodef = xml.SelectSingleNode("//RODefaults"); - XmlElement ele = rodef as XmlElement; - //string tmp = null; - if (ele != null) - { - roDbpath = ele.GetAttribute("ROPATH"); - sp_prefix = ele.GetAttribute("Setpoint"); - img_prefix = ele.GetAttribute("Graphics"); - } - } - DirectoryInfo di2 = new DirectoryInfo(fstPath); - roDbpath = roDbpath ?? ""; - if (roDbpath == "") - roDbpath = @"..\ro"; - if (roDbpath.StartsWith(@"..\")) - { - while (roDbpath.StartsWith(@"..\")) - { - di2 = di2.Parent; - roDbpath = roDbpath.Substring(3); - } - DirectoryInfo[] dis = di2.GetDirectories(roDbpath); - if (dis.Length > 0) roDbpath = dis[0].FullName; - } - //if (roDbpath == null || roDbpath == "") - // roDbpath = fstPath.Substring(0, fstPath.LastIndexOf('\\')) + @"\ro"; - - // first see if this rodb has been migrated (another dataset may have migrated it) - DirectoryInfo di = new DirectoryInfo(roDbpath); - rodb = RODb.GetByFolderPath(di.FullName); - if (rodb == null) - { - - // There may be more than 1 'ro' as the 'ROName' field (ROName is derived from the ropath). - // Get new name be incrementing, if so. - string newname = NewROName(di.Name); - // If there is default graphic file extension data in the roapp.ini, use this as config - // data for the rodb, otherwise set it to 'cstring' for now. - cfg = new ConfigFile(); - d = cfg.LoadRoAppIni(roDbpath); - rodb = RODb.MakeRODb(di.Name, di.FullName, "cstring", d==null?null:d.InnerXml); - } - - // now see if the same ro.fst has been migrated. To determine this check if a record - // exists for the rodb and with the same dts as the file. - FileInfo fi = new FileInfo(fstPath + @"\ro.fst"); - if (!fi.Exists) - fi = new FileInfo(roDbpath + @"\ro.fst"); - - ROFst rofst = ROFst.GetByRODbID_DTS(rodb.RODbID, fi.LastWriteTimeUtc); - if (rofst == null) // if not already in our database, then add it. - { - // Next read in the rofst & make the rofst record. - FileStream fsIn = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read, FileShare.Read); - // Create an instance of StreamReader that can read characters from the FileStream. - BinaryReader r = new BinaryReader(fsIn); - byte[] ab = r.ReadBytes((int)fsIn.Length); - //r.Close(); - fsIn.Close(); - // get the date time stamp, need to create the record with the file's dts. - rofst = ROFst.MakeROFst(rodb, ab, null, fi.LastWriteTimeUtc, "Migration"); - } - // Next hook the rofst to the docversion using the associations table. - bool appending = false; - if (docver.DocVersionAssociationCount == 0) - { - DocVersionAssociation dva = docver.DocVersionAssociations.Add(rofst); - AssociationConfig assoc_cfg = new AssociationConfig(); - assoc_cfg.RODefaults_graphicsprefix = img_prefix; - assoc_cfg.RODefaults_setpointprefix = sp_prefix; - dva.Config = assoc_cfg.ToString(); - docver.Save(); - rofst.Dispose(); - } - else - appending = true; - rofstinfo = ROFstInfo.Get(rofst.ROFstID); // refresh the info record! - - // Now load any images in... type 8: // Intergrated Graphics RO type - ROFSTLookup mylookup = rofstinfo.GetROFSTLookup(DocVersionInfo.Get(docver.VersionID)); - if (!appending && mylookup != null) - { - for (int i = 0; i < mylookup.myHdr.myDbs.Length; i++) - { - // walk through the rofst 'database' searching for - // all nodes that are integrated graphics, i.e. type 8. - if (mylookup.myHdr.myDbs[i].children != null) - MigrateRoFstGraphics(roDbpath, mylookup.myHdr.myDbs[i].children, rodb); - } - } - ROImageInfo.FlagImagesZipped(); - } - - private string NewROName(string roName) - { - string retval = roName; - int iSuffix = -1; - RODbInfoList rodblist = RODbInfoList.Get(); - - foreach (RODbInfo rdi in rodblist) - { - if (rdi.ROName.StartsWith(roName)) - { - if (rdi.ROName == roName) - iSuffix = 0; - else if (Regex.IsMatch(rdi.ROName, roName + "[_][0-9]+")) - { - int ii = int.Parse(rdi.ROName.Substring(1 + roName.Length)); - if (ii > iSuffix) iSuffix = ii; - } - } - } - if (iSuffix >= 0) - retval = string.Format("{0}_{1}", roName, iSuffix + 1); - return retval; - } - private void MigrateRoFstGraphics(string rodbpath, ROFSTLookup.rochild[] rochild, RODb rodb) - { - for (int i = 0; i < rochild.Length; i++) - { - if (rochild[i].type == 8) AddGraphic(rodbpath, rochild[i].value, rodb); - if (rochild[i].children != null) MigrateRoFstGraphics(rodbpath, rochild[i].children, rodb); - } - } - private void AddGraphic(string rodbpath, string p, RODb rodb) - { - if (p == null) return; - string imgname = p.Substring(0, p.IndexOf('\n')); - int thedot = imgname.LastIndexOf('.'); - string fname = imgname; - if (thedot == -1 || (thedot != (imgname.Length - 4))) - { - RODbConfig roDbCfg = new RODbConfig(rodb.Config); - fname += string.Format(".{0}", roDbCfg.GetDefaultGraphicExtension()); - } - - string imgfile = rodbpath + @"\" + fname; - if (File.Exists(imgfile)) - { - FileInfo fi = new FileInfo(imgfile); - frmMain.Status = "Processing Image " + fname; - // if the roimage record exists, don't create a new one... - //Console.WriteLine("ROImage Key {0} List {1} ID {2}", ROImage.CacheCountPrimaryKey, ROImage.CacheCountList, ROImage.CacheCountByRODbID); - //Console.WriteLine("ROImageInfo Key {0} List {1}", ROImageInfo.CacheCountPrimaryKey, ROImageInfo.CacheCountList); - //Console.WriteLine("ROFst Key {0} List {1} ID {2}", ROFst.CacheCountPrimaryKey, ROFst.CacheCountList, ROFst.CacheCountByRODbID_DTS); - //Console.WriteLine("ROFstInfo Key {0} List {1}", ROFstInfo.CacheCountPrimaryKey, ROFstInfo.CacheCountList); - frmMain.AddInfo("Adding RO Image {0}", imgname); - //using (roImg = ROImage.GetByRODbID_FileName_DTS(rodb.RODbID, imgname, fi.LastWriteTimeUtc)) - //{ - ROImage roImg = null; - roImg = GetImageFromAvailable(rodb.RODbID, imgname, fi.LastWriteTimeUtc); - if (roImg == null) - { - roImg = ROImage.GetByRODbID_FileName_DTS(rodb.RODbID, imgname, fi.LastWriteTimeUtc); - if (roImg == null) - { - using (FileStream fsIn = new FileStream(imgfile, FileMode.Open, FileAccess.Read, FileShare.Read)) - { - // Create an instance of StreamReader that can read characters from the FileStream. - BinaryReader r = new BinaryReader(fsIn); - byte[] ab = r.ReadBytes((int)fsIn.Length); - r.Close(); - fsIn.Close(); - ConfigInfo ci = new ConfigInfo(null); - ci.AddItem("Image", "Size", ab.Length.ToString()); - roImg = ROImage.MakeROImage(rodb, imgname, ROImageInfo.Compress(ab), ci.ToString(), fi.LastWriteTimeUtc, "Migration"); - } - } - AddToAvailable(roImg, rodb.RODbID, imgname, fi.LastWriteTimeUtc); - } - // see if it's already linked to the current rofst.. - //Figure figure = Figure.GetByROFstID_ImageID(rofstinfo.ROFstID, roImg.ImageID); - using (Figure figure = Figure.GetByROFstID_ImageID(rofstinfo.ROFstID, roImg.ImageID)) - { - if (figure != null) return; - //using (ROFst rofst = rofstinfo.Get()) - ROFst rofst = rofstinfo.Get(); // Use the cached ROFST rather than creating and disposing - //figure = Figure.MakeFigure(rofst, roImg, null); - using (Figure tfig = Figure.MakeFigure(rofst, roImg, null)) ; - } - //roImg.Dispose(); - } - else - frmMain.AddError("Cannot Find Image File {0}", imgfile); - } - - private void AddToAvailable(ROImage roImg, int dbid, string imgname, DateTime dateTime) - { - string key = AvailableKey(dbid, imgname, dateTime); - _AvaiableROImages.Add(key, roImg); - } - - private string AvailableKey(int dbid, string imgname, DateTime dateTime) - { - return string.Format("{0}|{1}|{2}", dbid, imgname, dateTime.ToString("yyyyMMdd HHmmss")); - } - - private ROImage GetImageFromAvailable(int dbid, string imgname, DateTime dateTime) - { - string key = AvailableKey(dbid, imgname, dateTime); - if (_AvaiableROImages.ContainsKey(key)) return _AvaiableROImages[key]; - return null; - } - private Dictionary _AvaiableROImages = new Dictionary(); - } -} diff --git a/PROMS/DataLoader/SQLScriptRunner.cs b/PROMS/DataLoader/SQLScriptRunner.cs deleted file mode 100644 index 5e57f4c1..00000000 --- a/PROMS/DataLoader/SQLScriptRunner.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Data.Sql; -using System.Data.SqlClient; -// Add .Net Reference Microsoft.SqlServer.ConnectionInfo -using Microsoft.SqlServer.Management.Common; -// Add .Net Reference Microsoft.SqlServer.Smo -using Microsoft.SqlServer.Management.Smo; - -namespace DataLoader -{ - public delegate void SQLScriptRunnerEvent(object sender, SqlInfoMessageEventArgs args); - public class SQLScriptRunner - { - public event SQLScriptRunnerEvent InfoMessage; - public void OnInfoMessage(object sender, SqlInfoMessageEventArgs args) - { - if (InfoMessage != null) InfoMessage(sender, args); - } - private string _Script; - public string Script - { - get { return _Script; } - set { _Script = value; } - } - private string _ConnectionString; - public string ConnectionString - { - get { return _ConnectionString; } - set { _ConnectionString = value; } - } - public SQLScriptRunner(string script, string connectionString) - { - _Script = script; - _ConnectionString = connectionString; - } - public SQLScriptRunner(string dbName, string backupFolder, string connectionString, DateTime dateTime, string suffix) - { - _Script = string.Format("Backup database [{0}] to disk = '{1}\\{0}_{2}{3}.BAK'\r\n" + - "GO\r\nPRINT '{0} backed up to {1}\\{0}_{2}{3}.BAK'", - dbName, backupFolder, dateTime.ToString("yyyyMMdd_HHmm"),suffix); - _ConnectionString = connectionString; - } - public void Run() - { - SqlConnection cn = new SqlConnection(ConnectionString); - cn.Open(); - cn.InfoMessage += new SqlInfoMessageEventHandler(cn_InfoMessage); - Server srv = new Server(new ServerConnection(cn)); - srv.ConnectionContext.ExecuteNonQuery(Script); - cn.Close(); - } - void cn_InfoMessage(object sender, SqlInfoMessageEventArgs e) - { - OnInfoMessage(sender, e); - } - } -} diff --git a/PROMS/DataLoader/SecObj.cs b/PROMS/DataLoader/SecObj.cs deleted file mode 100644 index a7e272fd..00000000 --- a/PROMS/DataLoader/SecObj.cs +++ /dev/null @@ -1,924 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== - -using System; -using System.IO; -using System.Collections; -using System.Collections.Generic; -using System.Collections.Specialized; -using System.Windows.Forms; -using System.Text; -using VEPROMS.CSLA.Library; -using Config; - -namespace DataLoader -{ - /// - /// Summary description for Security. - /// - /// - #region OldVeSamClasses - // do a temp plant - we may keep this for loading in data. It will be migrated - // to a folders record. - #region Options - public class PlantOptions - { - private UInt16 _id; - private UInt32 _plopts; - public List poList = new List(); - - public UInt16 Id - { - get {return _id;} - set {if (_id != value) _id = value;} - } - - public UInt32 Options - { - get {return _plopts;} - set {if (_plopts != value) _plopts = value;} - } - } - public class ProcOptions - { - private UInt16 _id; - private UInt16 _selected; - public UInt32 [] Options = new UInt32[4]; - - public UInt16 Id - { - get {return _id;} - set {if (_id != value)_id = value;} - } - public UInt16 Selected - { - get {return _selected;} - set {if (_selected != value)_selected = value;} - } - } - #endregion - #region OldFolders - public class Plant - { - private string _name; - private string _path; - private UInt16 _id; - public Dictionary psDic = new Dictionary(); - - public string Name - { - get {return _name;} - set - { - if (value == null) value = string.Empty; - if (_name != value) _name = value; - } - } - public string Path - { - get {return _path;} - set - { - if (value == null) value = string.Empty; - if (_path != value)_path = value; - } - } - public UInt16 Id - { - get {return _id;} - set {if (_id != value) _id = value;} - } - - public Plant() { } - public Plant(string nm, string pth, UInt16 idn) - { - _name = nm; - _path = pth; - _id = idn; - } - } - - public class ProcSet - { - private string _name; - private string _path; - private UInt16 _id; - public string Name - { - get {return _name;} - set - { - if (value == null) value = string.Empty; - if (_name != value)_name = value; - } - } - public string Path - { - get {return _path;} - set - { - if (value == null) value = string.Empty; - if (_path != value)_path = value; - } - } - public UInt16 Id - { - get {return _id;} - set {if (_id != value) _id = value;} - } - public ProcSet() { } - - public ProcSet(string nm, string pth, UInt16 idn) - { - _name = nm; - _path = pth; - _id = idn; - } - } - #endregion - #region OldUser - // The OldUser class stores data from the vesam input. The User class migrates - // and saves data to the new sql database. - public class OldUser - { - private UInt32 _systemopts; - private string _username; - private bool _blockaccessflag = false; - public List PlantOpts = new List(); - - public UInt32 SystemOpts - { - get { return _systemopts; } - set { if (_systemopts != value) _systemopts = value; } - } - public string UserName - { - get { return _username; } - set - { - if (value == null) value = string.Empty; - if (_username != value) _username = value; - } - } - - public bool BlockAccessFlag - { - get { return _blockaccessflag; } - set { if (_blockaccessflag != value) _blockaccessflag = value; } - } - - public bool PermissionToManageFlag - { - get { return (_systemopts & VESamOpt.DOCMAINT)==0?false:true; } - //set { if (_permissiontomanageflag != value) _permissiontomanageflag = value; } - } - - public bool SystemAdminFlag - { - get { return (_systemopts & VESamOpt.SYSADMIN)==0 ? false:true; } - //set { if (_systemadminflag != value) _systemadminflag = value; } - } - - public bool PermissionToLockFlag - { - get { return (_systemopts & VESamOpt.LOCKSYSTEM)==0 ? false:true; } - //set { if (_permissiontolockflag != value) _permissiontolockflag = value; } - } - - public bool RoEditorFlag - { - get { return (_systemopts & VESamOpt.ROEDITOR) == 0 ? false : true; } - } - - public OldUser(string nm) - { - _username = nm; - } - } - #endregion - #region VESam - public class VESamOpt - { - #region Log4Net - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - #endregion - public const long VIEW = 0x00000001L; - public const long PRINT = 0x00000002L; - public const long PRINTDRAFT = 0x00000004L; - public const long PRINTCHANGES = 0x00000008L; - public const long EDIT = 0x00000010L; - public const long SEARCH = 0x00000020L; - public const long STANDARDSTEPS = 0x00000040L; - public const long APPROVE = 0x00000080L; - public const long APPROVESINGLE = 0x00000100L; - public const long LIBRARYDOCS = 0x00000200L; - public const long ADDMODDEL = 0x00000400L; - public const long CLEAN = 0x00000800L; - public const long LOCKPROC = 0x00001000L; - public const long LOCKSET = 0x00000001L; - public const long UCF = 0x00000002L; - public const long LOCKSYSTEM = 0x00000001L; - public const long DOCMAINT = 0x00000002L; - public const long ROEDITOR = 0x00000004L; - public const long SYSADMIN = 0x00000008L; - - public const int SUPERUSER = 1000; - public const long SUPERACCESS = 0xFFFFFFFFL; - - private bool _blockAccess; - public int userid = -1; - public string initials; - private const string samoptname = "vesam.opt"; - public FileStream fs; - public BinaryReader bw; - public bool isDemoMode = false; - List plntList = new List(); - List userList = new List(); - Dictionary plntDic = new Dictionary(); - - public bool BlockAccess - { - get { return _blockAccess; } - set { if (_blockAccess != value) _blockAccess = value; } - } - - public bool OpenFile(string oname) - { - try - { - fs = new FileStream(oname, FileMode.Open, FileAccess.Read, FileShare.Read, 1, false); - bw = new BinaryReader(fs); - return true; - } - catch (Exception e) - { - MessageBox.Show(e.Message, "Security File"); - return false; - } - } - - public void CloseFile() - { - bw.Close(); - fs.Close(); - bw = null; - fs = null; - } - public Dictionary LoadPlants() - { - UInt16 ui16; - UInt32 ui32; - - try - { - byte x; - - // read past some header stuff. - for (int jj = 0; jj < 8; jj++) x = bw.ReadByte(); - - long nxtPl = bw.ReadUInt32(); - uint nmPlant = bw.ReadUInt16(); - ui16 = bw.ReadUInt16(); - - // not needed here, but need to read past this... - long nxtUs = bw.ReadUInt32(); - uint nmUser = bw.ReadUInt16(); - ui16 = bw.ReadUInt16(); - long nxtGr = bw.ReadUInt32(); - uint nmGrp = bw.ReadUInt16(); - ui16 = bw.ReadUInt16(); - - BlockAccess = bw.ReadUInt16()==0?false:true; - - string pname, ppth; - for (int i = 0; i < nmPlant; i++) - { - if (nxtPl == 0xFFFFFFFEL) - { - log.Error("Reading in VESAM options file - cannot find next plant in list"); - break; - } - fs.Seek(nxtPl, SeekOrigin.Begin); - nxtPl = bw.ReadUInt32(); - - Plant pl = new Plant(); - pl.Id = bw.ReadUInt16(); - ui16 = bw.ReadUInt16(); - - byte[] stmp = new byte[256]; - stmp = bw.ReadBytes(ui16); - pname = Encoding.ASCII.GetString(stmp, 0, ui16); - pl.Name = pname; - ui16 = bw.ReadUInt16(); - stmp = bw.ReadBytes(ui16); - ppth = Encoding.ASCII.GetString(stmp, 0, ui16); - pl.Path = ppth; - - // read in any sets within this plant. - UInt16 nmPrcDr = bw.ReadUInt16(); - ui32 = bw.ReadUInt32(); - UInt32 nxtPr = bw.ReadUInt32(); - - for (int j = 0; j < nmPrcDr; j++) - { - ProcSet ps = new ProcSet(); - ps.Id = bw.ReadUInt16(); - ui16 = bw.ReadUInt16(); - stmp = bw.ReadBytes(ui16); - pname = Encoding.ASCII.GetString(stmp, 0, ui16); - ps.Name = pname; - ui16 = bw.ReadUInt16(); - stmp = bw.ReadBytes(ui16); - ppth = Encoding.ASCII.GetString(stmp, 0, ui16); - ps.Path = ppth; - ui32 = bw.ReadUInt32(); - if (nxtPr == 0xFFFFFFFDL && j + 1 < nmPrcDr) - { - log.ErrorFormat("Loading vesam.opt - procedure sets for {0}", ps.Name); - return null; - } - try - { - pl.psDic.Add(ps.Id, ps); - } - catch (Exception ex) - { - log.ErrorFormat("Adding to set dictionary - {0}. Error: {1}" + ps.Path, ex.Message); - } - if (nxtPr != 0xFFFFFFFDL) - { - fs.Seek(nxtPr, SeekOrigin.Begin); - nxtPr = bw.ReadUInt32(); - } - } - try - { - if (!plntDic.ContainsKey(pl.Id))plntDic.Add(pl.Id, pl); - } - catch (Exception ex) - { - log.ErrorFormat("Adding to plant dictionary - {0}. Error: {1}", pl.Path, ex.Message); - } - } - } - catch (Exception ex) - { - log.ErrorFormat("Loading plants from vesam.opt: {0}", ex.Message); - return null; - } - return plntDic; - } - public List LoadUserList() - { - UInt16 ui16; - UInt32 ui32; - try - { - byte x; - - fs.Seek(0, SeekOrigin.Begin); - // read past some header stuff. - for (int jj = 0; jj < 8; jj++) x = bw.ReadByte(); - long nxtPl = bw.ReadUInt32(); - uint nmPlant = bw.ReadUInt16(); - ui16 = bw.ReadUInt16(); - - // get info in header for users - long nxtUs = bw.ReadUInt32(); - uint nmUser = bw.ReadUInt16(); - ui16 = bw.ReadUInt16(); - long nxtGr = bw.ReadUInt32(); - uint nmGrp = bw.ReadUInt16(); - ui16 = bw.ReadUInt16(); - - bool localblockAccess = bw.ReadUInt16()==0?false:true; - // Now read in all of the user information - UInt16 uid; - string fName, fPass; - for (int i = 0; i < nmUser; i++) - { - if (nxtUs == 0xFFFFFFFCL && i + 1 < nmUser) - { - log.Error("Loading vesam.opt - reading in user list."); - return null; - } - - fs.Seek((long)nxtUs, SeekOrigin.Begin); - nxtUs = bw.ReadUInt32(); - uid = bw.ReadUInt16(); - ui16 = bw.ReadUInt16(); // user's group? - - byte[] test = new byte[10]; - test = bw.ReadBytes(10); - - // get ve-proms (vesam) username & password - fName = Encoding.ASCII.GetString(test, 0, 10); - int indx = fName.IndexOf("\0"); - string fNameTrim = fName.Substring(0, indx); - test = bw.ReadBytes(10); - fPass = Encoding.ASCII.GetString(test, 0, 10); - indx = fPass.IndexOf("\0"); - string fPassTrim = fPass.Substring(0, indx); - OldUser usr = new OldUser(fNameTrim); - usr.SystemOpts = bw.ReadUInt32(); - usr.BlockAccessFlag = localblockAccess; - ui32 = bw.ReadUInt32(); - - // now get plant & proc set options. - nmPlant = bw.ReadUInt16(); - for (int j = 0; j < nmPlant; j++) - { - PlantOptions plO = new PlantOptions(); - plO.Id = bw.ReadUInt16(); - plO.Options = bw.ReadUInt32(); - ui32 = bw.ReadUInt32(); - UInt16 nmPrcDr = bw.ReadUInt16(); - for (int k = 0; k < nmPrcDr; k++) - { - ProcOptions prO = new ProcOptions(); - prO.Id = bw.ReadUInt16(); - prO.Selected = bw.ReadUInt16(); - for (int kk = 0; kk < 4; kk++) prO.Options[kk] = bw.ReadUInt32(); - plO.poList.Add(prO); - } - usr.PlantOpts.Add(plO); - } - userList.Add(usr); - } - } - catch (Exception ex) - { - log.ErrorFormat("Error Loading (old) User info from vesam.opt: {0}", ex.Message); - return null ; - } - return userList; - } - } - #endregion - #endregion - - #region SecurityMigration - public class Security - { - #region Log4Net - private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - #endregion - Dictionary plntDic = new Dictionary(); - List userList = new List(); - private string _VePromsPath = null; - private string optfilename; - private string[] prflags ={ "Vfw", "Prnt", "Prnt Drft", "Prnt Chgs", "Edit", "Srch", "St Stp", "App", "App Sel", "Lib", "AMD", "Clean", "Lock" }; - private string[] sysflags ={ "NetworkLock", "SysMaint", "ROEditor", "SysAdmin" }; - #region NewMig - public Security(string pathname, string vepromspath) - { - if (File.Exists(pathname) == false) - { - MessageBox.Show("Could not locate the Security Options file:\n\n" + pathname, "Security Access Error"); - optfilename = null; - return; - } - _VePromsPath = vepromspath; - optfilename = pathname; - } - public bool Migrate() - { - VESamOpt vso = new VESamOpt(); - bool suc = vso.OpenFile(optfilename); - if (!suc) return false; - plntDic = vso.LoadPlants(); - if (plntDic == null) return false; - suc = VerifyFolders(plntDic); - if (!suc) return suc; - userList = vso.LoadUserList(); - if (userList == null) return false; - vso.CloseFile(); - vso = null; - log.Info("Original vesam.opt loaded successfully - next step is to migrate security information to new database"); - //WriteOutSummary(plntDic, userList); - suc = TranslateToNew(vso, plntDic, userList); - log.Info("Migrated vesam successfully"); - return suc ; - } - #endregion - #region WriteVESamSummary - private void WriteOutSummary(Dictionary plntDic, List userList) - { - foreach (OldUser usr in userList) - { - log.InfoFormat("User = {0}", usr.UserName); - - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < 4; i++) - { - if ((usr.SystemOpts & (1L << i)) != 0) sb.Append(sysflags[i] + " "); - } - if (sb.Length > 0) log.InfoFormat(" System Options = {0}", sb.ToString()); - - // for now, don't worry about system options. - // for each plant, list any permissions of the plant or its proc sets. If - // none set, nothing will be listed. - foreach (PlantOptions po in usr.PlantOpts) - { - bool plntout = false; - Plant pl = (Plant)plntDic[po.Id]; - if (po.Options != 0) - { - plntout = true; - log.InfoFormat(" Plant = {0}. Options = {1}", pl.Name, po.Options); - } - foreach (ProcOptions psO in po.poList) - { - ProcSet ps = (ProcSet)pl.psDic[psO.Id]; - if (psO.Options[0] != 0 || psO.Options[1] != 0 || psO.Options[2] != 0 || psO.Options[3] != 0) - { - if (!plntout) log.InfoFormat(" Plant = {0}.", pl.Name); - log.InfoFormat(" Procedure Set = {0}", ps.Name); - sb.Length = 0; - int nm = 0; - for (int i1 = 0; i1 < 4; i1++) - { - for (int j1 = 0; j1 < 16; j1++) - { - if ((psO.Options[i1] & (1L << j1)) != 0) sb.Append(prflags[nm] + " "); - nm++; - } - } - if (sb.Length > 0) log.InfoFormat(" {0}", sb.ToString()); - } - } - } - } - - } - #endregion - #region MigrateCode - private string[] defaultRole ={ "Administrator", "User Administrator", "RO Manager", "Writer", "Reviewer", "Guest" }; - private string[] defaultRoleTitle = { "Manages Data - Backups, Approval etc.", "Maintains User Security", "Maintains Referenced Objects", "Can Edit", "Can potentially add comments", "Read-Only access to approved procedures" }; - // defaultPermData sets the permission data (Permissions table) - columns are - // PermLevel, VersionType, PermValue (Note for vesam migration, PermAD is always allow, i.e. 0) - private int[,] defaultPermData = { - {2, 3, 15}, // Administrator - {1, 3, 15}, // User Administrator - {3, 3, 15}, // RO Manager - {5, 1, 15}, // Writer - {7, 3, 15}, // Reviewer - {2, 2, 1}}; // Guest - - private int[] accessLevelSetup = { -1, 5, 4, 3, 0, 0, 2, 1 }; - private int[] accessLevelTrans; - - private Dictionary AddDefaultRoles() - { - Dictionary rdic = new Dictionary(); - try - { - accessLevelTrans = new int[accessLevelSetup.Length]; - for (int i = 0; i < 6; i++) - { - Role role = Role.New(); - role.Name = defaultRole[i]; - role.Title = defaultRoleTitle[i]; - if (!role.IsSavable) ErrorRpt.ErrorReport(role); - role.Save(); - Permission perm = Permission.New(); - perm.MyRole = role; - perm.PermLevel = defaultPermData[i, 0]; - perm.VersionType = defaultPermData[i, 1]; - perm.PermValue = defaultPermData[i, 2]; - if (!perm.IsSavable) ErrorRpt.ErrorReport(perm); - perm.Save(); - rdic.Add(role.RID, role); - for (int j = 1; j < accessLevelSetup.Length; j++) - { - if (accessLevelSetup[j] == i) accessLevelTrans[j] = role.RID; - } - } - - } - catch (Exception ex) - { - log.ErrorFormat("Error setting default roles & permissions: {0}", ex.Message); - return null; - } - return rdic; - } - - public bool VerifyFolders(Dictionary dicPlants) - { - try - { - // For each folder from vesam, see if there is a matching folder already - // migrated... - - FolderInfoList fil = FolderInfoList.Get(); - // add the titles to a dictionary for quick checking - List folderlist = new List(); - foreach (FolderInfo fi in fil) - { - folderlist.Add(fi.Title.ToUpper()); - } - - foreach (ushort u in dicPlants.Keys) - { - Plant pl = dicPlants[u]; - bool foundplant = false; - if (folderlist.Contains(pl.Path.ToUpper())) foundplant=true; - - if (!foundplant) - log.InfoFormat("Plant from vesam.opt not found in folder data: {0}", pl.Path); - else // if found, check for sets - { - foreach (ushort uu in pl.psDic.Keys) - { - ProcSet pr = pl.psDic[uu]; - bool foundprocset = false; - foreach (FolderInfo fi in fil) - { - string tstpath = pl.Path.ToUpper() + "\\" + pr.Path.ToUpper(); - if (tstpath == fi.Title.ToUpper()) - { - foundprocset = true; - break; - } - } - if (!foundprocset) log.InfoFormat("Procedure Set from vesam.opt not found in folder data: {0}\\{1}", pl.Path, pr.Path); - } - } - } - } - catch (Exception ex) - { - log.ErrorFormat("error mapping vesam directories to data directories, error = {0}", ex.Message); - return false; - } - return true; - } - - private Dictionary LoadFolders() - { - FolderInfoList fldlist = FolderInfoList.Get(); - Dictionary fdic = new Dictionary(); - foreach (FolderInfo fi in fldlist) - { - fdic.Add(fi.Title.ToUpper(), fi.FolderID); - } - return fdic; - } - - private bool TranslateToNew(VESamOpt vso, Dictionary plntDic, List userList) - { - Dictionary rlpdic = AddDefaultRoles(); - AddUsrGrpAsgnRecs(plntDic, userList); - return true; - } - private string VersionName(string s) - { - return s.Substring(s.LastIndexOf(" - ") + 3); - } - private string SetName(string s) - { - return s.Substring(0, s.LastIndexOf(" - ")); - } - private string FixName(string s) - { - s = s.Replace(" - Working Draft (Unit 1)", " (Unit 1) - Working Draft"); - s = s.Replace(" - Working Draft (Unit 2)", " (Unit 2) - Working Draft"); - s = s.Replace(" - Current Approved Version", " - Approved Version"); - return s.Replace(" - Working Draft", " - Working Draft"); - } - private int CalcAccessLevel(int iBase, uint options, string sVersion) - { - if (sVersion == "Working Draft") - { - if (options == 0) return 0; - if ((options & 6528) != 0) return 5; - if ((options & 1024) != 0) return 4; - if ((options & 528) != 0) return 3; - return 2; - } - else - { - if (iBase != 0) return iBase; - else if (options != 0) return 1; - return 0; - } - } - private string SystemOption(uint options) - { - if ((options & 11) != 0) return "\"Admin\""; - if (options == 4) return "\"RO\""; - return ""; - } - private void AddAccessRights(Dictionary> dic, int folderId, int roleId) - { - if (!dic.ContainsKey(folderId)) dic[folderId] = new List(); - dic[folderId].Add(roleId); - } - private void AddUsrGrpAsgnRecs(Dictionary plntDic, List userList) - { - Dictionary> dicGroups = new Dictionary>(); - Dictionary dicGroupIds = new Dictionary(); - Dictionary dicOldFolders = new Dictionary(); - int oldFolderCount = 1; - dicOldFolders.Add("system", oldFolderCount++); - Dictionary dicNewFolders = LoadFolders(); - List lstVersions = new List(); - StringBuilder sb; - OldUser frst = userList[0]; - - string[] accessLevel = { "", "\"Guest\"", "\"Reviewer\"", "\"Writer\"", "\"Admin\"", "\"Admin\"" }; - foreach (OldUser usr in userList) - { - int sysAccess = 5; - Dictionary plantAccess = new Dictionary(); - - if ((usr.SystemOpts & 11) == 0) - { - foreach (PlantOptions po in usr.PlantOpts) - { - plantAccess[po] = 5; - Plant pl = (Plant)plntDic[po.Id]; - if (!dicOldFolders.ContainsKey(pl.Path.ToUpper()))dicOldFolders.Add(pl.Path.ToUpper(), oldFolderCount++); - string sSetLast = ""; - int iAccessLevel = 0; - - foreach (ProcOptions psO in po.poList) - { - ProcSet ps = null; - try - { - ps = (ProcSet)pl.psDic[psO.Id]; - } - catch (Exception ex) - { - MessageBox.Show("here: " + ex.Message); - } - if (!dicOldFolders.ContainsKey(pl.Path.ToUpper()+"\\"+ps.Path.ToUpper()))dicOldFolders.Add(pl.Path.ToUpper()+"\\"+ps.Path.ToUpper(), oldFolderCount++); - string sName = FixName(ps.Name); - string sVersion = VersionName(sName); - string sSet = SetName(sName); - if (sSet != sSetLast) - { - if (sSetLast != "") - { - // if the proc access is lower than the plant, reset plant level. - if (iAccessLevel < plantAccess[po]) plantAccess[po] = iAccessLevel; - iAccessLevel = 0; - } - sSetLast = sSet; - } - iAccessLevel = CalcAccessLevel(iAccessLevel, psO.Options[0], sVersion); - } - // do one last check to see if plant level should be lowered. Also - // check if the system level should be lowered. - if (iAccessLevel < plantAccess[po]) plantAccess[po] = iAccessLevel; - if (plantAccess[po] < sysAccess) sysAccess = plantAccess[po]; - } - } - - // set the system level access, i.e. User Admin, System Admin & RO Editor roles if - // necessary. - int systemid = dicOldFolders["system"]; - - Dictionary> accessRights = new Dictionary>(); - if (usr.SystemOpts != 0) AddAccessRights(accessRights, systemid, accessLevelTrans[6]); // add ro editor - if ((usr.SystemOpts & 11) != 0) - { - AddAccessRights(accessRights, systemid, accessLevelTrans[5]); // add sys admin rights - AddAccessRights(accessRights, systemid, accessLevelTrans[7]); // and add user admin rights - } - else - { - // the user has a role at the system level that is not an admin, - // such as reviewer or guest - add it in. - if (sysAccess > 0) AddAccessRights(accessRights, systemid, accessLevelTrans[sysAccess]); - } - - sb = new StringBuilder(string.Format("{0},{1}", (usr.SystemOpts == 0 ? "" : "Admin"), accessLevel[sysAccess])); - - if ((usr.SystemOpts & 11) == 0) - { - foreach (PlantOptions po in usr.PlantOpts) - { - Plant pl = plntDic[po.Id]; - // Need logic for po.Options in combination with PlantAccess[po] - //sb.Append(string.Format(",{0}", po.Options)); - - if (plantAccess[po] > sysAccess) - { - AddAccessRights(accessRights, dicOldFolders[pl.Path.ToUpper()], accessLevelTrans[plantAccess[po]]); - sb.Append(string.Format(",{0}", accessLevel[plantAccess[po]])); - } - else - sb.Append(","); - string sSetLast = ""; - string sPathLast = ""; - int iAccessLevel = 0; - string sPath = ""; - foreach (ProcOptions psO in po.poList) - { - ProcSet ps = pl.psDic[psO.Id]; - string sName = FixName(ps.Name); - string sVersion = VersionName(sName); - if (sVersion == "Working Draft") sPath = pl.Path + "\\" + ps.Path; - string sSet = SetName(sName); - - if (sSet != sSetLast) - { - if (sSetLast != "") - { - if (iAccessLevel > plantAccess[po]) - { - AddAccessRights(accessRights, dicOldFolders[sPathLast.ToUpper()], accessLevelTrans[iAccessLevel]); - sb.Append(string.Format(",{0}", accessLevel[iAccessLevel])); - } - else - sb.Append(","); - iAccessLevel = 0; - } - sSetLast = sSet; - sPathLast = sPath; - } - iAccessLevel = CalcAccessLevel(iAccessLevel, psO.Options[0], sVersion); - } - - if (iAccessLevel > plantAccess[po]) - { - AddAccessRights(accessRights, dicOldFolders[sPathLast.ToUpper()], accessLevelTrans[iAccessLevel]); - sb.Append(string.Format(",{0}", accessLevel[iAccessLevel])); - } - else - sb.Append(","); - } - } - string s = sb.ToString(); - - if (!dicGroups.ContainsKey(s)) - { - dicGroups[s] = new List(); - Group grp = Group.New(); - grp.GroupName = "Group " + dicGroups.Count.ToString(); - int pathInData = -1; - foreach (int folderId in accessRights.Keys) - { - // see if this folderId exists in the data (rather - // than the list from vesam). If not, don't do an - // assignments record - pathInData = 0; - foreach (KeyValuePair kvp in dicOldFolders) - { - if (kvp.Value == folderId) - { - string path = kvp.Key; - if (dicNewFolders.ContainsKey(path.ToUpper())) - pathInData = dicNewFolders[path.ToUpper()]; - } - } - if (pathInData>0) - { - if (!grp.IsSavable) ErrorRpt.ErrorReport(grp); - grp.Save(); - Folder tmpfld = Folder.Get(pathInData); - foreach (int roleId in accessRights[folderId]) - { - Role tmprole = Role.Get(roleId); - grp.GroupAssignments.Add(tmprole, tmpfld); - } - } - } - if (!grp.IsSavable) ErrorRpt.ErrorReport(grp); - grp.Save(); - dicGroupIds[s] = grp.GID; - } - dicGroups[s].Add(usr.UserName); - } - - foreach (string s in dicGroups.Keys) - { - foreach (string sUser in dicGroups[s]) - { - // add user record & membership record. - User newusr = User.New(); - newusr.UserID = sUser; - ConfigFile cfg = new ConfigFile(); - cfg.LoadUsrCfg(newusr, _VePromsPath); - Group tmpgrp = Group.Get(dicGroupIds[s]); - newusr.UserMemberships.Add(tmpgrp); - if (!newusr.IsSavable) ErrorRpt.ErrorReport(newusr); - newusr.Save(); - } - - } - } - #endregion - } -#endregion -} diff --git a/PROMS/DataLoader/Sections.cs b/PROMS/DataLoader/Sections.cs deleted file mode 100644 index de6ef455..00000000 --- a/PROMS/DataLoader/Sections.cs +++ /dev/null @@ -1,851 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.Xml.XPath; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; - - -namespace DataLoader -{ - public partial class Loader - { - const int E2 = 4194304; - private Dictionary dicOldToNew; - private Item AddSection(Item procitem, string Number, string Title, string SecType, DateTime Dts, string Userid, ConfigInfo ci, string stpseq, string fmt, int libdocid, string pth, Item FromItem, FormatInfo activeFormat) - { - string missingFileName = ""; - bool missingDocFile = false; - //Console.WriteLine("before UpdateLabels"); - frmMain.UpdateLabels(0, 1, 0); - //Console.WriteLine("after UpdateLabels"); - try - { - //Console.WriteLine("before activeFormat"); - FormatInfo format = activeFormat; - //Console.WriteLine("after activeFormat"); - - // Tie the section to format used, this will add the format xml if it doesn't exist in - // the database yet. Note that if there is no format at this level then none should - // be set so that the inheritance works correctly. - if (fmt != null && fmt != "") format = GetFormat(fmt); - - // Find the docstyle based on the section type (step[1]) & the 'type' from the dbf - // record sectype[0]) - string dstyleindx = ((stpseq == null || stpseq == "") ? " " : stpseq.Substring(1, 1)) + ((SecType==null||SecType == "") ? " " : SecType.Substring(0, 1)); - int tmpE2 = LookupOldToNew(dstyleindx); - //int docstyleindx = GetDocStyleIndx(dstyleindx, format, procitem, docver,Number,Title); - int docstyleindx = GetDocStyleIndx(dstyleindx, format, procitem, Number, Title); - DocStyle myDocStyle = format.PlantFormat.DocStyles.DocStyleList[docstyleindx]; - - // Originally there was no determination as to whether to set landscape mode. Code was added on - // 6/11/13 to compare the PageWidth & PageLength. This code was incorrectly setting some of the - // word documents to landscape (FNP cover pages). Adding in the topmargin fixed this. - bool isLandscape = myDocStyle.Layout.PageWidth > (myDocStyle.Layout.TopMargin + myDocStyle.Layout.PageLength); - // Adjust the section number. The 16bit vfw code was sometimes printing section numbers - // differently than what was stored as data. For example VEWCNOFN: OFN MA-001, the section - // number was '1.' and 16bit printed it as '1.0'. The flag that caused this was (surprisingly), - // !LineAboveUnderSection, search for LineAboveUnderSection in PROMSNT\exe\print\prntStep.c - // to find the beginning point of tracing this 16bit logic, the call to PlaceSectionTitle. - // The change in section number is: - // 1 -> 1. B -> B. - // 1. -> 1.0 B. -> B.0 - // 1.0 stays same B.0 stays the same - // It was decided to make the string change in the dataloader rather than have this 'strange' - // code/support in the print program for the 32bit veproms. (8/30/11). This seems to work - // for Wcnemg, WcnOFn, HLP, FPL. As other plants are migrated, this may need changed. - - /* The 16bit code if statement is (see below for what parts of this if statement where supported - * for data migration so far (as of 8/31/11). Note that 'Smartsubsection' only had values of - * 0 in fmtfiles. - * if (!CancelCurSecTitle() && - !(SpecialStepsFoldout && (CurDoc->oldtonew == E2)) && - !(SmartSubSection && (CurDoc->oldtonew & SmartSubSection) && - Section[CurrentSectIndex].Level == 0) && - Section[CurrentSectIndex].Sequence[9] != 'N') { - */ - FormatData fmtData = format.PlantFormat.FormatData; - // don't want to add the '0' after . for section numbers for Catawba or McGuire - bool isCatawbaOrMcGuire = false; - if (fmtData.Name.ToUpper().Contains("CAT") || fmtData.Name.ToUpper().Contains("MCG")) isCatawbaOrMcGuire = true; - if (!isCatawbaOrMcGuire && - fmtData.SectData.StepSectionData.StepSectionLayoutData.ShowSectionTitles && - !format.PlantFormat.DocStyles.DocStyleList[docstyleindx].CancelSectTitle && - !(format.PlantFormat.DocStyles.DocStyleList[docstyleindx].SpecialStepsFoldout && tmpE2 == E2)) - { - if (!fmtData.SectData.StepSectionData.StepSectionLayoutData.LineAboveUnderSection && - (Number != null && Number != "") && - (stpseq != null && stpseq.Substring(1, 1) == "0" && stpseq.Substring(5, 1) != " ")) - { - if (Number.EndsWith(".")) Number = Number + "0"; - else if (Number.Length>1 && Number[Number.Length-2] != '.') Number = Number + "."; - } - } - - // tack on the column mode - add to config xml for node. - if (stpseq != null && stpseq.Substring(1, 1) == "0" && stpseq.Substring(5, 1) != " ") - { - if (ci == null) ci = new ConfigInfo(null); - char cmchar = stpseq.Substring(5, 1)[0]; - if (cmchar > '2' || cmchar < '1') - ci.AddItem("Section", "ColumnMode", "1"); - else - ci.AddItem("Section", "ColumnMode", stpseq.Substring(5, 1)); - } - - // find rtf file (or use the library document temp file) & read it into the field - // acccontent - int Documentid=0; - bool needEntry = false; - if ((format.PlantFormat.DocStyles.DocStyleList[docstyleindx].StructureStyle.Style & E_DocStructStyle.TableOfContents) == E_DocStructStyle.TableOfContents && - (format.PlantFormat.FormatData.PurchaseOptions & E_PurchaseOptions.AutoTableOfContents) == E_PurchaseOptions.AutoTableOfContents) - needEntry = false; - else if (libdocid != 0 || stpseq.Substring(1, 1) != "0") - { - needEntry = true; - string fname = null; - if (libdocid != 0) - { - Documentid = libdocid; - if (Title.Trim().ToUpper() == "") - { - using (DocumentInfo di = DocumentInfo.Get(libdocid)) - Title = di.LibTitle; - } - } - else - { - int num = Convert.ToInt32(stpseq[0]) - 64; - char prefix = 'A'; - prefix += (char)(num / 100); - int numpart = num % 100; - //string thenum = num.ToString("d2"); - fname = string.Format("{0}\\rtffiles\\{1}.{2}{3:D02}", pth, ProcFileName, prefix, numpart); - Application.DoEvents(); - string procnum = ""; - using (ItemInfo ii = ItemInfo.Get(procitem.ItemID)) - procnum = ii.DisplayNumber; - SaveSectionDocument(fname, stpseq, SecType, ref Documentid, procnum + ":" + (Number == string.Empty ? Title : Number), isLandscape); - if (Documentid == 0) - { - if (MissingDocument == null) - { - //if (ci == null) ci = new ConfigInfo(null); - //ci.AddItem("Printing", "Length", string.Format("{0:0.0000}", 0.001)); - Byte[] tstbyte = System.Text.Encoding.Default.GetBytes(""); - MissingDocument = Document.MakeDocument("MISSING FILE IN CONVERSION", tstbyte, null, null,".doc"); - } - Documentid = MissingDocument.DocID; - missingDocFile = true; - missingFileName = string.Format("{0}.{1}{2:D02}",ProcFileName, prefix, numpart); - } - } - } - if (Userid == null || Userid == "") Userid = "Migration"; - - // test for performance - Content cont; - Format fmt2 = format == null ? null : format.GetJustFormat(); - cont = Content.New(Number, Title, 10000+docstyleindx, fmt2, ci==null?null:ci.ToString(), Dts, Userid); - if (needEntry) - { - Entry entry = cont.MyEntry; - entry.MyDocument = Document.Get(Documentid); - entry.DTS = Dts; - entry.UserID = Userid; - } - cont.MyZContent.OldStepSequence = ProcNumber + "|" + stpseq.TrimEnd(" ".ToCharArray()); - Item itm = null; - // the stpseq for section records may include a space & some other data. This - // was not part of what is stored in the transition records, so just look at - // the sequence before the space for section records. Then use the first character - // with a '0'. This is what's stored in the transition record, for example, if the - // section was BI, the transition record would have B0 (the reasoning is that - // for steps, this is what could be stored if there were enough steps. - int trindxsp = stpseq.IndexOf(' '); - string trstpseq = trindxsp < 0 ? stpseq : stpseq.Substring(0, 1)+ "0"; - if (dicTrans_ItemIds.ContainsKey(ProcNumber + "|" + trstpseq)) - { - itm = dicTrans_ItemIds[ProcNumber + "|" + trstpseq]; - itm.MyContent = cont; - itm.MyPrevious = FromItem; - itm.DTS = Dts; - itm.UserID = Userid; - if (!itm.IsSavable) ErrorRpt.ErrorReport(itm); - itm.Save(); - dicTrans_ItemIds.Remove(ProcNumber + "|" + trstpseq); - dicTrans_MigrationErrors.Remove(ProcNumber + "|" + trstpseq); - } - else - itm = Item.MakeItem(FromItem, cont, Dts, Userid); - - // Check this section type versus the docstyleindex, i.e. that the docstyle was not of - // the same type of section as the data. For example, rgesmped.in has only 1 doc style - // and it WAS both step & doc when the section was added as a word doc, but the current - // rgesmped.in only supports step sections. The result was that there is Word content but - // a step docstyle. - // - // Identify this problem by putting out an error message & adding an annotation. The data - // will have to be fixed manually, i.e. go into sql server & change the format and Type to - // use a word section type. - if (needEntry && format.PlantFormat.DocStyles.DocStyleList[docstyleindx].IsStepSection) - { - frmMain.AddError("Conflicting section type (Word Section: {0}) & Document Style (Step Section type: {1})", - ProcNumber + ":" + Number + ":" + Title, format.PlantFormat.DocStyles.DocStyleList[docstyleindx].Name); - ItemAnnotation ia = itm.ItemAnnotations.Add(MigrationErrorType); - ia.SearchText = "Conflicting Section Type and Document Style"; - ia.UserID = "Migration"; - itm.Save(); - } - if (missingDocFile) - { - ItemAnnotation ia = itm.ItemAnnotations.Add(MigrationErrorType); - ia.SearchText = string.Format("Missing File: {0} In Conversion",missingFileName); - ia.UserID = "Migration"; - itm.Save(); - } - dicTrans_ItemDone[ProcNumber+"|"+trstpseq] = itm; - dicOldStepSequence[itm] = stpseq; - return itm; - } - catch (Exception ex) - { - frmMain.AddError(ex, "Save Section"); - log.Error("Save Section"); - log.ErrorFormat("oldstepsequence = {0}", stpseq); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - log.ErrorFormat(ex.StackTrace); - } - return null; - } - - private int LookupOldToNew(string lkup) - { - if (dicOldToNew == null) - { - dicOldToNew = new Dictionary(); - //dicOldToNew.Add("", 1); - dicOldToNew.Add("0", 1); - dicOldToNew.Add("0 ", 1); - dicOldToNew.Add("00", 1); - dicOldToNew.Add("01", 2); - dicOldToNew.Add("02", 4); - dicOldToNew.Add("03", 8); - dicOldToNew.Add("04", 16); - dicOldToNew.Add("I", 32); - dicOldToNew.Add("I ", 32); - dicOldToNew.Add("I0", 32); - dicOldToNew.Add("I1", 64); - dicOldToNew.Add("I2", 128); - dicOldToNew.Add("I3", 256); - dicOldToNew.Add("I4", 512); - dicOldToNew.Add("A", 1024); - dicOldToNew.Add("A ", 1024); - dicOldToNew.Add("A0", 1024); - dicOldToNew.Add("A1", 2048); - dicOldToNew.Add("A2", 4096); - dicOldToNew.Add("A3", 8192); - dicOldToNew.Add("A4", 16384); - dicOldToNew.Add("F", 32768); - dicOldToNew.Add("F ", 32768); - dicOldToNew.Add("F0", 32768); - dicOldToNew.Add("F1", 65536); - dicOldToNew.Add("F2", 131072); - dicOldToNew.Add("F3", 262144); - dicOldToNew.Add("F4", 524288); - dicOldToNew.Add("05", 1048576); - dicOldToNew.Add("06", 2097152); - dicOldToNew.Add("07", 4194304); - dicOldToNew.Add("08", 8388608); - dicOldToNew.Add("09", 16777216); - dicOldToNew.Add("0:", 33554432); - dicOldToNew.Add("0;", 67108864); - dicOldToNew.Add("0<", 134217728); - dicOldToNew.Add("0=", 268435456); - dicOldToNew.Add("0>", 536870912); - } - int retval = -1; - try - { - retval = dicOldToNew[lkup]; - } - catch (Exception ex) - { - frmMain.AddError(ex, "OldToNew {0}", lkup); - Console.WriteLine(string.Format("Error in oldtonew {0}", lkup)); - Console.WriteLine(string.Format("Error = {0}", ex.Message)); - } - return retval; - } - private int GetDocStyleIndx(string dstyleindx, FormatInfo format, Item procitem, /* DocVersion docver,*/ string Number, string Title) - { - int docstyle = LookupOldToNew(dstyleindx); - DocStyle ds0 = null; - foreach (DocStyle ds in format.PlantFormat.DocStyles.DocStyleList) - { - if (ds.Index == 0) ds0 = ds; - if ((ds.OldToNew & docstyle) > 0) - { - //frmMain.AddError("--->>>\"Good\"\t\"{0}\"\t\"{1}\"\t\"{2}\"\t\"{3}\"\t\"{4}\"\t\"{5}\"", - // procitem.DisplayNumber, (Number ?? "") == "" ? Title : Number, dstyleindx, format, docstyle, ds.Name); - return (int)ds.Index; - } - } - frmMain.AddError("Bad OldToNew Document Style {0}:{1} dStyleIndex = '{2}'\r\n{3} - Missing OldToNew {4}", - procitem.DisplayNumber, (Number ?? "") == "" ? Title : Number, dstyleindx, format, docstyle); - //frmMain.AddError("--->>>\"Bad\"\t\"{0}\"\t\"{1}\"\t\"{2}\"\t\"{3}\"\t\"{4}\"\t\"{5}\"", - // procitem.DisplayNumber, (Number ?? "") == "" ? Title : Number, dstyleindx, format, docstyle, ds0.Name); - return 0; // Default is Zero - } - //private FormatInfo GetFormat(Item procitem, DocVersion docver) - //{ - // return procitem.MyItemInfo.ActiveFormat; - // //while (procitem.MyItemInfo.a .MyContent.MyFormat == null) - // //{ - // // // find the first sibling - // // while (procitem.PreviousID != null) - // // procitem = procitem.MyPrevious; - // // if (procitem.ItemPartCount == 0) return docver.MyDocVersionInfo.ActiveFormat; - // // // find the parent node - // // procitem = procitem.ItemParts[0].MyContent.ContentItems[0].MyItem; - // //} - // //return procitem.MyContent.MyFormat; - //} - //private FormatInfo GetFormat(DocVersion docver) - //{ - // if (docver.MyDocVersionInfo.MyFormat != null) return docver.MyDocVersionInfo.MyFormat; - // return GetFormat(docver.MyDocVersionInfo.MyFolder); - //} - //private FormatInfo GetFormat(FolderInfo folder) - //{ - // if (folder.MyFormat != null) return folder.MyFolderInfo.MyFormat; - // return GetFormat(folder.MyParent); - //} - private string SectTitle(OleDbConnection cn, DataRowView dr, bool UseMultiLineSectionTitle, bool ConvertCaret) - { - string tbuff = null; - string menustr = null; - - if (UseMultiLineSectionTitle) - { - bool titleInMemo = false; - // for accessory pages... - if (dr["Step"].ToString().Substring(1, 1) != "0") - { - // The long section title is stored on a record with the "~" character. - // This was done since originally the actual accessory page data was stored in the memo - // field, so the long title could not be stored there, another record had to be used. - OleDbDataAdapter da = new OleDbDataAdapter("select * from " + ProcFileName + " where [Step] = '" + dr["Step"].ToString().Substring(0, 1) + "~';", cn); - DataSet ds = new DataSet(); - try - { - da.Fill(ds); - if (ds.Tables[0].Rows.Count == 1) - { - DataRow row = ds.Tables[0].Rows[0]; - tbuff = TextConvert.ConvertText(row["Textm"].ToString(),ConvertCaret); - if (tbuff != null && tbuff != "") titleInMemo = true; - } - else // no long section title existed for this accessory page - tbuff = TextConvert.ConvertText(dr["Text"].ToString().PadRight(130, ' ').Substring(0, 75).TrimEnd(), ConvertCaret); - } - catch (Exception ex) - { - frmMain.AddError(ex, string.Format("Error getting long section title, procedure: {0}",ProcFileName)); - log.ErrorFormat("Error getting long section title, procedure: {0}, error: {1}", ProcFileName,ex.Message); - } - da.Dispose(); - } - // For step sections, the long section title is stored on the section record - // (see above comment for accessory pages to see the difference) - else - { - string t = dr["Text"].ToString().PadRight(80, ' ').Substring(0, 75).TrimEnd(); - string tm = dr["TextM"].ToString().Trim(); - string secttitle = tm == null || tm == "" ? t : tm; - tbuff = TextConvert.ConvertText(secttitle, ConvertCaret); - } - - //// TESTS were run & it looked like that whitespace was removed before saving, - //// so, put up a message box if find out otherwise.... - //int nl = tbuff.IndexOf("\n"); - //if (nl > -1) - // MessageBox.Show("multiline text for section title, fix this!!"); - - //// remove newlines & any other escape/whitespace chars. - int nl = tbuff.IndexOf("\n"); - if (nl > -1 || titleInMemo) - { - - string tmpstr = tbuff.Replace("\r", ""); - tmpstr = tmpstr.Replace("\t", ""); - tmpstr = tmpstr.Replace("\n", " "); - // get rid of multiple spaces - while (tmpstr.IndexOf(" ") > -1) tmpstr = tmpstr.Replace(" ", " "); - tbuff = tmpstr; - if (tbuff.Substring(tbuff.Length - 1, 1) == " ") tbuff = tbuff.Substring(0, tbuff.Length - 1); - menustr = tbuff; - } - else - { - if (tbuff==null||tbuff=="") menustr = TextConvert.ConvertText(dr["Text"].ToString().PadRight(80, ' ').Substring(0, 75).TrimEnd(), ConvertCaret); - else menustr = tbuff; - } - } - else - { // format does not include long section title - menustr = TextConvert.ConvertText(dr["Text"].ToString().PadRight(80, ' ').Substring(0, 75).TrimEnd(), ConvertCaret); - } - return menustr; - } - private static Color _OverrideColor = Color.Red; - - public static Color OverrideColor - { - get { return Loader._OverrideColor; } - set { Loader._OverrideColor = value; } - } - private bool hasFloatingFoldouts = false; - private Dictionary FoldoutStpSeq = null; - private List FloatingFoldoutHLS = null; - private Item MigrateSection(Item procitem, string procnum, OleDbConnection cn, DataRowView dr, DataTable dt, Item FromItem, bool hasSubSection, string pth, DocVersion docver, FormatInfo activeFormat,Content cont) - { - Int32 thesectid = 0; - bool isautogen = false; - string stype = dr["type"].ToString(); - string s = dr["text"].ToString().PadRight(130, ' '); - string rid = dr["recid"].ToString(); // RECID - string num = s.Substring(85, 20).TrimEnd(); - string fmt = s.Substring(75, 8).TrimEnd(); // base format name - string ufmt = s.Substring(83, 2).TrimEnd(); // user format number (see TSectEditDlg::SetupWindow() PROMSNT\EXE\WINED\SECTEDIT.CPP) - // Build the format name if one was specified for this section. - if (fmt == "") - fmt = null; - else if (ufmt.Length == 2 && char.IsDigit(ufmt[0]) && char.IsDigit(ufmt[1])) // user format reference must be two digits - fmt = fmt.PadRight(8,' ') + ufmt; // append the user format reference - bool ismulti = false; - bool conv_caret = true; - - // sectFormat is a local that represents the format to be used by this section. - // Note that if the format is set for this section, check it against what the inherited - // value would be (for example, what the format is for the set), if they are the same - // clear the format at the section level. - FormatInfo sectFormat = null; - FormatInfo docverFormat = activeFormat;//docver.MyDocVersionInfo.ActiveFormat; - if (fmt != null&& fmt !="") // Is there a long section title (from format flag) - sectFormat = GetFormat(fmt); - else // either from this format, or the plant. - sectFormat = docverFormat; - if (sectFormat != null) - { - ismulti = sectFormat.PlantFormat.FormatData.SectData.StepSectionData.UseMultiLineSectionTitle; - conv_caret = sectFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta; - hasFloatingFoldouts = sectFormat.PlantFormat.FormatData.PrintData.AlternateFloatingFoldout; - } - if (fmt != null && fmt != "") if (fmt == docverFormat.Name) fmt = null; - string title = SectTitle(cn, dr, ismulti, conv_caret); - string init = dr["initials"].ToString().Trim(); - string sequence = dr["CSequence"].ToString().PadRight(10); - string step = dr["CStep"].ToString(); - - int libDocid = 0; - - DateTime dts = GetDTS(dr["Date"].ToString(), dr["Time"].ToString()); - - ConfigInfo ci = new ConfigInfo(null); - ci.AddItem("History", "RecID", rid); - ci.AddItem("History", "ProcName", ProcFileName.ToUpper()); - if (MultiUnitCount > 0) - { - string apple = AddApplicability(rid); - if(apple != null) - ci.AddItem("MasterSlave", "Applicability", apple); - } - ci.AddItem("Section", "OldType", stype); - - - // for steps sections... - // Step Section Header Format: - // A0 1X2S51 &Y - // ^^^^^^^^^^^^ - // ||||||||||||| - // ||||||||||||`- 'Y','N', or blank signals to print section header - lib/section/addsec.c - // |||||||||||`-- (bits) Auto Indent, Editable Data, Checkoff Header Type - lib/section/addsec.c - // ||||||||||`--- blank - // ||||||||`----- Link With Enhanced Document ' '-Default(not determined) 0-NO 1-YES - // |||||||`------ MetaSection - number of subsections is given - // ||||||`------- S-Separate(PageBreak); T-Continuous; ' '-Default - // |||||`-------- Column mode (1,2,3,' '-default) - // ||||`--------- X -only proc section; x -orig. proc; ' ' -other - // |||`---------- Position within the procedure - // ||`----------- ALWAYS leave blank - // |`------------ Step Section Header marker - // `------------- Internal section number (starts at A) - char cbittst = sequence.PadRight(10)[8]; - if (cbittst == ' ') cbittst = '\0'; - if (step.Substring(1, 1) == "0") - { - // set pagination, continuous, separate. If blank, don't create attribute - uses format default. - if (sequence.Substring(2, 1) != " ") - { - ci.AddItem("Section", "OriginalSteps", "Y"); - } - if (sequence.Substring(4, 1) == "T") // continuous - { - ci.AddItem("Section", "Pagination", "1"); - } - else if (sequence.Substring(4, 1) == "S") // separate - { - ci.AddItem("Section", "Pagination", "2"); - } - - // Step: linked to enhanced (!exist = N) - if (sequence.Substring(7, 1) == "1") - { - ci.AddItem("Step", "LnkEnh", "Y"); - } - // determine if autogenerated section (!exist = N) - // Placekeeper (Calvert) - if ((cbittst & PLACEKEEPER) > 1) - { - isautogen = true; - //ci.AddItem("Section", "AutoGen", "Y"); - ci.AddItem("Section", "Placekeeper", "Y"); - } - // Phonelist (Clavert) - if ((cbittst & PHONELIST) > 1) - ci.AddItem("Section", "Phonelist", "Y"); - // Here are subsection flags, i.e. the following are only set if this - // is a subsection. - bool didsub = false; - if (hasSubSection) - { - // Subsection: editable (!exist = N, i.e. default is 'not editable') - if ((cbittst & EDDATA) > 0) - { - ci.AddItem("SubSection", "Edit", "Y"); - } - // Subsection: autoindent (!exist = Y, i.e. default is 'autoindented') - if ((cbittst & AUTOIND) > 0) - { - ci.AddItem("SubSection", "AutoIndent", "N"); - } - } - // Section: print section headers (!exist = Y, i.e. default is 'print section header') - // Note that this can be on a section or subsection. 16bit code has this for both - // levels and it was stored either as a bit set on seq[8] (for subsections, i.e. - // this subsection does not have subsections under it) or was a character in seq[9] (Y or N), - // i.e. this section has subsections. Make this just one flag now. - if (hasSubSection && ((cbittst & PH) == 0)) - { - didsub = true; - ci.AddItem("Section", "PrintHdr", "N"); - } - if (!hasSubSection && sequence.Substring(9, 1) == "N") - { - ci.AddItem("Section", "PrintHdr", "N"); - } - // Save section level Checkoff information - int chkOffType = (rid[0] & 0x007F) - '0'; - if (rid[0] == '\u2591') //for SUM,CAT,MCG with only 2 checkoff options and default checkoff is enabled - chkOffType = 1; //this diables checkoffs for this section - if (chkOffType > 0) - ci.AddItem("Section", "CheckoffSelection", chkOffType.ToString()); - - if (stype.Length > 1) - { - int chkOffHeading = (stype[1] & 0x007F) - '0'; - if (chkOffHeading > 0) - ci.AddItem("Section", "CheckoffHeading", chkOffHeading.ToString()); - } - } - else - { - // Accessory Section Format: - // AI 1 2 - // ^^ ^ ^ - // || | | - // || | `- # of pages (ASCII value minus 48) - // || `--- Position within the procedure - // |`----- Acc. page type (A,I, or F) - // `------ Internal section number (starts at A) - ci.AddItem("Section", "NumPages", sequence.Substring(3, 1)); - - // see if it's a libdoc too - string mystep = null; - try - { - mystep = dr["Step"].ToString(); - } - catch (Exception ex) - { - Console.WriteLine("testing - error = {0}", ex.Message); - } - string thekey = procnum.PadRight(20) + ((mystep!=null)?mystep.Substring(0,1).PadRight(10):step.Substring(0, 1).PadRight(10)); - if (dicLibDocRef.ContainsKey(thekey)) - { - // if it is a library document, see if the section record has already been - // saved. If it has, just use this section id, otherwise, create the - // section record with info from the library document file. - libDocid = dicLibDocRef[thekey]; - } - } - // Both step & word doc sections can be in toc - // determine if TOC element (!exist = N) - if ((cbittst & TOC) > 1) - { - ci.AddItem("Section", "TOC", "Y"); - } - //Console.WriteLine("Before AddSection"); - Item secitem = AddSection(procitem, num, title, stype, dts, init, ci, step + sequence, fmt, libDocid, pth, FromItem, sectFormat); - //Console.WriteLine("After AddSection"); - if (secitem == null) - throw (new Exception("Null parameter in AddSection")); - if (hasFloatingFoldouts) - { - if (FoldoutStpSeq == null) FoldoutStpSeq = new Dictionary(); - if (step[1] == 'F') FoldoutStpSeq.Add(step, secitem.ItemID); - } - if (cont != null) - { - // ContentsParts.Add can use 'fromtype', item - fromtype here = 2, section - AddPartRecursive(cont, 2, secitem); - //if (cont.ContentParts.Contains(2)) - //{ - // foreach (ContentPart part in cont.ContentParts) - // { - // if (part.FromType == 2) - // { - // Item ii = Item.Get(part.ItemID); - // ii.MyContent.ContentParts.Add(2, secitem); - // ii.Save(); - // break; - // } - // } - //} - //else - // cont.ContentParts.Add(2, secitem); - if (cont.MyZContent.OldStepSequence == null || cont.MyZContent.OldStepSequence == "") cont.MyZContent.OldStepSequence = ProcNumber; - if (!cont.IsSavable) ErrorRpt.ErrorReport(cont); - cont.Save(); - } - thesectid = secitem.ItemID; - using (ItemInfo seciteminfo = ItemInfo.Get(thesectid)) - { - if (seciteminfo.MyContent.ContentEntryCount != 0) - { - using (DocumentInfo di = seciteminfo.MyContent.MyEntry.MyDocument) - { - bool success = MSWordToPDF.UpdateDocPdf(di, OverrideColor, seciteminfo); - if (!success) - { - frmMain.AddError("Error in ", "UpdateDocPdf"); - log.Error(string.Format("UpdateDocPdf - Error creating Pdf for Word Doc: {0},{1}", procnum, secitem.MyContent.Number + secitem.MyContent.Text)); - } - } - } - } - // if the editsectid hasn't been set yet, set it to this section id, i.e. the first - // one processed. Then if this section has the original edit section flag (sequence[2]) - // save the id. The first step is necessary in case there is no original edit section - // flag set, so that the first section is the default one to get opened in edit. - if (EditSectId==0)EditSectId = thesectid; - if (libDocid<1 && step[1] == '0' && (sequence[2] == 'x' || sequence[2] == 'X')) - EditSectId = thesectid; - // ContentType (2 in the following call) are: - // 0 = structure, - // 1 = procedure, - // 2 = section, - // 3 = step - // 4 = branch - - // fromtype values are (see steps.cs too) - // 1 = procedure, - // 2 = section, - // 3 = caution - // 4 = note - // 5 = RNO - // 6 = step - // 7 = table - isautogen = false; //needed for bge - if (!isautogen) - { - // Process the Data Table - First look for High Level Steps - string sQry = string.Format("Step like '[{0}]%' and Sequence='S'", dr["Step"].ToString().Substring(0, 1)); - DataView dv = new DataView(dt, sQry, "StepNo", DataViewRowState.CurrentRows); - Item FrItem = null; - frmMain.pbStepMaximum = dt.Rows.Count-frmMain.pbSectMaximum; - int type = 6; - bool sectionShowed = false; - int firstCharSection = (int)(dr["Step"].ToString()[0]); - foreach (DataRowView drv in dv) - { - int firstCharStep = (int)(drv[0].ToString()[0]); - if (firstCharSection != firstCharStep) - { - if(!sectionShowed) - Console.WriteLine("'Section','{0}','{1}','{2}',{3}", procnum,num,dr["Step"].ToString(), (int)(dr["Step"].ToString()[0])); - sectionShowed = true; - Console.WriteLine("'Skipping Step','{0}','{1}','{2}',{3}", procnum,num,drv["Step"].ToString(), (int)(drv["Step"].ToString()[0])); - } - else - { - FrItem = MigrateStep(cn, dt, drv, FrItem, conv_caret, pth, docver, sectFormat, secitem, type); - if (hasFloatingFoldouts && (sequence[2] == 'x' || sequence[2] == 'X')) - { - if (FloatingFoldoutHLS == null) FloatingFoldoutHLS = new List(); - FloatingFoldoutHLS.Add(FrItem.ItemID); - } - type = 0; // Only add ContentPart for first child - //if (secitem.MyContent.ContentParts.Count == 0) - //{ - // // type 6 is step - // secitem.MyContent.ContentParts.Add(6, FrItem); - // if (!secitem.MyContent.IsSavable) ErrorRpt.ErrorReport(secitem.MyContent); - // secitem.MyContent.Save(); - //} - } - } - dv.Dispose(); - } - return secitem; - } - - private void AddPartRecursive(Content cont, int fromType, Item secitem) - { - if (cont.ContentParts.Contains(fromType)) - { - foreach (ContentPart part in cont.ContentParts) - { - if (part.FromType == fromType) - { - Item ii = Item.Get(part.ItemID); - AddPartRecursive(ii.MyContent, fromType, secitem); - ii.Save(); - break; - } - } - } - else - cont.ContentParts.Add(fromType, secitem); - } - private static Dictionary ApplesToOranges; - private static void ResetApplesToOranges() - { - ApplesToOranges = new Dictionary(); - } - private string AddApplicability(string recnum) - { - if (!MyProcAPL.ContainsKey(recnum)) - return null; - string apple = MyProcAPL[recnum]; - return LookupOrange(apple); - - } - private string LookupOrange(string apple) - { - if (!ApplesToOranges.ContainsKey(apple)) - { - ApplesToOranges.Add(apple, AddApplicability1(apple)); - Console.WriteLine("Apple: '{0}' - Orange: '{1}'", apple, ApplesToOranges[apple]); - } - return ApplesToOranges[apple]; - } - private string AddApplicability1(string apple) - { - if (apple == "40000000") - return "0"; - UInt32 mask = 0; - foreach (int i in Old2NewApple.Keys) - mask |= (uint)(1 << (i - 1)); - UInt32 val = UInt32.Parse(apple, System.Globalization.NumberStyles.HexNumber); - //UInt32 val = UInt32.Parse(apple); - if (val == 0) - return null; - val &= mask; - if (val == 0) - return "0"; - if (val == mask) - return null; - int j = 1; - StringBuilder sb = new StringBuilder(); - string sep = string.Empty; - while (val != 0) - { - if ((val & 1u) == 1u) - { - sb.Append(sep + Old2NewApple[j].ToString()); - sep = ","; - } - j++; - val = val >> 1; - } - return sb.ToString(); - } - private void LoadSection(DataSet ds, OleDbDataAdapter da, string FileName) - { - try - { - da.Fill(ds, "Sections"); - DataTable dt = ds.Tables["Sections"]; - dt.CaseSensitive = true; - dt.Columns.Add("CStep", System.Type.GetType("System.String")); - dt.Columns.Add("CSequence", System.Type.GetType("System.String")); - // set the cstep & csequence - couldn't do it in the add because it needed a sql function - foreach (DataRow drw in ds.Tables["Sections"].Rows) - { - drw["CStep"] = TextConvert.ConvertSeq(drw["Step"].ToString()); - drw["CSequence"] = TextConvert.ConvertSeq(drw["Sequence"].ToString()); - } - dt.Columns.Add("StepNo", System.Type.GetType("System.Int32"), "Convert(Convert(Substring(CStep,2,1),'System.Char'),'System.Int32')-48"); - dt.Columns.Add("Level", System.Type.GetType("System.Int32"), "Len(CSequence)"); - dt.Columns.Add("SubStepNo", System.Type.GetType("System.Int32"), "Convert(Convert(Substring(CSequence,Len(CSequence),1),'System.Char'),'System.Int32')-48"); - dt.Columns.Add("locb", System.Type.GetType("System.Int32"), "Convert(Convert(Substring(CSequence,2,1),'System.Char'),'System.Int32')-48"); - } - catch (Exception ex) - { - FileInfo fi; - switch (ex.Message) - { - case "Index file not found.":// then delete inf file - fi = new FileInfo(frmMain.ProcedureSetPath + "\\" + FileName + ".inf"); - fi.Delete(); - LoadSection(ds, da, FileName);// Try Again - break; - case "External table is not in the expected format.": // then pad dbt file with 128 zeros. - fi = new FileInfo(frmMain.ProcedureSetPath + "\\" + FileName + ".dbt"); - FileStream fs = fi.OpenWrite(); - fs.Position = fs.Length; - byte[] buf = new byte[128]; - for (int i = 0; i < 128; i++) buf[i] = 0; - fs.Write(buf, 0, 128); - fs.Close(); - LoadSection(ds, da, FileName);// Try Again - break; - default: // Unrecognized error - frmMain.AddError(ex, "Unrecognized error in LoadSection {0}", FileName); - Console.WriteLine("Unrecognized error: error = {0}", ex.Message); - log.ErrorFormat("File - {0}.DBF\r\n\r\n{1}\r\n\r\n{2}", FileName, ex.Message, ex.InnerException); - break; - } - } - } - } -} diff --git a/PROMS/DataLoader/Sections.cs.bak b/PROMS/DataLoader/Sections.cs.bak deleted file mode 100644 index f00fe4f8..00000000 --- a/PROMS/DataLoader/Sections.cs.bak +++ /dev/null @@ -1,543 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.Xml.XPath; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; - - -namespace DataLoader -{ - public partial class Loader - { - private Dictionary dicOldToNew; - private Item AddSection(Item procitem, string Number, string Title, string SecType, DateTime Dts, string Userid, ConfigInfo ci, string stpseq, string fmt, int libdocid, string pth, Item FromItem, DocVersion docver) - { - frmMain.UpdateLabels(0, 1, 0); - try - { - FormatInfo format = null; - - // Tie the section to format used, this will add the format xml if it doesn't exist in - // the database yet. Note that if there is no format at this level then none should - // be set so that the inheritance works correctly. - if (fmt != null && fmt != "") format = GetFormat(fmt); - - // Find the docstyle based on the section type (step[1]) & the 'type' from the dbf - // record sectype[0]) - string dstyleindx = ((stpseq == null || stpseq == "") ? " " : stpseq.Substring(1, 1)) + ((SecType==null||SecType == "") ? " " : SecType.Substring(0, 1)); - int docstyleindx = GetDocStyleIndx(dstyleindx, format, procitem, docver); - - // tack on the column mode - add to config xml for node. - if (stpseq != null && stpseq.Substring(1, 1) == "0" && stpseq.Substring(5, 1) != " ") - { - if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Section", "ColumnMode", stpseq.Substring(5, 1)); - } - - // find rtf file (or use the library document temp file) & read it into the field - // acccontent - int Documentid=0; - bool needEntry = false; - if (libdocid != 0 || stpseq.Substring(1, 1) != "0") - { - needEntry = true; - string fname = null; - if (libdocid != 0) - { - Documentid = libdocid; - } - else - { - int num = Convert.ToInt32(stpseq[0]) - 64; - string thenum = num.ToString("d2"); - fname = string.Format("{0}\\rtffiles\\{1}.A{2}", pth, ProcFileName, thenum); - Application.DoEvents(); - SaveSectionDocument(fname, stpseq, SecType, ref Documentid); - if (Documentid == 0) - { - if (MissingDocument==null) MissingDocument = Document.MakeDocument("MISSING FILE IN CONVERSION", null, null, null); - Documentid = MissingDocument.DocID; - } - } - } - if (Userid == null || Userid == "") Userid = "Migration"; - - // test for performance - Content cont; - using(Format fmt2 = format == null ? null : format.Get()) - cont = Content.New(Number, Title, 10000+docstyleindx, fmt2, ci==null?null:ci.ToString(), Dts, Userid); - Entry entry = cont.MyEntry; - if (needEntry) - { - entry.MyDocument = Document.Get(Documentid); - entry.DTS = Dts; - entry.UserID = Userid; - //entry = Entry.MakeEntry(cont.ContentID, Document.Get(Documentid), Dts, Userid); - } - cont.MyZContent.OldStepSequence = ProcNumber + "|" + stpseq; - Item itm = null; - // the stpseq for section records may include a space & some other data. This - // was not part of what is stored in the transition records, so just look at - // the sequence before the space for section records. Then use the first character - // with a '0'. This is what's stored in the transition record, for example, if the - // section was BI, the transition record would have B0 (the reasoning is that - // for steps, this is what could be stored if there were enough steps. - int trindxsp = stpseq.IndexOf(' '); - string trstpseq = trindxsp < 0 ? stpseq : stpseq.Substring(0, 1)+ "0"; - if (dicTrans_ItemIds.ContainsKey(ProcNumber + "|" + trstpseq)) - { - itm = dicTrans_ItemIds[ProcNumber + "|" + trstpseq]; - itm.MyContent = cont; - itm.MyPrevious = FromItem; - itm.DTS = Dts; - itm.UserID = Userid; - if (!itm.IsSavable) ErrorRpt.ErrorReport(itm); - itm.Save(); - dicTrans_ItemIds.Remove(ProcNumber + "|" + trstpseq); - dicTrans_MigrationErrors.Remove(ProcNumber + "|" + trstpseq); - } - else - itm = Item.MakeItem(FromItem, cont, Dts, Userid); - dicTrans_ItemDone[ProcNumber+"|"+trstpseq] = itm; - dicOldStepSequence[itm] = stpseq; - return itm; - } - catch (Exception ex) - { - log.Error("Save Section"); - log.ErrorFormat("oldstepsequence = {0}", stpseq); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - log.ErrorFormat(ex.StackTrace); - } - return null; - } - - private int LookupOldToNew(string lkup) - { - if (dicOldToNew == null) - { - dicOldToNew = new Dictionary(); - //dicOldToNew.Add("", 1); - dicOldToNew.Add("0", 1); - dicOldToNew.Add("0 ", 1); - dicOldToNew.Add("00", 1); - dicOldToNew.Add("01", 2); - dicOldToNew.Add("02", 4); - dicOldToNew.Add("03", 8); - dicOldToNew.Add("04", 16); - dicOldToNew.Add("I", 32); - dicOldToNew.Add("I ", 32); - dicOldToNew.Add("I0", 32); - dicOldToNew.Add("I1", 64); - dicOldToNew.Add("I2", 128); - dicOldToNew.Add("I3", 256); - dicOldToNew.Add("I4", 512); - dicOldToNew.Add("A", 1024); - dicOldToNew.Add("A ", 1024); - dicOldToNew.Add("A0", 1024); - dicOldToNew.Add("A1", 2048); - dicOldToNew.Add("A2", 4096); - dicOldToNew.Add("A3", 8192); - dicOldToNew.Add("A4", 16384); - dicOldToNew.Add("F", 32768); - dicOldToNew.Add("F ", 32768); - dicOldToNew.Add("F0", 32768); - dicOldToNew.Add("F1", 65536); - dicOldToNew.Add("F2", 131072); - dicOldToNew.Add("F3", 262144); - dicOldToNew.Add("F4", 524288); - dicOldToNew.Add("05", 1048576); - dicOldToNew.Add("06", 2097152); - dicOldToNew.Add("07", 4194304); - dicOldToNew.Add("08", 8388608); - dicOldToNew.Add("09", 16777216); - dicOldToNew.Add("0:", 33554432); - dicOldToNew.Add("0;", 67108864); - dicOldToNew.Add("0<", 134217728); - dicOldToNew.Add("0=", 268435456); - dicOldToNew.Add("0>", 536870912); - } - int retval = -1; - try - { - retval = dicOldToNew[lkup]; - } - catch (Exception ex) - { - Console.WriteLine(string.Format("Error in oldtonew {0}", lkup)); - Console.WriteLine(string.Format("Error = {0}", ex.Message)); - } - return retval; - } - private int GetDocStyleIndx(string dstyleindx, FormatInfo format, Item procitem, DocVersion docver) - { - // get the format, if format is set, use it, otherwise walk - if (format == null) - { - format = GetFormat(procitem, docver); - } - int docstyle = LookupOldToNew(dstyleindx); - foreach (DocStyle ds in format.PlantFormat.DocStyles.DocStyleList) - { - if ((ds.OldToNew & docstyle)>0) return (int)ds.Index; - } - Console.WriteLine("Error getting docstyle index"); - return 0; - } - private FormatInfo GetFormat(Item procitem, DocVersion docver) - { - return procitem.MyItemInfo.ActiveFormat; - //while (procitem.MyItemInfo.a .MyContent.MyFormat == null) - //{ - // // find the first sibling - // while (procitem.PreviousID != null) - // procitem = procitem.MyPrevious; - // if (procitem.ItemPartCount == 0) return docver.MyDocVersionInfo.ActiveFormat; - // // find the parent node - // procitem = procitem.ItemParts[0].MyContent.ContentItems[0].MyItem; - //} - //return procitem.MyContent.MyFormat; - } - //private FormatInfo GetFormat(DocVersion docver) - //{ - // if (docver.MyDocVersionInfo.MyFormat != null) return docver.MyDocVersionInfo.MyFormat; - // return GetFormat(docver.MyDocVersionInfo.MyFolder); - //} - //private FormatInfo GetFormat(FolderInfo folder) - //{ - // if (folder.MyFormat != null) return folder.MyFolderInfo.MyFormat; - // return GetFormat(folder.MyParent); - //} - private string SectTitle(OleDbConnection cn, DataRowView dr, bool UseMultiLineSectionTitle, bool ConvertCaret) - { - string tbuff = null; - string menustr = null; - - if (UseMultiLineSectionTitle) - { - bool titleInMemo = false; - // for accessory pages... - if (dr["Step"].ToString().Substring(1, 1) != "0") - { - // The long section title is stored on a record with the "~" character. - // This was done since originally the actual accessory page data was stored in the memo - // field, so the long title could not be stored there, another record had to be used. - OleDbDataAdapter da = new OleDbDataAdapter("select * from " + ProcFileName + " where [Step] like '" + dr["Step"].ToString().Substring(0, 1) + "~';", cn); - DataSet ds = new DataSet(); - try - { - da.Fill(ds); - if (ds.Tables[0].Rows.Count == 1) - { - DataRow row = ds.Tables[0].Rows[0]; - tbuff = TextConvert.ConvertText(row["Textm"].ToString(),ConvertCaret); - if (tbuff != null && tbuff != "") titleInMemo = true; - } - else // no long section title existed for this accessory page - tbuff = TextConvert.ConvertText(dr["Text"].ToString().PadRight(130, ' ').Substring(0, 75).TrimEnd(), ConvertCaret); - } - catch (Exception ex) - { - log.ErrorFormat("Error getting long section title {0}", ex.Message); - } - da.Dispose(); - } - // For step sections, the long section title is stored on the section record - // (see above comment for accessory pages to see the difference) - else - { - tbuff = TextConvert.ConvertText(dr["TextM"].ToString().Trim(), ConvertCaret); - } - - //// TESTS were run & it looked like that whitespace was removed before saving, - //// so, put up a message box if find out otherwise.... - //int nl = tbuff.IndexOf("\n"); - //if (nl > -1) - // MessageBox.Show("multiline text for section title, fix this!!"); - - //// remove newlines & any other escape/whitespace chars. - int nl = tbuff.IndexOf("\n"); - if (nl > -1 || titleInMemo) - { - - string tmpstr = tbuff.Replace("\r", ""); - tmpstr = tmpstr.Replace("\t", ""); - tmpstr = tmpstr.Replace("\n", " "); - // get rid of multiple spaces - while (tmpstr.IndexOf(" ") > -1) tmpstr = tmpstr.Replace(" ", " "); - tbuff = tmpstr; - if (tbuff.Substring(tbuff.Length - 1, 1) == " ") tbuff = tbuff.Substring(0, tbuff.Length - 1); - menustr = tbuff; - } - else - { - menustr = TextConvert.ConvertText(dr["Text"].ToString().PadRight(80, ' ').Substring(0, 75).TrimEnd(), ConvertCaret); - } - } - else - { // format does not include long section title - menustr = TextConvert.ConvertText(dr["Text"].ToString().PadRight(80, ' ').Substring(0, 75).TrimEnd(), ConvertCaret); - } - return menustr; - } - private Item MigrateSection(Item procitem, string procnum, OleDbConnection cn, DataRowView dr, DataTable dt, Item FromItem, bool isSubSection, string pth, DocVersion docver) - { - Int32 thesectid = 0; - bool isautogen = false; - string stype = dr["type"].ToString(); - string s = dr["text"].ToString().PadRight(130, ' '); - string num = s.Substring(85, 20).TrimEnd(); - string fmt = s.Substring(75, 10).TrimEnd(); - if (fmt == "") fmt = null; - bool ismulti = false; - bool conv_caret = true; - - // sectFormat is a local that represents the format to be used by this section. - // Note that if the format is set for this section, check it against what the inherited - // value would be (for example, what the format is for the set), if they are the same - // clear the format at the section level. - FormatInfo sectFormat = null; - FormatInfo docverFormat = docver.MyDocVersionInfo.ActiveFormat; - if (fmt != null&& fmt !="") // Is there a long section title (from format flag) - sectFormat = GetFormat(fmt); - else // either from this format, or the plant. - sectFormat = docverFormat; - if (sectFormat != null) - { - ismulti = sectFormat.PlantFormat.FormatData.SectData.StepSectionData.UseMultiLineSectionTitle; - conv_caret = sectFormat.PlantFormat.FormatData.SectData.ConvertCaretToDelta; - } - if (fmt != null && fmt != "") if (fmt == docverFormat.Name) fmt = null; - string title = SectTitle(cn, dr, ismulti, conv_caret); - string init = dr["initials"].ToString().Trim(); - string sequence = dr["CSequence"].ToString().PadRight(10); - string step = dr["CStep"].ToString(); - int libDocid = 0; - - DateTime dts = GetDTS(dr["Date"].ToString(), dr["Time"].ToString()); - - ConfigInfo ci = new ConfigInfo(null); - ci.AddItem("Section", "OldType", stype); - - - // for steps sections... - // Step Section Header Format: - // A0 1X2S51 &Y - // ^^^^^^^^^^^^ - // ||||||||||||| - // ||||||||||||`- 'Y','N', or blank signals to print section header - lib/section/addsec.c - // |||||||||||`-- (bits) Auto Indent, Editable Data, Checkoff Header Type - lib/section/addsec.c - // ||||||||||`--- blank - // ||||||||`----- Link With Enhanced Document ' '-Default(not determined) 0-NO 1-YES - // |||||||`------ MetaSection - number of subsections is given - // ||||||`------- S-Separate(PageBreak); T-Continuous; ' '-Default - // |||||`-------- Column mode (1,2,3,' '-default) - // ||||`--------- X -only proc section; x -orig. proc; ' ' -other - // |||`---------- Position within the procedure - // ||`----------- ALWAYS leave blank - // |`------------ Step Section Header marker - // `------------- Internal section number (starts at A) - - if (step.Substring(1, 1) == "0") - { - // if this section has the original edit section flag (sequence[2]) save the id. - - // set pagination, continuous, separate. If blank, don't create attribute - uses format default. - if (sequence.Substring(4, 1) == "T") - { - ci.AddItem("Section", "Pagination", "C"); - } - else if (sequence.Substring(4, 1) == "S") - { - ci.AddItem("Section", "Pagination", "S"); - } - - // Step: linked to enhanced (!exist = N) - if (sequence.Substring(7, 1) == "1") - { - ci.AddItem("Step", "LnkEnh", "Y"); - } - char cbittst = sequence.PadRight(10)[8]; - if (cbittst == ' ') - cbittst = '\0'; - else - { - // determine if TOC element (!exist = N) - if ((cbittst & TOC) > 1) - { - ci.AddItem("Section", "TOC", "Y"); - } - // determine if autogenerated section (!exist = N) - if ((cbittst & AUTOGEN) > 1) - { - isautogen = true; - ci.AddItem("Section", "AutoGen", "Y"); - } - } - // Here are subsection flags, i.e. the following are only set if this - // is a subsection. - bool didsub = false; - if (isSubSection) - { - // Subsection: editable (!exist = Y) - if ((cbittst & EDDATA) > 0) - { - ci.AddItem("SubSection", "Edit", "N"); - } - - // Subsection: print section headers (!exist = Y) - if ((cbittst & PH) > 0) - { - didsub = true; - ci.AddItem("SubSection", "PH", "N"); - } - - // Subsection: autoindent (!exist = Y) - if ((cbittst & AUTOIND) > 0) - { - ci.AddItem("SubSection", "AutoIndent", "N"); - } - } - if (!didsub && sequence.Substring(4, 1) == "N") - { - ci.AddItem("SubSection", "PH", "N"); - } - } - else - { - // Accessory Section Format: - // AI 1 2 - // ^^ ^ ^ - // || | | - // || | `- # of pages (ASCII value minus 48) - // || `--- Position within the procedure - // |`----- Acc. page type (A,I, or F) - // `------ Internal section number (starts at A) - ci.AddItem("Section", "NumPages", sequence.Substring(3, 1)); - - // see if it's a libdoc too - string thekey = procnum.PadRight(20) + step.Substring(0, 1).PadRight(10); - if (dicLibDocRef.ContainsKey(thekey)) - { - // if it is a library document, see if the section record has already been - // saved. If it has, just use this section id, otherwise, create the - // section record with info from the library document file. - libDocid = dicLibDocRef[thekey]; - } - } - Item secitem = AddSection(procitem, num, title, stype, dts, init, ci, step + sequence, fmt, libDocid, pth, FromItem, docver); - thesectid = secitem.ItemID; - - // if the editsectid hasn't been set yet, set it to this section id, i.e. the first - // one processed. Then if this section has the original edit section flag (sequence[2]) - // save the id. The first step is necessary in case there is no original edit section - // flag set, so that the first section is the default one to get opened in edit. - if (EditSectId==0)EditSectId = thesectid; - if (libDocid<1 && step[1] == '0' && (sequence[2] == 'x' || sequence[2] == 'X')) - EditSectId = thesectid; - // ContentType (2 in the following call) are: - // 0 = structure, - // 1 = procedure, - // 2 = section, - // 3 = step - // 4 = branch - - // fromtype values are (see steps.cs too) - // 1 = procedure, - // 2 = section, - // 3 = caution - // 4 = note - // 5 = RNO - // 6 = step - // 7 = table - - if (!isautogen) - { - // Process the Data Table - First look for High Level Steps - string sQry = string.Format("Step like '[{0}]%' and Sequence='S'", dr["Step"].ToString().Substring(0, 1)); - DataView dv = new DataView(dt, sQry, "StepNo", DataViewRowState.CurrentRows); - Item FrItem = null; - frmMain.pbStepMaximum = dt.Rows.Count; - frmMain.pbStepValue = 0; - foreach (DataRowView drv in dv) - { - FrItem = MigrateStep(cn, dt, drv, FrItem, conv_caret, pth, docver); - if (secitem.MyContent.ContentParts.Count == 0) - { - // type 6 is step - secitem.MyContent.ContentParts.Add(6, FrItem); - if (!secitem.MyContent.IsSavable) ErrorRpt.ErrorReport(secitem.MyContent); - secitem.MyContent.Save(); - } - } - } - return secitem; - } - private void LoadSection(DataSet ds, OleDbDataAdapter da, string FileName) - { - try - { - da.Fill(ds, "Sections"); - DataTable dt = ds.Tables["Sections"]; - dt.CaseSensitive = true; - dt.Columns.Add("CStep", System.Type.GetType("System.String")); - dt.Columns.Add("CSequence", System.Type.GetType("System.String")); - // set the cstep & csequence - couldn't do it in the add because it needed a sql function - foreach (DataRow drw in ds.Tables["Sections"].Rows) - { - drw["CStep"] = TextConvert.ConvertSeq(drw["Step"].ToString()); - drw["CSequence"] = TextConvert.ConvertSeq(drw["Sequence"].ToString()); - } - dt.Columns.Add("StepNo", System.Type.GetType("System.Int32"), "Convert(Convert(Substring(CStep,2,1),'System.Char'),'System.Int32')-48"); - dt.Columns.Add("Level", System.Type.GetType("System.Int32"), "Len(CSequence)"); - dt.Columns.Add("SubStepNo", System.Type.GetType("System.Int32"), "Convert(Convert(Substring(CSequence,Len(CSequence),1),'System.Char'),'System.Int32')-48"); - dt.Columns.Add("locb", System.Type.GetType("System.Int32"), "Convert(Convert(Substring(CSequence,2,1),'System.Char'),'System.Int32')-48"); - } - - catch (Exception ex) - { - FileInfo fi; - switch (ex.Message) - { - case "Index file not found.":// then delete inf file - fi = new FileInfo(frmMain.tbSourceText + "\\" + FileName + ".inf"); - fi.Delete(); - LoadSection(ds, da, FileName);// Try Again - break; - case "External table is not in the expected format.": // then pad dbt file with 128 zeros. - fi = new FileInfo(frmMain.tbSourceText + "\\" + FileName + ".dbt"); - FileStream fs = fi.OpenWrite(); - fs.Position = fs.Length; - byte[] buf = new byte[128]; - for (int i = 0; i < 128; i++) buf[i] = 0; - fs.Write(buf, 0, 128); - fs.Close(); - LoadSection(ds, da, FileName);// Try Again - break; - default: // Unrecognized error - Console.WriteLine("Unrecognized error: error = {0}", ex.Message); - log.ErrorFormat("File - {0}.DBF\r\n\r\n{1}\r\n\r\n{2}", FileName, ex.Message, ex.InnerException); - break; - } - } - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/Settings.cs b/PROMS/DataLoader/Settings.cs deleted file mode 100644 index 5270133f..00000000 --- a/PROMS/DataLoader/Settings.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace DataLoader.Properties { - - - // This class allows you to handle specific events on the settings class: - // The SettingChanging event is raised before a setting's value is changed. - // The PropertyChanged event is raised after a setting's value is changed. - // The SettingsLoaded event is raised after the setting values are loaded. - // The SettingsSaving event is raised before the setting values are saved. - internal sealed partial class Settings { - - public Settings() { - // // To add event handlers for saving and changing settings, uncomment the lines below: - // - // this.SettingChanging += this.SettingChangingEventHandler; - // - // this.SettingsSaving += this.SettingsSavingEventHandler; - // - } - - private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) { - // Add code to handle the SettingChangingEvent event here. - } - - private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) { - // Add code to handle the SettingsSaving event here. - } - } -} diff --git a/PROMS/DataLoader/Steps.cs b/PROMS/DataLoader/Steps.cs deleted file mode 100644 index ccc34297..00000000 --- a/PROMS/DataLoader/Steps.cs +++ /dev/null @@ -1,722 +0,0 @@ -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; -using System.Text.RegularExpressions; -using Volian.Controls.Library; - -namespace DataLoader -{ - public partial class Loader - { - private Item AddStep(OleDbConnection cn, string StepType, string Textm, string Recid, string stpseq, string structtype, Item FromItem, DateTime dts, string userid, bool conv_caret, string pth, DocVersion docver, FormatInfo fmt,Item parentItem, int frType, string seqRoTran) - { - //if (ProcNumber + "|" + stpseq == "STN FP-202|Q2S2") - // Console.WriteLine("here"); - Content content = null; - Item item = null; - - frmMain.UpdateLabels(0, 0, 1); - ConfigInfo ci = new ConfigInfo(null); - ci.AddItem("History", "RecID", Recid); - ci.AddItem("History", "ProcName", ProcFileName.ToUpper()); - if (MultiUnitCount > 0) - { - string apple = AddApplicability(Recid); - if(apple != null) - ci.AddItem("MasterSlave", "Applicability", apple); - } - string stptext = null; - if (userid == null || userid == "") userid = "Migration"; - int tok = -1; - //char[] chrarr = { '\x1', '\x2', '\x3', '\x5' }; - Textm = Textm.Replace("\\", ""); - char[] chrarr = { '\x1', '\x2', '\x3' }; - try - { - // the textm field has step text, but also may have other text stored - // with it with a 'token' as a separator (see below). - tok = Textm.IndexOfAny(chrarr); - - // This will find a continuous action flag without finding a hanging indent - if (tok == -1 && Textm.Length > 0 && Textm[Textm.Length - 1] == '\x5') - tok = Textm.Length - 1; - - // if this is bge, handle some special cases for bold/underline next that were not - // getting processed from regular expression, as defined in comments for each case below: - if (fmt.PlantFormat.FormatData.PrintData.SpecialCaseCalvert) - { - // get step type, and check its format for bold. BGE had data that was high5 (bolded step) - // with the bold of the next word character, but it was redundant - if (StepType[0] == '\u2591') - StepType = "0" + StepType.Substring(1, StepType.Length - 1); - if (StepType[0] == '\u2592') - StepType = "1" + StepType.Substring(1, StepType.Length - 1); - if (StepType[0] == '\u2524') - StepType = "4" + StepType.Substring(1, StepType.Length - 1); - int stptype = 0; - try - { - stptype = Convert.ToInt32(StepType) + 1; - } - catch (Exception myex) - { - Console.WriteLine(myex.Message); - } - bool isbold = (stptype == 41); // This is hardcoded for BGE only - if (isbold && Textm.Contains("\x13")) Textm = Textm.Replace("\x13", ""); - - // BGE was not migrating a few styles on next word correctly because of the other - // characters after the hex, i.e. '[', '(', etc (see comments on specific cases). - // The regular expression that handled replacing the 'style next word' hex flag was - // not working with those. Handle those special cases here. - - int indxH = -1; - int indxHE = -1; - if (Textm.Contains("\x13")) - { - if (Textm.Contains("\x13[")) // bold before '[' - { - indxH = Textm.IndexOf("\x13["); - indxHE = Textm.IndexOf("]", indxH); - Textm = Textm.Insert(indxHE+1, @"\b0 "); - Textm = Textm.Replace("\x13[", @"\b ["); - } - if (Textm.Contains("\x13(")) // bold before '(' - { - indxH = Textm.IndexOf("\x13("); - indxHE = Textm.IndexOf(")", indxH); - Textm = Textm.Insert(indxHE+1, @"\b0 "); - Textm = Textm.Replace("\x13(", @"\b ("); - } - if (Textm.Contains("\x13{")) // bold before '{' - { - indxH = Textm.IndexOf("\x13{"); - indxHE = Textm.IndexOf(" ", indxH); - Textm = Textm.Insert(indxHE + 1, @"\b0 "); - Textm = Textm.Replace("\x13{", @"\b {"); - } - if (Textm.Contains("\x13}")) // bold before '}' - { - indxH = Textm.IndexOf("\x13}"); - indxHE = Textm.IndexOf(" ", indxH); - if (indxHE == -1) // add the bold off to end of string (no space needed at end) - Textm = Textm + @"\b0"; - else - Textm = Textm.Insert(indxHE + 1, @"\b0 "); - Textm = Textm.Replace("\x13}", @"\b }"); - } - if (Textm.Contains("\x13\xa0")) // bold before hardspace - { - indxH = Textm.IndexOf("\x13\xa0"); - indxHE = Textm.IndexOf(" ", indxH); - if (indxHE == -1) // add the bold off to end of string (no space needed at end) - Textm = Textm + @"\b0"; - else - Textm = Textm.Insert(indxHE + 1, @"\b0 "); - Textm = Textm.Replace("\x13\xa0", "\\b \xa0"); - } - if (Textm.Contains("\x13 ")) // bold before a space, switch bold & space - Textm = Textm.Replace("\x13 ", " \x13"); - } - - // BGE also had special cases for underline next word \x17 - if (Textm.Contains("\x17\\b")) // before bold on - { - indxH = Textm.IndexOf("\x17\\b"); - indxHE = Textm.IndexOf(@"\b0", indxH); - Textm = Textm.Insert(indxHE+1, @"\ulnone "); - Textm = Textm.Replace("\x17\\b", @"\ul\b"); - } - if (Textm.Contains("\x17\x13")) // before bold next word token - { - indxH = Textm.IndexOf("\x17\x13"); - indxHE = Textm.IndexOf(" ", indxH); - Textm = Textm.Insert(indxHE + 1, @"\ulnone "); - Textm = Textm.Replace("\x17\x13", "\\ul\x13"); - } - } - if (tok < 0) - stptext = TextConvert.ConvertText(Textm, conv_caret); - else - stptext = TextConvert.ConvertText(Textm.Substring(0, tok), conv_caret); - //string stpTextOrg = stptext; - - string seqcvt = stpseq; - - //check for Placekeeper flag - if (Recid[0] == 9617) //(Recid[0] != '0') // placekeeper Recid[0] & 0x80 - ci.AddItem("Step", "Placekeeper", "Y"); - else if (Recid[0] == 8801) // sub step Placekeeper with Continuous Action - ci.AddItem("Step", "Placekeeper", "C"); - string newstptyp = null; - bool ManualPagebreak = false; - char cbittst = StepType.PadRight(2)[0]; - byte cbittstb = (byte) StepType.PadRight(2)[0]; - - //Console.WriteLine(string.Format("AddStep() StepType {0} cbitst = {1} OR'd 0x80 = {2}",StepType,Convert.ToInt16(cbittst),(cbittst & 0x80))); - if (cbittst != ' ' && (cbittst & 0xFF80) > 1)//(cbittst & 0x80) > 1) - { - ManualPagebreak = true; - ci.AddItem("Step", "ManualPagebreak", "True"); - // conversion from 16bit characters to 32bit strings handles the higher bits differently. - // Thus we cannot do normal 'or'ing/'and'/ing of 0x7f & 0x80 to just get the step - // type without the pagebreak bit. The following two cases 'hardcode' the steptype - // based on that problem. - if ((Convert.ToInt16(cbittst)) == 9508) //page break on HIGH5 step type (40) - newstptyp = "40"; - else if ((Convert.ToInt16(cbittst)) == 9618) //page break on LOSS OF AC type - newstptyp = "17"; - else - newstptyp = StepType.Substring(1, 1); - } - // Need the content record for the RO & transitions. - //content = Content.MakeContent(null, stptext, 20000 + int.Parse(newstptyp!=null?newstptyp:StepType),null, ManualPagebreak?ci.ToString():null, dts, userid); - // 20000 flags step type item & 1 adjusts for 'base' in format files. - int contenttype = (structtype == "R") ? 20040 : 20001 + int.Parse(newstptyp != null ? newstptyp : StepType); - content = Content.New(null, stptext.Replace("", "\\\\"), contenttype, null, ci.ToString(), dts, userid); - content.MyZContent.OldStepSequence = ProcNumber + "|" + stpseq.TrimEnd(" ".ToCharArray()); ; - - // Before we save it, handle RO & Transitions tokens. - int tokrt = Textm.IndexOf('\x15'); - bool txtdirty = false; - bool isROTable = false; - int rotype = 0; - if (tokrt > -1) - { - txtdirty = true; - stptext = MigrateRos(cn, stptext, seqRoTran, content, docver, conv_caret, ref rotype); - stptext = stptext.TrimEnd(" ".ToCharArray()); - // if this is a table RO, then save a flag in the config - isROTable = (rotype == 2 || rotype == 3); - } - tokrt = Textm.IndexOf('\x3a6'); - if (tokrt > -1) - { - txtdirty = true; - stptext = MigrateRos(cn, stptext, seqRoTran, content, docver, conv_caret, ref rotype); - stptext = stptext.TrimEnd(" ".ToCharArray()); - } - - // 16-bit code has the following two defines. - // #define TransitionMarker 0xC2 - // #define ReferenceMarker 0xCB - // these two characters get converted (to unicode) from ado.net - // use the unicode chars. - char[] chrrotrn = { '\x252C', '\x2566' }; - tokrt = Textm.IndexOfAny(chrrotrn); - _TransitionMigrationErrors = new List(); - if (tokrt > -1) - { - txtdirty = true; - stptext = MigrateTrans(cn, stptext, seqRoTran, content, pth); - stptext = stptext.TrimEnd(" ".ToCharArray()); - } - //string fixStpText = FixStepText(stptext,content.Type); - string fixStpText = ""; - if (IsATable(content.Type)) - { - bool hasBorder = !WithoutBorder(content.Type); - fixStpText = ConvertTableToGrid(stptext, content, fmt, isROTable, hasBorder ? GridLinePattern.Single : GridLinePattern.None ); - frmMain.AddInfo("Memory After Grid Convert {0}", GC.GetTotalMemory(true)); // This will force a Garbage Collection - frmMain.AddInfo("VlnFlexGrid Counts: {0}, {1}, {2}", VlnFlexGrid.CountCreated, VlnFlexGrid.CountNotDisposed, VlnFlexGrid.CountNotFinalized); - frmMain.AddInfo("StepRTB Counts: {0}, {1}, {2}", StepRTB.CountCreated, StepRTB.CountNotDisposed, StepRTB.CountNotFinalized); - int? typ = ConvertTableType(content, fmt); - if (typ != null) content.Type = typ; - else _ContentMigrationErrors.Add(content.ContentID, null); - } - else - fixStpText = FixStepText(stptext); - if (fixStpText != stptext) - { - txtdirty = true; - stptext = fixStpText; - } - if (txtdirty) - { - content.Text = stptext.Replace("", "\\\\"); - //content.Save(); - } - if (!content.IsSavable) ErrorRpt.ErrorReport(content); - List migrationerrors = null; - if (_ContentMigrationErrors.ContainsKey(content.ContentID)) - migrationerrors = _ContentMigrationErrors[content.ContentID]; - content = content.Save(); - // check if already created thru new during transition migration... - if (dicTrans_ItemIds.ContainsKey(ProcNumber + "|" + seqRoTran)) - { - item = dicTrans_ItemIds[ProcNumber + "|" + seqRoTran]; - item.MyPrevious = FromItem; - item.MyContent = content; - item.DTS = dts; - item.UserID = userid; - if (!item.IsSavable) ErrorRpt.ErrorReport(item); - item = item.Save(); - dicTrans_ItemIds.Remove(ProcNumber + "|" + seqRoTran); - dicTrans_MigrationErrors.Remove(ProcNumber + "|" + seqRoTran); - } - else - item = Item.MakeItem(FromItem, content, content.DTS, content.UserID); - - // If we converted a Table to a Grid, then insert an Annotation to alert the user to verify it - if (IsATable(content.Type))//item.MyContent.MyGrid != null) - { - ItemAnnotation ia = item.ItemAnnotations.Add(VerificationRequiredType); - ia.SearchText = "Verify Table Conversion"; - ia.UserID = "Migration"; - item.Save(); - } - if (InvalidROs.Count > 0) - { - foreach (string str in InvalidROs) - { - ItemAnnotation iaro = item.ItemAnnotations.Add(MigrationErrorType); - iaro.SearchText = str; - iaro.UserID = "Migration"; - } - item.Save(); - InvalidROs.Clear(); - } - if (frType > 0) - { - //using (Content c = Content.Get(parentItem.ContentID)) - //{ - // c.ContentParts.Add(frType, item); - // if (!c.IsSavable) ErrorRpt.ErrorReport(c); - // c.Save(); - //} - parentItem.MyContent.ContentParts.Add(frType, item); - if (!parentItem.MyContent.IsSavable) ErrorRpt.ErrorReport(parentItem.MyContent); - parentItem.MyContent.Save(); - } - - // Remove styles that user entered but are automatically done via the format - string tstr = null; - using (ItemInfo myInfo = item.MyItemInfo) // do this so that ItemInfo doesn't stay in cache - tstr = myInfo.RemoveRtfStyles(content.Text, fmt); - if (tstr != content.Text) - { - item.MyContent.Text = tstr; - item.Save(); - } - - if (migrationerrors != null) - { - foreach (string str in migrationerrors) - { - ItemAnnotation ia = item.ItemAnnotations.Add(MigrationErrorType); - ia.SearchText = str; - ia.UserID = "Migration"; - } - if (!item.IsSavable) ErrorRpt.ErrorReport(item); - item.Save(); - } - if (_TransitionMigrationErrors.Count > 0) - { - foreach (string str in _TransitionMigrationErrors) - { - if (!dicTrans_MigrationErrors.ContainsKey(str)) - dicTrans_MigrationErrors.Add(str, new List()); - dicTrans_MigrationErrors[str].Add(item); - } - } - dicTrans_ItemDone[ProcNumber + "|" + seqRoTran] = item; - dicOldStepSequence[content] = seqcvt; - } - catch (Exception ex) - { - frmMain.AddError(ex, "AddStep {0}",stpseq); - //Console.WriteLine("{0} {1}", ex.GetType().Name, ex.Message); - log.Error("Save Step"); - log.ErrorFormat("oldstepsequence = {0}", stpseq); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - log.ErrorFormat(ex.StackTrace); - item = null; - } - - // now add on any support pieces of text associated with the step. - // These include: - // '\1' comment - // '\2' multiple change ids and/or change message - // '\3' linked sequence - // '\3\3'override tab - // '\5' continuous action summary flag (only if last char in string) - // This assumes that these tokens are stored in reverse order that - // they are processed. - - - bool recdirty = false; - try - { - - if (tok >= 0 && tok != Textm.Length) - { - string tkstring = Textm.Substring(tok); - int nxttok = 0; - - if (tkstring[tkstring.Length - 1] == '\x5') // Continuous Action Summary - { - recdirty = true; - //if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Step", "ContActSum", "True"); - tkstring = tkstring.Substring(0, tkstring.Length - 1); // strip off Continuous Action Token - } - - if ((nxttok = tkstring.IndexOf("\x3\x3")) > -1) // Enhanced Override Tab - { - //Console.WriteLine("Override Tab: {0}", tkstring.Substring(nxttok + 1)); - ci.AddItem("Step", "OverrideTab", tkstring.Substring(nxttok + 2)); - recdirty = true; - //recdirty |= AddContentDetail(content, STP_OVR_TAB, tkstring.Substring(nxttok + 2)); - tkstring = tkstring.Substring(0, nxttok); - } - - if ((nxttok = tkstring.IndexOf("\x3")) > -1) //Linked Sequence - { - //Console.WriteLine("Linked Seq: {0}", tkstring.Substring(nxttok + 1)); - ci.AddItem("Step", "LinkedSeq", TextConvert.ConvertSeq(tkstring.Substring(nxttok + 1))); - recdirty = true; - //recdirty |= AddContentDetail(content, STP_LNK_SEQ, TextConvert.ConvertSeq(tkstring.Substring(nxttok + 1))); - tkstring = tkstring.Substring(0, nxttok); - } - // verify that there are format flags for doing multiple change ids (DoMultipleChangeIDs) & - // getting the change bar message from the editor (ChgBarMessageFromEdit), if these - // two flags aren't set, don't migrate the data. - // This was put in to fix B2012-258. An extensive search/debug session was done in 16bit to - // see how these format flags and the data interracted. For OHLP/HLP, which only has - // ChgBarMessageFromEdit flag, the data after the Multiple change id token was not used in - // 16bit, at least anywhere that could be found when running the program through the debugger. - if (fmt.PlantFormat.FormatData.ProcData.ChangeBarData.ChgBarMessageFromEdit && - fmt.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds) - { - if ((nxttok = tkstring.IndexOf("\x2")) > -1) // Multiple Change Ids - { - string tmpchgid = tkstring.Substring(nxttok + 1); - if (tmpchgid.Length > 0) - { - //Console.WriteLine("Multiple Change ID: {0}", tkstring.Substring(nxttok + 1)); - ci.AddItem("Step", "ChangeID", tkstring.Substring(nxttok + 1)); - recdirty = true; - //recdirty |= AddContentDetail(content, STP_MULT_CHGID, tkstring.Substring(nxttok + 1)); - } - tkstring = tkstring.Substring(0, nxttok); - } - } - - if ((nxttok = tkstring.IndexOf("\x1")) > -1) // Comment - { - // add the comment to annotation table. Set type to comment. - //log.InfoFormat("Comment text: {0}", tkstring.Substring(nxttok + 1)); - Annotation annot = Annotation.MakeAnnotation(item, CommentType, null, tkstring.Substring(nxttok + 1), null, dts, userid); - } - } - - // also see if a check-off needs added. - if (Recid[0] != '0' && Recid[0] != '@') // the @ was in some of wolf creek data - we think it's just bad data. - { - recdirty = true; - string chkindx = Recid[0].ToString(); - //if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Step", "CheckOffIndex", chkindx); - } - - // here's where it knows if it's a linked step (or in processstep) - if (Recid[1] != '0') - { - // do linked step stuff. - } - - // if checkoffs or the continuous action summary flag, save the xml. - if (recdirty) - { - if (ci.ItemCount != 0) content.Config = ci.ToString(); - if (!content.IsSavable) ErrorRpt.ErrorReport(content); - content.Save(); - } - } - catch (Exception ex) - { - //Console.WriteLine("Subtexts: {0} {1}", ex.GetType().Name, ex.Message); - frmMain.AddError(ex, "AddStep 2 {0}", stpseq); - log.Error("Save Step part 2"); - log.ErrorFormat("oldstepsequence = {0}", stpseq); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - log.ErrorFormat(ex.StackTrace); - } - return item; - } - - private int? ConvertTableType(Content content, FormatInfo fmt) - { - // set the type to the first format type from this step type walking up the stepdata format - // data until finding a !InActive. - bool inactive = true; - int indx = (int)content.Type - 20000; - while (inactive) - { - StepData stpData = fmt.PlantFormat.FormatData.StepDataList[indx]; - if (!stpData.Inactive) return (Convert.ToInt32(stpData.Index) + 20000); - // find parent node, i.e. Type="parentType" - string parType = stpData.ParentType; - foreach (StepData sd in fmt.PlantFormat.FormatData.StepDataList) - if (parType == sd.Type) indx = (int)sd.Index; - inactive = stpData.Inactive; - } - return null; - } - - private Regex _ReplaceSpaceNewLine = new Regex(@"(?<=\\[^' \\?\r\n\t]*) (?=\r\n)"); - private Regex _ReplaceTokenSpaceToken = new Regex(@"(?<=\\[^' \\?\r\n\t]*) (?=\\)"); - private string FixStepText(string stepText) - { - stepText = stepText.Replace("\xF8", @"\'f8"); - stepText = stepText.Replace(@"\par ", "\r\n"); - stepText = _ReplaceTokenSpaceToken.Replace(stepText, ""); - //stepText = stepText.Replace(@"\v0 \", @"\v0\"); - //Change Token Order to match RTB output - stepText = stepText.Replace(@"\v0\b0", @"\b0\v0"); - stepText = stepText.Replace(@"\b0\ulnone", @"\ulnone\b0"); - stepText = _ReplaceSpaceNewLine.Replace(stepText, ""); - return stepText; - } - - private Regex _RemoveComments = new Regex(@"\\v .*?\\v0( |$)"); - - private string ConvertTableToGrid(string stepText, Content content, FormatInfo fmt, bool isROTable, GridLinePattern border) - { - //string savethis = stepText; - string strGrid = ""; - int tablerodbid = -1; - string tableroid = ""; - string tableroprefix = ""; - string tablerosuffix = ""; - if (isROTable) - { - // parse out and save the ROid and ROdb information - // We will also need to re-attach the RO link prefix and suffix - tableroprefix = @"\v 1) - { - int l = s.Length; - if ("!*".IndexOf(s[l - 2]) > -1) - { - if (l > 2) retval = s.Substring(0, l - 2); - } - else - { - retval = s.Substring(0, l - 1); - } - } - return retval; - } - private string GetStructType(string s) - { - string retval = "S"; - if (s.Length > 1) - { - int l = s.Length; - if ("!*".IndexOf(s[l - 2]) > -1) - { - if (s[l - 2] == '!') retval = "C"; - else retval = "N"; - } - else - { - if (s[l - 1] == '$') retval = "R"; - if (s[l - 1] == '#') retval = "T"; - } - } - return retval; - } - private Item MigrateStep(OleDbConnection cn, DataTable dt, DataRowView drv, Item FromItem, bool conv_caret, string pth, DocVersion docver, FormatInfo fmt, Item parentItem, int frTypeParam) - { - try - { - string sType = GetStructType(drv["CSequence"].ToString()); - Item item = AddStep(cn, drv["Type"].ToString() - , (drv["textm"] == DBNull.Value ? drv["Text"].ToString() : drv["Textm"].ToString()) - , drv["Recid"].ToString(), drv["CStep"].ToString() + drv["CSequence"].ToString(), "S", FromItem // was str - , GetDTS(drv["Date"].ToString(), drv["Time"].ToString()), drv["Initials"].ToString(), conv_caret, pth, docver, fmt, parentItem, frTypeParam - , drv["Step"].ToString() + drv["CSequence"].ToString()); - - //Content cont = Content.MakeContent(null,(drv["textm"] == DBNull.Value ? drv["Text"].ToString() : drv["Textm"].ToString()),drv["Type"]+20000,null,null, - // GetDTS(drv["Date"].ToString(), drv["Time"].ToString()), drv["Initials"].ToString()); - //Item item = Item.MakeItem(FromItem, cont, cont.DTS, cont.UserID); - //Structure str = AddStructure(FromType, FromID, 3, tmpid, drv["CStep"].ToString() + drv["CSequence"].ToString(), - // GetDTS(drv["Date"].ToString(), drv["Time"].ToString()), drv["Initials"].ToString()); - //Step stp = AddStep(cn, drv["Type"].ToString() - // , (drv["textm"] == DBNull.Value ? drv["Text"].ToString() : drv["Textm"].ToString()) - // , drv["Recid"].ToString(), drv["CStep"].ToString() + drv["CSequence"].ToString(), "S", str - // , GetDTS(drv["Date"].ToString(), drv["Time"].ToString()), drv["Initials"].ToString()); - Dictionary dicStep = new Dictionary(); - dicStep[drv["CSequence"].ToString()] = item; - Dictionary> dicStruct = new Dictionary>(); - Dictionary dicBase = new Dictionary(); - dicStruct[drv["CSequence"].ToString()] = dicBase; - dicBase[""] = item; - // Logic to add Sub-steps - string sQry = "CStep = '" + drv["CStep"].ToString() + "' and CSequence <> 'S'"; - // sort order - for sections use currentrows. - DataView dv = new DataView(dt, sQry, "StepNo,Level,SubStepNo", DataViewRowState.CurrentRows); - //dataGrid1.DataSource=dv; - //Loop through DataView and add Steps one at a time - //Console.WriteLine("={0}",drv["Step"]); - int FrType = 0; // type of relationship (not type of step) - Item FrItem = item; - foreach (DataRowView drvs in dv) - { - //Console.WriteLine(">{0}",drvs["CStep"]); - - string sParent = GetParent(drvs["CSequence"].ToString()); - if (dicStep.ContainsKey(sParent)) - { - if (dicStep[sParent] == null) Console.WriteLine("jcb"); - Item itemp = dicStep[sParent]; - sType = GetStructType(drvs["CSequence"].ToString()); - Dictionary dicStr = dicStruct[sParent]; - // check if a step type of 'sType' exists to see if child/sibling - //Content contc = Content.MakeContent(null,(drvs["textm"] == DBNull.Value ? drvs["Text"].ToString() : drvs["Textm"].ToString()),drvs["Type"]+20000,null,null, - // GetDTS(drvs["Date"].ToString(), drvs["Time"].ToString()), drvs["Initials"].ToString())); - Item itemc = null; - if (dicStr.ContainsKey(sType)) // next sibling - { - FrItem = dicStr[sType]; - FrType = 0; - } - else // child of a node - { - FrItem = null; - FrType = (3 + ("CNRST".IndexOf(sType))); - } - - itemc = AddStep(cn, drvs["Type"].ToString() - , (drvs["textm"] == DBNull.Value ? drvs["Text"].ToString() : drvs["Textm"].ToString()) - , drvs["Recid"].ToString(), drvs["CStep"].ToString() + drvs["CSequence"].ToString() - , GetStructType(drvs["sequence"].ToString()), FrItem - , GetDTS(drvs["Date"].ToString(), drvs["Time"].ToString()), drvs["Initials"].ToString(), conv_caret, pth, docver, fmt, itemp, FrType - , drvs["Step"].ToString() + drvs["CSequence"].ToString()); - //if (FrType > 0 ) - //{ - // itemp.MyContent.ContentParts.Add(FrType, itemc); - // if (!itemp.MyContent.IsSavable) ErrorRpt.ErrorReport(itemp.MyContent); - // itemp.MyContent.Save(); - //} - dicStr[sType] = itemc; - dicStruct[drvs["CSequence"].ToString()] = new Dictionary(); - dicStep[drvs["CSequence"].ToString()] = itemc; - } - else - { - log.ErrorFormat("Parent {0} Could not be found for {1}", sParent, drvs["sequence"].ToString()); - } - } - dv.Dispose(); - return item; - } - catch (Exception ex) - { - //Console.WriteLine("{0} {1}", ex.GetType().Name, ex.Message); - frmMain.AddError(ex, "MigrateStep"); - log.Error("PROCESS STEP"); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - log.ErrorFormat(ex.StackTrace); - return null; - } - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/Steps.cs.bak b/PROMS/DataLoader/Steps.cs.bak deleted file mode 100644 index c0ce68be..00000000 --- a/PROMS/DataLoader/Steps.cs.bak +++ /dev/null @@ -1,422 +0,0 @@ -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - public partial class Loader - { - private Item AddStep(OleDbConnection cn, string StepType, string Textm, string Recid, string stpseq, string structtype, Item FromItem, DateTime dts, string userid, bool conv_caret, string pth, DocVersion docver) - { - string whereami = "1"; - Content content = null; - Item item = null; - - frmMain.UpdateLabels(0, 0, 1); - ConfigInfo ci = new ConfigInfo(null); - string stptext = null; - if (userid == null || userid == "") userid = "Migration"; - int tok = -1; - //char[] chrarr = { '\x1', '\x2', '\x3', '\x5' }; - char[] chrarr = { '\x1', '\x2', '\x3' }; - try - { - // the textm field has step text, but also may have other text stored - // with it with a 'token' as a separator (see below). - tok = Textm.IndexOfAny(chrarr); - - // This will find a continuous action flag without finding a hanging indent - if (tok == 0 && Textm[Textm.Length - 1] == '\x5') - tok = Textm.Length - 1; - - if (tok < 0) - stptext = TextConvert.ConvertText(Textm, conv_caret); - else - stptext = TextConvert.ConvertText(Textm.Substring(0, tok), conv_caret); - - string seqcvt = TextConvert.ConvertSeq(stpseq); - - // Figure marker - it should NEVER get here!!! - int tokfig = Textm.IndexOf('\xE8'); - if (tokfig > -1) - { - log.Error("Found a old style figure!"); - log.ErrorFormat("oldstepsequence = {0}", stpseq); - } - string newstptyp = null; - bool ManualPagebreak = false; - char cbittst = StepType.PadRight(2)[0]; - if (cbittst != ' ' && (cbittst & 0x80) > 1) - { - ManualPagebreak = true; - //if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Step", "ManualPagebreak", "True"); - newstptyp = StepType.Substring(1, 1); - } - if (InES32 && stpseq == "A3S11") - Console.WriteLine("here"); - whereami = "2"; - if (InES32) Console.WriteLine("Addstep whereami {0}, stepseq = {1}", whereami, stpseq); - // Need the content record for the RO & transitions. - //content = Content.MakeContent(null, stptext, 20000 + int.Parse(newstptyp!=null?newstptyp:StepType),null, ManualPagebreak?ci.ToString():null, dts, userid); - // 20000 flags step type item & 1 adjusts for 'base' in format files. - int contenttype = (structtype == "R") ? 20040 : 20001 + int.Parse(newstptyp != null ? newstptyp : StepType); - whereami = "2.1"; - if (InES32) Console.WriteLine("Addstep whereami {0}, stepseq = {1}", whereami, stpseq); - content = Content.New(null, stptext, contenttype, null, ManualPagebreak ? ci.ToString() : null, dts, userid); - whereami = "2.1.1"; - if (InES32) Console.WriteLine("Addstep whereami {0}, stepseq = {1}", whereami, stpseq); - content.MyZContent.OldStepSequence = ProcNumber + "|" + stpseq; - whereami = "2.1.2"; - if (InES32) Console.WriteLine("Addstep whereami {0}, stepseq = {1}", whereami, stpseq); - // Before we save it, handle RO & Transitions tokens. - int tokrt = Textm.IndexOf('\x15'); - bool txtdirty = false; - if (tokrt > -1) - { - txtdirty = true; - whereami = "2.2"; - if (InES32) Console.WriteLine("Addstep whereami {0}, stepseq = {1}", whereami, stpseq); - stptext = MigrateRos(cn, stptext, seqcvt, content, docver, conv_caret); - whereami = "2.3"; - if (InES32) Console.WriteLine("Addstep whereami {0}, stepseq = {1}", whereami, stpseq); - stptext = stptext.TrimEnd(" ".ToCharArray()); - } - whereami = "3"; - if (InES32) Console.WriteLine("Addstep whereami {0}", whereami); - // 16-bit code has the following two defines. - // #define TransitionMarker 0xC2 - // #define ReferenceMarker 0xCB - // these two characters get converted (to unicode) from ado.net - // use the unicode chars. - char[] chrrotrn = { '\x252C', '\x2566' }; - tokrt = Textm.IndexOfAny(chrrotrn); - _TransitionMigrationErrors = new List(); - if (tokrt > -1) - { - txtdirty = true; - stptext = MigrateTrans(cn, stptext, seqcvt, content, pth); - stptext = stptext.TrimEnd(" ".ToCharArray()); - } - if (txtdirty) - { - content.Text = stptext; - //content.Save(); - } - whereami = "4"; - if (InES32) Console.WriteLine("Addstep whereami {0}", whereami); - if (!content.IsSavable) ErrorRpt.ErrorReport(content); - List migrationerrors = null; - if (_ContentMigrationErrors.ContainsKey(content.ContentID)) - migrationerrors = _ContentMigrationErrors[content.ContentID]; - content.Save(); - whereami = "5"; - if (InES32) Console.WriteLine("Addstep whereami {0}", whereami); - // check if already created thru new during transition migration... - if (dicTrans_ItemIds.ContainsKey(ProcNumber + "|" + seqcvt)) - { - item = dicTrans_ItemIds[ProcNumber + "|" + seqcvt]; - item.MyPrevious = FromItem; - item.MyContent = content; - item.DTS = dts; - item.UserID = userid; - if (!item.IsSavable) ErrorRpt.ErrorReport(item); - item.Save(); - dicTrans_ItemIds.Remove(ProcNumber + "|" + seqcvt); - dicTrans_MigrationErrors.Remove(ProcNumber + "|" + seqcvt); - } - else - item = Item.MakeItem(FromItem, content, content.DTS, content.UserID); - if (migrationerrors != null) - { - foreach (string str in migrationerrors) - { - ItemAnnotation ia = item.ItemAnnotations.Add(MigrationErrorType); - ia.SearchText = str; - } - if (!item.IsSavable) ErrorRpt.ErrorReport(item); - item.Save(); - } - if (_TransitionMigrationErrors.Count > 0) - { - foreach (string str in _TransitionMigrationErrors) - { - if (!dicTrans_MigrationErrors.ContainsKey(str)) - dicTrans_MigrationErrors.Add(str, new List()); - dicTrans_MigrationErrors[str].Add(item); - } - } - dicTrans_ItemDone[ProcNumber + "|" + seqcvt] = item; - dicOldStepSequence[content] = seqcvt; - } - catch (Exception ex) - { - Console.WriteLine("{0} {1}", ex.GetType().Name, ex.Message); - log.Error("Save Step"); - log.ErrorFormat("oldstepsequence = {0}", stpseq); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - log.ErrorFormat(ex.StackTrace); - item = null; - } - - // now add on any support pieces of text associated with the step. - // These include: - // '\1' comment - // '\2' multiple change ids and/or change message - // '\3' linked sequence - // '\3\3'override tab - // '\5' continuous action summary flag (only if last char in string) - // This assumes that these tokens are stored in reverse order that - // they are processed. - - - bool recdirty = false; - try - { - whereami = "6"; - if (InES32) Console.WriteLine("Addstep whereami {0}", whereami); - if (tok >= 0 && tok != Textm.Length) - { - string tkstring = Textm.Substring(tok); - int nxttok = 0; - - if (tkstring[tkstring.Length - 1] == '\x5') // Continuous Action Summary - { - recdirty = true; - //if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Step", "ContActSum", "True"); - tkstring = tkstring.Substring(0, tkstring.Length - 1); // strip off Continuous Action Token - } - - if ((nxttok = tkstring.IndexOf("\x3\x3")) > -1) // Enhanced Override Tab - { - Console.WriteLine("Override Tab: {0}", tkstring.Substring(nxttok + 1)); - ci.AddItem("Step", "OverrideTab", tkstring.Substring(nxttok + 2)); - recdirty = true; - //recdirty |= AddContentDetail(content, STP_OVR_TAB, tkstring.Substring(nxttok + 2)); - tkstring = tkstring.Substring(0, nxttok); - } - - if ((nxttok = tkstring.IndexOf("\x3")) > -1) //Linked Sequence - { - Console.WriteLine("Linked Seq: {0}", tkstring.Substring(nxttok + 1)); - ci.AddItem("Step", "LinkedSeq", TextConvert.ConvertSeq(tkstring.Substring(nxttok + 1))); - recdirty = true; - //recdirty |= AddContentDetail(content, STP_LNK_SEQ, TextConvert.ConvertSeq(tkstring.Substring(nxttok + 1))); - tkstring = tkstring.Substring(0, nxttok); - } - - if ((nxttok = tkstring.IndexOf("\x2")) > -1) // Multiple Change Ids - { - //Console.WriteLine("Multiple Change ID: {0}", tkstring.Substring(nxttok + 1)); - ci.AddItem("Step", "MultipleChangeID", tkstring.Substring(nxttok + 1)); - recdirty = true; - //recdirty |= AddContentDetail(content, STP_MULT_CHGID, tkstring.Substring(nxttok + 1)); - tkstring = tkstring.Substring(0, nxttok); - } - - if ((nxttok = tkstring.IndexOf("\x1")) > -1) // Comment - { - // add the comment to annotation table. Set type to comment. - Console.WriteLine("Comment text: {0}", tkstring.Substring(nxttok + 1)); - Annotation annot = Annotation.MakeAnnotation(item, CommentType, null, tkstring.Substring(nxttok + 1), null, dts, userid); - } - } - - - // also see if a check-off needs added. - if (Recid[0] != '0') - { - recdirty = true; - string chkindx = Recid[0].ToString(); - //if (ci == null) ci = new ConfigInfo(null); - ci.AddItem("Step", "CheckOffIndex", chkindx); - } - - // here's where it knows if it's a linked step (or in processstep) - if (Recid[1] != '0') - { - // do linked step stuff. - } - - // if checkoffs or the continuous action summary flag, save the xml. - if (recdirty) - { - if (ci.ItemCount != 0) content.Config = ci.ToString(); - if (!content.IsSavable) ErrorRpt.ErrorReport(content); - whereami = "7"; - if (InES32) Console.WriteLine("Addstep whereami {0}", whereami); - content.Save(); - whereami = "8"; - if (InES32) Console.WriteLine("Addstep whereami {0}", whereami); - } - } - catch (Exception ex) - { - Console.WriteLine("Subtexts: {0} {1}", ex.GetType().Name, ex.Message); - log.Error("Save Step part 2"); - log.ErrorFormat("oldstepsequence = {0}", stpseq); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - log.ErrorFormat(ex.StackTrace); - } - return item; - } - - //private static bool AddContentDetail(Content content, int type, string strn) - //{ - // if (strn != null && strn.Trim() != "" ) - // { - // content.ContentDetails.Add(type, strn); - // return true; - // } - // return false; - //} - - private string GetParent(string s) - { - string retval = "S"; - if (s.Length > 1) - { - int l = s.Length; - if ("!*".IndexOf(s[l - 2]) > -1) - { - if (l > 2) retval = s.Substring(0, l - 2); - } - else - { - retval = s.Substring(0, l - 1); - } - } - return retval; - } - private string GetStructType(string s) - { - string retval = "S"; - if (s.Length > 1) - { - int l = s.Length; - if ("!*".IndexOf(s[l - 2]) > -1) - { - if (s[l - 2] == '!') retval = "C"; - else retval = "N"; - } - else - { - if (s[l - 1] == '$') retval = "R"; - if (s[l - 1] == '#') retval = "T"; - } - } - return retval; - } - public bool InES32 = false; - private Item MigrateStep(OleDbConnection cn, DataTable dt, DataRowView drv, Item FromItem, bool conv_caret, string pth, DocVersion docver) - { - //string whereami = "1"; - try - { - string sType = GetStructType(drv["CSequence"].ToString()); - //whereami = "2"; - //if (InES32) Console.WriteLine("MigrateStep whereami {0}", whereami); - Item item = AddStep(cn, drv["Type"].ToString() - , (drv["textm"] == DBNull.Value ? drv["Text"].ToString() : drv["Textm"].ToString()) - , drv["Recid"].ToString(), drv["CStep"].ToString() + drv["CSequence"].ToString(), "S", FromItem // was str - , GetDTS(drv["Date"].ToString(), drv["Time"].ToString()), drv["Initials"].ToString(), conv_caret, pth, docver); - //whereami = "3"; - //if (InES32) Console.WriteLine("MigrateStep whereami {0}", whereami); - //Content cont = Content.MakeContent(null,(drv["textm"] == DBNull.Value ? drv["Text"].ToString() : drv["Textm"].ToString()),drv["Type"]+20000,null,null, - // GetDTS(drv["Date"].ToString(), drv["Time"].ToString()), drv["Initials"].ToString()); - //Item item = Item.MakeItem(FromItem, cont, cont.DTS, cont.UserID); - //Structure str = AddStructure(FromType, FromID, 3, tmpid, drv["CStep"].ToString() + drv["CSequence"].ToString(), - // GetDTS(drv["Date"].ToString(), drv["Time"].ToString()), drv["Initials"].ToString()); - //Step stp = AddStep(cn, drv["Type"].ToString() - // , (drv["textm"] == DBNull.Value ? drv["Text"].ToString() : drv["Textm"].ToString()) - // , drv["Recid"].ToString(), drv["CStep"].ToString() + drv["CSequence"].ToString(), "S", str - // , GetDTS(drv["Date"].ToString(), drv["Time"].ToString()), drv["Initials"].ToString()); - Dictionary dicStep = new Dictionary(); - dicStep[drv["CSequence"].ToString()] = item; - Dictionary> dicStruct = new Dictionary>(); - Dictionary dicBase = new Dictionary(); - dicStruct[drv["CSequence"].ToString()] = dicBase; - dicBase[""] = item; - // Logic to add Sub-steps - string sQry = "CStep = '" + drv["CStep"].ToString() + "' and CSequence <> 'S'"; - // sort order - for sections use currentrows. - //whereami = "4"; - //if (InES32) Console.WriteLine("MigrateStep whereami {0}", whereami); - DataView dv = new DataView(dt, sQry, "StepNo,Level,SubStepNo", DataViewRowState.CurrentRows); - //dataGrid1.DataSource=dv; - //Loop through DataView and add Steps one at a time - //Console.WriteLine("={0}",drv["Step"]); - int FrType = 0; // type of relationship (not type of step) - Item FrItem = item; - foreach (DataRowView drvs in dv) - { - //Console.WriteLine(">{0}",drvs["CStep"]); - - string sParent = GetParent(drvs["CSequence"].ToString()); - if (dicStep.ContainsKey(sParent)) - { - Item itemp = dicStep[sParent]; - sType = GetStructType(drvs["CSequence"].ToString()); - Dictionary dicStr = dicStruct[sParent]; - // check if a step type of 'sType' exists to see if child/sibling - //Content contc = Content.MakeContent(null,(drvs["textm"] == DBNull.Value ? drvs["Text"].ToString() : drvs["Textm"].ToString()),drvs["Type"]+20000,null,null, - // GetDTS(drvs["Date"].ToString(), drvs["Time"].ToString()), drvs["Initials"].ToString())); - Item itemc = null; - if (dicStr.ContainsKey(sType)) // next sibling - { - FrItem = dicStr[sType]; - FrType = 0; - } - else // child of a node - { - FrItem = null; - FrType = (3 + ("CNRST".IndexOf(sType))); - } - //whereami = "5"; - itemc = AddStep(cn, drvs["Type"].ToString() - , (drvs["textm"] == DBNull.Value ? drvs["Text"].ToString() : drvs["Textm"].ToString()) - , drv["Recid"].ToString(), drvs["CStep"].ToString() + drvs["CSequence"].ToString() - , GetStructType(drvs["sequence"].ToString()), FrItem - , GetDTS(drvs["Date"].ToString(), drvs["Time"].ToString()), drvs["Initials"].ToString(), conv_caret, pth, docver); - - if (FrType > 0 ) - { - itemp.MyContent.ContentParts.Add(FrType, itemc); - if (!itemp.MyContent.IsSavable) ErrorRpt.ErrorReport(itemp.MyContent); - itemp.MyContent.Save(); - } - //whereami = "6"; - dicStr[sType] = itemc; - dicStruct[drvs["CSequence"].ToString()] = new Dictionary(); - dicStep[drvs["CSequence"].ToString()] = itemc; - } - else - { - log.ErrorFormat("Parent {0} Could not be found for {1}", sParent, drvs["sequence"].ToString()); - } - } - //if (InES32) Console.WriteLine("MigrateStep end"); - return item; - } - catch (Exception ex) - { - Console.WriteLine("{0} {1}", ex.GetType().Name, ex.Message); - log.Error("PROCESS STEP"); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - log.ErrorFormat(ex.StackTrace); - return null; - } - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/TextConvert.cs b/PROMS/DataLoader/TextConvert.cs deleted file mode 100644 index bfea5665..00000000 --- a/PROMS/DataLoader/TextConvert.cs +++ /dev/null @@ -1,521 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== - -using System; -using System.Collections.Generic; -using System.Text; -using System.Text.RegularExpressions; -using Volian.Base.Library; - -namespace DataLoader -{ - public static class TextConvert - { - static TextConvert() - { - BuildDictionarySeq(); - BuildDictionaryText(); - } - - private static Dictionary dicChar; - public static void BuildDictionarySeq() - { - dicChar = new Dictionary(); - for (int i = 0; i < 128; i++) dicChar[i] = i; - dicChar[199] = 128; dicChar[252] = 129; dicChar[233] = 130; dicChar[226] = 131; - dicChar[228] = 132; dicChar[224] = 133; dicChar[229] = 134; dicChar[231] = 135; - dicChar[234] = 136; dicChar[235] = 137; dicChar[232] = 138; dicChar[239] = 139; - dicChar[238] = 140; dicChar[236] = 141; dicChar[196] = 142; dicChar[197] = 143; - dicChar[201] = 144; dicChar[230] = 145; dicChar[198] = 146; dicChar[244] = 147; - dicChar[246] = 148; dicChar[242] = 149; dicChar[251] = 150; dicChar[249] = 151; - dicChar[255] = 152; dicChar[214] = 153; dicChar[220] = 154; dicChar[162] = 155; - dicChar[163] = 156; dicChar[165] = 157; dicChar[8359] = 158; dicChar[402] = 159; - dicChar[225] = 160; dicChar[237] = 161; dicChar[243] = 162; dicChar[250] = 163; - dicChar[241] = 164; dicChar[209] = 165; dicChar[170] = 166; dicChar[186] = 167; - dicChar[191] = 168; dicChar[8976] = 169; dicChar[172] = 170; dicChar[189] = 171; - dicChar[188] = 172; dicChar[161] = 173; dicChar[171] = 174; dicChar[187] = 175; - dicChar[9617] = 176; dicChar[9618] = 177; dicChar[9619] = 178; dicChar[9474] = 179; - dicChar[9508] = 180; dicChar[9569] = 181; dicChar[9570] = 182; dicChar[9558] = 183; - dicChar[9557] = 184; dicChar[9571] = 185; dicChar[9553] = 186; dicChar[9559] = 187; - dicChar[9565] = 188; dicChar[9564] = 189; dicChar[9563] = 190; dicChar[9488] = 191; - dicChar[9492] = 192; dicChar[9524] = 193; dicChar[9516] = 194; dicChar[9500] = 195; - dicChar[9472] = 196; dicChar[9532] = 197; dicChar[9566] = 198; dicChar[9567] = 199; - dicChar[9562] = 200; dicChar[9556] = 201; dicChar[9577] = 202; dicChar[9574] = 203; - dicChar[9568] = 204; dicChar[9552] = 205; dicChar[9580] = 206; dicChar[9575] = 207; - dicChar[9576] = 208; dicChar[9572] = 209; dicChar[9573] = 210; dicChar[9561] = 211; - dicChar[9560] = 212; dicChar[9554] = 213; dicChar[9555] = 214; dicChar[9579] = 215; - dicChar[9578] = 216; dicChar[9496] = 217; dicChar[9484] = 218; dicChar[9608] = 219; - dicChar[9604] = 220; dicChar[9612] = 221; dicChar[9616] = 222; dicChar[9600] = 223; - dicChar[945] = 224; dicChar[223] = 225; dicChar[915] = 226; dicChar[960] = 227; - dicChar[931] = 228; dicChar[963] = 229; dicChar[181] = 230; dicChar[964] = 231; - dicChar[934] = 232; dicChar[920] = 233; dicChar[937] = 234; dicChar[948] = 235; - dicChar[8734] = 236; dicChar[966] = 237; dicChar[949] = 238; dicChar[8745] = 239; - dicChar[8801] = 240; dicChar[177] = 241; dicChar[8805] = 242; dicChar[8804] = 243; - dicChar[8992] = 244; dicChar[8993] = 245; dicChar[247] = 246; dicChar[8776] = 247; - dicChar[176] = 248; dicChar[8729] = 249; dicChar[183] = 250; dicChar[8730] = 251; - dicChar[8319] = 252; dicChar[178] = 253; dicChar[9632] = 254; dicChar[160] = 255; - } - public static string ConvertSeq(string s1) - { - Encoding Eibm437 = Encoding.GetEncoding(437); - Encoding Eunicode = Encoding.Unicode; - Decoder d = Eibm437.GetDecoder(); - Byte[] bs1 = Eunicode.GetBytes(s1); - Byte[] bs2 = Encoding.Convert(Eunicode, Eibm437, bs1); - char[] cs2 = new char[Eibm437.GetCharCount(bs2)]; - for (int i = 0; i < cs2.Length; i++) cs2[i] = (char)bs2[i]; - return new string(cs2); - } - - public static Regex Reg2; - public static void BuildDictionaryText() - { - dicChar = new Dictionary(); - dicChar[966] = 216; - dicChar[201] = 274; - dicChar[127] = 916; - dicChar[964] = 947; - dicChar[920] = 952; - dicChar[915] = 961; - dicChar[191] = 964; - dicChar[8801] = 8773; - dicChar[8734] = 8857; - dicChar[7] = 9679; - dicChar[8976] = 9830; - dicChar[9632] = 9604; - //dicChar[236] = 38914; - char[] creg = new char[dicChar.Count]; - int i = 0; - foreach (int ic in dicChar.Keys) - { - creg[i] = (char)ic; - i++; - } - Reg2 = new Regex("[" + new string(creg) + "]"); - } - public static string ReplaceChars(Match m) - { - char[] cs = m.Value.ToCharArray(); - for (int i = 0; i < cs.Length; i++) - { - if (dicChar.ContainsKey((int)(cs[i]))) - { - int iKey = (int)cs[i]; - int iValue = dicChar[iKey]; - cs[i] = (char)iValue; - } - } - return new string(cs); - } - public static string ConvertText(string s1, bool DoCaret) - { - string s2 = s1; - if (DoCaret) s2 = s2.Replace("^", @"\u916?"); - return ConvertText(s2); - } - private static void ShowRawString(string str, string title) - { - Console.WriteLine("Raw Start --{0}:\n", title); - foreach (char c in str) - { - int ic = (int)c; - if (c != '\n' && (ic > 126 || ic < 32)) - Console.Write("<<{0:x4}>>", ic); - else - Console.Write(c); - } - Console.WriteLine("\n-- Raw End:{0}", title); - } - - public static string ReplaceUnicode(string s2) - { - return ReplaceUnicode(s2, false); - } - public static string ReplaceUnicode(string s2, bool DoCaret) - { - //char[] tmp; - //tmp = s2.ToCharArray(); - string orig = s2; - //ShowRawString(s2, "ReplaceUnicode"); - s2 = s2.Replace("`", @"\'b0"); // convert backquote to degree - left over from DOS days. - s2 = s2.Replace("\xa0",@"\u160?"); // hardspace - s2 = s2.Replace("\xb0", @"\'b0"); // degree - s2 = s2.Replace("\x7f", @"\u916?"); // delta - s2 = s2.Replace("\x2265",@"\u8805?"); // greater than or equal - s2 = s2.Replace("\x2264",@"\u8804?"); // less than or equal - s2 = s2.Replace("\xB1",@"\'b1"); // plus minus - s2 = s2.Replace("\x3A3",@"\u931?"); // sigma - s2 = s2.Replace("\x3C4",@"\u947?"); // gamma - s2 = s2.Replace("\xBD",@"\'bd"); // half - s2 = s2.Replace("\x25A0",@"\u9604?"); // accum 2584 - s2 = s2.Replace("\x7",@"\u9679?"); // bullet 25CF - s2 = s2.Replace("\x2248",@"\u8776?"); // approx eq - s2 = s2.Replace("\x2261",@"\u8773?"); // similar eq 2245 - s2 = s2.Replace("\xF7",@"\'f7"); // division - s2 = s2.Replace("\x221A",@"\u8730?"); // square root - s2 = s2.Replace("\x393",@"\u961?"); // rho 3C1 - s2 = s2.Replace("\x3C0",@"\u960?"); // pi - s2 = s2.Replace("\xb5", @"\u956?"); // micro 3BC (try e6, if not work try 109) - s2 = s2.Replace("\x3B4", @"\u948?"); // lower case delta - s2 = s2.Replace("\x3C3", @"\u963?"); // lower case sigma - s2 = s2.Replace("\xBC", @"\'bc"); // quarter - s2 = s2.Replace("\x256A", @"\'d8"); // dist zero, D8 - s2 = s2.Replace("\x3C6", @"\'d8"); // dist zero, D8 - s2 = s2.Replace("\xC9", @"\u274?"); // energy, 112 - s2 = s2.Replace("\xEC", @"\'ec"); // grave - s2 = s2.Replace("\x2502", @"\u9474?"); // bar - s2 = s2.Replace("\x3B5", @"\u949?"); // epsilon - s2 = s2.Replace("\x398", @"\u952?"); // theta, 3B8 - s2 = s2.Replace("\x221E", @"\u8857?"); // dot in oval, 2299 - s2 = s2.Replace("\xBF", @"\u964?"); // tau, 3C4 - s2 = s2.Replace("\x2310", @"\u9830?"); // diamond, 2666 - s2 = s2.Replace("\x2192", @"\u8594?"); - s2 = s2.Replace("\x2190", @"\u8592?"); - s2 = s2.Replace("\x2191", @"\u8593?"); - s2 = s2.Replace("\x2193", @"\u8595?"); - s2 = s2.Replace("\x2207", @"\u8711?"); - s2 = s2.Replace("\x2591", @"\'b0"); // Degree Symbol - s2 = s2.Replace("\xFF", @"\u8593?"); // Up Arrow - s2 = s2.Replace("\xD6", @"\u8595?"); // Down Arrow - - if (DoCaret) s2 = s2.Replace("^", @"\u916?"); - //s2 = s2.Replace("^", @"\u916"); - - //s2 = ConvertDOSSuperAndSubScripts(s2); - string sBefore = s2; - s2 = ConvertFortranFormatToScienctificNotation(s2); - if (sBefore != s2) - MyGlitches.Add("ConvertFortranFormatToScienctificNotation", sBefore, s2); - // Convert dash to a non-breaking dash. This is a unicode character. - // This character will be used in veproms rather than a dash. - //if the dash is preceeded byte a token remove the space following the token -//#if DEBUG - if (VlnSettings.DebugMode) - { - if (s2.Contains(@"\super ")) - Console.WriteLine("RTF Super token"); - } -//#endif - s2 = Regex.Replace(s2, @"(\\[^ \\?]*) \-", @"$1\u8209?"); - //KBR s2 = s2.Replace("-", @"\u8209?"); - //Remove spaces between comment end nad Next token - s2 = s2.Replace(@"\v0 \", @"\v0\"); - //Change Token Order to match RTB output - s2 = s2.Replace(@"\v0\b0", @"\b0\v0"); - s2 = s2.Replace(@"\b0\ulnone", @"\ulnone\b0"); - s2 = s2.Replace(@"\par ", "\r\n"); - return s2; - } - private static DataLoaderGlitches _MyGlitches; - public static DataLoaderGlitches MyGlitches - { - get - { - if (_MyGlitches == null) - _MyGlitches = new DataLoaderGlitches(); - return _MyGlitches; - } - set { _MyGlitches = value; } - } - public static string ConvertFortranFormatToScienctificNotation(string str) - { - // Convert E style numbers to RTF with \super and \nosupersub - string retval = Regex.Replace(str, "([+-]?)([0-9]+)[.]([0-9]*?)0*E([+-]?[0-9]+)", new MatchEvaluator(FixFortranNumber)); - return retval; - } - - public static string ConvertDOSSuperAndSubScripts(string instr) - { - try - { - string retval = Regex.Replace(instr, "[#](.*?)[#]", "\\up2 $1\\up0 ");// DOS Superscript - retval = Regex.Replace(retval, "[~](.*?)[~]", "\\dn2 $1\\up0 ");// DOS Subscript - return retval; - } - catch (Exception ex) - { - Console.WriteLine("Error in ConvertDOSSuperAndSubScripts"); - } - return ""; - } - private static string FixFortranNumber(Match match) - { - StringBuilder sb = new StringBuilder(match.Groups[1].Value); - if (match.Groups[3].Length == 0) // Nothing to the right of the decimal - if (match.Groups[2].Value != "1") // Other than "1", multiply it times 10 raised to a power - sb.Append(match.Groups[2].Value + "x10"); - else // The number is simply 1 so it can be ignored and 10 can be raised to a power - sb.Append("10"); - else // A number with a decimal point - sb.Append(match.Groups[2].Value + "." + match.Groups[3].Value + "x10"); - // Add the exponent as superscript - return sb.ToString() + "\\up2 " + match.Groups[4].Value + "\\up0 "; - } - #region CommentedOut - //private static string ConvertFortranFormatToScienctificNotation(string str) - //{ - // string outstr = ""; - // int orglen = str.Length; - // int cnt = 0; - // int ptr; - - // int nbytes; - // int tstr, tstr2, rptr, start = 0; - - // while (cnt < orglen) - // { - // // position up to the the next number, sign, or period - // ptr = str.IndexOfAny("+-0123456789.".ToCharArray(), cnt); - // if (ptr == -1) - // { - // outstr += str.Substring(cnt); - // break; // jump out of while loop - nothing else to process - // } - // if ((ptr - cnt) > 0) - // { - // outstr += str.Substring(cnt, ptr - cnt); - // cnt = ptr; - // } - - // if (cnt > start && str[cnt - 1] == '\'') - // { - // //B2003-053: only remove the single quote character - // // if str ptr is not at the end of the string or - // // the next char (after the str ptr) is not a space - // // or newline... (as per Paul Linn on 7/17/03) - // int len = orglen - cnt; - // if (len <= 1 || str[cnt + 1] == ' ' || str[cnt + 1] == '\n') - // start = cnt; - // else - // start = cnt - 1; - // } - // else start = cnt; - // tstr = cnt; - - // //Skip preceeding signs - // if (str[cnt] == '+' || str[cnt] == '-') - // cnt++; - - // cnt = NextNonNumber(str, cnt); - // if ((cnt < str.Length -1) && str[cnt] == '.') - // { - // cnt = NextNonNumber(str, cnt + 1); - // if (str[start] == '\'') - // { - // start++; - // } - // else if ((cnt < str.Length -1) && (str[cnt] == 'E') && (cnt > tstr)) - // { - // nbytes = (cnt - tstr); // don't include the 'E' - // outstr += str.Substring(tstr, nbytes); - // cnt++; - - // rptr = outstr.Length - 1; - // while (outstr[rptr] == '0') rptr--; - // if (outstr[rptr] != '.') rptr++; - // if (rptr < (outstr.Length - 1)) - // outstr = outstr.Substring(0, rptr + 1); // trim trailing 0's - - // int poutstr = 0; - // if (outstr[poutstr] == '+' || outstr[poutstr] == '-') poutstr++; - // if (!outstr[poutstr].Equals("1")) - // { - // outstr += "x1"; - // } - // outstr += "0\\super "; - - // tstr2 = cnt; - // if (str[cnt] == '+' || str[cnt] == '-') cnt++; - // cnt = NextNonNumber(str, cnt); - - // if (str[cnt] == '.' && char.IsDigit(str, cnt + 1)) - // cnt = NextNonNumber(str, cnt + 1); - - // nbytes = cnt - tstr2; // +1; - // outstr += str.Substring(tstr2, nbytes); - // outstr += "\\nosupersub "; - - // if (!char.IsLetterOrDigit(str, cnt) && !char.IsWhiteSpace(str, cnt)) - // return (str.Substring(tstr)); - // } - // else if (cnt > 0) - // { - // outstr += str.Substring(start, cnt - start + ((cnt < str.Length) ? 1 : 0)); - // } - // } - // else - // { - // outstr += str.Substring(start, cnt - start + ((cnt < str.Length)?1:0)); - // cnt++; - // } - // } - // return (outstr); - //} - - //private static int NextNonNumber(string str, int cnt) - //{ - // int rtn = 0; - // string tstr = str.Substring(cnt); - // int len = tstr.Length; - // while (rtn < len && char.IsDigit(tstr, rtn)) rtn++; - // return rtn + cnt; - //} - - //public static string ConvertDOSSuperAndSubScripts(string instr) - //{ - // string outstr = ""; - // string tstr = instr; - // int cnt = 0; - // int ptr = 0; - // bool issupper = false, issub = false; - - // while (tstr != null && (ptr = tstr.IndexOfAny("#~".ToCharArray(), cnt)) >= 0) - // { - // if (ptr > cnt) - // outstr += tstr.Substring(cnt, ptr - cnt); - // switch (tstr[ptr]) - // { - // case '#': - // if (issub || issupper) - // outstr += "\\nosupersub "; - // else - // outstr += "\\super "; - // issupper = !issupper; - // issub = false; - // break; - // case '~': - // if (issupper || issub) - // outstr += "\\nosupersub "; - // else - // outstr += "\\sub "; - // issub = !issub; - // issupper = false; - // break; - // } - // cnt = ptr + 1; - // if (cnt >= tstr.Length) - // tstr = null; - // else - // tstr = instr.Substring(cnt); - // cnt = 0; - // } - // if (tstr != null) - // outstr += tstr; - // return outstr; - //} - #endregion - public static string ConvertText(string s1) - { - string s2 = s1; - //CompareBeforeAndAfter(s1); - s2 = ReplaceUnicode(s2); - // now replace underline on/off (AE,AF), super on/off (C6,C7) - // bold on/off (D5, D6), subscript on/off (D1 A6), and - // italics on/off (B2, DD) - //s2 = s2.Replace("\xAB", "\\ul "); - //s2 = s2.Replace("\xBB", "\\ulnone "); - //s2 = s2.Replace("\x255E", "\\super "); - //s2 = s2.Replace("\x255F", "\\nosupersub "); - //\xAB -> \\ul and \xBB -> \\ulnone - look for pairs: - s2 = Regex.Replace(s2, @"\xAB([^\xBB]*?)\xBB", @"\ul $1\ulnone "); - // if there is an underline on without underline off or vice versa, just remove it. - if (s2.Contains("\xAB") || s2.Contains("\xBB")) s2 = s2.Replace("\xAB", "").Replace("\xBB", ""); - s2 = s2.Replace("\x255E", "\\up2 "); - s2 = s2.Replace("\x255F", "\\up0 "); - s2 = s2.Replace("\x2552", "\\b "); - s2 = s2.Replace("\x2553", "\\b0 "); - //s2 = s2.Replace("\x2564", "\\sub "); - //s2 = s2.Replace("\xAA", "\\nosupersub "); - s2 = s2.Replace("\x2564", "\\dn2 "); - s2 = s2.Replace("\xAA", "\\up0 "); - s2 = s2.Replace("\x2593", "\\i "); - s2 = s2.Replace("\x258C", "\\i0 "); - s2 = s2.Replace("\x2559", "\\ul\\b "); - s2 = s2.Replace("\x2558", "\\b0\\ulnone "); - - // underline next word is 0x17 - // superscript next is 0x18 - // subscript next is 0x19 - // bold next is 0x13 - - // \x18([A-Za-z0-9]+)(?:[\x18]|(?= )|\Z|(?=[^A-Za-z0-9]))(.*?) - s2 = Regex.Replace(s2, @"\x18([A-Za-z0-9\-]+)(?:[\x18]|(?= )|\Z|(?=[^A-Za-z0-9]))(.*?)", @"\up2 $1\up0 $2"); - s2 = Regex.Replace(s2, @"\x19([A-Za-z0-9\-]+)(?:[\x19]|(?= )|\Z|(?=[^A-Za-z0-9]))(.*?)", @"\dn2 $1\up0 $2"); - s2 = Regex.Replace(s2, @"\x13([A-Za-z0-9\-]+)(?:[\x13]|(?= )|\Z|(?=[^A-Za-z0-9]))(.*?)", @"\b $1\b0 $2"); - s2 = s2.Replace("\x11", ""); // this was an 'end' string for the above, 16bit just removed this char - s2 = s2.Replace("-", @"\u8209?"); // do this here so that super/sub & bold next work. - // if the underline is at beginning of text, don't replace the underline token with a space: - s2 = Regex.Replace(s2, @"^\x17(([A-Za-z0-9]|\\u[0-9]+\?)+)", @"\ul $1\ulnone "); - s2 = Regex.Replace(s2, @"\x17(([A-Za-z0-9]|\\u[0-9]+\?)+)", @" \ul $1\ulnone "); - - s2 = Reg2.Replace(s2, new MatchEvaluator(ReplaceChars)); - - // Now prepend an escape character, '\', to any curly brace. The curly brace - // is used in rtf land. - s2 = s2.Replace(@"{", @"\{"); - s2 = s2.Replace(@"}", @"\}"); - s2 = s2.Replace("\n", @"\par "); // line break in tables - s2 = s2.Replace(@"\up0 \up2 ", @"\up2 "); //jsj - 18MAR2010 - rbt.Save() seems to do this automatically - s2 = s2.Replace(@"\up0 \dn2 ", @"\dn2 "); //jsj - 18MAR2010 - rbt.Save() seems to do this automatically - return s2; - } - - private static void CompareBeforeAndAfter(string txtBefore) - { - string txtAfter = ConvertSeq(txtBefore); - if (txtAfter != txtBefore) - { - ListDifference(txtBefore, txtAfter); - } - } - private static Dictionary _SpecialChars = new Dictionary(); - private static void ListDifference(string txtBefore, string txtAfter) - { - int nBefore = txtBefore.Length; - int nAfter = txtAfter.Length; - int n = nBefore > nAfter ? nAfter : nBefore; - for (int i = 0; i < n; i++) - { - int chrBefore = (int)(txtBefore[i]); - int chrAfter = (int)(txtAfter[i]); - if (chrBefore != chrAfter) - { - if (_SpecialChars.ContainsKey(chrBefore)) - _SpecialChars[chrBefore]++; - else - { - _SpecialChars.Add(chrBefore, 1); - Console.WriteLine("Character Difference 0x{0:X0000} 0x{1:X0000} @ {2}", chrBefore, chrAfter, i); - //Console.WriteLine("Text Difference\r\nBefore '{0}'\r\nAfter '{0}'", txtBefore, txtAfter); - string prefix = i == 0 ? "" : txtBefore.Substring(0, i - 1); - string suffix = i == txtBefore.Length - 1 ? "" : txtBefore.Substring(i + 1); - Console.WriteLine("Found in '{0}' 0x{1:X} '{2}'", prefix, chrBefore, suffix); - } - } - } - if (nBefore != nAfter) - { - Console.WriteLine("Length Difference\r\nBefore '{0}'\r\nAfter '{0}'", txtBefore, txtAfter); - } - } - public static void ListSpecialCharacters() - { - Console.WriteLine("Special Characters"); - foreach (int chr in _SpecialChars.Keys) - { - Console.WriteLine("0x{0:X0000} - {1} occurances", chr, _SpecialChars[chr]); - } - } - public static void ResetSpecialCharacters() - { - _SpecialChars = new Dictionary(); - } - } -} diff --git a/PROMS/DataLoader/TransitionFixer.cs b/PROMS/DataLoader/TransitionFixer.cs deleted file mode 100644 index 4d21d850..00000000 --- a/PROMS/DataLoader/TransitionFixer.cs +++ /dev/null @@ -1,305 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Volian.Controls.Library; -using VEPROMS.CSLA.Library; -using System.Text.RegularExpressions; -using Volian.Base.Library; -using System.Xml; -using System.IO; - -namespace DataLoader -{ - public delegate void TransitionFixerEvent(object sender, TransitionFixerEventArgs args); - public class TransitionFixerEventArgs - { - private string _MyStatus; - - public string MyStatus - { - get { return _MyStatus; } - set { _MyStatus = value; } - } - public TransitionFixerEventArgs(string myStatus) - { - _MyStatus = myStatus; - } - } - class TransitionFixer - { - public static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - public event TransitionFixerEvent StatusChanged; - private void OnStatusChanged(object sender, TransitionFixerEventArgs args) - { - if (StatusChanged != null) - StatusChanged(sender, args); - } - private string _Status; - - public string Status - { - get { return _Status; } - set - { - _Status = value; - OnStatusChanged(this, new TransitionFixerEventArgs(_Status)); - } - } - private int _ErrorCount = 0; - - public int ErrorCount - { - get { return _ErrorCount; } - set { _ErrorCount = value; } - } - - private StepRTB _MyStepRTB; - - public StepRTB MyStepRTB - { - get { return _MyStepRTB; } - } - private string _LogPath; - private frmLoader _MyLoader; - public TransitionFixer(StepRTB myStepRTB,string logpath, frmLoader myLoader) - { - _MyStepRTB = myStepRTB; - _LogPath = logpath; - _MyLoader = myLoader; - } - public TimeSpan Process(bool checkRTF) - { - DateTime tstart = DateTime.Now; - ContentInfo.StaticContentInfoChange += new StaticContentInfoEvent(ContentInfo_StaticContentInfoChange); - ProcessTransitions(checkRTF); - ContentInfo.StaticContentInfoChange -= new StaticContentInfoEvent(ContentInfo_StaticContentInfoChange); - return DateTime.Now - tstart; - } - - void ContentInfo_StaticContentInfoChange(object sender, StaticContentInfoEventArgs args) - { - _MyLoader.AddInfo("'Fixed Transition for ',{0},' changed from ','T-{1}',' to ','T-{2}'", (sender as ContentInfo).ContentID, args.OldValue, args.NewValue); - } - private void ProcessTransitions(bool checkRTF) - { - Status = "Getting List..."; - // Loop through all Items and check before and after text - ItemInfoList myListFrom = ItemInfoList.GetListTranFrom(); //ItemInfoList.GetByContentID(99732);// - ItemInfoList myListTo = ItemInfoList.GetListTranTo(); //ItemInfoList.GetByContentID(99732); // - ConversionRTBProblems myProblems = new ConversionRTBProblems(); - int i = 0; - foreach (ItemInfo item in myListFrom) - { - Status = string.Format("Processing {0} of {1} steps", ++i, myListFrom.Count); - //MyStepRTB.ViewRTB = false; - string originalText = item.MyContent.Text; - string updatedText = item.MyContent.Text; - if (item.MyContent.MyGrid != null) - { - originalText = item.MyContent.MyGrid.Data; - updatedText = (item.MyContent.MyGrid.Data.Replace("<START]", ""); - } - // Exclude items that are not connected (Dummy steps for invalid transition destinations) - if (item.ItemDocVersionCount != 0 || item.MyPrevious != null || item.MyParent != null) - { - if (item.MyContent.ContentTransitionCount > 0) - { - //updatedText = Volian.Controls.Library.DisplayText.StaticRemoveRtfStyles(updatedText, item); - foreach (TransitionInfo tran in item.MyContent.ContentTransitions) - { - try - { - string oldtext = item.MyContent.Text; - item.MyContent.FixTransitionText(tran,item); - string newtext = item.MyContent.Text; - if (newtext != oldtext) - { - using (Content c = item.MyContent.Get()) - { - c.FixTransitionText(tran); - c.Save(); - - } - } - if (item.NewTransToUnNumberedItem) - { - using (Item itm = item.Get()) - { - ItemAnnotation ia = itm.ItemAnnotations.Add(VerificationRequiredType); - ia.SearchText = "Transition to un-numbered step"; - ia.UserID = "Migration"; - itm.Save(); - } - } - //_MyLoader.AddInfo("{0}", item.MyContent.MyContentMessage); - //if (item.MyContent.MyGridMessage != string.Empty) - // _MyLoader.AddInfo("{0}", item.MyContent.MyGridMessage); - // updatedText = FixTransitionText(originalText, tran, item.MyContent.ContentID); - //if (item.MyContent.MyGrid != null) - // updatedText = FixTableTransitionText(originalText, tran, item.MyContent.Get()); - //else - } - catch (Exception ex) - { - Console.WriteLine("{0} {1}", ex.GetType().Name, ex.Message); - _MyLog.WarnFormat("Transition Conversion Error: {0}", ex.Message); - } - // Added for transitions to un-numbered steps - //if (tran.NewTransToUnNumberedItem) item.NewTransToUnNumberedItem = true; - } - } - //if (updatedText.EndsWith(" ")) updatedText = updatedText.Substring(0, updatedText.Length - 1); - //if (item.MyContent.MyGrid != null) - //{ - // using (Item itm = item.Get()) - // { - // updatedText = (updatedText.Replace("", "[END>"); - // string sstring = AdjustSizeAndGetSearchString(updatedText, itm); - // itm.MyContent.Text = sstring; - // if (item.NewTransToUnNumberedItem) - // { - // ItemAnnotation ia = itm.ItemAnnotations.Add(VerificationRequiredType); - // ia.SearchText = "Transition to un-numbered step"; - // ia.UserID = "Migration"; - // } - // itm.Save(); - // } - //} - //else - //{ - // if (item.NewTransToUnNumberedItem) - // { - // using (Item itm = item.Get()) - // { - // ItemAnnotation ia = itm.ItemAnnotations.Add(VerificationRequiredType); - // ia.SearchText = "Transition to un-numbered step"; - // ia.UserID = "Migration"; - // itm.Save(); - // } - // } - // using (Content c = item.MyContent.Get()) - // { - // c.Text = updatedText; - // c.Save(); - // } - //} - //// Added for transitions to un-numbered steps - if (checkRTF) - { - MyStepRTB.MyItemInfo = item; - // Force Save - This will put change bars on everything - if (MyStepRTB.Text.Contains("(Resolved Transition Text)") != false) MyStepRTB.OrigDisplayText.Save(MyStepRTB); - string afterText = item.MyContent.Text; - // aftertext is 'newrtf' - if (afterText != updatedText) - myProblems.RTBProblems.Add(item.ItemID, item.MyContent.ContentID, originalText, updatedText, MyStepRTB.Rtf, afterText, item.Path); - } - } - } - if (checkRTF) - { - Status = "Saving problems"; - string logFile = _LogPath + @"\RTBProblems.xml"; - ErrorCount = myProblems.RTBProblems.Count; - myProblems.Save(logFile); - if (ErrorCount > 0) - { - System.Windows.Forms.DialogResult answer = System.Windows.Forms.MessageBox.Show( - string.Format("{0} Differences found in Transition Text\r\nResults in {1}\r\n\r\nOpen Log File?", - ErrorCount, logFile), "Transitions Different", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question); - if(answer == System.Windows.Forms.DialogResult.Yes) - System.Diagnostics.Process.Start(logFile); - } - } - Status = "Done comparing"; - } - // Added for transitions to un-numbered steps - private AnnotationType _VerificationRequiredType; // Using this to flag table to grid conversions - public AnnotationType VerificationRequiredType - { - get - { - if (_VerificationRequiredType == null) - _VerificationRequiredType = AnnotationType.GetByName("Verification Required"); - return _VerificationRequiredType; - } - } - public string FixTransitionText(string Text, TransitionInfo tran, int contentID) - { - string lookFor = string.Format(@"", tran.TranType, tran.TransitionID, "{1,2}"); - string transText = tran.ResolvePathTo(); - //Console.WriteLine(">>>>> FixTransitionText"); - //Console.WriteLine("Text = {0}", Text); - //Console.WriteLine("lookFor = {0}", lookFor); - //Console.WriteLine("TransText = {0}", transText); - Match m = Regex.Match(Text, lookFor); - if (m != null && m.Groups.Count > 1) - { - System.Text.RegularExpressions.Group g = m.Groups[1]; - _MyLoader.AddInfo("DataLoader.TransitionFixer:Content:{0}, {1}, {2}", contentID, tran.TransitionID, g.ToString()); - //Console.WriteLine("DataLoader.TransitionFixer:Content:{0}, {1}", tran.TransitionID, g.ToString()); - if (g.ToString() != transText) - Text = Text.Substring(0, g.Index) + transText + Text.Substring(g.Index + g.Length); - } - else - Console.WriteLine("Transition not Found"); - return Text; - } - public string FixTableTransitionText(string Text, TransitionInfo tran, Content content) - { - string lookFor = string.Format(@"", tran.TranType, tran.TransitionID, "{1,2}"); - string transText = tran.ResolvePathTo(); - //Console.WriteLine(">>>>> FixTransitionText"); - //Console.WriteLine("Text = {0}", Text); - //Console.WriteLine("lookFor = {0}", lookFor); - //Console.WriteLine("TransText = {0}", transText); - Match m = Regex.Match(Text, lookFor); - if (m != null && m.Groups.Count > 1) - { - System.Text.RegularExpressions.Group g = m.Groups[1]; - _MyLoader.AddInfo("DataLoader.TransitionFixer:Grid:{0}, {1}, {2}", content.ContentID, tran.TransitionID, g.ToString()); -// Console.WriteLine("DataLoader.TransitionFixer:Grid:{0}, {1}", tran.TransitionID, g.ToString()); - if (g.ToString() != transText) - Text = Text.Substring(0, g.Index) + transText + Text.Substring(g.Index + g.Length); - } - else - Console.WriteLine("Transition not Found"); - - //VlnFlexGrid grd = new VlnFlexGrid(1, 1); - //XmlDocument xd = new XmlDocument(); - //xd.LoadXml(Text); - //grd.ReadXml(xd); - //grd.FixTableCellsHeightWidth(); // resize the column width/height - //using (StringWriter sw = new StringWriter()) - //{ - // grd.WriteXml(sw); - // //Console.WriteLine(sw.GetStringBuilder().ToString()); - // content.MyGrid.Data = sw.GetStringBuilder().ToString(); - // sw.Close(); - //} - return Text; - } - private string AdjustSizeAndGetSearchString(string strXML, Item itm) - { - string rstring = ""; - VlnFlexGrid grd = new VlnFlexGrid(1, 1); - XmlDocument xd = new XmlDocument(); - xd.LoadXml(strXML); - grd.ReadXml(xd); - //using (StringReader sr = new StringReader(strXML)) - //{ - // grd.ReadXml(sr); - // sr.Close(); - //} - grd.FixTableCellsHeightWidth(); // resize the column width/height - rstring = grd.GetSearchableText(); - using (StringWriter sw = new StringWriter()) - { - grd.WriteXml(sw); - itm.MyContent.MyGrid.Data = sw.GetStringBuilder().ToString(); - sw.Close(); - } - return rstring; - } - } -} diff --git a/PROMS/DataLoader/TransitionFixer.cs.bak b/PROMS/DataLoader/TransitionFixer.cs.bak deleted file mode 100644 index 9c956175..00000000 --- a/PROMS/DataLoader/TransitionFixer.cs.bak +++ /dev/null @@ -1,269 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Volian.Controls.Library; -using VEPROMS.CSLA.Library; -using System.Text.RegularExpressions; -using Volian.Base.Library; -using System.Xml; -using System.IO; - -namespace DataLoader -{ - public delegate void TransitionFixerEvent(object sender, TransitionFixerEventArgs args); - public class TransitionFixerEventArgs - { - private string _MyStatus; - - public string MyStatus - { - get { return _MyStatus; } - set { _MyStatus = value; } - } - public TransitionFixerEventArgs(string myStatus) - { - _MyStatus = myStatus; - } - } - class TransitionFixer - { - public event TransitionFixerEvent StatusChanged; - private void OnStatusChanged(object sender, TransitionFixerEventArgs args) - { - if (StatusChanged != null) - StatusChanged(sender, args); - } - private string _Status; - - public string Status - { - get { return _Status; } - set - { - _Status = value; - OnStatusChanged(this, new TransitionFixerEventArgs(_Status)); - } - } - private int _ErrorCount = 0; - - public int ErrorCount - { - get { return _ErrorCount; } - set { _ErrorCount = value; } - } - - private StepRTB _MyStepRTB; - - public StepRTB MyStepRTB - { - get { return _MyStepRTB; } - } - private string _LogPath; - public TransitionFixer(StepRTB myStepRTB,string logpath) - { - _MyStepRTB = myStepRTB; - _LogPath = logpath; - } - public TimeSpan Process(bool checkRTF) - { - DateTime tstart = DateTime.Now; - ProcessTransitions(checkRTF); - return DateTime.Now - tstart; - } - private void ProcessTransitions(bool checkRTF) - { - Status = "Getting List..."; - // Loop through all Items and check before and after text - ItemInfoList myListFrom = ItemInfoList.GetListTranFrom(); - ItemInfoList myListTo = ItemInfoList.GetListTranTo(); - ConversionRTBProblems myProblems = new ConversionRTBProblems(); - int i = 0; - foreach (ItemInfo item in myListFrom) - { - if (item.MyContent.ContentID == 311) - Console.WriteLine(); - Status = string.Format("Processing {0} of {1} steps", ++i, myListFrom.Count); - //MyStepRTB.ViewRTB = false; - string originalText = item.MyContent.Text; - string updatedText = item.MyContent.Text; - if (item.MyContent.MyGrid != null) - { - originalText = item.MyContent.MyGrid.Data; - updatedText = (item.MyContent.MyGrid.Data.Replace("<START]", ""); - } - // Exclude items that are not connected (Dummy steps for invalid transition destinations) - if (item.ItemDocVersionCount != 0 || item.MyPrevious != null || item.MyParent != null) - { - if (item.MyContent.ContentTransitionCount > 0) - { - //updatedText = Volian.Controls.Library.DisplayText.StaticRemoveRtfStyles(updatedText, item); - foreach (TransitionInfo tran in item.MyContent.ContentTransitions) - { - try - { - if (item.MyContent.MyGrid != null) - updatedText = FixTableTransitionText(updatedText, tran, item.MyContent.Get()); - else - updatedText = FixTransitionText(updatedText, tran); - } - catch (Exception ex) - { - Console.WriteLine("{0} {1}", ex.GetType().Name, ex.Message); - } - // Added for transitions to un-numbered steps - if (tran.NewTransToUnNumberedItem) item.NewTransToUnNumberedItem = true; - } - } - if (updatedText.EndsWith(" ")) updatedText = updatedText.Substring(0, updatedText.Length - 1); - if (item.MyContent.MyGrid != null) - { - using (Item itm = item.Get()) - { - updatedText = (updatedText.Replace("", "[END>"); - string sstring = AdjustSizeAndGetSearchString(updatedText, itm); - itm.MyContent.Text = sstring; - if (item.NewTransToUnNumberedItem) - { - ItemAnnotation ia = itm.ItemAnnotations.Add(VerificationRequiredType); - ia.SearchText = "Transition to un-numbered step"; - ia.UserID = "Migration"; - } - itm.Save(); - } - } - else - { - if (item.NewTransToUnNumberedItem) - { - using (Item itm = item.Get()) - { - ItemAnnotation ia = itm.ItemAnnotations.Add(VerificationRequiredType); - ia.SearchText = "Transition to un-numbered step"; - ia.UserID = "Migration"; - itm.Save(); - } - } - using (Content c = item.MyContent.Get()) - { - c.Text = updatedText; - c.Save(); - } - } - // Added for transitions to un-numbered steps - if (checkRTF) - { - MyStepRTB.MyItemInfo = item; - // Force Save - This will put change bars on everything - if (MyStepRTB.Text.Contains("(Resolved Transition Text)") != false) MyStepRTB.OrigDisplayText.Save(MyStepRTB); - string afterText = item.MyContent.Text; - // aftertext is 'newrtf' - if (afterText != updatedText) - myProblems.RTBProblems.Add(item.ItemID, item.MyContent.ContentID, originalText, updatedText, MyStepRTB.Rtf, afterText, item.Path); - } - } - } - if (checkRTF) - { - Status = "Saving problems"; - string logFile = _LogPath + @"\RTBProblems.xml"; - ErrorCount = myProblems.RTBProblems.Count; - myProblems.Save(logFile); - if (ErrorCount > 0) - { - System.Windows.Forms.DialogResult answer = System.Windows.Forms.MessageBox.Show( - string.Format("{0} Differences found in Transition Text\r\nResults in {1}\r\n\r\nOpen Log File?", - ErrorCount, logFile), "Transitions Different", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question); - if(answer == System.Windows.Forms.DialogResult.Yes) - System.Diagnostics.Process.Start(logFile); - } - } - Status = "Done comparing"; - } - // Added for transitions to un-numbered steps - private AnnotationType _VerificationRequiredType; // Using this to flag table to grid conversions - public AnnotationType VerificationRequiredType - { - get - { - if (_VerificationRequiredType == null) - _VerificationRequiredType = AnnotationType.GetByName("Verification Required"); - return _VerificationRequiredType; - } - } - public string FixTransitionText(string Text, TransitionInfo tran) - { - if (tran.MyItemToID.ToString().Contains("diamond")) - Console.WriteLine(); - string lookFor = string.Format(@"", tran.TranType, tran.TransitionID, "{1,2}"); - string transText = tran.ResolvePathTo(); - //Console.WriteLine(">>>>> FixTransitionText"); - //Console.WriteLine("Text = {0}", Text); - //Console.WriteLine("lookFor = {0}", lookFor); - //Console.WriteLine("TransText = {0}", transText); - Match m = Regex.Match(Text, lookFor); - if (m != null && m.Groups.Count > 1) - { - System.Text.RegularExpressions.Group g = m.Groups[1]; - if (g.ToString() != transText) - Text = Text.Substring(0, g.Index) + transText + Text.Substring(g.Index + g.Length); - } - else - Console.WriteLine("Transition not Found"); - return Text; - } - public string FixTableTransitionText(string Text, TransitionInfo tran, Content content) - { - string lookFor = string.Format(@"", tran.TranType, tran.TransitionID, "{1,2}"); - string transText = tran.ResolvePathTo(); - //Console.WriteLine(">>>>> FixTransitionText"); - //Console.WriteLine("Text = {0}", Text); - //Console.WriteLine("lookFor = {0}", lookFor); - //Console.WriteLine("TransText = {0}", transText); - Match m = Regex.Match(Text, lookFor); - if (m != null && m.Groups.Count > 1) - { - System.Text.RegularExpressions.Group g = m.Groups[1]; - if (g.ToString() != transText) - Text = Text.Substring(0, g.Index) + transText + Text.Substring(g.Index + g.Length); - } - else - Console.WriteLine("Transition not Found"); - - //VlnFlexGrid grd = new VlnFlexGrid(1, 1); - //XmlDocument xd = new XmlDocument(); - //xd.LoadXml(Text); - //grd.ReadXml(xd); - //grd.FixTableCellsHeightWidth(); // resize the column width/height - //using (StringWriter sw = new StringWriter()) - //{ - // grd.WriteXml(sw); - // //Console.WriteLine(sw.GetStringBuilder().ToString()); - // content.MyGrid.Data = sw.GetStringBuilder().ToString(); - // sw.Close(); - //} - return Text; - } - private string AdjustSizeAndGetSearchString(string strXML, Item itm) - { - string rstring = ""; - VlnFlexGrid grd = new VlnFlexGrid(1, 1); - XmlDocument xd = new XmlDocument(); - xd.LoadXml(strXML); - grd.ReadXml(xd); - //using (StringReader sr = new StringReader(strXML)) - //{ - // grd.ReadXml(sr); - // sr.Close(); - //} - grd.FixTableCellsHeightWidth(); // resize the column width/height - rstring = grd.GetSearchableText(); - using (StringWriter sw = new StringWriter()) - { - grd.WriteXml(sw); - itm.MyContent.MyGrid.Data = sw.GetStringBuilder().ToString(); - sw.Close(); - } - return rstring; - } - } -} diff --git a/PROMS/DataLoader/Transitions.cs b/PROMS/DataLoader/Transitions.cs deleted file mode 100644 index 1357e71c..00000000 --- a/PROMS/DataLoader/Transitions.cs +++ /dev/null @@ -1,427 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== - -using System; -using System.Drawing; -using System.Collections; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - public partial class Loader - { - Dictionary> _ContentMigrationErrors = new Dictionary>(); - List _TransitionMigrationErrors = null; - //private void AddContentMigrationError(Content fromCon,string errorMsg) - //{ - // if (!_ContentMigrationErrors.ContainsKey(fromCon.ContentID)) - // _ContentMigrationErrors.Add(fromCon.ContentID,new List()); - // _ContentMigrationErrors[fromCon.ContentID].Add(errorMsg); - //} - - private string AddTrans(OleDbConnection cn, Content fromCon, DataRow dr, DataRow dr2, string pth) - { - List migrationErrors = new List(); - string thekey = dr["TONUMBER"].ToString() + "|" + TextConvert.ConvertSeq(dr["TOSEQUENCE"].ToString()); - if (thekey.EndsWith("0S")) - thekey = thekey.Substring(0, thekey.Length - 1); - string dti = dr["DTI"].ToString().PadRight(18, ' '); - string userid = dti.Substring(13, 5).Trim(); - int itype = 0; - ConfigInfo ci = null; - //string otranskey = null; - // The transition type was stored as a character & also, when read in thru - // ado.net may have been converted into unicode. So in order to get the - // correct type, first, use the TextConvert to eliminate the conversion done - // by ado.net. Then convert to a number. The 'anding of 0x80' flags that it - // is a formatted transition (i.e. this was done for byron/braidwood to - // show the transition with a page number or not). The 'anding of 0x7f' gets - // the actual number when subtracted from 0x30 (the value of the 0 character). - try - { - char typech = TextConvert.ConvertSeq(dr["TYPE"].ToString())[0]; - int tmpitype = Convert.ToInt32(typech); - if ((tmpitype & 0x80) > 0) - { - ci = new ConfigInfo(null); - ci.AddItem("Transition", "Formatted", "True"); - } - itype = (tmpitype&0x7F) - 0x30; - } - catch (Exception ex) - { - frmMain.AddError(ex,"Error converting transition type '{0}'",dr["TYPE"].ToString()); - log.Error("Error converting transition type"); - log.ErrorFormat("type from database = {0}", dr["TYPE"].ToString()); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - itype = -1; - } - DateTime dts = GetDTS(MakeDate(dti.Substring(0, 8).Trim()), dti.Substring(8, 5).TrimEnd()); - - // if it's in the dictionary of structure elements already migrated, just use this - // structure id, or if it's in the dictionary of structure elements that have - // not been migrated but a record was created from this code, use it. Otherwise - // create a new structure record and use its id, its data will be updated later. - // a structure record. - Item toItem = null; - Item toItem2 = null; - if (itype == 6) // Outside Transition - { - ItemInfo tmp = _OutTran.GetItem(thekey, migrationErrors); - if (tmp != null) - toItem = tmp.Get(); - else - { - //toItem = Item.New(null, TransDummyCont, DateTime.Now, "Migration"); - fromCon.Save(); - migrationErrors.Add("Transition Error: Missing Data - " + _OutTran.GetDescription(thekey) + ". Converted to text"); - if (!_ContentMigrationErrors.ContainsKey(fromCon.ContentID)) - _ContentMigrationErrors.Add(fromCon.ContentID, migrationErrors); - return _OutTran.GetTransitionText(thekey); - } - toItem2 = toItem; - // the 32-bit program will no longer have a special type for outside transitions - make it a - // type of 0 (procedure with optional step). - itype = 0; - } - else - { - if (itype > 6) itype--; // Corrected to match transformat table (16-bit skips type 6 because it's an outside transition) - if (dicTrans_ItemDone.ContainsKey(thekey)) - { - toItem = dicTrans_ItemDone[thekey]; - if (toItem.ContentID == TransDummyCont.ContentID) - _TransitionMigrationErrors.Add(thekey); - } - else - { - if (dicTrans_ItemIds.ContainsKey(thekey)) - { - toItem = dicTrans_ItemIds[thekey]; - if (toItem.ContentID == TransDummyCont.ContentID) - _TransitionMigrationErrors.Add(thekey); - } - else - { - // note that parent is null right now - it will be filled in later. - //toItem = Item.MakeItem(null, fromCon, DateTime.Now, "Migration"); - toItem = Item.New(null, TransDummyCont, DateTime.Now, "Migration"); - dicTrans_ItemIds.Add(thekey, toItem); - _TransitionMigrationErrors.Add(thekey); - } - } - - // if there is data in dr2, it means that it is a range transition. Get its item - // data too. - toItem2 = toItem; - if (dr2 != null) - { - string thekey2 = dr2["TONUMBER"].ToString() + "|" + TextConvert.ConvertSeq(dr2["TOSEQUENCE"].ToString()); - - // Range transitions that are type 2 are called 'AND' transitions. - // Example: Continue with steps 5b, 5c and 5d. - // if the second key is greater than the first key, then the transition terminates - // at the location specified in the second key. - // If the second key is less than or equal the first key, the transition extends - // to the last sibling of the first key. - // In data, these are represented with the SQL database field in the transitions - // table 'IsRange' == 2, toid and rangeid. In the content record, the link is - // TransitionRange:[type] [tranid] [toid] [rangeid]. - - if (itype == 2 && thekey.CompareTo(thekey2) >= 0) thekey2 = thekey; - if (dicTrans_ItemDone.ContainsKey(thekey2)) - { - toItem2 = dicTrans_ItemDone[thekey2]; - if (toItem2.ContentID == TransDummyCont.ContentID) - _TransitionMigrationErrors.Add(thekey2); - } - else - { - if (dicTrans_ItemIds.ContainsKey(thekey2)) - { - toItem2 = dicTrans_ItemIds[thekey2]; - if (toItem2.ContentID == TransDummyCont.ContentID) - _TransitionMigrationErrors.Add(thekey2); - } - else - { - toItem2 = Item.MakeItem(null, TransDummyCont, DateTime.Now, "Migration"); - dicTrans_ItemIds.Add(thekey2, toItem2); - _TransitionMigrationErrors.Add(thekey2); - } - } - } - } - if (userid == null || userid == "") userid = "Migration"; - string results = null; - try - { - int isRange = 0; - if (toItem.ItemID != toItem2.ItemID) - isRange = 1; - else if (itype == 2) - isRange = 2; - using (Transition tr = Transition.New(fromCon, toItem, toItem2, isRange, itype, ci != null ? ci.ToString() : null, dts, userid)) - { - //if (otranskey != null) - // tr.MyZTransition.Oldto = otranskey; // info to finish outside transition processing later - //else - tr.MyZTransition.Oldto = dr["OLDTO"].ToString(); - if (!tr.IsSavable) ErrorRpt.ErrorReport(tr); - tr.Save(); - if (migrationErrors.Count > 0) - _ContentMigrationErrors.Add(fromCon.ContentID, migrationErrors); - if (toItem.ItemID == toItem2.ItemID && itype != 2) - results = string.Format(@"\v \v0 ", tr.TranType, tr.TransitionID, tr.ToID); - else - results = string.Format(@"\v \v0 ", tr.TranType, tr.TransitionID, tr.ToID, tr.RangeID); - } - } - catch (Exception ex) - { - frmMain.AddError(ex, "Error addition transition record"); - log.Error("Error addition transition record"); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - } - return results; - } - - private string MigrateTrans(OleDbConnection cn, string textm, string seqcvt, Content content, string pth) - { - // TODO: BYRON DATA WILL GENERATE A TRANSITION ERROR WHEN IT IS USED IN PROMS 2010 - StringBuilder trtxt = new StringBuilder(); - int instance = 0; - int beg = 0; - DataTable dt = null; - DataSet ds = null; - OleDbDataAdapter da = null; - - char[] chrtrn = { '\x252C', '\x2566' }; - int tok = textm.IndexOfAny(chrtrn); - if (tok > -1) - { - string cmd = "SELECT * FROM [tran] WHERE [FROMNUMBER]='" + ProcNumber.Replace("'", "''") + "' AND [FROMSEQUEN] ='" + seqcvt + "' ORDER BY [FROMINSTAN]"; - da = new OleDbDataAdapter(cmd, cn); - // get transition records for this step. - ds = new DataSet(); - try - { - da.Fill(ds); - dt = ds.Tables[0]; - dt.CaseSensitive = true; - } - catch (Exception ex) - { - frmMain.AddError(ex, "Error getting transitions '{0}' '{1}'", ProcNumber, seqcvt); - log.Error("Error getting transitions"); - log.ErrorFormat("from number = {0} oldstepsequence = {1}", ProcNumber, seqcvt); - log.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - ds.Dispose(); - da.Dispose(); - return textm; - } - } - while (tok > -1) - { - // found a transition token, add the token and transition id into the string and - // add an transition record for it. Later there may be text added. - trtxt.Append(textm.Substring(beg, tok - beg)); - // we have too many tokens and not enough usage records - report an error... - if (instance >= dt.Rows.Count) - { - log.ErrorFormat("Error - ran out of transition records for step, check data "); - log.ErrorFormat("from number = {0} oldstepsequence = {1}", ProcNumber, seqcvt); - } - else - { - DataRow dr = dt.Rows[instance]; - - // if type is 2 or 3, this is a range transition, need to get the next - // record too - bool trange = false; - if (dr["Type"].ToString() == "2" || dr["Type"].ToString() == "3") - trange = true; - - string rectxt = null; - if (trange) - { - instance++; - DataRow dr2 = dt.Rows[instance]; - rectxt = AddTrans(cn, content, dr, dr2, pth); - } - else - rectxt = AddTrans(cn, content, dr, null, pth); - //trtxt.Append(textm[tok]); - trtxt.Append(rectxt); - } - instance++; - beg = tok + 1; - if (beg > textm.Length) - { - tok = -1; - da.Dispose(); - } - else - tok = textm.IndexOfAny(chrtrn, beg); - } - if (beg < textm.Length) - trtxt.Append(textm.Substring(beg, textm.Length - beg)); - if (dt.Rows.Count > instance + 1) - { - log.ErrorFormat("Error - extra transition records for step, check data "); - log.ErrorFormat("from number = {0} oldstepsequence = {1}", ProcNumber, seqcvt); - } - ds.Dispose(); - da.Dispose(); - return trtxt.ToString(); - } - private void ShowMissingTransitions(DocVersion docver) - { - if (dicTrans_ItemIds.Keys.Count > 0) - { - // see if any end in |A0, if so, point these to the procedure associated with it. - CleanupTransToNonExistentSectionA0(docver); - foreach (string s in dicTrans_ItemIds.Keys) - { - //log.WarnFormat("{0} - {1}", s, dicTrans_ItemIds[s]); - frmMain.AddError("Missing Transition Destination {0} - {1}", s, dicTrans_ItemIds[s].ItemID); - //AddItemAnnotation(dicTrans_ItemIds[s]); - } - } - foreach (string s in dicTrans_MigrationErrors.Keys) - { - foreach (Item itm in dicTrans_MigrationErrors[s]) - { - ItemAnnotation ia = itm.ItemAnnotations.Add(MigrationErrorType); - ia.SearchText = "Transition Error: Destination Missing - " + s; - ia.UserID = "Migration"; - itm.Save(); - } - } - - if (TransDummyCont.ContentItemCount > 0) - log.Warn("Bad transitions to 'dummy' content"); - foreach (ContentItem itm in TransDummyCont.ContentItems) - { - log.WarnFormat("ItemID = {0}", itm.ItemID); - //AddItemAnnotation(itm.MyItem); - } - - log.Info("End of Missing Transitions"); - } - - private void CleanupTransToNonExistentSectionA0(DocVersion docver) - { - - List RemoveFromDicTrans = new List(); - // see if any end in |A0, if so, point these to the procedure associated with it. - foreach (string s in dicTrans_ItemIds.Keys) - { - if (s.EndsWith("|A0")) - { - // make a list to store those that need changed because can't change data in - // a foreach: - RemoveFromDicTrans.Add(s); - Item item = dicTrans_ItemIds[s]; // to or range id. - //ItemInfo ii = ItemInfo.Get(item.ItemID); - - //get the proc id that will become the new to or range id. - string procnum = s.Substring(0, s.IndexOf("|")); - DocVersionInfo dvi = DocVersionInfo.Get(docver.VersionID); - IList iprcs = dvi.GetChildren(); - ItemInfo prc = null; - foreach (ItemInfo ii in iprcs) - { - if (ii.DisplayNumber == procnum) - { - prc = ii; - break; - } - } - if (prc != null) - { - // For each transition that points to the A0, make it point to the proc. - // First, find all of them by getting transitions with the A0 (dummy - // transition record). Then update the to or range id in the transition - // record & then update the content/from part. - List transToChg = new List(); - List transRgChg = new List(); - TransitionInfoList til = TransitionInfoList.GetByToID(item.ItemID); - foreach (TransitionInfo ti in til) UpdateTranDataForA0(prc, ti.TransitionID, false); - til = TransitionInfoList.GetByRangeID(item.ItemID); - foreach (TransitionInfo tir in til) UpdateTranDataForA0(prc, tir.TransitionID, true); - } - } - } - foreach (string str in RemoveFromDicTrans) - { - dicTrans_ItemIds.Remove(str); - dicTrans_MigrationErrors.Remove(str); - } - } - private static void UpdateTranDataForA0(ItemInfo procItem, int transid, bool isRange) - { - int type; - int oldto; - int oldrg; - int oldfrom; - using (Transition t = Transition.Get(transid)) - { - type = t.TranType; - oldto = t.ToID; - oldrg = t.RangeID; - oldfrom = t.FromID; - if (!isRange) - { - t.MyItemToID = procItem.Get(); - t.MyItemRangeID = procItem.Get(); - } - else - t.MyItemRangeID = procItem.Get(); - t.Save(); - } - using (Content c = Content.Get(oldfrom)) - { - string lookFor = (isRange || oldto != oldrg) ? string.Format(@"#Link:TransitionRange:{0} {1} {2} {3}", type, transid, oldto, oldrg) : - string.Format(@"#Link:Transition:{0} {1} {2}", type, transid, oldto); - string replaceWith = isRange ? string.Format(@"#Link:TransitionRange:{0} {1} {2} {3}", type, transid, oldto, procItem.ItemID) : - oldto != oldrg ? string.Format(@"#Link:TransitionRange:{0} {1} {2} {3}", type, transid, procItem.ItemID, oldrg) : - string.Format(@"#Link:Transition:{0} {1} {2}", type, transid, procItem.ItemID); - c.Text = c.Text.Replace(lookFor, replaceWith); - c.Save(); - } - } - - private void AddItemAnnotation(Item itm) - { - foreach (ItemTransition_ToID tmp in itm.ItemTransitions_ToID) - { - foreach (ContentItem ci in tmp.MyContent.ContentItems) - { - ItemAnnotation ia = ci.MyItem.ItemAnnotations.Add(MigrationErrorType); - ia.SearchText = "Transition Error: Missing end point"; - ia.UserID = "Migration"; - ci.MyItem.Save(); - } - } - } - - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/UIFileNameEditor.cs b/PROMS/DataLoader/UIFileNameEditor.cs deleted file mode 100644 index b1b14082..00000000 --- a/PROMS/DataLoader/UIFileNameEditor.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System; -using System.ComponentModel; -using System.Drawing.Design; -//using System.Runtime.CompilerServices; -using System.Windows.Forms; - -namespace DataLoader -{ - - public class UIFilenameEditor : System.Drawing.Design.UITypeEditor - { - public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) - { - if (context != null && context.Instance != null) - { - if (!context.PropertyDescriptor.IsReadOnly) - { - return UITypeEditorEditStyle.Modal; - } - } - return UITypeEditorEditStyle.None; - } - [RefreshProperties(RefreshProperties.All)] - public override object EditValue(ITypeDescriptorContext context, System.IServiceProvider provider, object value) - { - if (context == null || provider == null || context.Instance == null) - { - return base.EditValue(provider, value); - } - FileDialog fileDlg; - if (context.PropertyDescriptor.Attributes[typeof(SaveFileAttribute)] == null) - { - fileDlg = new OpenFileDialog(); - } - else - { - fileDlg = new SaveFileDialog(); - } - fileDlg.Title = "Select " + context.PropertyDescriptor.DisplayName; - fileDlg.FileName = (string)value; - FileDialogFilterAttribute filterAtt = (FileDialogFilterAttribute)context.PropertyDescriptor.Attributes[typeof(FileDialogFilterAttribute)]; - if (filterAtt != null) - { - fileDlg.Filter = filterAtt.Filter; - } - if (fileDlg.ShowDialog() == DialogResult.OK) - { - value = fileDlg.FileName; - } - fileDlg.Dispose(); - return value; - } - [AttributeUsage(AttributeTargets.Property)] - public class FileDialogFilterAttribute : Attribute - { - private string _filter; - - public string Filter - { - get - { - return this._filter; - } - } - public FileDialogFilterAttribute(string filter) - { - this._filter = filter; - } - } - [AttributeUsage(AttributeTargets.Property)] - public class SaveFileAttribute : Attribute - { - - } - public enum FileDialogType - { - LoadFileDialog, - SaveFileDialog - } - } - public class UIFolderEditor : System.Drawing.Design.UITypeEditor - { - public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) - { - if (context != null && context.Instance != null) - { - if (!context.PropertyDescriptor.IsReadOnly) - { - return UITypeEditorEditStyle.Modal; - } - } - return UITypeEditorEditStyle.None; - } - [RefreshProperties(RefreshProperties.All)] - public override object EditValue(ITypeDescriptorContext context, System.IServiceProvider provider, object value) - { - if (context == null || provider == null || context.Instance == null) - { - return base.EditValue(provider, value); - } - FolderBrowserDialog folderDlg=new FolderBrowserDialog(); - folderDlg.SelectedPath = (string)value; - if (folderDlg.ShowDialog() == DialogResult.OK) - { - value = folderDlg.SelectedPath; - } - folderDlg.Dispose(); - return value; - } - } -} diff --git a/PROMS/DataLoader/WordDocument.cs b/PROMS/DataLoader/WordDocument.cs deleted file mode 100644 index a36cc425..00000000 --- a/PROMS/DataLoader/WordDocument.cs +++ /dev/null @@ -1,121 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Volian.MSWord; -using LBWordLibrary; -using System.Threading; - -namespace DataLoader -{ - class WordDocument - { - private string _FileName; - public string FileName - { - get { return _FileName; } - set { _FileName = value; } - } - private string _ASCII = null; - public string ASCII - { - get { return _ASCII; } - set { _ASCII = value; } - } - private float _DocLen = 1.0F; - public float DocLen - { - get { return _DocLen; } - set { _DocLen = value; } - } - private string _Stype; - /// - /// 16-bit's type[1] used the following codes to represent the respective lpi setting - /// - /// char far typestr[] = "*pP46f7L"; - /// - /// char * far printtypes[] = { - /// "Compressed, 8 lines per inch", - /// "Elite, 6 lines per inch", - /// "Pica, 6 lines per inch", - /// "Default font, 4 Lines Per Inch", - /// "Default font, 6 Lines Per Inch", - /// "Compressed 6 LPI", - /// "Default font, 7 Lines Per Inch", - /// "Special Landscape, Elite, 6 lines per inch" - /// - public string Stype - { - get { return _Stype; } - set - { - _Stype = value; - if (_Stype != null) - { - if (_Stype != null) - { - // stype[1] == 'p' or 'P' or '6' 'f' or 'L' get spc = 6 - if (_Stype[1] == '*') LPI = 8; - else if (_Stype[1] == '4') LPI = 4; - else if (_Stype[1] == '7') LPI = 7; - // if need landscape set too: bool landscape = (stype[1] == 'L'); - } - } - } - } - private int _LPI = 6; - public int LPI - { - get { return _LPI; } - set { _LPI = value; } - } - private string _OutFileName; - public string OutFileName - { - get { return _OutFileName; } - set { _OutFileName = value; } - } - private bool _IsLandscape; - public bool IsLandscape - { - get { return _IsLandscape; } - set { _IsLandscape = value; } - } - public WordDocument(string fileName, string stype, string outFileName, bool isLandscape) - { - FileName = fileName; - Stype = stype; - OutFileName = outFileName; - IsLandscape = isLandscape; - } - public void GetAsciiFromWord() - { - WordDoc myWordDoc = null; - try - { - myWordDoc = new WordDoc(FileName); - myWordDoc.SetLineSpacing(LPI); - if (IsLandscape) - { - myWordDoc.MyWordDoc.PageSetup.Orientation = LBWdOrientation.wdOrientLandscape; - } - try - { - DocLen = myWordDoc.Length; - } - catch (Exception ex1) - { - Console.WriteLine("{0} - {0}\r\n\r\n{1}", ex1.GetType().Name, ex1.Message); - } - ASCII = myWordDoc.MyWordDoc.Ascii; - myWordDoc.Save(OutFileName); - myWordDoc.Close(); - Thread.Sleep(500); - } - catch (Exception ex) - { - Console.WriteLine("Could not get Ascii", ex); - WordDoc.CloseApp(); - } - } - } -} diff --git a/PROMS/DataLoader/dlgExportImport.cs b/PROMS/DataLoader/dlgExportImport.cs deleted file mode 100644 index dc1771cf..00000000 --- a/PROMS/DataLoader/dlgExportImport.cs +++ /dev/null @@ -1,2706 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using VEPROMS.CSLA.Library; -using Volian.Base.Library; -using System.Xml; -using System.IO; -using Ionic.Zip; - -namespace DataLoader -{ - public partial class dlgExportImport : Form - { - private Dictionary oldFormat; - private Dictionary newFormat; - private int oldRODbID; - private int newRODbID; - private FolderInfo _MyNewFolder; - public FolderInfo MyNewFolder - { - get { return _MyNewFolder; } - } - private string PEIPath; - private string _MyMode; - private FolderInfo MyFolder = null; - private ProcedureInfo MyProcedure = null; - private XmlAttribute AddAttribute(XmlDocument xd, string name, string value) - { - XmlAttribute xa = xd.CreateAttribute(name); - xa.InnerText = value; - return xa; - } - public dlgExportImport(string mode, FolderInfo folderInfo) - { - _MyMode = mode; - MyFolder = folderInfo; - InitializeComponent(); - this.Text = mode + " Dialog for " + folderInfo.Name; - } - public dlgExportImport(string mode, ProcedureInfo procedureInfo) - { - _MyMode = mode; - MyProcedure = procedureInfo; - InitializeComponent(); - this.Text = mode + " Dialog for " + procedureInfo.DisplayNumber; - } - private void dlgExportImport_Load(object sender, EventArgs e) - { - PEIPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS\PEI_" + Database.VEPROMS_SqlConnection.Database; - if (!Directory.Exists(PEIPath)) - Directory.CreateDirectory(PEIPath); - if (_MyMode == "Import") - { - if (MyFolder.ChildFolderCount == 0) - { - Directory.Delete(PEIPath, true); - Directory.CreateDirectory(PEIPath); - } - } - pnlExport.Dock = DockStyle.Fill; - pnlImport.Dock = DockStyle.Fill; - if (_MyMode.ToLower() == "export") - { - sfd.InitialDirectory = PEIPath; - pnlExport.BringToFront(); - } - else - { - ofd.InitialDirectory = PEIPath; - pnlImport.BringToFront(); - } - this.Height = this.Height / 2; - } - private void btnExport_Click(object sender, EventArgs e) - { - if (MyFolder != null) - { - sfd.FileName = string.Format("{0}.expx", MyFolder.Name); - if (sfd.ShowDialog(this) == DialogResult.OK) - { - if (sfd.FileName != string.Empty) - { - txtExport.Text = sfd.FileName; - if (File.Exists(txtExport.Text)) - File.Delete(txtExport.Text); - MyExpxZipFile = new ZipFile(txtExport.Text, Encoding.UTF8); - MyExpxZipFile.Save(); - } - } - } - else if (MyProcedure != null) - { - txtExport.Text = string.Format(@"{0}\{1}.xml", PEIPath, MyProcedure.DisplayNumber); - } - } - private void txtExport_TextChanged(object sender, EventArgs e) - { - btnDoExport.Enabled = txtExport.TextLength > 0; - if (btnDoExport.Enabled) - lblExportStatus.Text = "Ready To Perform Export"; - else - lblExportStatus.Text = "Awaiting Export File Name:"; - } - private XmlWriter MyWriter = null; - private ZipFile MyExpxZipFile = null; - private ZipFile MyImpxZipFile = null; - private DateTime MyStart; - private void btnDoExport_Click(object sender, EventArgs e) - { - btnExport.Enabled = false; - if (MyFolder != null) - { - this.Cursor = Cursors.WaitCursor; - MyStart = DateTime.Now; - btnDoExport.Enabled = false; - lblExportStatus.Text = "Performing Export"; - SaveExportData(); - //SaveExportDataWriter(); - - TimeSpan elapsed = DateTime.Now.Subtract(MyStart); - lblExportStatus.Text = "Export Completed in " + elapsed.ToString(); - this.Cursor = Cursors.Default; - } - else if (MyProcedure != null) - { - this.Cursor = Cursors.WaitCursor; - MyStart = DateTime.Now; - btnDoExport.Enabled = false; - lblExportStatus.Text = "Performing Export"; - XmlDocument xd = new XmlDocument(); - ExportItem(xd, MyProcedure, "procedure"); - xd.Save(txtExport.Text); - TimeSpan elapsed = DateTime.Now.Subtract(MyStart); - lblExportStatus.Text = "Export Completed in " + elapsed.ToString(); - this.Cursor = Cursors.Default; - } - btnCloseExport.Enabled = true; - } - private void SaveExportData() - { - XmlDocument xd = new XmlDocument(); - ExportFolder(xd, MyFolder, "folder"); - } - private void SaveExportDataWriter() - { - XmlWriterSettings ws = new XmlWriterSettings(); - ws.Indent = true; - ws.NewLineHandling = NewLineHandling.Entitize; - ws.CheckCharacters = false; - MyWriter = XmlWriter.Create(txtExport.Text, ws); - ExportFolder(MyFolder, "folder"); - MyWriter.Close(); - } - private void btnDoImport_Click(object sender, EventArgs e) - { - btnImport.Enabled = false; - this.Cursor = Cursors.WaitCursor; - MyStart = DateTime.Now; - btnDoImport.Enabled = false; - lblImportStatus.Text = "Performing Import"; - //LoadImportDataReader(); - TurnChangeManagerOff.Execute(); - LoadImportDataDocument(); - TurnChangeManagerOn.Execute(); - TimeSpan elapsed = DateTime.Now.Subtract(MyStart); - lblImportStatus.Text = "Import Completed in " + elapsed.ToString(); - this.Cursor = Cursors.Default; - btnCloseImport.Enabled = true; - } - private void LoadImportDataDocument() - { - ZipEntry ze = MyExpxZipFile[0]; - string fn = PEIPath + @"\" + ze.FileName; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - XmlDocument xd = new XmlDocument(); - xd.Load(fn); - LoadFormats(xd); - Folder ff = AddFolder(Folder.Get(MyFolder.FolderID), xd); - if (ff == null) - { - MessageBox.Show("You can not import the same procedure set more than once", "Duplicate Import Error"); - return; - } - _MyNewFolder = FolderInfo.Get(ff.FolderID); - AddAnnotationTypes(xd); - DocVersionInfo dvi = AddDocVersion(ff, xd); - xd = null; - lblImportStatus.Text = "Creating Procedures..."; - Application.DoEvents(); - ProcedureInfo pi = null; - pbImportProcedure.Value = 0; - pbImportProcedure.Maximum = MyExpxZipFile.Entries.Count - 1; - for (int i = 1; i < MyExpxZipFile.Entries.Count; i++) - { - ze = MyExpxZipFile[i]; - fn = PEIPath + @"\" + ze.FileName; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - xd = new XmlDocument(); - xd.Load(fn); - pi = AddProcedure(xd.DocumentElement, dvi, pi); - } - DirectoryInfo di = new DirectoryInfo(PEIPath); - DirectoryInfo[] dis = di.GetDirectories(); - for (int d = 0; d < dis.Length; d++) - dis[d].Delete(true); - lblImportStatus.Text = "Updating Transitions"; - AddTransitions(); - SaveTransitionAndItemContentIDs(); - } - - private void LoadFormats(XmlDocument xd) - { - oldFormat = new Dictionary(); - XmlNodeList nl = xd.SelectNodes("folder/formats/format"); - foreach (XmlNode nd in nl) - { - int formatid = int.Parse(nd.Attributes.GetNamedItem("formatid").InnerText); - string name = nd.Attributes.GetNamedItem("name").InnerText; - oldFormat.Add(formatid, name); - } - newFormat = new Dictionary(); - FormatInfoList fil = FormatInfoList.Get(); - foreach (FormatInfo fi in fil) - newFormat.Add(fi.Name, fi.FormatID); - } - Dictionary dicParentItem = null; - private void UpdateParentItem(int depth, ItemInfo ii) - { - if (dicParentItem == null) dicParentItem = new Dictionary(); - if (!dicParentItem.ContainsKey(depth)) dicParentItem.Add(depth, null); - dicParentItem[depth] = ii; - } - Dictionary dicPreviousItem = null; - private void UpdatePreviousItem(int depth, ItemInfo ii) - { - if (dicPreviousItem == null) dicPreviousItem = new Dictionary(); - if (!dicPreviousItem.ContainsKey(depth)) dicPreviousItem.Add(depth, null); - dicPreviousItem[depth] = ii; - } - Dictionary dicItemDepth = null; - private void UpdateItemDepth(int depth, int id) - { - if (dicItemDepth == null) dicItemDepth = new Dictionary(); - if (!dicItemDepth.ContainsKey(depth)) dicItemDepth.Add(depth, 0); - dicItemDepth[depth] = id; - } - private void LoadImportDataReader() - { - int pCount = 0; - int sCount = 0; - Folder folder = null; - DocVersion docversion = null; - Dictionary dicRofst = null; - Dictionary dicEntry = null; - ROFst rofst = null; - GetImportDataCounts(); - pbImportProcedure.Maximum = MyCounts.Count; - pbImportProcedure.Value = 0; - Application.DoEvents(); - FileStream fs = File.OpenRead(txtImport.Text); - XmlReaderSettings rs = new XmlReaderSettings(); - rs.CheckCharacters = false; - XmlReader xr = XmlReader.Create(fs, rs); - while (xr.Read()) - { - if (xr.IsStartElement()) - { - switch (xr.Name) - { - case "annotation": - AddAnnotation(xr); - break; - //case "association": - // break; - case "content": - { - if (xr.Depth == 3) //content for procedure - { - ItemInfo ii = AddProcedure(xr, docversion, dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - } - else - { - - int fromtype = dicItemDepth.ContainsKey(xr.Depth - 2) ? dicItemDepth[xr.Depth - 2] : 0; - switch (fromtype) - { - case 2: - { //sections - ItemInfo ii = AddSection(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - break; - } - case 3: - { //cautions - ItemInfo ii = AddCaution(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - break; - } - case 4: - { //notes - ItemInfo ii = AddNote(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - break; - } - case 5: - { //rnos - ItemInfo ii = AddRNO(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - break; - } - case 6: - { //steps - ItemInfo ii = AddStep(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - break; - } - case 7: - { //tables - ItemInfo ii = AddTable(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - break; - } - default: - break; - } - } - break; - } - case "document": - AddDocument(xr, dicEntry); - break; - case "docversion": - { - docversion = AddDocVersion(folder, xr); - UpdatePreviousItem(xr.Depth + 2, null); - break; - } - case "entry": - dicEntry = AddEntry(xr); - break; - case "folder": - folder = AddFolder(Folder.Get(MyFolder.FolderID), xr); - break; - case "grid": - AddGrid(xr); - break; - case "procedure": - { - UpdateItemDepth(xr.Depth + 1, int.Parse(xr.GetAttribute("itemid"))); - pbImportProcedure.PerformStep(); - lblImportProcedure.Text = string.Format("{0} of {1} Procedures", pbImportProcedure.Value.ToString(), pbImportProcedure.Maximum.ToString()); - pCount++; - pbImportSection.Maximum = MyCounts[pCount].Count; - pbImportSection.Value = 0; - sCount = 0; - Application.DoEvents(); - break; - } - case "section": - { - UpdateItemDepth(xr.Depth + 1, int.Parse(xr.GetAttribute("itemid"))); - pbImportSection.PerformStep(); - lblImportSection.Text = string.Format("{0} of {1} Sections", pbImportSection.Value.ToString(), pbImportSection.Maximum.ToString()); - sCount++; - pbImportStep.Maximum = MyCounts[pCount][sCount]; - pbImportStep.Value = 0; - Application.DoEvents(); - break; - } - case "step": - { - UpdateItemDepth(xr.Depth + 1, int.Parse(xr.GetAttribute("itemid"))); - if (xr.Depth == 8) - { - pbImportStep.PerformStep(); - lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString()); - Application.DoEvents(); - } - break; - } - case "caution": - case "note": - case "rno": - case "table": - UpdateItemDepth(xr.Depth + 1, int.Parse(xr.GetAttribute("itemid"))); - break; - case "cautions": - case "notes": - case "rnos": - case "sections": - case "steps": - case "tables": - { - UpdateItemDepth(xr.Depth, int.Parse(xr.GetAttribute("fromtype"))); - UpdatePreviousItem(xr.Depth + 2, null); - UpdateParentItem(xr.Depth + 2, dicParentItem[xr.Depth - 1]); - break; - } - case "rodb": - { - MyRODb = AddRODb(xr); - rofst = AddROFst(dicRofst); - docversion.DocVersionAssociations.Add(rofst); - docversion.Save(); - break; - } - case "rofst": - dicRofst = GetROFstData(xr); - break; - case "rousage": - AddROUsage(xr); - break; - //case "transition": - // break; - default: - break; - } - Console.WriteLine("{0} - {1}", xr.Name, xr.Depth.ToString()); - } - } - pbImportProcedure.PerformStep(); - Application.DoEvents(); - fs.Close(); - FixImportDataTransitions(); - StoreItemContentIDs(); - ResolveExternalTransitions(folder); - } - private void SaveTransitionAndItemContentIDs() - { - XmlDocument xd = new XmlDocument(); - XmlElement xe = xd.CreateElement("items"); - xd.AppendChild(xe); - string fn = PEIPath + @"\items.xml"; - foreach (int key in Old2NewItem.Keys) - { - xe = xd.CreateElement("item"); - xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewItem[key].ToString())); - xd.DocumentElement.AppendChild(xe); - } - xd.Save(fn); - ZipEntry ze = MyImpxZipFile["items.xml"]; - MyImpxZipFile.RemoveEntry(ze); - MyImpxZipFile.Save(); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - xd = new XmlDocument(); - xe = xd.CreateElement("contents"); - xd.AppendChild(xe); - fn = PEIPath + @"\contents.xml"; - foreach (int key in Old2NewContent.Keys) - { - xe = xd.CreateElement("content"); - xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewContent[key].ToString())); - xd.DocumentElement.AppendChild(xe); - } - xd.Save(fn); - ze = MyImpxZipFile["contents.xml"]; - MyImpxZipFile.RemoveEntry(ze); - MyImpxZipFile.Save(); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - xd = new XmlDocument(); - xe = xd.CreateElement("transitions"); - xd.AppendChild(xe); - fn = PEIPath + @"\transitions.xml"; - if (PendingTransitions != null && PendingTransitions.DocumentElement.HasChildNodes) - { - foreach (XmlNode nd in PendingTransitions.DocumentElement.ChildNodes) - { - if(nd.InnerText == "") - xd.DocumentElement.AppendChild(xd.ImportNode(nd, true)); - } - xd.Save(fn); - } - ze = MyImpxZipFile["transitions.xml"]; - MyImpxZipFile.RemoveEntry(ze); - MyImpxZipFile.Save(); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - } - private void StoreItemContentIDs() - { - XmlDocument xd = new XmlDocument(); - string fn = PEIPath + @"\ExternalTransitions.xml"; - xd.Load(fn); - XmlElement xe = (XmlElement)xd.SelectSingleNode("externaltransitions/oldtonewitem"); - foreach (int key in Old2NewItem.Keys) - { - XmlElement xee = xd.CreateElement("item"); - XmlAttribute xa = AddAttribute(xd, "old", key.ToString()); - xee.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "new", Old2NewItem[key].ToString()); - xee.Attributes.SetNamedItem(xa); - xe.AppendChild(xee); - } - xd.Save(fn); - xe = (XmlElement)xd.SelectSingleNode("externaltransitions/oldtonewcontent"); - foreach (int key in Old2NewContent.Keys) - { - XmlElement xee = xd.CreateElement("content"); - XmlAttribute xa = AddAttribute(xd, "old", key.ToString()); - xee.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "new", Old2NewContent[key].ToString()); - xee.Attributes.SetNamedItem(xa); - xe.AppendChild(xee); - } - xd.Save(fn); - } - private void ResolveExternalTransitions(Folder folder) - { - XmlDocument xd = new XmlDocument(); - string fn = PEIPath + @"\ExternalTransitions.xml"; - xd.Load(fn); - AddStoredItemContentIDs(xd); - XmlNodeList nl = xd.SelectNodes("//transition[@folder!='']"); - foreach (XmlNode nd in nl) - { - int transitionid = int.Parse(nd.Attributes.GetNamedItem("transitionid").InnerText); - int fromid = int.Parse(nd.Attributes.GetNamedItem("fromid").InnerText); - int toid = int.Parse(nd.Attributes.GetNamedItem("toid").InnerText); - int rangeid = int.Parse(nd.Attributes.GetNamedItem("rangeid").InnerText); - if (Old2NewContent.ContainsKey(fromid) && Old2NewItem.ContainsKey(toid) && Old2NewItem.ContainsKey(rangeid)) - { - int isrange = int.Parse(nd.Attributes.GetNamedItem("isrange").InnerText); - int trantype = int.Parse(nd.Attributes.GetNamedItem("trantype").InnerText); - string config = nd.Attributes.GetNamedItem("config").InnerText; - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - string lookfor; - if (isrange == 0) - lookfor = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - lookfor = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - fromid = Old2NewContent[fromid]; - toid = Old2NewItem[toid]; - rangeid = Old2NewItem[rangeid]; - Content cc = Content.Get(fromid); - Transition tt = Transition.MakeTransition(cc, Item.Get(toid), Item.Get(rangeid), isrange, trantype, config, dts, userid); - transitionid = tt.TransitionID; - string replacewith; - if (isrange == 0) - replacewith = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - replacewith = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - cc.Text = cc.Text.Replace(lookfor, replacewith); - cc.Save(); - nd.Attributes.GetNamedItem("folder").InnerText = ""; - } - } - xd.Save(fn); - } - private void ReadTransitionAndItemContentIDs() - { - ZipEntry ze = MyImpxZipFile["items.xml"]; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - string fn = PEIPath + @"\items.xml"; - XmlDocument xd = new XmlDocument(); - xd.Load(fn); - XmlNodeList nl = xd.SelectNodes("//item"); - foreach (XmlNode nd in nl) - { - int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText); - int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText); - //if (!Old2NewItem.ContainsKey(oldid)) - Old2NewItem.Add(oldid, newid); - } - ze = MyImpxZipFile["contents.xml"]; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - fn = PEIPath + @"\contents.xml"; - xd = new XmlDocument(); - xd.Load(fn); - nl = xd.SelectNodes("//content"); - foreach (XmlNode nd in nl) - { - int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText); - int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText); - //if (!Old2NewContent.ContainsKey(oldid)) - Old2NewContent.Add(oldid, newid); - } - ze = MyImpxZipFile["libdocs.xml"]; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - fn = PEIPath + @"\libdocs.xml"; - xd = new XmlDocument(); - xd.Load(fn); - nl = xd.SelectNodes("//libdoc"); - foreach (XmlNode nd in nl) - { - int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText); - int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText); - //if (!Old2NewContent.ContainsKey(oldid)) - Old2NewLibDoc.Add(oldid, newid); - } - ze = MyImpxZipFile["transitions.xml"]; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - fn = PEIPath + @"\transitions.xml"; - PendingTransitions.Load(fn); - } - private void AddStoredItemContentIDs(XmlDocument xd) - { - XmlNodeList nl = xd.SelectNodes("//item"); - foreach (XmlNode nd in nl) - { - int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText); - int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText); - if (!Old2NewItem.ContainsKey(oldid)) - Old2NewItem.Add(oldid, newid); - } - nl = xd.SelectNodes("//content"); - foreach (XmlNode nd in nl) - { - int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText); - int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText); - if (!Old2NewContent.ContainsKey(oldid)) - Old2NewContent.Add(oldid, newid); - } - } - private void FixImportDataTransitions() - { - XmlDocument xd = new XmlDocument(); - string fn = PEIPath + @"\ExternalTransitions.xml"; - if (!File.Exists(fn)) - { - XmlElement xe = xd.CreateElement("externaltransitions"); - XmlElement xee = xd.CreateElement("oldtonewitem"); - xe.AppendChild(xee); - xee = xd.CreateElement("oldtonewcontent"); - xe.AppendChild(xee); - xee = xd.CreateElement("transitions"); - xe.AppendChild(xee); - xd.AppendChild(xe); - xd.Save(fn); - } - else - { - xd.Load(fn); - } - FileStream fs = File.OpenRead(txtImport.Text); - XmlReaderSettings rs = new XmlReaderSettings(); - rs.CheckCharacters = false; - XmlReader xr = XmlReader.Create(fs, rs); - while (xr.Read()) - { - if (xr.IsStartElement()) - { - switch (xr.Name) - { - case "transition": - AddTransitions(xr); - break; - case "externaltransition": - { - AddExternalTransition(xr, xd); - break; - } - default: - break; - } - } - } - fs.Close(); - xd.Save(fn); - } - private Dictionary> MyCounts = null; - private Dictionary MySubCounts = null; - private void GetImportDataCounts() - { - int pCount = 0; - int sCount = 0; - int tCount = 0; - MyCounts = new Dictionary>(); - MySubCounts = new Dictionary(); - FileStream fs = File.OpenRead(txtImport.Text); - XmlReaderSettings rs = new XmlReaderSettings(); - rs.CheckCharacters = false; - XmlReader xr = XmlReader.Create(fs, rs); - while (xr.Read()) - { - if (xr.IsStartElement()) - { - switch (xr.Name) - { - case "procedure": - { - if (pCount > 0) - { - MySubCounts.Add(sCount, tCount); - MyCounts.Add(pCount, MySubCounts); - sCount = 0; - tCount = 0; - MySubCounts = new Dictionary(); - } - pCount++; - break; - } - case "section": - { - if (sCount > 0) - { - MySubCounts.Add(sCount, tCount); - tCount = 0; - } - sCount++; - break; - } - case "step": - { - if (xr.Depth == 8) - tCount++; - break; - } - default: - break; - } - } - } - MySubCounts.Add(sCount, tCount); - MyCounts.Add(pCount, MySubCounts); - fs.Close(); - } - private void btnImport_Click(object sender, EventArgs e) - { - if (ofd.ShowDialog(this) == DialogResult.OK) - { - if (ofd.FileName != string.Empty) - { - Old2NewItem = new Dictionary(); - Old2NewContent = new Dictionary(); - Old2NewLibDoc = new Dictionary(); - PendingTransitions = new XmlDocument(); - FileInfo fi = new FileInfo(ofd.FileName); - string dn = fi.Directory.Name; - txtImport.Text = ofd.FileName; - ReadOptions ro = new ReadOptions(); - ro.Encoding = Encoding.UTF8; - MyExpxZipFile = ZipFile.Read(txtImport.Text, ro); - string fn = string.Format(@"{0}\{1}.impx", PEIPath, dn); - if (File.Exists(fn)) - { - MyImpxZipFile = ZipFile.Read(fn, ro); - ReadTransitionAndItemContentIDs(); - } - else - { - MyImpxZipFile = new ZipFile(fn, Encoding.UTF8); - //transitions - XmlElement xe = PendingTransitions.CreateElement("transitions"); - PendingTransitions.AppendChild(xe); - fn = PEIPath + @"\transitions.xml"; - PendingTransitions.Save(fn); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - //File.Delete(fn); - //itemids - XmlDocument xd = new XmlDocument(); - xe = xd.CreateElement("items"); - xd.AppendChild(xe); - fn = PEIPath + @"\items.xml"; - xd.Save(fn); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - //contentids - xd = new XmlDocument(); - xe = xd.CreateElement("contents"); - xd.AppendChild(xe); - fn = PEIPath + @"\contents.xml"; - xd.Save(fn); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - //libdocids - xd = new XmlDocument(); - xe = xd.CreateElement("libdocs"); - xd.AppendChild(xe); - fn = PEIPath + @"\libdocs.xml"; - xd.Save(fn); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - } - } - } - } - private void txtImport_TextChanged(object sender, EventArgs e) - { - btnDoImport.Enabled = txtImport.TextLength > 0; - if (btnDoImport.Enabled) - lblImportStatus.Text = "Ready To Perform Import"; - else - lblImportStatus.Text = "Awaiting Import File Name:"; - } - #region Export for Merge - private string FromFolderName = string.Empty; - private void ExportFolder(XmlDocument xd, FolderInfo fi, string nodename) - { - /* - FolderID - ParentID - DBID - Name - Title - ShortName - FormatID - ManualOrder - Config - DTS - UsrID - */ - lblExportStatus.Text = "Exporting Folder..."; - Application.DoEvents(); - FromFolderName = fi.Name; - XmlElement xe = xd.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xd, "folderid", fi.FolderID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "parentid", fi.ParentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "dbid", fi.DBID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "name", fi.Name)); - xe.Attributes.SetNamedItem(AddAttribute(xd, "title", fi.Title)); - xe.Attributes.SetNamedItem(AddAttribute(xd, "shortname", fi.ShortName)); - xe.Attributes.SetNamedItem(AddAttribute(xd, "formatid", fi.FormatID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "manualorder", fi.ManualOrder.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "config", fi.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xd, "dts", fi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xd, "usrid", fi.UsrID.ToString())); - xd.AppendChild(xe); - ExportAnnotationTypes(xe, "annotationtypes"); - ExportFormats(xe, "formats"); - if (fi.FolderDocVersionCount > 0) - foreach (DocVersionInfo dvi in fi.FolderDocVersions) - ExportDocVersion(xe, dvi, "docversion"); - } - private void ExportFormats(XmlElement xn, string nodename) - { - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - FormatInfoList fil = FormatInfoList.Get(); - foreach (FormatInfo fi in fil) - ExportFormat(xe, fi, "format"); - xn.AppendChild(xe); - } - private void ExportFormat(XmlElement xn, FormatInfo fi, string nodename) - { - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatid", fi.FormatID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "name", fi.Name)); - xn.AppendChild(xe); - } - private void ExportAnnotationTypes(XmlElement xn, string nodename) - { - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - AnnotationTypeInfoList atl = AnnotationTypeInfoList.Get(); - foreach (AnnotationTypeInfo ati in atl) - ExportAnnotationType(xe, ati, "annotationtype"); - xn.AppendChild(xe); - } - private void ExportAnnotationType(XmlElement xn, AnnotationTypeInfo ati, string nodename) - { - /* - TypeID - Name - Config - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "typeid", ati.TypeID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "name", ati.Name)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ati.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ati.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ati.UserID.ToString())); - xn.AppendChild(xe); - } - private void ExportFolder(FolderInfo fi, string nodename) - { - /* - FolderID - ParentID - DBID - Name - Title - ShortName - FormatID - ManualOrder - Config - DTS - UsrID - */ - FromFolderName = fi.Name; - MyWriter.WriteStartDocument(); - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("folderid", fi.FolderID.ToString()); - MyWriter.WriteAttributeString("parentid", fi.ParentID.ToString()); - MyWriter.WriteAttributeString("dbid", fi.DBID.ToString()); - MyWriter.WriteAttributeString("name", fi.Name); - MyWriter.WriteAttributeString("title", fi.Title); - MyWriter.WriteAttributeString("shortname", fi.ShortName); - MyWriter.WriteAttributeString("formatid", fi.FormatID.ToString()); - MyWriter.WriteAttributeString("manualorder", fi.ManualOrder.ToString()); - MyWriter.WriteAttributeString("config", fi.Config); - MyWriter.WriteAttributeString("dts", fi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("usrid", fi.UsrID.ToString()); - - if (fi.FolderDocVersionCount > 0) - foreach (DocVersionInfo dvi in fi.FolderDocVersions) - ExportDocVersion(dvi, "docversion"); - MyWriter.WriteEndElement(); - MyWriter.WriteEndDocument(); - } - private void ExportDocVersion(XmlElement xn, DocVersionInfo dvi, string nodename) - { - /* - VersionID - FolderID - VersionType - Name - Title - ItemID - FormatID - Config - DTS - UserID - */ - lblExportStatus.Text = "Exporting DocVersion..."; - Application.DoEvents(); - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "versionid", dvi.VersionID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "folderid", dvi.FolderID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "versiontype", dvi.VersionType.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "name", dvi.Name)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "title", dvi.Title)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "itemid", dvi.ItemID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatid", dvi.FormatID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", dvi.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", dvi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", dvi.UserID.ToString())); - xn.AppendChild(xe); - if (dvi.DocVersionAssociationCount > 0) - foreach (AssociationInfo ai in dvi.DocVersionAssociations) - ExportAssociation(xe, ai, "association"); - string fn = PEIPath + @"\folder.xml"; - xn.OwnerDocument.Save(fn); - MyExpxZipFile.AddFile(fn, "folder"); - MyExpxZipFile.Save(); - File.Delete(fn); - //here - lblExportStatus.Text = "Exporting Procedures..."; - Application.DoEvents(); - if (dvi.Procedures.Count > 0) - { - pbExportProcedure.Value = 0; - pbExportProcedure.Maximum = dvi.Procedures.Count; - lblExportProcedure.Text = pbExportProcedure.Maximum.ToString() + " Procedures"; - foreach (ItemInfo ii in dvi.Procedures) - { - XmlDocument xd = new XmlDocument(); - ExportItem(xd, ii, "procedure"); - fn = string.Format(@"{0}\proc{1}.xml", PEIPath, pbExportProcedure.Value.ToString().PadLeft(4, '0')); - xd.Save(fn); - MyExpxZipFile.AddFile(fn, "procedures"); - MyExpxZipFile.Save(); - File.Delete(fn); - xd = null; - } - } - } - private void ExportDocVersion(DocVersionInfo dvi, string nodename) - { - /* - VersionID - FolderID - VersionType - Name - Title - ItemID - FormatID - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("versionid", dvi.VersionID.ToString()); - MyWriter.WriteAttributeString("folderid", dvi.FolderID.ToString()); - MyWriter.WriteAttributeString("versiontype", dvi.VersionType.ToString()); - MyWriter.WriteAttributeString("name", dvi.Name); - MyWriter.WriteAttributeString("title", dvi.Title); - MyWriter.WriteAttributeString("itemid", dvi.ItemID.ToString()); - MyWriter.WriteAttributeString("formatid", dvi.FormatID.ToString()); - MyWriter.WriteAttributeString("config", dvi.Config); - MyWriter.WriteAttributeString("dts", dvi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", dvi.UserID.ToString()); - if (dvi.DocVersionAssociationCount > 0) - foreach (AssociationInfo ai in dvi.DocVersionAssociations) - ExportAssociation(ai, "association"); - if (dvi.Procedures.Count > 0) - { - pbExportProcedure.Value = 0; - pbExportProcedure.Maximum = dvi.Procedures.Count; - lblExportProcedure.Text = pbExportProcedure.Maximum.ToString() + " Procedures"; - foreach (ItemInfo ii in dvi.Procedures) - { - ExportItem(ii, "procedure"); - } - } - MyWriter.WriteEndElement(); - } - private void ExportAssociation(XmlElement xn, AssociationInfo ai, string nodename) - { - /* - AssociationID - VersionID - ROFstID - Config - DTS - UserID - */ - lblExportStatus.Text = "Exporting Association..."; - Application.DoEvents(); - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "associationid", ai.AssociationID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "versionid", ai.VersionID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rofstid", ai.ROFstID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ai.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ai.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ai.UserID.ToString())); - xn.AppendChild(xe); - ExportROFst(xe, ai.MyROFst, "rofst"); - } - private void ExportAssociation(AssociationInfo ai, string nodename) - { - /* - AssociationID - VersionID - ROFstID - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("associationid", ai.AssociationID.ToString()); - MyWriter.WriteAttributeString("versionid", ai.VersionID.ToString()); - MyWriter.WriteAttributeString("rofstid", ai.ROFstID.ToString()); - MyWriter.WriteAttributeString("config", ai.Config); - MyWriter.WriteAttributeString("dts", ai.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", ai.UserID.ToString()); - ExportROFst(ai.MyROFst, "rofst"); - MyWriter.WriteEndElement(); - } - private void ExportROFst(XmlElement xn, ROFstInfo fst, string nodename) - { - /* - ROFstID - RODbID - ROLookup - Config - DTS - UserID - */ - lblExportStatus.Text = "Exporting ROFst..."; - Application.DoEvents(); - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rofstid", fst.ROFstID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rodbid", fst.RODbID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rolookup", Convert.ToBase64String(fst.ROLookup))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", fst.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", fst.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", fst.UserID.ToString())); - xn.AppendChild(xe); - ExportRODb(xe, fst.MyRODb, "rodb"); - } - private void ExportROFst(ROFstInfo fst, string nodename) - { - /* - ROFstID - RODbID - ROLookup - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("rofstid", fst.ROFstID.ToString()); - MyWriter.WriteAttributeString("rodbid", fst.RODbID.ToString()); - MyWriter.WriteAttributeString("rolookup", Convert.ToBase64String(fst.ROLookup)); - MyWriter.WriteAttributeString("config", fst.Config); - MyWriter.WriteAttributeString("dts", fst.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", fst.UserID.ToString()); - ExportRODb(fst.MyRODb, "rodb"); - MyWriter.WriteEndElement(); - } - private void ExportRODb(XmlElement xn, RODbInfo db, string nodename) - { - /* - RODbID - ROName - FolderPath - DBConnectionString - Config - DTS - UserID - */ - lblExportStatus.Text = "Exporting RODb..."; - Application.DoEvents(); - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rodbid", db.RODbID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "roname", db.ROName)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "folderpath", db.FolderPath)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dbconnectionstring", db.DBConnectionString)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", db.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", db.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", db.UserID.ToString())); - xn.AppendChild(xe); - } - private void ExportRODb(RODbInfo db, string nodename) - { - /* - RODbID - ROName - FolderPath - DBConnectionString - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("rodbid", db.RODbID.ToString()); - MyWriter.WriteAttributeString("roname", db.ROName); - MyWriter.WriteAttributeString("folderpath", db.FolderPath); - MyWriter.WriteAttributeString("dbconnectionstring", db.DBConnectionString); - MyWriter.WriteAttributeString("config", db.Config); - MyWriter.WriteAttributeString("dts", db.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", db.UserID.ToString()); - MyWriter.WriteEndElement(); - } - private void ExportItem(XmlDocument xd, ItemInfo ii, string nodename) - { - XmlElement xe = xd.CreateElement(nodename); - xd.AppendChild(xe); - ExportItem(xe, ii, nodename); - } - private void ExportItem(XmlElement xn, ItemInfo ii, string nodename) - { - /* - ItemID - PreviousID - ContentID - DTS - */ - XmlElement xe = null; - if (xn.Name == "procedure") - xe = xn; - else - { - xe = xn.OwnerDocument.CreateElement(nodename); - xn.AppendChild(xe); - } - if (ii.IsProcedure) - { - pbExportProcedure.PerformStep(); - lblExportProcedure.Text = string.Format("{0} of {1} Procedures", pbExportProcedure.Value.ToString(), pbExportProcedure.Maximum.ToString()); - TimeSpan elapsed = DateTime.Now.Subtract(MyStart); - lblExportTime.Text = "Elapsed Time: " + elapsed.ToString(); - Application.DoEvents(); - pbExportSection.Value = 0; - pbExportSection.Maximum = pbExportSection.Value; - pbExportStep.Value = 0; - pbExportStep.Maximum = pbExportStep.Value; - pbExportSection.Maximum = ii.Sections.Count; - } - if (ii.IsSection && ii.ActiveParent.IsProcedure) - { - pbExportSection.PerformStep(); - lblExportSection.Text = string.Format("{0} of {1} Sections", pbExportSection.Value.ToString(), pbExportSection.Maximum.ToString()); - Application.DoEvents(); - pbExportStep.Value = 0; - pbExportStep.Maximum = pbExportStep.Value; - if (ii.Steps != null) - pbExportStep.Maximum = ii.Steps.Count; - } - if (ii.IsStep && ii.ActiveParent.IsSection && ii.ActiveParent.ActiveParent.IsProcedure) - { - pbExportStep.PerformStep(); - lblExportStep.Text = string.Format("{0} of {1} Steps", pbExportStep.Value.ToString(), pbExportStep.Maximum.ToString()); - Application.DoEvents(); - } - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "itemid", ii.ItemID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "previousid", ii.PreviousID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ii.ContentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ii.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - ExportContent(xe, ii.MyContent, "content"); - if (ii.ItemAnnotationCount > 0) - foreach (AnnotationInfo ai in ii.ItemAnnotations) - ExportAnnotation(xe, ai, "annotation"); - } - private void ExportItem(ItemInfo ii, string nodename) - { - /* - ItemID - PreviousID - ContentID - DTS - */ - if (ii.IsProcedure) - { - pbExportProcedure.PerformStep(); - lblExportProcedure.Text = string.Format("{0} of {1} Procedures", pbExportProcedure.Value.ToString(), pbExportProcedure.Maximum.ToString()); - Application.DoEvents(); - pbExportSection.Value = 0; - pbExportStep.Value = 0; - pbExportSection.Maximum = ii.Sections.Count; - } - if (ii.IsSection) - { - pbExportSection.PerformStep(); - lblExportSection.Text = string.Format("{0} of {1} Sections", pbExportSection.Value.ToString(), pbExportSection.Maximum.ToString()); - Application.DoEvents(); - pbExportStep.Value = 0; - if (ii.Steps != null) - pbExportStep.Maximum = ii.Steps.Count; - } - if (ii.IsStep) - { - pbExportStep.PerformStep(); - lblExportStep.Text = string.Format("{0} of {1} Steps", pbExportStep.Value.ToString(), pbExportStep.Maximum.ToString()); - Application.DoEvents(); - } - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("itemid", ii.ItemID.ToString()); - MyWriter.WriteAttributeString("previousid", ii.PreviousID.ToString()); - MyWriter.WriteAttributeString("contentid", ii.ContentID.ToString()); - MyWriter.WriteAttributeString("dts", ii.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - ExportContent(ii.MyContent, "content"); - if (ii.ItemAnnotationCount > 0) - foreach (AnnotationInfo ai in ii.ItemAnnotations) - ExportAnnotation(ai, "annotation"); - MyWriter.WriteEndElement(); - } - private void ExportContent(XmlElement xn, ContentInfo ci, string nodename) - { - /* - ContentID - Number - Text - Type - FormatID - Config - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ci.ContentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "number", ci.Number)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "text", ci.Text)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "type", ci.Type.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatid", ci.FormatID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ci.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ci.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ci.UserID.ToString())); - xn.AppendChild(xe); - if (ci.ContentTransitionCount > 0) - foreach (TransitionInfo ti in ci.ContentTransitions) - ExportTransition(xe, ti, "transition"); - if (ci.ContentRoUsageCount > 0) - foreach (RoUsageInfo ri in ci.ContentRoUsages) - ExportROUsage(xe, ri, "rousage"); - if (ci.ContentEntryCount > 0) - ExportEntry(xe, ci.MyEntry, "entry"); - if (ci.ContentGridCount > 0) - ExportGrid(xe, ci.MyGrid, "grid"); - if (ci.ContentPartCount > 0) - foreach (PartInfo pi in ci.ContentParts) - ExportPart(xe, pi, ((E_FromTypes)pi.FromType).ToString().ToLower()); - } - private void ExportContent(ContentInfo ci, string nodename) - { - /* - ContentID - Number - Text - Type - FormatID - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("contentid", ci.ContentID.ToString()); - MyWriter.WriteAttributeString("number", ci.Number); - MyWriter.WriteAttributeString("text", ci.Text); - MyWriter.WriteAttributeString("type", ci.Type.ToString()); - MyWriter.WriteAttributeString("formatid", ci.FormatID.ToString()); - MyWriter.WriteAttributeString("config", ci.Config); - MyWriter.WriteAttributeString("dts", ci.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", ci.UserID.ToString()); - if (ci.ContentTransitionCount > 0) - foreach (TransitionInfo ti in ci.ContentTransitions) - ExportTransition(ti, "transition"); - if (ci.ContentRoUsageCount > 0) - foreach (RoUsageInfo ri in ci.ContentRoUsages) - ExportROUsage(ri, "rousage"); - if (ci.ContentEntryCount > 0) - ExportEntry(ci.MyEntry, "entry"); - if (ci.ContentGridCount > 0) - ExportGrid(ci.MyGrid, "grid"); - if (ci.ContentPartCount > 0) - foreach (PartInfo pi in ci.ContentParts) - ExportPart(pi, ((E_FromTypes)pi.FromType).ToString().ToLower()); - MyWriter.WriteEndElement(); - } - private void ExportGrid(XmlElement xn, GridInfo gi, string nodename) - { - /* - ContentID - Data - Config - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", gi.ContentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "data", gi.Data)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", gi.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", gi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", gi.UserID.ToString())); - xn.AppendChild(xe); - } - private void ExportGrid(GridInfo gi, string nodename) - { - /* - ContentID - Data - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("contentid", gi.ContentID.ToString()); - MyWriter.WriteAttributeString("data", gi.Data); - MyWriter.WriteAttributeString("config", gi.Config); - MyWriter.WriteAttributeString("dts", gi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", gi.UserID.ToString()); - MyWriter.WriteEndElement(); - } - private void ExportEntry(XmlElement xn, EntryInfo ei, string nodename) - { - /* - ContentID - DocID - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ei.ContentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "docid", ei.DocID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ei.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ei.UserID.ToString())); - xn.AppendChild(xe); - ExportDocument(xe, ei.MyDocument, "document"); - } - private void ExportEntry(EntryInfo ei, string nodename) - { - /* - ContentID - DocID - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("contentid", ei.ContentID.ToString()); - MyWriter.WriteAttributeString("docid", ei.DocID.ToString()); - MyWriter.WriteAttributeString("dts", ei.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", ei.UserID.ToString()); - ExportDocument(ei.MyDocument, "document"); - MyWriter.WriteEndElement(); - } - private void ExportDocument(XmlElement xn, DocumentInfo di, string nodename) - { - /* - DocID - LibTitle - DocContent - DocAscii - Config - DTS - UserID - FileExtension - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "docid", di.DocID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "libtitle", di.LibTitle)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "doccontent", Convert.ToBase64String(di.DocContent))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "docascii", di.DocAscii)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", di.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", di.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", di.UserID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "fileextension", di.FileExtension)); - xn.AppendChild(xe); - } - private void ExportDocument(DocumentInfo di, string nodename) - { - /* - DocID - LibTitle - DocContent - DocAscii - Config - DTS - UserID - FileExtension - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("docid", di.DocID.ToString()); - MyWriter.WriteAttributeString("libtitle", di.LibTitle); - MyWriter.WriteAttributeString("doccontent", Convert.ToBase64String(di.DocContent)); - MyWriter.WriteAttributeString("docascii", di.DocAscii); - MyWriter.WriteAttributeString("config", di.Config); - MyWriter.WriteAttributeString("dts", di.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", di.UserID.ToString()); - MyWriter.WriteAttributeString("fileextension", di.FileExtension); - MyWriter.WriteEndElement(); - } - private void ExportROUsage(XmlElement xn, RoUsageInfo ri, string nodename) - { - /* - ROUsageID - ContentID - ROID - Config - DTS - UserID - RODbID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rousageid", ri.ROUsageID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ri.ContentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "roid", ri.ROID)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ri.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ri.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ri.UserID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rodbid", ri.RODbID.ToString())); - xn.AppendChild(xe); - } - private void ExportROUsage(RoUsageInfo ri, string nodename) - { - /* - ROUsageID - ContentID - ROID - Config - DTS - UserID - RODbID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("rousageid", ri.ROUsageID.ToString()); - MyWriter.WriteAttributeString("contentid", ri.ContentID.ToString()); - MyWriter.WriteAttributeString("roid", ri.ROID); - MyWriter.WriteAttributeString("config", ri.Config); - MyWriter.WriteAttributeString("dts", ri.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", ri.UserID.ToString()); - MyWriter.WriteAttributeString("rodbid", ri.RODbID.ToString()); - MyWriter.WriteEndElement(); - } - private void ExportPart(XmlElement xn, PartInfo pi, string nodename) - { - /* - ContentID - FromType - ItemID - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", pi.ContentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "fromtype", pi.FromType.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "itemid", pi.ItemID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", pi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", pi.UserID.ToString())); - xn.AppendChild(xe); - foreach (ItemInfo ii in pi.MyItems) - ExportItem(xe, ii, pi.PartType.ToString().ToLower()); - } - private void ExportPart(PartInfo pi, string nodename) - { - /* - ContentID - FromType - ItemID - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("contentid", pi.ContentID.ToString()); - MyWriter.WriteAttributeString("fromtype", pi.FromType.ToString()); - MyWriter.WriteAttributeString("itemid", pi.ItemID.ToString()); - MyWriter.WriteAttributeString("dts", pi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", pi.UserID.ToString()); - foreach (ItemInfo ii in pi.MyItems) - ExportItem(ii, pi.PartType.ToString().ToLower()); - MyWriter.WriteEndElement(); - } - private void ExportTransition(XmlElement xn, TransitionInfo ti, string nodename) - { - /* - TransitionID - FromID - ToID - RangeID - IsRange - TranType - Config - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "transitionid", ti.TransitionID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "fromid", ti.FromID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "toid", ti.ToID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rangeid", ti.RangeID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "isrange", ti.IsRange.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "trantype", ti.TranType.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ti.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ti.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ti.UserID.ToString())); - xn.AppendChild(xe); - } - private void ExportTransition(TransitionInfo ti, string nodename) - { - /* - TransitionID - FromID - ToID - RangeID - IsRange - TranType - Config - DTS - UserID - */ - string folder = string.Empty; - if (ti.MyItemToID.MyDocVersion != null && ti.MyItemToID.MyDocVersion.MyFolder.Name != MyFolder.Name) - { - nodename = "external" + nodename; - folder = ti.MyItemToID.MyDocVersion.MyFolder.Name; - } - else - { - nodename = "external" + nodename; - folder = "UNKNOWN"; - } - MyWriter.WriteStartElement(nodename); - if (folder != string.Empty) - MyWriter.WriteAttributeString("folder", folder); - MyWriter.WriteAttributeString("transitionid", ti.TransitionID.ToString()); - MyWriter.WriteAttributeString("fromid", ti.FromID.ToString()); - MyWriter.WriteAttributeString("toid", ti.ToID.ToString()); - MyWriter.WriteAttributeString("rangeid", ti.RangeID.ToString()); - MyWriter.WriteAttributeString("isrange", ti.IsRange.ToString()); - MyWriter.WriteAttributeString("trantype", ti.TranType.ToString()); - MyWriter.WriteAttributeString("config", ti.Config); - MyWriter.WriteAttributeString("dts", ti.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", ti.UserID.ToString()); - MyWriter.WriteEndElement(); - } - private void ExportAnnotation(XmlElement xn, AnnotationInfo ai, string nodename) - { - /* - AnnotationID - ItemID - TypeID - RtfText - SearchText - Config - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "annotationid", ai.AnnotationID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "itemid", ai.ItemID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "typeid", ai.TypeID.ToString())); - //if(ai.TypeID > 6) - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "typename", ai.MyAnnotationType.Name)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rtftext", ai.RtfText)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "searchtext", ai.SearchText)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ai.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ai.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ai.UserID.ToString())); - xn.AppendChild(xe); - } - private void ExportAnnotation(AnnotationInfo ai, string nodename) - { - /* - AnnotationID - ItemID - TypeID - RtfText - SearchText - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("annotationid", ai.AnnotationID.ToString()); - MyWriter.WriteAttributeString("itemid", ai.ItemID.ToString()); - MyWriter.WriteAttributeString("typeid", ai.TypeID.ToString()); - MyWriter.WriteAttributeString("rtftext", ai.RtfText); - MyWriter.WriteAttributeString("searchtext", ai.SearchText); - MyWriter.WriteAttributeString("config", ai.Config); - MyWriter.WriteAttributeString("dts", ai.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", ai.UserID.ToString()); - MyWriter.WriteEndElement(); - } - #endregion - #region Import for Merge - private void AddExternalTransition(XmlReader xr, XmlDocument xd) - { - XmlElement xe = xd.CreateElement("transition"); - XmlAttribute xa = AddAttribute(xd, "folder", xr.GetAttribute("folder")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "transitionid", xr.GetAttribute("transitionid")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "fromid", xr.GetAttribute("fromid")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "toid", xr.GetAttribute("toid")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "rangeid", xr.GetAttribute("rangeid")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "isrange", xr.GetAttribute("isrange")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "trantype", xr.GetAttribute("trantype")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "config", xr.GetAttribute("config")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "userid", xr.GetAttribute("userid")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "dts", xr.GetAttribute("dts")); - xe.Attributes.SetNamedItem(xa); - xd.SelectSingleNode("externaltransitions/transitions").AppendChild(xe); - } - private void AddTransitions(XmlReader xr) - { - int transitionid = int.Parse(xr.GetAttribute("transitionid")); - int fromid = int.Parse(xr.GetAttribute("fromid")); - int toid = int.Parse(xr.GetAttribute("toid")); - int rangeid = int.Parse(xr.GetAttribute("rangeid")); - int isrange = int.Parse(xr.GetAttribute("isrange")); - int trantype = int.Parse(xr.GetAttribute("trantype")); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - string lookfor; - if (isrange == 0) - lookfor = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - lookfor = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - fromid = Old2NewContent[fromid]; - toid = Old2NewItem[toid]; - rangeid = Old2NewItem[rangeid]; - Content cc = Content.Get(fromid); - Transition tt = Transition.MakeTransition(cc, Item.Get(toid), Item.Get(rangeid), isrange, trantype, config, dts, userid); - transitionid = tt.TransitionID; - string replacewith; - if (isrange == 0) - replacewith = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - replacewith = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - cc.Text = cc.Text.Replace(lookfor, replacewith); - cc.Save(); - } - private void AddTransitions(Content content, XmlNode xn) - { - /* - Content - Item - Item - int - int - string - dts - string - - - #Link:Transition:1 2 187 - type,id,toid - - #Link:TransitionRange:2 1 175 177 - type,id,toid,rangeid - */ - XmlNodeList nl = xn.SelectNodes("./transition"); - foreach (XmlNode nd in nl) - { - int toid = int.Parse(nd.Attributes.GetNamedItem("toid").InnerText); - int rangeid = int.Parse(nd.Attributes.GetNamedItem("rangeid").InnerText); - if (Old2NewItem.ContainsKey(toid) && Old2NewItem.ContainsKey(rangeid)) - { - int transitionid = int.Parse(nd.Attributes.GetNamedItem("transitionid").InnerText); - int isrange = int.Parse(nd.Attributes.GetNamedItem("isrange").InnerText); - int trantype = int.Parse(nd.Attributes.GetNamedItem("trantype").InnerText); - string config = nd.Attributes.GetNamedItem("config").InnerText; - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - string lookfor; - if (isrange == 0) - lookfor = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - lookfor = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - //fromid = content.ContentID; - toid = Old2NewItem[toid]; - rangeid = Old2NewItem[rangeid]; - Transition tt = Transition.MakeTransition(content, Item.Get(toid), Item.Get(rangeid), isrange, trantype, config, dts, userid); - transitionid = tt.TransitionID; - string replacewith; - if (isrange == 0) - replacewith = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - replacewith = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - content.Text = content.Text.Replace(lookfor, replacewith); - content.Save(); - } - else - { - PendingTransitions.DocumentElement.AppendChild(PendingTransitions.ImportNode(nd, true)); - //save to holding pen - } - } - } - private void AddTransitions() - { - AddTransitions(PendingTransitions); - } - private void AddTransitions(XmlDocument xd) - { - /* - Content - Item - Item - int - int - string - dts - string - - - #Link:Transition:1 2 187 - type,id,toid - - #Link:TransitionRange:2 1 175 177 - type,id,toid,rangeid - */ - XmlNodeList nl = xd.SelectNodes("//transition"); - lblImportStatus.Text = string.Format("Updating {0} Tranistions", nl.Count.ToString()); - foreach (XmlNode nd in nl) - { - int fromid = int.Parse(nd.Attributes.GetNamedItem("fromid").InnerText); - int toid = int.Parse(nd.Attributes.GetNamedItem("toid").InnerText); - int rangeid = int.Parse(nd.Attributes.GetNamedItem("rangeid").InnerText); - if (Old2NewContent.ContainsKey(fromid) && Old2NewItem.ContainsKey(toid) && Old2NewItem.ContainsKey(rangeid)) - { - int transitionid = int.Parse(nd.Attributes.GetNamedItem("transitionid").InnerText); - int isrange = int.Parse(nd.Attributes.GetNamedItem("isrange").InnerText); - int trantype = int.Parse(nd.Attributes.GetNamedItem("trantype").InnerText); - string config = nd.Attributes.GetNamedItem("config").InnerText; - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - string lookfor; - if (isrange == 0) - lookfor = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - lookfor = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - fromid = Old2NewContent[fromid]; - toid = Old2NewItem[toid]; - rangeid = Old2NewItem[rangeid]; - Content cc = Content.Get(fromid); - Transition tt = Transition.MakeTransition(cc, Item.Get(toid), Item.Get(rangeid), isrange, trantype, config, dts, userid); - transitionid = tt.TransitionID; - string replacewith; - if (isrange == 0) - replacewith = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - replacewith = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - cc.Text = cc.Text.Replace(lookfor, replacewith); - cc.Save(); - nd.InnerText = "done"; - } - } - } - private Dictionary Old2NewItem; - private Dictionary Old2NewContent; - private Dictionary Old2NewLibDoc; - private XmlDocument PendingTransitions; - private RODb MyRODb = null; - private Folder AddFolder(Folder folder, XmlReader xr) - { - Old2NewItem = new Dictionary(); - Old2NewContent = new Dictionary(); - Old2NewLibDoc = new Dictionary(); - string title = xr.GetAttribute("title"); - string name = xr.GetAttribute("name"); - string shortname = xr.GetAttribute("shortname"); - string usrid = xr.GetAttribute("usrid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - string formatid = xr.GetAttribute("formatid"); - Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid)); - folder = Folder.MakeFolder(folder, folder.MyConnection, name, title, shortname, format, null, dts, usrid); - //f.Save(); - return folder; - } - private Folder AddFolder(Folder p, XmlDocument xd) - { - lblImportStatus.Text = "Creating Folder..."; - Application.DoEvents(); - string title = xd.DocumentElement.Attributes.GetNamedItem("title").InnerText; - string name = xd.DocumentElement.Attributes.GetNamedItem("name").InnerText; - string shortname = xd.DocumentElement.Attributes.GetNamedItem("shortname").InnerText; - string usrid = xd.DocumentElement.Attributes.GetNamedItem("usrid").InnerText; - DateTime dts = DateTime.Parse(xd.DocumentElement.Attributes.GetNamedItem("dts").InnerText); - string formatid = xd.DocumentElement.Attributes.GetNamedItem("formatid").InnerText; - Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid)); - if (Folder.GetByParentID_Name(p.FolderID, name) != null) - return null; - Folder f = Folder.MakeFolder(p, p.MyConnection, name, title, shortname, format, null, dts, usrid); - return f; - } - private Format OldToNewFormat(int formatID) - { - string formatName = oldFormat[formatID]; - formatID = newFormat[formatName]; - return Format.Get(formatID); - } - private DocVersion AddDocVersion(Folder f, XmlReader xr) - { - int versiontype = int.Parse(xr.GetAttribute("versiontype")); - string name = xr.GetAttribute("name"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - string formatid = xr.GetAttribute("formatid"); - Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid)); - DocVersion dv = DocVersion.MakeDocVersion(f, versiontype, name, null, null, format, config, dts, userid); - return dv; - } - private void AddAnnotationTypes(XmlDocument xd) - { - XmlNodeList nl = xd.SelectNodes("folder/annotationtypes/annotationtype"); - foreach (XmlNode nd in nl) - { - AnnotationTypeInfo ati = AnnotationTypeInfo.GetByName(nd.Attributes.GetNamedItem("name").InnerText); - if (ati == null) - AnnotationType.MakeAnnotationType(nd.Attributes.GetNamedItem("name").InnerText, nd.Attributes.GetNamedItem("config").InnerText, DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText), nd.Attributes.GetNamedItem("userid").InnerText); - } - } - private DocVersionInfo AddDocVersion(Folder f, XmlDocument xd) - { - lblImportStatus.Text = "Creating DocVersion..."; - Application.DoEvents(); - XmlElement xe = (XmlElement)xd.SelectSingleNode("folder/docversion"); - int versiontype = int.Parse(xe.Attributes.GetNamedItem("versiontype").InnerText); - string name = xe.Attributes.GetNamedItem("name").InnerText; - string config = xe.Attributes.GetNamedItem("config").InnerText; - string userid = xe.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xe.Attributes.GetNamedItem("dts").InnerText); - string formatid = xe.Attributes.GetNamedItem("formatid").InnerText; - Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid)); - DocVersion dv = DocVersion.MakeDocVersion(f, versiontype, name, null, null, format, config, dts, userid); - XmlNode xassoc = xe.SelectSingleNode("association"); - if (xassoc != null) - { - XmlNode xrofst = xassoc.SelectSingleNode("rofst"); - XmlNode xrodb = xrofst.SelectSingleNode("rodb"); - MyRODb = AddRODb(xrodb); - ROFst rofst = AddROFst(xrofst); - DocVersionAssociation dva = dv.DocVersionAssociations.Add(rofst); - dv.Save(); - } - return DocVersionInfo.Get(dv.VersionID); - } - private Dictionary GetROFstData(XmlReader xr) - { - Dictionary rv = new Dictionary(); - rv.Add("rolookup", xr.GetAttribute("rolookup")); - rv.Add("config", xr.GetAttribute("config")); - rv.Add("userid", xr.GetAttribute("userid")); - rv.Add("dts", xr.GetAttribute("dts")); - return rv; - } - private ROFst AddROFst(Dictionary dic) - { - byte[] rolookup = Convert.FromBase64String(dic["rolookup"]); - string config = dic["config"]; - string userid = dic["userid"]; - DateTime dts = DateTime.Parse(dic["dts"]); - ROFst rv = null; - rv = ROFst.GetByRODbID_DTS(MyRODb.RODbID, dts); //MyRODb.DTS); - if (rv == null) - rv = ROFst.MakeROFst(MyRODb, rolookup, config, dts, userid); - return rv; - } - private ROFst AddROFst(XmlNode xrofst) - { - lblImportStatus.Text = "Creating ROFst..."; - Application.DoEvents(); - byte[] rolookup = Convert.FromBase64String(xrofst.Attributes.GetNamedItem("rolookup").InnerText); - string config = xrofst.Attributes.GetNamedItem("config").InnerText; - string userid = xrofst.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xrofst.Attributes.GetNamedItem("dts").InnerText); - ROFst rv = null; - rv = ROFst.GetByRODbID_DTS(MyRODb.RODbID, dts); //MyRODb.DTS); - if (rv == null) - rv = ROFst.MakeROFst(MyRODb, rolookup, config, dts, userid); - return rv; - } - private RODb AddRODb(XmlReader xr) - { - oldRODbID = int.Parse(xr.GetAttribute("rodbid")); - string roname = xr.GetAttribute("roname"); - string folderpath = xr.GetAttribute("folderpath"); - string dbconnectionstring = xr.GetAttribute("dbconnectionstring"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - RODb rv = null; - rv = RODb.GetByFolderPath(folderpath); - if (rv == null) - rv = RODb.MakeRODb(roname, folderpath, dbconnectionstring, config, dts, userid); - newRODbID = rv.RODbID; - return rv; - } - private RODb AddRODb(XmlNode xrodb) - { - lblImportStatus.Text = "Creating RODb..."; - Application.DoEvents(); - oldRODbID = int.Parse(xrodb.Attributes.GetNamedItem("rodbid").InnerText); - string roname = xrodb.Attributes.GetNamedItem("roname").InnerText; - string folderpath = xrodb.Attributes.GetNamedItem("folderpath").InnerText; - string dbconnectionstring = xrodb.Attributes.GetNamedItem("dbconnectionstring").InnerText; - string config = xrodb.Attributes.GetNamedItem("config").InnerText; - string userid = xrodb.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xrodb.Attributes.GetNamedItem("dts").InnerText); - RODb rv = null; - rv = RODb.GetByFolderPath(folderpath); - if (rv == null) - rv = RODb.MakeRODb(roname, folderpath, dbconnectionstring, config, dts, userid); - newRODbID = rv.RODbID; - return rv; - } - private int GetProcedureData(XmlReader xr) - { - return int.Parse(xr.GetAttribute("itemid")); - } - private ItemInfo AddProcedure(XmlReader xr, DocVersion dv, ItemInfo procInfo, int oldid) - { - DocVersionInfo dvInfo = DocVersionInfo.Get(dv.VersionID); - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int proctype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Procedure p = Procedure.MakeProcedure(dvInfo, procInfo, number, text, proctype); - p.DTS = dts; - p.UserID = userid; - if (formatid != string.Empty) - p.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - p.MyContent.Config = config; - p.MyContent.DTS = dts; - p.MyContent.UserID = userid; - p.Save(); - Old2NewItem.Add(oldid, p.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), p.MyContent.ContentID); - procInfo = ProcedureInfo.Get(p.ItemID); - return procInfo; - } - private ProcedureInfo AddProcedure(XmlNode xn, DocVersionInfo dvInfo, ProcedureInfo procInfo) - { - pbImportProcedure.PerformStep(); - lblImportProcedure.Text = string.Format("{0} of {1} Procedures", pbImportProcedure.Value.ToString(), pbImportProcedure.Maximum.ToString()); - TimeSpan elapsed = DateTime.Now.Subtract(MyStart); - lblImportTime.Text = "Elapsed Time: " + elapsed.ToString(); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int proctype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - Procedure p = Procedure.MakeProcedure(dvInfo, procInfo, number, text, proctype); - p.DTS = dts; - p.UserID = userid; - if (formatid != string.Empty) - p.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - p.MyContent.Config = config; - p.MyContent.DTS = dts; - p.MyContent.UserID = userid; - p.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), p.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), p.MyContent.ContentID); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(p.ItemID, xn); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(p.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(p.MyContent, xc); - procInfo = ProcedureInfo.Get(p.ItemID); - if (xc.HasChildNodes) - AddParts(xc, procInfo); - return procInfo; - } - private void AddROUsage(XmlReader xr) - { - int contentid = int.Parse(xr.GetAttribute("contentid")); - contentid = Old2NewContent[contentid]; - Content content = Content.Get(contentid); - string rousageid = xr.GetAttribute("rousageid"); - string roid = xr.GetAttribute("roid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - RoUsage rou = RoUsage.MakeRoUsage(content, roid, config, dts, userid, MyRODb); - rou.Save(); - string lookFor = string.Format("#Link:ReferencedObject:{0} {1} {2}[END>", rousageid, roid, oldRODbID.ToString()); - string replaceWith = string.Format("#Link:ReferencedObject:{0} {1} {2}[END>", rou.ROUsageID.ToString(), roid, newRODbID.ToString()); - if (lookFor != replaceWith) - { - content.Text = content.Text.Replace(lookFor, replaceWith); - content.Save(); - } - } - private void AddROUsages(Content content, XmlNode xn) - { - foreach (XmlNode nd in xn.SelectNodes("rousage")) - { - string rousageid = nd.Attributes.GetNamedItem("rousageid").InnerText; - string roid = nd.Attributes.GetNamedItem("roid").InnerText; - string config = nd.Attributes.GetNamedItem("config").InnerText; - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - RoUsage rou = RoUsage.MakeRoUsage(content, roid, config, dts, userid, MyRODb); - rou.Save(); - string lookFor = string.Format("#Link:ReferencedObject:{0} {1} {2}[END>", rousageid, roid, oldRODbID.ToString()); - string replaceWith = string.Format("#Link:ReferencedObject:{0} {1} {2}[END>", rou.ROUsageID.ToString(), roid, newRODbID.ToString()); - if (lookFor != replaceWith) - { - content.Text = content.Text.Replace(lookFor, replaceWith); - content.Save(); - } - } - } - private void AddAnnotation(XmlReader xr) - { - int itemid = int.Parse(xr.GetAttribute("itemid")); - itemid = Old2NewItem[itemid]; - Item itm = Item.Get(itemid); - int typeid = int.Parse(xr.GetAttribute("typeid")); - string rtftext = xr.GetAttribute("rtftext"); - string searchtext = xr.GetAttribute("searchtext"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Annotation ann = Annotation.MakeAnnotation(itm, AnnotationType.Get(typeid), rtftext, searchtext, config, dts, userid); - } - private void AddAnnotations(int itemID, XmlNode xn) - { - Item itm = Item.Get(itemID); - foreach (XmlNode nd in xn.SelectNodes("annotation")) - { - int typeid = int.Parse(nd.Attributes.GetNamedItem("typeid").InnerText); - string rtftext = nd.Attributes.GetNamedItem("rtftext").InnerText; - string searchtext = nd.Attributes.GetNamedItem("searchtext").InnerText; - string config = nd.Attributes.GetNamedItem("config").InnerText; - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - AnnotationType annType = AnnotationType.GetByName(nd.Attributes.GetNamedItem("typename").InnerText); - Annotation ann = Annotation.MakeAnnotation(itm, annType, rtftext, searchtext, config, dts, userid); - ann.Save(); - } - } - private void AddParts(XmlNode myNode, ItemInfo parentInfo) - { - foreach (XmlNode xn in myNode.ChildNodes) - { - switch (xn.Name) - { - case "sections": - AddSections(xn, parentInfo); - break; - case "cautions": - AddCautions(xn, parentInfo); - break; - case "notes": - AddNotes(xn, parentInfo); - break; - case "rnos": - AddRNOs(xn, parentInfo); - break; - case "steps": - AddSteps(xn, parentInfo); - break; - case "tables": - AddTables(xn, parentInfo); - break; - default: - break; - } - } - } - private void AddTables(XmlNode xn, ItemInfo parentInfo) - { - if (parentInfo.IsProcedure) - { - pbImportSection.Value = 0; - pbImportStep.Value = 0; - pbImportSection.Maximum = xn.ChildNodes.Count; - } - if (parentInfo.IsSection) - { - pbImportStep.Value = 0; - pbImportStep.Maximum = xn.ChildNodes.Count; - } - ItemInfo prevInfo = null; - foreach (XmlNode nd in xn.ChildNodes) - prevInfo = AddTable(nd, parentInfo, prevInfo); - } - private ItemInfo AddTable(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid) - { - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int steptype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Table); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(oldid, step.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID); - prevInfo = StepInfo.Get(step.ItemID); - return prevInfo; - } - private ItemInfo AddTable(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo) - { - pbImportStep.PerformStep(); - lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString()); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - Step step; - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Table); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID); - if (xc.SelectNodes("grid").Count > 0) - AddGrid(step.MyContent, xc); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(step.ItemID, xn); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(step.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(step.MyContent, xc); - prevInfo = StepInfo.Get(step.ItemID); - if (xc.HasChildNodes) - AddParts(xc, prevInfo); - return prevInfo; - } - private void AddSteps(XmlNode xn, ItemInfo parentInfo) - { - if (parentInfo.IsProcedure) - { - pbImportSection.Value = 0; - pbImportStep.Value = 0; - pbImportSection.Maximum = xn.ChildNodes.Count; - } - if (parentInfo.IsSection) - { - pbImportStep.Value = 0; - pbImportStep.Maximum = xn.ChildNodes.Count; - } - ItemInfo prevInfo = null; - foreach (XmlNode nd in xn.ChildNodes) - prevInfo = AddStep(nd, parentInfo, prevInfo); - } - private ItemInfo AddStep(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid) - { - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int steptype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Step); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(oldid, step.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID); - prevInfo = StepInfo.Get(step.ItemID); - return prevInfo; - } - private ItemInfo AddStep(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo) - { - pbImportStep.PerformStep(); - lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString()); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - Step step; - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Step); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(step.ItemID, xn); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(step.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(step.MyContent, xc); - prevInfo = StepInfo.Get(step.ItemID); - if (xc.HasChildNodes) - AddParts(xc, prevInfo); - return prevInfo; - } - private void AddRNOs(XmlNode xn, ItemInfo parentInfo) - { - if (parentInfo.IsProcedure) - { - pbImportSection.Value = 0; - pbImportStep.Value = 0; - pbImportSection.Maximum = xn.ChildNodes.Count; - } - if (parentInfo.IsSection) - { - pbImportStep.Value = 0; - pbImportStep.Maximum = xn.ChildNodes.Count; - } - ItemInfo prevInfo = null; - foreach (XmlNode nd in xn.ChildNodes) - prevInfo = AddRNO(nd, parentInfo, prevInfo); - } - private ItemInfo AddRNO(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid) - { - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int steptype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.RNO); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(oldid, step.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID); - prevInfo = StepInfo.Get(step.ItemID); - return prevInfo; - } - private ItemInfo AddRNO(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo) - { - pbImportStep.PerformStep(); - lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString()); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - Step step; - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.RNO); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(step.ItemID, xn); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(step.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(step.MyContent, xc); - prevInfo = StepInfo.Get(step.ItemID); - if (xc.HasChildNodes) - AddParts(xc, prevInfo); - return prevInfo; - } - private void AddNotes(XmlNode xn, ItemInfo parentInfo) - { - if (parentInfo.IsProcedure) - { - pbImportSection.Value = 0; - pbImportStep.Value = 0; - pbImportSection.Maximum = xn.ChildNodes.Count; - } - if (parentInfo.IsSection) - { - pbImportStep.Value = 0; - pbImportStep.Maximum = xn.ChildNodes.Count; - } - ItemInfo prevInfo = null; - foreach (XmlNode nd in xn.ChildNodes) - prevInfo = AddNote(nd, parentInfo, prevInfo); - } - private ItemInfo AddNote(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid) - { - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int steptype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Note); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(oldid, step.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID); - prevInfo = StepInfo.Get(step.ItemID); - return prevInfo; - } - private ItemInfo AddNote(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo) - { - pbImportStep.PerformStep(); - lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString()); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - Step step; - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Note); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(step.ItemID, xn); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(step.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(step.MyContent, xc); - prevInfo = StepInfo.Get(step.ItemID); - if (xc.HasChildNodes) - AddParts(xc, prevInfo); - return prevInfo; - } - private void AddCautions(XmlNode xn, ItemInfo parentInfo) - { - if (parentInfo.IsProcedure) - { - pbImportSection.Value = 0; - pbImportStep.Value = 0; - pbImportSection.Maximum = xn.ChildNodes.Count; - } - if (parentInfo.IsSection) - { - pbImportStep.Value = 0; - pbImportStep.Maximum = xn.ChildNodes.Count; - } - ItemInfo prevInfo = null; - foreach (XmlNode nd in xn.ChildNodes) - prevInfo = AddCaution(nd, parentInfo, prevInfo); - } - private ItemInfo AddCaution(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid) - { - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int steptype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Caution); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(oldid, step.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID); - prevInfo = StepInfo.Get(step.ItemID); - return prevInfo; - } - private ItemInfo AddCaution(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo) - { - pbImportStep.PerformStep(); - lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString()); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - Step step; - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Caution); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(step.ItemID, xn); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(step.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(step.MyContent, xc); - prevInfo = StepInfo.Get(step.ItemID); - if (xc.HasChildNodes) - AddParts(xc, prevInfo); - return prevInfo; - } - private void AddSections(XmlNode xn, ItemInfo parentInfo) - { - if (parentInfo.IsProcedure) - { - pbImportSection.Value = 0; - pbImportStep.Value = 0; - pbImportSection.Maximum = xn.ChildNodes.Count; - } - if (parentInfo.IsSection) - { - pbImportStep.Value = 0; - pbImportStep.Maximum = xn.ChildNodes.Count; - } - ItemInfo prevInfo = null; - foreach (XmlNode nd in xn.ChildNodes) - prevInfo = AddSection(nd, parentInfo, prevInfo); - } - private Dictionary GetSectionData(XmlReader xr) - { - Dictionary rv = new Dictionary(); - rv.Add("itemid", xr.GetAttribute("itemid")); - return rv; - } - private ItemInfo AddSection(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid) - { - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int sectiontype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Section sect = Section.MakeSection(parentInfo, prevInfo, number, text, sectiontype); - sect.DTS = dts; - sect.UserID = userid; - if (formatid != string.Empty) - sect.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - sect.MyContent.Config = config; - sect.MyContent.DTS = dts; - sect.MyContent.UserID = userid; - sect.Save(); - Old2NewItem.Add(oldid, sect.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), sect.MyContent.ContentID); - prevInfo = SectionInfo.Get(sect.ItemID); - return prevInfo; - } - private ItemInfo AddSection(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo) - { - pbImportSection.PerformStep(); - lblImportSection.Text = string.Format("{0} of {1} Sections", pbImportSection.Value.ToString(), pbImportSection.Maximum.ToString()); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - Section sect; - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int sectiontype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - sect = Section.MakeSection(parentInfo, prevInfo, number, text, sectiontype); - sect.DTS = dts; - sect.UserID = userid; - if (formatid != string.Empty) - sect.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - sect.MyContent.Config = config; - sect.MyContent.DTS = dts; - sect.MyContent.UserID = userid; - sect.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), sect.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), sect.MyContent.ContentID); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(sect.ItemID, xn); - if (xc.SelectNodes("entry").Count > 0) - AddEntry(sect.MyContent, xc); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(sect.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(sect.MyContent, xc); - prevInfo = SectionInfo.Get(sect.ItemID); - if (xc.HasChildNodes) - AddParts(xc, prevInfo); - return prevInfo; - } - private void AddGrid(XmlReader xr) - { - int contentid = int.Parse(xr.GetAttribute("contentid")); - contentid = Old2NewContent[contentid]; - Content content = Content.Get(contentid); - string data = xr.GetAttribute("data"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Grid gg = Grid.MakeGrid(content, data, config, dts, userid); - } - private void AddGrid(Content content, XmlNode xc) - { - XmlNode nd = xc.SelectSingleNode("grid"); - string data = nd.Attributes.GetNamedItem("data").InnerText; - XmlDocument xd = new XmlDocument(); - xd.LoadXml(data); - XmlNode gn = xd.SelectSingleNode("C1FlexGrid/Control/IsRoTable"); - if (gn.InnerText.ToLower() == "true") - { - gn = xd.SelectSingleNode("C1FlexGrid/Control/RODbId"); - gn.InnerText = newRODbID.ToString(); - data = xd.OuterXml; - } - else - { - XmlNodeList nl = xd.SelectNodes("C1FlexGrid/Cells/Cell/Data"); - bool modified = false; - string lookFor = string.Format(" {0}[END", oldRODbID.ToString()); - string replaceWith = string.Format(" {0}[END", newRODbID.ToString()); - foreach (XmlNode nn in nl) - { - if (nn.InnerText.Contains("#Link:ReferencedObject:")) - { - nn.InnerText = nn.InnerText.Replace(lookFor, replaceWith); - modified = true; - } - } - if (modified) - data = xd.OuterXml; - } - string config = nd.Attributes.GetNamedItem("config").InnerText; - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - Grid gg = Grid.MakeGrid(content, data, config, dts, userid); - gg.Save(); - } - private Dictionary AddEntry(XmlReader xr) - { - Dictionary dic = new Dictionary(); - dic.Add("contentid", xr.GetAttribute("contentid")); - dic.Add("dts", xr.GetAttribute("dts")); - dic.Add("userid", xr.GetAttribute("userid")); - return dic; - } - private void AddEntry(Content content, XmlNode xc) - { - XmlNode nd = xc.SelectSingleNode("entry"); - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - Document dd = AddDocument(nd.SelectSingleNode("document")); - Entry ee = Entry.MakeEntry(content, dd, dts, userid); - ee.Save(); - } - private void AddDocument(XmlReader xr, Dictionary dic) - { - string libtitle = xr.GetAttribute("libtitle"); - byte[] doccontent = Convert.FromBase64String(xr.GetAttribute("doccontent")); - string docascii = xr.GetAttribute("docascii"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - string fileextension = xr.GetAttribute("fileextension"); - Document dd = Document.MakeDocument(libtitle, doccontent, docascii, config, dts, userid, fileextension); - int contentid = int.Parse(dic["contentid"]); - contentid = Old2NewContent[contentid]; - Content content = Content.Get(contentid); - dts = DateTime.Parse(dic["dts"]); - userid = dic["userid"]; - Entry ee = Entry.MakeEntry(content, dd, dts, userid); - } - private Document AddDocument(XmlNode xn) - { - Document d; - int docid = int.Parse(xn.Attributes.GetNamedItem("docid").InnerText); - if (Old2NewLibDoc.ContainsKey(docid)) - { - docid = Old2NewLibDoc[docid]; - d = Document.Get(docid); - } - else - { - string libtitle = xn.Attributes.GetNamedItem("libtitle").InnerText; - byte[] doccontent = Convert.FromBase64String(xn.Attributes.GetNamedItem("doccontent").InnerText); - string docascii = xn.Attributes.GetNamedItem("docascii").InnerText; - string config = xn.Attributes.GetNamedItem("config").InnerText; - string userid = xn.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xn.Attributes.GetNamedItem("dts").InnerText); - string fileextension = xn.Attributes.GetNamedItem("fileextension").InnerText; - d = Document.MakeDocument(libtitle, doccontent, docascii, config, dts, userid, fileextension); - d.Save(); - Old2NewLibDoc.Add(docid, d.DocID); - } - return d; - } - #endregion - - private void btnCloseExport_Click(object sender, EventArgs e) - { - this.Close(); - } - - private void btnCloseImport_Click(object sender, EventArgs e) - { - this.Close(); - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/dlgExportImport.cs.bak b/PROMS/DataLoader/dlgExportImport.cs.bak deleted file mode 100644 index 00c840d3..00000000 --- a/PROMS/DataLoader/dlgExportImport.cs.bak +++ /dev/null @@ -1,2699 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using VEPROMS.CSLA.Library; -using Volian.Base.Library; -using System.Xml; -using System.IO; -using Ionic.Zip; - -namespace DataLoader -{ - public partial class dlgExportImport : Form - { - private Dictionary oldFormat; - private Dictionary newFormat; - private int oldRODbID; - private int newRODbID; - private FolderInfo _MyNewFolder; - public FolderInfo MyNewFolder - { - get { return _MyNewFolder; } - } - private string PEIPath; - private string _MyMode; - private FolderInfo MyFolder = null; - private ProcedureInfo MyProcedure = null; - private XmlAttribute AddAttribute(XmlDocument xd, string name, string value) - { - XmlAttribute xa = xd.CreateAttribute(name); - xa.InnerText = value; - return xa; - } - public dlgExportImport(string mode, FolderInfo folderInfo) - { - _MyMode = mode; - MyFolder = folderInfo; - InitializeComponent(); - this.Text = mode + " Dialog for " + folderInfo.Name; - } - public dlgExportImport(string mode, ProcedureInfo procedureInfo) - { - _MyMode = mode; - MyProcedure = procedureInfo; - InitializeComponent(); - this.Text = mode + " Dialog for " + procedureInfo.DisplayNumber; - } - private void dlgExportImport_Load(object sender, EventArgs e) - { - PEIPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\VEPROMS\PEI_" + Database.VEPROMS_SqlConnection.Database; - if (!Directory.Exists(PEIPath)) - Directory.CreateDirectory(PEIPath); - if (_MyMode == "Import") - { - if (MyFolder.ChildFolderCount == 0) - { - Directory.Delete(PEIPath, true); - Directory.CreateDirectory(PEIPath); - } - } - pnlExport.Dock = DockStyle.Fill; - pnlImport.Dock = DockStyle.Fill; - if (_MyMode.ToLower() == "export") - { - sfd.InitialDirectory = PEIPath; - pnlExport.BringToFront(); - } - else - { - ofd.InitialDirectory = PEIPath; - pnlImport.BringToFront(); - } - this.Height = this.Height / 2; - } - private void btnExport_Click(object sender, EventArgs e) - { - if (MyFolder != null) - { - sfd.FileName = string.Format("{0}.expx", MyFolder.Name); - if (sfd.ShowDialog(this) == DialogResult.OK) - { - if (sfd.FileName != string.Empty) - { - txtExport.Text = sfd.FileName; - if (File.Exists(txtExport.Text)) - File.Delete(txtExport.Text); - MyExpxZipFile = new ZipFile(txtExport.Text, Encoding.UTF8); - MyExpxZipFile.Save(); - } - } - } - else if (MyProcedure != null) - { - txtExport.Text = string.Format(@"{0}\{1}.xml", PEIPath, MyProcedure.DisplayNumber); - } - } - private void txtExport_TextChanged(object sender, EventArgs e) - { - btnDoExport.Enabled = txtExport.TextLength > 0; - if (btnDoExport.Enabled) - lblExportStatus.Text = "Ready To Perform Export"; - else - lblExportStatus.Text = "Awaiting Export File Name:"; - } - private XmlWriter MyWriter = null; - private ZipFile MyExpxZipFile = null; - private ZipFile MyImpxZipFile = null; - private DateTime MyStart; - private void btnDoExport_Click(object sender, EventArgs e) - { - btnExport.Enabled = false; - if (MyFolder != null) - { - this.Cursor = Cursors.WaitCursor; - MyStart = DateTime.Now; - btnDoExport.Enabled = false; - lblExportStatus.Text = "Performing Export"; - SaveExportData(); - //SaveExportDataWriter(); - - TimeSpan elapsed = DateTime.Now.Subtract(MyStart); - lblExportStatus.Text = "Export Completed in " + elapsed.ToString(); - this.Cursor = Cursors.Default; - } - else if (MyProcedure != null) - { - this.Cursor = Cursors.WaitCursor; - MyStart = DateTime.Now; - btnDoExport.Enabled = false; - lblExportStatus.Text = "Performing Export"; - XmlDocument xd = new XmlDocument(); - ExportItem(xd, MyProcedure, "procedure"); - xd.Save(txtExport.Text); - TimeSpan elapsed = DateTime.Now.Subtract(MyStart); - lblExportStatus.Text = "Export Completed in " + elapsed.ToString(); - this.Cursor = Cursors.Default; - } - btnCloseExport.Enabled = true; - } - private void SaveExportData() - { - XmlDocument xd = new XmlDocument(); - ExportFolder(xd, MyFolder, "folder"); - } - private void SaveExportDataWriter() - { - XmlWriterSettings ws = new XmlWriterSettings(); - ws.Indent = true; - ws.NewLineHandling = NewLineHandling.Entitize; - ws.CheckCharacters = false; - MyWriter = XmlWriter.Create(txtExport.Text, ws); - ExportFolder(MyFolder, "folder"); - MyWriter.Close(); - } - private void btnDoImport_Click(object sender, EventArgs e) - { - btnImport.Enabled = false; - this.Cursor = Cursors.WaitCursor; - MyStart = DateTime.Now; - btnDoImport.Enabled = false; - lblImportStatus.Text = "Performing Import"; - //LoadImportDataReader(); - TurnChangeManagerOff.Execute(); - LoadImportDataDocument(); - TurnChangeManagerOn.Execute(); - TimeSpan elapsed = DateTime.Now.Subtract(MyStart); - lblImportStatus.Text = "Import Completed in " + elapsed.ToString(); - this.Cursor = Cursors.Default; - btnCloseImport.Enabled = true; - } - private void LoadImportDataDocument() - { - ZipEntry ze = MyExpxZipFile[0]; - string fn = PEIPath + @"\" + ze.FileName; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - XmlDocument xd = new XmlDocument(); - xd.Load(fn); - LoadFormats(xd); - Folder ff = AddFolder(Folder.Get(MyFolder.FolderID), xd); - _MyNewFolder = FolderInfo.Get(ff.FolderID); - AddAnnotationTypes(xd); - DocVersionInfo dvi = AddDocVersion(ff, xd); - xd = null; - lblImportStatus.Text = "Creating Procedures..."; - Application.DoEvents(); - ProcedureInfo pi = null; - pbImportProcedure.Value = 0; - pbImportProcedure.Maximum = MyExpxZipFile.Entries.Count - 1; - for (int i = 1; i < MyExpxZipFile.Entries.Count; i++) - { - ze = MyExpxZipFile[i]; - fn = PEIPath + @"\" + ze.FileName; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - xd = new XmlDocument(); - xd.Load(fn); - pi = AddProcedure(xd.DocumentElement, dvi, pi); - } - DirectoryInfo di = new DirectoryInfo(PEIPath); - DirectoryInfo[] dis = di.GetDirectories(); - for (int d = 0; d < dis.Length; d++) - dis[d].Delete(true); - lblImportStatus.Text = "Updating Transitions"; - AddTransitions(); - SaveTransitionAndItemContentIDs(); - } - - private void LoadFormats(XmlDocument xd) - { - oldFormat = new Dictionary(); - XmlNodeList nl = xd.SelectNodes("folder/formats/format"); - foreach (XmlNode nd in nl) - { - int formatid = int.Parse(nd.Attributes.GetNamedItem("formatid").InnerText); - string name = nd.Attributes.GetNamedItem("name").InnerText; - oldFormat.Add(formatid, name); - } - newFormat = new Dictionary(); - FormatInfoList fil = FormatInfoList.Get(); - foreach (FormatInfo fi in fil) - newFormat.Add(fi.Name, fi.FormatID); - } - Dictionary dicParentItem = null; - private void UpdateParentItem(int depth, ItemInfo ii) - { - if (dicParentItem == null) dicParentItem = new Dictionary(); - if (!dicParentItem.ContainsKey(depth)) dicParentItem.Add(depth, null); - dicParentItem[depth] = ii; - } - Dictionary dicPreviousItem = null; - private void UpdatePreviousItem(int depth, ItemInfo ii) - { - if (dicPreviousItem == null) dicPreviousItem = new Dictionary(); - if (!dicPreviousItem.ContainsKey(depth)) dicPreviousItem.Add(depth, null); - dicPreviousItem[depth] = ii; - } - Dictionary dicItemDepth = null; - private void UpdateItemDepth(int depth, int id) - { - if (dicItemDepth == null) dicItemDepth = new Dictionary(); - if (!dicItemDepth.ContainsKey(depth)) dicItemDepth.Add(depth, 0); - dicItemDepth[depth] = id; - } - private void LoadImportDataReader() - { - int pCount = 0; - int sCount = 0; - Folder folder = null; - DocVersion docversion = null; - Dictionary dicRofst = null; - Dictionary dicEntry = null; - ROFst rofst = null; - GetImportDataCounts(); - pbImportProcedure.Maximum = MyCounts.Count; - pbImportProcedure.Value = 0; - Application.DoEvents(); - FileStream fs = File.OpenRead(txtImport.Text); - XmlReaderSettings rs = new XmlReaderSettings(); - rs.CheckCharacters = false; - XmlReader xr = XmlReader.Create(fs, rs); - while (xr.Read()) - { - if (xr.IsStartElement()) - { - switch (xr.Name) - { - case "annotation": - AddAnnotation(xr); - break; - //case "association": - // break; - case "content": - { - if (xr.Depth == 3) //content for procedure - { - ItemInfo ii = AddProcedure(xr, docversion, dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - } - else - { - - int fromtype = dicItemDepth.ContainsKey(xr.Depth - 2) ? dicItemDepth[xr.Depth - 2] : 0; - switch (fromtype) - { - case 2: - { //sections - ItemInfo ii = AddSection(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - break; - } - case 3: - { //cautions - ItemInfo ii = AddCaution(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - break; - } - case 4: - { //notes - ItemInfo ii = AddNote(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - break; - } - case 5: - { //rnos - ItemInfo ii = AddRNO(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - break; - } - case 6: - { //steps - ItemInfo ii = AddStep(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - break; - } - case 7: - { //tables - ItemInfo ii = AddTable(xr, dicParentItem[xr.Depth], dicPreviousItem[xr.Depth], dicItemDepth[xr.Depth]); - UpdatePreviousItem(xr.Depth, ii); - UpdateParentItem(xr.Depth, ii); - break; - } - default: - break; - } - } - break; - } - case "document": - AddDocument(xr, dicEntry); - break; - case "docversion": - { - docversion = AddDocVersion(folder, xr); - UpdatePreviousItem(xr.Depth + 2, null); - break; - } - case "entry": - dicEntry = AddEntry(xr); - break; - case "folder": - folder = AddFolder(Folder.Get(MyFolder.FolderID), xr); - break; - case "grid": - AddGrid(xr); - break; - case "procedure": - { - UpdateItemDepth(xr.Depth + 1, int.Parse(xr.GetAttribute("itemid"))); - pbImportProcedure.PerformStep(); - lblImportProcedure.Text = string.Format("{0} of {1} Procedures", pbImportProcedure.Value.ToString(), pbImportProcedure.Maximum.ToString()); - pCount++; - pbImportSection.Maximum = MyCounts[pCount].Count; - pbImportSection.Value = 0; - sCount = 0; - Application.DoEvents(); - break; - } - case "section": - { - UpdateItemDepth(xr.Depth + 1, int.Parse(xr.GetAttribute("itemid"))); - pbImportSection.PerformStep(); - lblImportSection.Text = string.Format("{0} of {1} Sections", pbImportSection.Value.ToString(), pbImportSection.Maximum.ToString()); - sCount++; - pbImportStep.Maximum = MyCounts[pCount][sCount]; - pbImportStep.Value = 0; - Application.DoEvents(); - break; - } - case "step": - { - UpdateItemDepth(xr.Depth + 1, int.Parse(xr.GetAttribute("itemid"))); - if (xr.Depth == 8) - { - pbImportStep.PerformStep(); - lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString()); - Application.DoEvents(); - } - break; - } - case "caution": - case "note": - case "rno": - case "table": - UpdateItemDepth(xr.Depth + 1, int.Parse(xr.GetAttribute("itemid"))); - break; - case "cautions": - case "notes": - case "rnos": - case "sections": - case "steps": - case "tables": - { - UpdateItemDepth(xr.Depth, int.Parse(xr.GetAttribute("fromtype"))); - UpdatePreviousItem(xr.Depth + 2, null); - UpdateParentItem(xr.Depth + 2, dicParentItem[xr.Depth - 1]); - break; - } - case "rodb": - { - MyRODb = AddRODb(xr); - rofst = AddROFst(dicRofst); - docversion.DocVersionAssociations.Add(rofst); - docversion.Save(); - break; - } - case "rofst": - dicRofst = GetROFstData(xr); - break; - case "rousage": - AddROUsage(xr); - break; - //case "transition": - // break; - default: - break; - } - Console.WriteLine("{0} - {1}", xr.Name, xr.Depth.ToString()); - } - } - pbImportProcedure.PerformStep(); - Application.DoEvents(); - fs.Close(); - FixImportDataTransitions(); - StoreItemContentIDs(); - ResolveExternalTransitions(folder); - } - private void SaveTransitionAndItemContentIDs() - { - XmlDocument xd = new XmlDocument(); - XmlElement xe = xd.CreateElement("items"); - xd.AppendChild(xe); - string fn = PEIPath + @"\items.xml"; - foreach (int key in Old2NewItem.Keys) - { - xe = xd.CreateElement("item"); - xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewItem[key].ToString())); - xd.DocumentElement.AppendChild(xe); - } - xd.Save(fn); - ZipEntry ze = MyImpxZipFile["items.xml"]; - MyImpxZipFile.RemoveEntry(ze); - MyImpxZipFile.Save(); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - xd = new XmlDocument(); - xe = xd.CreateElement("contents"); - xd.AppendChild(xe); - fn = PEIPath + @"\contents.xml"; - foreach (int key in Old2NewContent.Keys) - { - xe = xd.CreateElement("content"); - xe.Attributes.SetNamedItem(AddAttribute(xd, "old", key.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "new", Old2NewContent[key].ToString())); - xd.DocumentElement.AppendChild(xe); - } - xd.Save(fn); - ze = MyImpxZipFile["contents.xml"]; - MyImpxZipFile.RemoveEntry(ze); - MyImpxZipFile.Save(); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - xd = new XmlDocument(); - xe = xd.CreateElement("transitions"); - xd.AppendChild(xe); - fn = PEIPath + @"\transitions.xml"; - if (PendingTransitions != null && PendingTransitions.DocumentElement.HasChildNodes) - { - foreach (XmlNode nd in PendingTransitions.DocumentElement.ChildNodes) - { - if(nd.InnerText == "") - xd.DocumentElement.AppendChild(xd.ImportNode(nd, true)); - } - xd.Save(fn); - } - ze = MyImpxZipFile["transitions.xml"]; - MyImpxZipFile.RemoveEntry(ze); - MyImpxZipFile.Save(); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - } - private void StoreItemContentIDs() - { - XmlDocument xd = new XmlDocument(); - string fn = PEIPath + @"\ExternalTransitions.xml"; - xd.Load(fn); - XmlElement xe = (XmlElement)xd.SelectSingleNode("externaltransitions/oldtonewitem"); - foreach (int key in Old2NewItem.Keys) - { - XmlElement xee = xd.CreateElement("item"); - XmlAttribute xa = AddAttribute(xd, "old", key.ToString()); - xee.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "new", Old2NewItem[key].ToString()); - xee.Attributes.SetNamedItem(xa); - xe.AppendChild(xee); - } - xd.Save(fn); - xe = (XmlElement)xd.SelectSingleNode("externaltransitions/oldtonewcontent"); - foreach (int key in Old2NewContent.Keys) - { - XmlElement xee = xd.CreateElement("content"); - XmlAttribute xa = AddAttribute(xd, "old", key.ToString()); - xee.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "new", Old2NewContent[key].ToString()); - xee.Attributes.SetNamedItem(xa); - xe.AppendChild(xee); - } - xd.Save(fn); - } - private void ResolveExternalTransitions(Folder folder) - { - XmlDocument xd = new XmlDocument(); - string fn = PEIPath + @"\ExternalTransitions.xml"; - xd.Load(fn); - AddStoredItemContentIDs(xd); - XmlNodeList nl = xd.SelectNodes("//transition[@folder!='']"); - foreach (XmlNode nd in nl) - { - int transitionid = int.Parse(nd.Attributes.GetNamedItem("transitionid").InnerText); - int fromid = int.Parse(nd.Attributes.GetNamedItem("fromid").InnerText); - int toid = int.Parse(nd.Attributes.GetNamedItem("toid").InnerText); - int rangeid = int.Parse(nd.Attributes.GetNamedItem("rangeid").InnerText); - if (Old2NewContent.ContainsKey(fromid) && Old2NewItem.ContainsKey(toid) && Old2NewItem.ContainsKey(rangeid)) - { - int isrange = int.Parse(nd.Attributes.GetNamedItem("isrange").InnerText); - int trantype = int.Parse(nd.Attributes.GetNamedItem("trantype").InnerText); - string config = nd.Attributes.GetNamedItem("config").InnerText; - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - string lookfor; - if (isrange == 0) - lookfor = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - lookfor = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - fromid = Old2NewContent[fromid]; - toid = Old2NewItem[toid]; - rangeid = Old2NewItem[rangeid]; - Content cc = Content.Get(fromid); - Transition tt = Transition.MakeTransition(cc, Item.Get(toid), Item.Get(rangeid), isrange, trantype, config, dts, userid); - transitionid = tt.TransitionID; - string replacewith; - if (isrange == 0) - replacewith = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - replacewith = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - cc.Text = cc.Text.Replace(lookfor, replacewith); - cc.Save(); - nd.Attributes.GetNamedItem("folder").InnerText = ""; - } - } - xd.Save(fn); - } - private void ReadTransitionAndItemContentIDs() - { - ZipEntry ze = MyImpxZipFile["items.xml"]; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - string fn = PEIPath + @"\items.xml"; - XmlDocument xd = new XmlDocument(); - xd.Load(fn); - XmlNodeList nl = xd.SelectNodes("//item"); - foreach (XmlNode nd in nl) - { - int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText); - int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText); - //if (!Old2NewItem.ContainsKey(oldid)) - Old2NewItem.Add(oldid, newid); - } - ze = MyImpxZipFile["contents.xml"]; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - fn = PEIPath + @"\contents.xml"; - xd = new XmlDocument(); - xd.Load(fn); - nl = xd.SelectNodes("//content"); - foreach (XmlNode nd in nl) - { - int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText); - int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText); - //if (!Old2NewContent.ContainsKey(oldid)) - Old2NewContent.Add(oldid, newid); - } - ze = MyImpxZipFile["libdocs.xml"]; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - fn = PEIPath + @"\libdocs.xml"; - xd = new XmlDocument(); - xd.Load(fn); - nl = xd.SelectNodes("//libdoc"); - foreach (XmlNode nd in nl) - { - int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText); - int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText); - //if (!Old2NewContent.ContainsKey(oldid)) - Old2NewLibDoc.Add(oldid, newid); - } - ze = MyImpxZipFile["transitions.xml"]; - ze.Extract(PEIPath, ExtractExistingFileAction.OverwriteSilently); - fn = PEIPath + @"\transitions.xml"; - PendingTransitions.Load(fn); - } - private void AddStoredItemContentIDs(XmlDocument xd) - { - XmlNodeList nl = xd.SelectNodes("//item"); - foreach (XmlNode nd in nl) - { - int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText); - int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText); - if (!Old2NewItem.ContainsKey(oldid)) - Old2NewItem.Add(oldid, newid); - } - nl = xd.SelectNodes("//content"); - foreach (XmlNode nd in nl) - { - int oldid = int.Parse(nd.Attributes.GetNamedItem("old").InnerText); - int newid = int.Parse(nd.Attributes.GetNamedItem("new").InnerText); - if (!Old2NewContent.ContainsKey(oldid)) - Old2NewContent.Add(oldid, newid); - } - } - private void FixImportDataTransitions() - { - XmlDocument xd = new XmlDocument(); - string fn = PEIPath + @"\ExternalTransitions.xml"; - if (!File.Exists(fn)) - { - XmlElement xe = xd.CreateElement("externaltransitions"); - XmlElement xee = xd.CreateElement("oldtonewitem"); - xe.AppendChild(xee); - xee = xd.CreateElement("oldtonewcontent"); - xe.AppendChild(xee); - xee = xd.CreateElement("transitions"); - xe.AppendChild(xee); - xd.AppendChild(xe); - xd.Save(fn); - } - else - { - xd.Load(fn); - } - FileStream fs = File.OpenRead(txtImport.Text); - XmlReaderSettings rs = new XmlReaderSettings(); - rs.CheckCharacters = false; - XmlReader xr = XmlReader.Create(fs, rs); - while (xr.Read()) - { - if (xr.IsStartElement()) - { - switch (xr.Name) - { - case "transition": - AddTransitions(xr); - break; - case "externaltransition": - { - AddExternalTransition(xr, xd); - break; - } - default: - break; - } - } - } - fs.Close(); - xd.Save(fn); - } - private Dictionary> MyCounts = null; - private Dictionary MySubCounts = null; - private void GetImportDataCounts() - { - int pCount = 0; - int sCount = 0; - int tCount = 0; - MyCounts = new Dictionary>(); - MySubCounts = new Dictionary(); - FileStream fs = File.OpenRead(txtImport.Text); - XmlReaderSettings rs = new XmlReaderSettings(); - rs.CheckCharacters = false; - XmlReader xr = XmlReader.Create(fs, rs); - while (xr.Read()) - { - if (xr.IsStartElement()) - { - switch (xr.Name) - { - case "procedure": - { - if (pCount > 0) - { - MySubCounts.Add(sCount, tCount); - MyCounts.Add(pCount, MySubCounts); - sCount = 0; - tCount = 0; - MySubCounts = new Dictionary(); - } - pCount++; - break; - } - case "section": - { - if (sCount > 0) - { - MySubCounts.Add(sCount, tCount); - tCount = 0; - } - sCount++; - break; - } - case "step": - { - if (xr.Depth == 8) - tCount++; - break; - } - default: - break; - } - } - } - MySubCounts.Add(sCount, tCount); - MyCounts.Add(pCount, MySubCounts); - fs.Close(); - } - private void btnImport_Click(object sender, EventArgs e) - { - if (ofd.ShowDialog(this) == DialogResult.OK) - { - if (ofd.FileName != string.Empty) - { - Old2NewItem = new Dictionary(); - Old2NewContent = new Dictionary(); - Old2NewLibDoc = new Dictionary(); - PendingTransitions = new XmlDocument(); - FileInfo fi = new FileInfo(ofd.FileName); - string dn = fi.Directory.Name; - txtImport.Text = ofd.FileName; - ReadOptions ro = new ReadOptions(); - ro.Encoding = Encoding.UTF8; - MyExpxZipFile = ZipFile.Read(txtImport.Text, ro); - string fn = string.Format(@"{0}\{1}.impx", PEIPath, dn); - if (File.Exists(fn)) - { - MyImpxZipFile = ZipFile.Read(fn, ro); - ReadTransitionAndItemContentIDs(); - } - else - { - MyImpxZipFile = new ZipFile(fn, Encoding.UTF8); - //transitions - XmlElement xe = PendingTransitions.CreateElement("transitions"); - PendingTransitions.AppendChild(xe); - fn = PEIPath + @"\transitions.xml"; - PendingTransitions.Save(fn); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - //File.Delete(fn); - //itemids - XmlDocument xd = new XmlDocument(); - xe = xd.CreateElement("items"); - xd.AppendChild(xe); - fn = PEIPath + @"\items.xml"; - xd.Save(fn); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - //contentids - xd = new XmlDocument(); - xe = xd.CreateElement("contents"); - xd.AppendChild(xe); - fn = PEIPath + @"\contents.xml"; - xd.Save(fn); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - //libdocids - xd = new XmlDocument(); - xe = xd.CreateElement("libdocs"); - xd.AppendChild(xe); - fn = PEIPath + @"\libdocs.xml"; - xd.Save(fn); - MyImpxZipFile.AddFile(fn, ""); - MyImpxZipFile.Save(); - File.Delete(fn); - } - } - } - } - private void txtImport_TextChanged(object sender, EventArgs e) - { - btnDoImport.Enabled = txtImport.TextLength > 0; - if (btnDoImport.Enabled) - lblImportStatus.Text = "Ready To Perform Import"; - else - lblImportStatus.Text = "Awaiting Import File Name:"; - } - #region Export for Merge - private string FromFolderName = string.Empty; - private void ExportFolder(XmlDocument xd, FolderInfo fi, string nodename) - { - /* - FolderID - ParentID - DBID - Name - Title - ShortName - FormatID - ManualOrder - Config - DTS - UsrID - */ - lblExportStatus.Text = "Exporting Folder..."; - Application.DoEvents(); - FromFolderName = fi.Name; - XmlElement xe = xd.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xd, "folderid", fi.FolderID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "parentid", fi.ParentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "dbid", fi.DBID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "name", fi.Name)); - xe.Attributes.SetNamedItem(AddAttribute(xd, "title", fi.Title)); - xe.Attributes.SetNamedItem(AddAttribute(xd, "shortname", fi.ShortName)); - xe.Attributes.SetNamedItem(AddAttribute(xd, "formatid", fi.FormatID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "manualorder", fi.ManualOrder.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xd, "config", fi.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xd, "dts", fi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xd, "usrid", fi.UsrID.ToString())); - xd.AppendChild(xe); - ExportAnnotationTypes(xe, "annotationtypes"); - ExportFormats(xe, "formats"); - if (fi.FolderDocVersionCount > 0) - foreach (DocVersionInfo dvi in fi.FolderDocVersions) - ExportDocVersion(xe, dvi, "docversion"); - } - private void ExportFormats(XmlElement xn, string nodename) - { - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - FormatInfoList fil = FormatInfoList.Get(); - foreach (FormatInfo fi in fil) - ExportFormat(xe, fi, "format"); - xn.AppendChild(xe); - } - private void ExportFormat(XmlElement xn, FormatInfo fi, string nodename) - { - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatid", fi.FormatID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "name", fi.Name)); - xn.AppendChild(xe); - } - private void ExportAnnotationTypes(XmlElement xn, string nodename) - { - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - AnnotationTypeInfoList atl = AnnotationTypeInfoList.Get(); - foreach (AnnotationTypeInfo ati in atl) - ExportAnnotationType(xe, ati, "annotationtype"); - xn.AppendChild(xe); - } - private void ExportAnnotationType(XmlElement xn, AnnotationTypeInfo ati, string nodename) - { - /* - TypeID - Name - Config - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "typeid", ati.TypeID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "name", ati.Name)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ati.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ati.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ati.UserID.ToString())); - xn.AppendChild(xe); - } - private void ExportFolder(FolderInfo fi, string nodename) - { - /* - FolderID - ParentID - DBID - Name - Title - ShortName - FormatID - ManualOrder - Config - DTS - UsrID - */ - FromFolderName = fi.Name; - MyWriter.WriteStartDocument(); - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("folderid", fi.FolderID.ToString()); - MyWriter.WriteAttributeString("parentid", fi.ParentID.ToString()); - MyWriter.WriteAttributeString("dbid", fi.DBID.ToString()); - MyWriter.WriteAttributeString("name", fi.Name); - MyWriter.WriteAttributeString("title", fi.Title); - MyWriter.WriteAttributeString("shortname", fi.ShortName); - MyWriter.WriteAttributeString("formatid", fi.FormatID.ToString()); - MyWriter.WriteAttributeString("manualorder", fi.ManualOrder.ToString()); - MyWriter.WriteAttributeString("config", fi.Config); - MyWriter.WriteAttributeString("dts", fi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("usrid", fi.UsrID.ToString()); - - if (fi.FolderDocVersionCount > 0) - foreach (DocVersionInfo dvi in fi.FolderDocVersions) - ExportDocVersion(dvi, "docversion"); - MyWriter.WriteEndElement(); - MyWriter.WriteEndDocument(); - } - private void ExportDocVersion(XmlElement xn, DocVersionInfo dvi, string nodename) - { - /* - VersionID - FolderID - VersionType - Name - Title - ItemID - FormatID - Config - DTS - UserID - */ - lblExportStatus.Text = "Exporting DocVersion..."; - Application.DoEvents(); - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "versionid", dvi.VersionID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "folderid", dvi.FolderID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "versiontype", dvi.VersionType.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "name", dvi.Name)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "title", dvi.Title)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "itemid", dvi.ItemID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatid", dvi.FormatID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", dvi.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", dvi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", dvi.UserID.ToString())); - xn.AppendChild(xe); - if (dvi.DocVersionAssociationCount > 0) - foreach (AssociationInfo ai in dvi.DocVersionAssociations) - ExportAssociation(xe, ai, "association"); - string fn = PEIPath + @"\folder.xml"; - xn.OwnerDocument.Save(fn); - MyExpxZipFile.AddFile(fn, "folder"); - MyExpxZipFile.Save(); - File.Delete(fn); - //here - lblExportStatus.Text = "Exporting Procedures..."; - Application.DoEvents(); - if (dvi.Procedures.Count > 0) - { - pbExportProcedure.Value = 0; - pbExportProcedure.Maximum = dvi.Procedures.Count; - lblExportProcedure.Text = pbExportProcedure.Maximum.ToString() + " Procedures"; - foreach (ItemInfo ii in dvi.Procedures) - { - XmlDocument xd = new XmlDocument(); - ExportItem(xd, ii, "procedure"); - fn = string.Format(@"{0}\proc{1}.xml", PEIPath, pbExportProcedure.Value.ToString().PadLeft(4, '0')); - xd.Save(fn); - MyExpxZipFile.AddFile(fn, "procedures"); - MyExpxZipFile.Save(); - File.Delete(fn); - xd = null; - } - } - } - private void ExportDocVersion(DocVersionInfo dvi, string nodename) - { - /* - VersionID - FolderID - VersionType - Name - Title - ItemID - FormatID - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("versionid", dvi.VersionID.ToString()); - MyWriter.WriteAttributeString("folderid", dvi.FolderID.ToString()); - MyWriter.WriteAttributeString("versiontype", dvi.VersionType.ToString()); - MyWriter.WriteAttributeString("name", dvi.Name); - MyWriter.WriteAttributeString("title", dvi.Title); - MyWriter.WriteAttributeString("itemid", dvi.ItemID.ToString()); - MyWriter.WriteAttributeString("formatid", dvi.FormatID.ToString()); - MyWriter.WriteAttributeString("config", dvi.Config); - MyWriter.WriteAttributeString("dts", dvi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", dvi.UserID.ToString()); - if (dvi.DocVersionAssociationCount > 0) - foreach (AssociationInfo ai in dvi.DocVersionAssociations) - ExportAssociation(ai, "association"); - if (dvi.Procedures.Count > 0) - { - pbExportProcedure.Value = 0; - pbExportProcedure.Maximum = dvi.Procedures.Count; - lblExportProcedure.Text = pbExportProcedure.Maximum.ToString() + " Procedures"; - foreach (ItemInfo ii in dvi.Procedures) - { - ExportItem(ii, "procedure"); - } - } - MyWriter.WriteEndElement(); - } - private void ExportAssociation(XmlElement xn, AssociationInfo ai, string nodename) - { - /* - AssociationID - VersionID - ROFstID - Config - DTS - UserID - */ - lblExportStatus.Text = "Exporting Association..."; - Application.DoEvents(); - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "associationid", ai.AssociationID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "versionid", ai.VersionID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rofstid", ai.ROFstID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ai.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ai.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ai.UserID.ToString())); - xn.AppendChild(xe); - ExportROFst(xe, ai.MyROFst, "rofst"); - } - private void ExportAssociation(AssociationInfo ai, string nodename) - { - /* - AssociationID - VersionID - ROFstID - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("associationid", ai.AssociationID.ToString()); - MyWriter.WriteAttributeString("versionid", ai.VersionID.ToString()); - MyWriter.WriteAttributeString("rofstid", ai.ROFstID.ToString()); - MyWriter.WriteAttributeString("config", ai.Config); - MyWriter.WriteAttributeString("dts", ai.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", ai.UserID.ToString()); - ExportROFst(ai.MyROFst, "rofst"); - MyWriter.WriteEndElement(); - } - private void ExportROFst(XmlElement xn, ROFstInfo fst, string nodename) - { - /* - ROFstID - RODbID - ROLookup - Config - DTS - UserID - */ - lblExportStatus.Text = "Exporting ROFst..."; - Application.DoEvents(); - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rofstid", fst.ROFstID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rodbid", fst.RODbID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rolookup", Convert.ToBase64String(fst.ROLookup))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", fst.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", fst.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", fst.UserID.ToString())); - xn.AppendChild(xe); - ExportRODb(xe, fst.MyRODb, "rodb"); - } - private void ExportROFst(ROFstInfo fst, string nodename) - { - /* - ROFstID - RODbID - ROLookup - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("rofstid", fst.ROFstID.ToString()); - MyWriter.WriteAttributeString("rodbid", fst.RODbID.ToString()); - MyWriter.WriteAttributeString("rolookup", Convert.ToBase64String(fst.ROLookup)); - MyWriter.WriteAttributeString("config", fst.Config); - MyWriter.WriteAttributeString("dts", fst.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", fst.UserID.ToString()); - ExportRODb(fst.MyRODb, "rodb"); - MyWriter.WriteEndElement(); - } - private void ExportRODb(XmlElement xn, RODbInfo db, string nodename) - { - /* - RODbID - ROName - FolderPath - DBConnectionString - Config - DTS - UserID - */ - lblExportStatus.Text = "Exporting RODb..."; - Application.DoEvents(); - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rodbid", db.RODbID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "roname", db.ROName)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "folderpath", db.FolderPath)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dbconnectionstring", db.DBConnectionString)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", db.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", db.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", db.UserID.ToString())); - xn.AppendChild(xe); - } - private void ExportRODb(RODbInfo db, string nodename) - { - /* - RODbID - ROName - FolderPath - DBConnectionString - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("rodbid", db.RODbID.ToString()); - MyWriter.WriteAttributeString("roname", db.ROName); - MyWriter.WriteAttributeString("folderpath", db.FolderPath); - MyWriter.WriteAttributeString("dbconnectionstring", db.DBConnectionString); - MyWriter.WriteAttributeString("config", db.Config); - MyWriter.WriteAttributeString("dts", db.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", db.UserID.ToString()); - MyWriter.WriteEndElement(); - } - private void ExportItem(XmlDocument xd, ItemInfo ii, string nodename) - { - XmlElement xe = xd.CreateElement(nodename); - xd.AppendChild(xe); - ExportItem(xe, ii, nodename); - } - private void ExportItem(XmlElement xn, ItemInfo ii, string nodename) - { - /* - ItemID - PreviousID - ContentID - DTS - */ - XmlElement xe = null; - if (xn.Name == "procedure") - xe = xn; - else - { - xe = xn.OwnerDocument.CreateElement(nodename); - xn.AppendChild(xe); - } - if (ii.IsProcedure) - { - pbExportProcedure.PerformStep(); - lblExportProcedure.Text = string.Format("{0} of {1} Procedures", pbExportProcedure.Value.ToString(), pbExportProcedure.Maximum.ToString()); - TimeSpan elapsed = DateTime.Now.Subtract(MyStart); - lblExportTime.Text = "Elapsed Time: " + elapsed.ToString(); - Application.DoEvents(); - pbExportSection.Value = 0; - pbExportSection.Maximum = pbExportSection.Value; - pbExportStep.Value = 0; - pbExportStep.Maximum = pbExportStep.Value; - pbExportSection.Maximum = ii.Sections.Count; - } - if (ii.IsSection && ii.ActiveParent.IsProcedure) - { - pbExportSection.PerformStep(); - lblExportSection.Text = string.Format("{0} of {1} Sections", pbExportSection.Value.ToString(), pbExportSection.Maximum.ToString()); - Application.DoEvents(); - pbExportStep.Value = 0; - pbExportStep.Maximum = pbExportStep.Value; - if (ii.Steps != null) - pbExportStep.Maximum = ii.Steps.Count; - } - if (ii.IsStep && ii.ActiveParent.IsSection && ii.ActiveParent.ActiveParent.IsProcedure) - { - pbExportStep.PerformStep(); - lblExportStep.Text = string.Format("{0} of {1} Steps", pbExportStep.Value.ToString(), pbExportStep.Maximum.ToString()); - Application.DoEvents(); - } - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "itemid", ii.ItemID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "previousid", ii.PreviousID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ii.ContentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ii.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - ExportContent(xe, ii.MyContent, "content"); - if (ii.ItemAnnotationCount > 0) - foreach (AnnotationInfo ai in ii.ItemAnnotations) - ExportAnnotation(xe, ai, "annotation"); - } - private void ExportItem(ItemInfo ii, string nodename) - { - /* - ItemID - PreviousID - ContentID - DTS - */ - if (ii.IsProcedure) - { - pbExportProcedure.PerformStep(); - lblExportProcedure.Text = string.Format("{0} of {1} Procedures", pbExportProcedure.Value.ToString(), pbExportProcedure.Maximum.ToString()); - Application.DoEvents(); - pbExportSection.Value = 0; - pbExportStep.Value = 0; - pbExportSection.Maximum = ii.Sections.Count; - } - if (ii.IsSection) - { - pbExportSection.PerformStep(); - lblExportSection.Text = string.Format("{0} of {1} Sections", pbExportSection.Value.ToString(), pbExportSection.Maximum.ToString()); - Application.DoEvents(); - pbExportStep.Value = 0; - if (ii.Steps != null) - pbExportStep.Maximum = ii.Steps.Count; - } - if (ii.IsStep) - { - pbExportStep.PerformStep(); - lblExportStep.Text = string.Format("{0} of {1} Steps", pbExportStep.Value.ToString(), pbExportStep.Maximum.ToString()); - Application.DoEvents(); - } - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("itemid", ii.ItemID.ToString()); - MyWriter.WriteAttributeString("previousid", ii.PreviousID.ToString()); - MyWriter.WriteAttributeString("contentid", ii.ContentID.ToString()); - MyWriter.WriteAttributeString("dts", ii.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - ExportContent(ii.MyContent, "content"); - if (ii.ItemAnnotationCount > 0) - foreach (AnnotationInfo ai in ii.ItemAnnotations) - ExportAnnotation(ai, "annotation"); - MyWriter.WriteEndElement(); - } - private void ExportContent(XmlElement xn, ContentInfo ci, string nodename) - { - /* - ContentID - Number - Text - Type - FormatID - Config - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ci.ContentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "number", ci.Number)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "text", ci.Text)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "type", ci.Type.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "formatid", ci.FormatID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ci.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ci.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ci.UserID.ToString())); - xn.AppendChild(xe); - if (ci.ContentTransitionCount > 0) - foreach (TransitionInfo ti in ci.ContentTransitions) - ExportTransition(xe, ti, "transition"); - if (ci.ContentRoUsageCount > 0) - foreach (RoUsageInfo ri in ci.ContentRoUsages) - ExportROUsage(xe, ri, "rousage"); - if (ci.ContentEntryCount > 0) - ExportEntry(xe, ci.MyEntry, "entry"); - if (ci.ContentGridCount > 0) - ExportGrid(xe, ci.MyGrid, "grid"); - if (ci.ContentPartCount > 0) - foreach (PartInfo pi in ci.ContentParts) - ExportPart(xe, pi, ((E_FromTypes)pi.FromType).ToString().ToLower()); - } - private void ExportContent(ContentInfo ci, string nodename) - { - /* - ContentID - Number - Text - Type - FormatID - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("contentid", ci.ContentID.ToString()); - MyWriter.WriteAttributeString("number", ci.Number); - MyWriter.WriteAttributeString("text", ci.Text); - MyWriter.WriteAttributeString("type", ci.Type.ToString()); - MyWriter.WriteAttributeString("formatid", ci.FormatID.ToString()); - MyWriter.WriteAttributeString("config", ci.Config); - MyWriter.WriteAttributeString("dts", ci.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", ci.UserID.ToString()); - if (ci.ContentTransitionCount > 0) - foreach (TransitionInfo ti in ci.ContentTransitions) - ExportTransition(ti, "transition"); - if (ci.ContentRoUsageCount > 0) - foreach (RoUsageInfo ri in ci.ContentRoUsages) - ExportROUsage(ri, "rousage"); - if (ci.ContentEntryCount > 0) - ExportEntry(ci.MyEntry, "entry"); - if (ci.ContentGridCount > 0) - ExportGrid(ci.MyGrid, "grid"); - if (ci.ContentPartCount > 0) - foreach (PartInfo pi in ci.ContentParts) - ExportPart(pi, ((E_FromTypes)pi.FromType).ToString().ToLower()); - MyWriter.WriteEndElement(); - } - private void ExportGrid(XmlElement xn, GridInfo gi, string nodename) - { - /* - ContentID - Data - Config - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", gi.ContentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "data", gi.Data)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", gi.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", gi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", gi.UserID.ToString())); - xn.AppendChild(xe); - } - private void ExportGrid(GridInfo gi, string nodename) - { - /* - ContentID - Data - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("contentid", gi.ContentID.ToString()); - MyWriter.WriteAttributeString("data", gi.Data); - MyWriter.WriteAttributeString("config", gi.Config); - MyWriter.WriteAttributeString("dts", gi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", gi.UserID.ToString()); - MyWriter.WriteEndElement(); - } - private void ExportEntry(XmlElement xn, EntryInfo ei, string nodename) - { - /* - ContentID - DocID - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ei.ContentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "docid", ei.DocID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ei.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ei.UserID.ToString())); - xn.AppendChild(xe); - ExportDocument(xe, ei.MyDocument, "document"); - } - private void ExportEntry(EntryInfo ei, string nodename) - { - /* - ContentID - DocID - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("contentid", ei.ContentID.ToString()); - MyWriter.WriteAttributeString("docid", ei.DocID.ToString()); - MyWriter.WriteAttributeString("dts", ei.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", ei.UserID.ToString()); - ExportDocument(ei.MyDocument, "document"); - MyWriter.WriteEndElement(); - } - private void ExportDocument(XmlElement xn, DocumentInfo di, string nodename) - { - /* - DocID - LibTitle - DocContent - DocAscii - Config - DTS - UserID - FileExtension - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "docid", di.DocID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "libtitle", di.LibTitle)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "doccontent", Convert.ToBase64String(di.DocContent))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "docascii", di.DocAscii)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", di.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", di.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", di.UserID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "fileextension", di.FileExtension)); - xn.AppendChild(xe); - } - private void ExportDocument(DocumentInfo di, string nodename) - { - /* - DocID - LibTitle - DocContent - DocAscii - Config - DTS - UserID - FileExtension - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("docid", di.DocID.ToString()); - MyWriter.WriteAttributeString("libtitle", di.LibTitle); - MyWriter.WriteAttributeString("doccontent", Convert.ToBase64String(di.DocContent)); - MyWriter.WriteAttributeString("docascii", di.DocAscii); - MyWriter.WriteAttributeString("config", di.Config); - MyWriter.WriteAttributeString("dts", di.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", di.UserID.ToString()); - MyWriter.WriteAttributeString("fileextension", di.FileExtension); - MyWriter.WriteEndElement(); - } - private void ExportROUsage(XmlElement xn, RoUsageInfo ri, string nodename) - { - /* - ROUsageID - ContentID - ROID - Config - DTS - UserID - RODbID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rousageid", ri.ROUsageID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ri.ContentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "roid", ri.ROID)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ri.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ri.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ri.UserID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rodbid", ri.RODbID.ToString())); - xn.AppendChild(xe); - } - private void ExportROUsage(RoUsageInfo ri, string nodename) - { - /* - ROUsageID - ContentID - ROID - Config - DTS - UserID - RODbID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("rousageid", ri.ROUsageID.ToString()); - MyWriter.WriteAttributeString("contentid", ri.ContentID.ToString()); - MyWriter.WriteAttributeString("roid", ri.ROID); - MyWriter.WriteAttributeString("config", ri.Config); - MyWriter.WriteAttributeString("dts", ri.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", ri.UserID.ToString()); - MyWriter.WriteAttributeString("rodbid", ri.RODbID.ToString()); - MyWriter.WriteEndElement(); - } - private void ExportPart(XmlElement xn, PartInfo pi, string nodename) - { - /* - ContentID - FromType - ItemID - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", pi.ContentID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "fromtype", pi.FromType.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "itemid", pi.ItemID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", pi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", pi.UserID.ToString())); - xn.AppendChild(xe); - foreach (ItemInfo ii in pi.MyItems) - ExportItem(xe, ii, pi.PartType.ToString().ToLower()); - } - private void ExportPart(PartInfo pi, string nodename) - { - /* - ContentID - FromType - ItemID - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("contentid", pi.ContentID.ToString()); - MyWriter.WriteAttributeString("fromtype", pi.FromType.ToString()); - MyWriter.WriteAttributeString("itemid", pi.ItemID.ToString()); - MyWriter.WriteAttributeString("dts", pi.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", pi.UserID.ToString()); - foreach (ItemInfo ii in pi.MyItems) - ExportItem(ii, pi.PartType.ToString().ToLower()); - MyWriter.WriteEndElement(); - } - private void ExportTransition(XmlElement xn, TransitionInfo ti, string nodename) - { - /* - TransitionID - FromID - ToID - RangeID - IsRange - TranType - Config - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "transitionid", ti.TransitionID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "fromid", ti.FromID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "toid", ti.ToID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rangeid", ti.RangeID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "isrange", ti.IsRange.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "trantype", ti.TranType.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ti.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ti.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ti.UserID.ToString())); - xn.AppendChild(xe); - } - private void ExportTransition(TransitionInfo ti, string nodename) - { - /* - TransitionID - FromID - ToID - RangeID - IsRange - TranType - Config - DTS - UserID - */ - string folder = string.Empty; - if (ti.MyItemToID.MyDocVersion != null && ti.MyItemToID.MyDocVersion.MyFolder.Name != MyFolder.Name) - { - nodename = "external" + nodename; - folder = ti.MyItemToID.MyDocVersion.MyFolder.Name; - } - else - { - nodename = "external" + nodename; - folder = "UNKNOWN"; - } - MyWriter.WriteStartElement(nodename); - if (folder != string.Empty) - MyWriter.WriteAttributeString("folder", folder); - MyWriter.WriteAttributeString("transitionid", ti.TransitionID.ToString()); - MyWriter.WriteAttributeString("fromid", ti.FromID.ToString()); - MyWriter.WriteAttributeString("toid", ti.ToID.ToString()); - MyWriter.WriteAttributeString("rangeid", ti.RangeID.ToString()); - MyWriter.WriteAttributeString("isrange", ti.IsRange.ToString()); - MyWriter.WriteAttributeString("trantype", ti.TranType.ToString()); - MyWriter.WriteAttributeString("config", ti.Config); - MyWriter.WriteAttributeString("dts", ti.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", ti.UserID.ToString()); - MyWriter.WriteEndElement(); - } - private void ExportAnnotation(XmlElement xn, AnnotationInfo ai, string nodename) - { - /* - AnnotationID - ItemID - TypeID - RtfText - SearchText - Config - DTS - UserID - */ - XmlElement xe = xn.OwnerDocument.CreateElement(nodename); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "annotationid", ai.AnnotationID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "itemid", ai.ItemID.ToString())); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "typeid", ai.TypeID.ToString())); - //if(ai.TypeID > 6) - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "typename", ai.MyAnnotationType.Name)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "rtftext", ai.RtfText)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "searchtext", ai.SearchText)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ai.Config)); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ai.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"))); - xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ai.UserID.ToString())); - xn.AppendChild(xe); - } - private void ExportAnnotation(AnnotationInfo ai, string nodename) - { - /* - AnnotationID - ItemID - TypeID - RtfText - SearchText - Config - DTS - UserID - */ - MyWriter.WriteStartElement(nodename); - MyWriter.WriteAttributeString("annotationid", ai.AnnotationID.ToString()); - MyWriter.WriteAttributeString("itemid", ai.ItemID.ToString()); - MyWriter.WriteAttributeString("typeid", ai.TypeID.ToString()); - MyWriter.WriteAttributeString("rtftext", ai.RtfText); - MyWriter.WriteAttributeString("searchtext", ai.SearchText); - MyWriter.WriteAttributeString("config", ai.Config); - MyWriter.WriteAttributeString("dts", ai.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")); - MyWriter.WriteAttributeString("userid", ai.UserID.ToString()); - MyWriter.WriteEndElement(); - } - #endregion - #region Import for Merge - private void AddExternalTransition(XmlReader xr, XmlDocument xd) - { - XmlElement xe = xd.CreateElement("transition"); - XmlAttribute xa = AddAttribute(xd, "folder", xr.GetAttribute("folder")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "transitionid", xr.GetAttribute("transitionid")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "fromid", xr.GetAttribute("fromid")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "toid", xr.GetAttribute("toid")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "rangeid", xr.GetAttribute("rangeid")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "isrange", xr.GetAttribute("isrange")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "trantype", xr.GetAttribute("trantype")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "config", xr.GetAttribute("config")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "userid", xr.GetAttribute("userid")); - xe.Attributes.SetNamedItem(xa); - xa = AddAttribute(xd, "dts", xr.GetAttribute("dts")); - xe.Attributes.SetNamedItem(xa); - xd.SelectSingleNode("externaltransitions/transitions").AppendChild(xe); - } - private void AddTransitions(XmlReader xr) - { - int transitionid = int.Parse(xr.GetAttribute("transitionid")); - int fromid = int.Parse(xr.GetAttribute("fromid")); - int toid = int.Parse(xr.GetAttribute("toid")); - int rangeid = int.Parse(xr.GetAttribute("rangeid")); - int isrange = int.Parse(xr.GetAttribute("isrange")); - int trantype = int.Parse(xr.GetAttribute("trantype")); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - string lookfor; - if (isrange == 0) - lookfor = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - lookfor = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - fromid = Old2NewContent[fromid]; - toid = Old2NewItem[toid]; - rangeid = Old2NewItem[rangeid]; - Content cc = Content.Get(fromid); - Transition tt = Transition.MakeTransition(cc, Item.Get(toid), Item.Get(rangeid), isrange, trantype, config, dts, userid); - transitionid = tt.TransitionID; - string replacewith; - if (isrange == 0) - replacewith = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - replacewith = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - cc.Text = cc.Text.Replace(lookfor, replacewith); - cc.Save(); - } - private void AddTransitions(Content content, XmlNode xn) - { - /* - Content - Item - Item - int - int - string - dts - string - - - #Link:Transition:1 2 187 - type,id,toid - - #Link:TransitionRange:2 1 175 177 - type,id,toid,rangeid - */ - XmlNodeList nl = xn.SelectNodes("./transition"); - foreach (XmlNode nd in nl) - { - int toid = int.Parse(nd.Attributes.GetNamedItem("toid").InnerText); - int rangeid = int.Parse(nd.Attributes.GetNamedItem("rangeid").InnerText); - if (Old2NewItem.ContainsKey(toid) && Old2NewItem.ContainsKey(rangeid)) - { - int transitionid = int.Parse(nd.Attributes.GetNamedItem("transitionid").InnerText); - int isrange = int.Parse(nd.Attributes.GetNamedItem("isrange").InnerText); - int trantype = int.Parse(nd.Attributes.GetNamedItem("trantype").InnerText); - string config = nd.Attributes.GetNamedItem("config").InnerText; - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - string lookfor; - if (isrange == 0) - lookfor = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - lookfor = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - //fromid = content.ContentID; - toid = Old2NewItem[toid]; - rangeid = Old2NewItem[rangeid]; - Transition tt = Transition.MakeTransition(content, Item.Get(toid), Item.Get(rangeid), isrange, trantype, config, dts, userid); - transitionid = tt.TransitionID; - string replacewith; - if (isrange == 0) - replacewith = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - replacewith = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - content.Text = content.Text.Replace(lookfor, replacewith); - content.Save(); - } - else - { - PendingTransitions.DocumentElement.AppendChild(PendingTransitions.ImportNode(nd, true)); - //save to holding pen - } - } - } - private void AddTransitions() - { - AddTransitions(PendingTransitions); - } - private void AddTransitions(XmlDocument xd) - { - /* - Content - Item - Item - int - int - string - dts - string - - - #Link:Transition:1 2 187 - type,id,toid - - #Link:TransitionRange:2 1 175 177 - type,id,toid,rangeid - */ - XmlNodeList nl = xd.SelectNodes("//transition"); - lblImportStatus.Text = string.Format("Updating {0} Tranistions", nl.Count.ToString()); - foreach (XmlNode nd in nl) - { - int fromid = int.Parse(nd.Attributes.GetNamedItem("fromid").InnerText); - int toid = int.Parse(nd.Attributes.GetNamedItem("toid").InnerText); - int rangeid = int.Parse(nd.Attributes.GetNamedItem("rangeid").InnerText); - if (Old2NewContent.ContainsKey(fromid) && Old2NewItem.ContainsKey(toid) && Old2NewItem.ContainsKey(rangeid)) - { - int transitionid = int.Parse(nd.Attributes.GetNamedItem("transitionid").InnerText); - int isrange = int.Parse(nd.Attributes.GetNamedItem("isrange").InnerText); - int trantype = int.Parse(nd.Attributes.GetNamedItem("trantype").InnerText); - string config = nd.Attributes.GetNamedItem("config").InnerText; - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - string lookfor; - if (isrange == 0) - lookfor = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - lookfor = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - fromid = Old2NewContent[fromid]; - toid = Old2NewItem[toid]; - rangeid = Old2NewItem[rangeid]; - Content cc = Content.Get(fromid); - Transition tt = Transition.MakeTransition(cc, Item.Get(toid), Item.Get(rangeid), isrange, trantype, config, dts, userid); - transitionid = tt.TransitionID; - string replacewith; - if (isrange == 0) - replacewith = string.Format("#Link:Transition:{0} {1} {2}", trantype, transitionid, toid); - else - replacewith = string.Format("#Link:TransitionRange:{0} {1} {2} {3}", trantype, transitionid, toid, rangeid); - cc.Text = cc.Text.Replace(lookfor, replacewith); - cc.Save(); - nd.InnerText = "done"; - } - } - } - private Dictionary Old2NewItem; - private Dictionary Old2NewContent; - private Dictionary Old2NewLibDoc; - private XmlDocument PendingTransitions; - private RODb MyRODb = null; - private Folder AddFolder(Folder folder, XmlReader xr) - { - Old2NewItem = new Dictionary(); - Old2NewContent = new Dictionary(); - Old2NewLibDoc = new Dictionary(); - string title = xr.GetAttribute("title"); - string name = xr.GetAttribute("name"); - string shortname = xr.GetAttribute("shortname"); - string usrid = xr.GetAttribute("usrid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - string formatid = xr.GetAttribute("formatid"); - Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid)); - folder = Folder.MakeFolder(folder, folder.MyConnection, name, title, shortname, format, null, dts, usrid); - //f.Save(); - return folder; - } - private Folder AddFolder(Folder p, XmlDocument xd) - { - lblImportStatus.Text = "Creating Folder..."; - Application.DoEvents(); - string title = xd.DocumentElement.Attributes.GetNamedItem("title").InnerText; - string name = xd.DocumentElement.Attributes.GetNamedItem("name").InnerText; - string shortname = xd.DocumentElement.Attributes.GetNamedItem("shortname").InnerText; - string usrid = xd.DocumentElement.Attributes.GetNamedItem("usrid").InnerText; - DateTime dts = DateTime.Parse(xd.DocumentElement.Attributes.GetNamedItem("dts").InnerText); - string formatid = xd.DocumentElement.Attributes.GetNamedItem("formatid").InnerText; - Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid)); - Folder f = Folder.MakeFolder(p, p.MyConnection, name, title, shortname, format, null, dts, usrid); - return f; - } - private Format OldToNewFormat(int formatID) - { - string formatName = oldFormat[formatID]; - formatID = newFormat[formatName]; - return Format.Get(formatID); - } - private DocVersion AddDocVersion(Folder f, XmlReader xr) - { - int versiontype = int.Parse(xr.GetAttribute("versiontype")); - string name = xr.GetAttribute("name"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - string formatid = xr.GetAttribute("formatid"); - Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid)); - DocVersion dv = DocVersion.MakeDocVersion(f, versiontype, name, null, null, format, config, dts, userid); - return dv; - } - private void AddAnnotationTypes(XmlDocument xd) - { - XmlNodeList nl = xd.SelectNodes("folder/annotationtypes/annotationtype"); - foreach (XmlNode nd in nl) - { - AnnotationTypeInfo ati = AnnotationTypeInfo.GetByName(nd.Attributes.GetNamedItem("name").InnerText); - if (ati == null) - AnnotationType.MakeAnnotationType(nd.Attributes.GetNamedItem("name").InnerText, nd.Attributes.GetNamedItem("config").InnerText, DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText), nd.Attributes.GetNamedItem("userid").InnerText); - } - } - private DocVersionInfo AddDocVersion(Folder f, XmlDocument xd) - { - lblImportStatus.Text = "Creating DocVersion..."; - Application.DoEvents(); - XmlElement xe = (XmlElement)xd.SelectSingleNode("folder/docversion"); - int versiontype = int.Parse(xe.Attributes.GetNamedItem("versiontype").InnerText); - string name = xe.Attributes.GetNamedItem("name").InnerText; - string config = xe.Attributes.GetNamedItem("config").InnerText; - string userid = xe.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xe.Attributes.GetNamedItem("dts").InnerText); - string formatid = xe.Attributes.GetNamedItem("formatid").InnerText; - Format format = formatid == string.Empty ? null : OldToNewFormat(int.Parse(formatid)); - DocVersion dv = DocVersion.MakeDocVersion(f, versiontype, name, null, null, format, config, dts, userid); - XmlNode xassoc = xe.SelectSingleNode("association"); - if (xassoc != null) - { - XmlNode xrofst = xassoc.SelectSingleNode("rofst"); - XmlNode xrodb = xrofst.SelectSingleNode("rodb"); - MyRODb = AddRODb(xrodb); - ROFst rofst = AddROFst(xrofst); - DocVersionAssociation dva = dv.DocVersionAssociations.Add(rofst); - dv.Save(); - } - return DocVersionInfo.Get(dv.VersionID); - } - private Dictionary GetROFstData(XmlReader xr) - { - Dictionary rv = new Dictionary(); - rv.Add("rolookup", xr.GetAttribute("rolookup")); - rv.Add("config", xr.GetAttribute("config")); - rv.Add("userid", xr.GetAttribute("userid")); - rv.Add("dts", xr.GetAttribute("dts")); - return rv; - } - private ROFst AddROFst(Dictionary dic) - { - byte[] rolookup = Convert.FromBase64String(dic["rolookup"]); - string config = dic["config"]; - string userid = dic["userid"]; - DateTime dts = DateTime.Parse(dic["dts"]); - ROFst rv = null; - rv = ROFst.GetByRODbID_DTS(MyRODb.RODbID, dts); //MyRODb.DTS); - if (rv == null) - rv = ROFst.MakeROFst(MyRODb, rolookup, config, dts, userid); - return rv; - } - private ROFst AddROFst(XmlNode xrofst) - { - lblImportStatus.Text = "Creating ROFst..."; - Application.DoEvents(); - byte[] rolookup = Convert.FromBase64String(xrofst.Attributes.GetNamedItem("rolookup").InnerText); - string config = xrofst.Attributes.GetNamedItem("config").InnerText; - string userid = xrofst.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xrofst.Attributes.GetNamedItem("dts").InnerText); - ROFst rv = null; - rv = ROFst.GetByRODbID_DTS(MyRODb.RODbID, dts); //MyRODb.DTS); - if (rv == null) - rv = ROFst.MakeROFst(MyRODb, rolookup, config, dts, userid); - return rv; - } - private RODb AddRODb(XmlReader xr) - { - oldRODbID = int.Parse(xr.GetAttribute("rodbid")); - string roname = xr.GetAttribute("roname"); - string folderpath = xr.GetAttribute("folderpath"); - string dbconnectionstring = xr.GetAttribute("dbconnectionstring"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - RODb rv = null; - rv = RODb.GetByFolderPath(folderpath); - if (rv == null) - rv = RODb.MakeRODb(roname, folderpath, dbconnectionstring, config, dts, userid); - newRODbID = rv.RODbID; - return rv; - } - private RODb AddRODb(XmlNode xrodb) - { - lblImportStatus.Text = "Creating RODb..."; - Application.DoEvents(); - oldRODbID = int.Parse(xrodb.Attributes.GetNamedItem("rodbid").InnerText); - string roname = xrodb.Attributes.GetNamedItem("roname").InnerText; - string folderpath = xrodb.Attributes.GetNamedItem("folderpath").InnerText; - string dbconnectionstring = xrodb.Attributes.GetNamedItem("dbconnectionstring").InnerText; - string config = xrodb.Attributes.GetNamedItem("config").InnerText; - string userid = xrodb.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xrodb.Attributes.GetNamedItem("dts").InnerText); - RODb rv = null; - rv = RODb.GetByFolderPath(folderpath); - if (rv == null) - rv = RODb.MakeRODb(roname, folderpath, dbconnectionstring, config, dts, userid); - newRODbID = rv.RODbID; - return rv; - } - private int GetProcedureData(XmlReader xr) - { - return int.Parse(xr.GetAttribute("itemid")); - } - private ItemInfo AddProcedure(XmlReader xr, DocVersion dv, ItemInfo procInfo, int oldid) - { - DocVersionInfo dvInfo = DocVersionInfo.Get(dv.VersionID); - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int proctype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Procedure p = Procedure.MakeProcedure(dvInfo, procInfo, number, text, proctype); - p.DTS = dts; - p.UserID = userid; - if (formatid != string.Empty) - p.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - p.MyContent.Config = config; - p.MyContent.DTS = dts; - p.MyContent.UserID = userid; - p.Save(); - Old2NewItem.Add(oldid, p.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), p.MyContent.ContentID); - procInfo = ProcedureInfo.Get(p.ItemID); - return procInfo; - } - private ProcedureInfo AddProcedure(XmlNode xn, DocVersionInfo dvInfo, ProcedureInfo procInfo) - { - pbImportProcedure.PerformStep(); - lblImportProcedure.Text = string.Format("{0} of {1} Procedures", pbImportProcedure.Value.ToString(), pbImportProcedure.Maximum.ToString()); - TimeSpan elapsed = DateTime.Now.Subtract(MyStart); - lblImportTime.Text = "Elapsed Time: " + elapsed.ToString(); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int proctype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - Procedure p = Procedure.MakeProcedure(dvInfo, procInfo, number, text, proctype); - p.DTS = dts; - p.UserID = userid; - if (formatid != string.Empty) - p.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - p.MyContent.Config = config; - p.MyContent.DTS = dts; - p.MyContent.UserID = userid; - p.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), p.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), p.MyContent.ContentID); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(p.ItemID, xn); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(p.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(p.MyContent, xc); - procInfo = ProcedureInfo.Get(p.ItemID); - if (xc.HasChildNodes) - AddParts(xc, procInfo); - return procInfo; - } - private void AddROUsage(XmlReader xr) - { - int contentid = int.Parse(xr.GetAttribute("contentid")); - contentid = Old2NewContent[contentid]; - Content content = Content.Get(contentid); - string rousageid = xr.GetAttribute("rousageid"); - string roid = xr.GetAttribute("roid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - RoUsage rou = RoUsage.MakeRoUsage(content, roid, config, dts, userid, MyRODb); - rou.Save(); - string lookFor = string.Format("#Link:ReferencedObject:{0} {1} {2}[END>", rousageid, roid, oldRODbID.ToString()); - string replaceWith = string.Format("#Link:ReferencedObject:{0} {1} {2}[END>", rou.ROUsageID.ToString(), roid, newRODbID.ToString()); - if (lookFor != replaceWith) - { - content.Text = content.Text.Replace(lookFor, replaceWith); - content.Save(); - } - } - private void AddROUsages(Content content, XmlNode xn) - { - foreach (XmlNode nd in xn.SelectNodes("rousage")) - { - string rousageid = nd.Attributes.GetNamedItem("rousageid").InnerText; - string roid = nd.Attributes.GetNamedItem("roid").InnerText; - string config = nd.Attributes.GetNamedItem("config").InnerText; - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - RoUsage rou = RoUsage.MakeRoUsage(content, roid, config, dts, userid, MyRODb); - rou.Save(); - string lookFor = string.Format("#Link:ReferencedObject:{0} {1} {2}[END>", rousageid, roid, oldRODbID.ToString()); - string replaceWith = string.Format("#Link:ReferencedObject:{0} {1} {2}[END>", rou.ROUsageID.ToString(), roid, newRODbID.ToString()); - if (lookFor != replaceWith) - { - content.Text = content.Text.Replace(lookFor, replaceWith); - content.Save(); - } - } - } - private void AddAnnotation(XmlReader xr) - { - int itemid = int.Parse(xr.GetAttribute("itemid")); - itemid = Old2NewItem[itemid]; - Item itm = Item.Get(itemid); - int typeid = int.Parse(xr.GetAttribute("typeid")); - string rtftext = xr.GetAttribute("rtftext"); - string searchtext = xr.GetAttribute("searchtext"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Annotation ann = Annotation.MakeAnnotation(itm, AnnotationType.Get(typeid), rtftext, searchtext, config, dts, userid); - } - private void AddAnnotations(int itemID, XmlNode xn) - { - Item itm = Item.Get(itemID); - foreach (XmlNode nd in xn.SelectNodes("annotation")) - { - int typeid = int.Parse(nd.Attributes.GetNamedItem("typeid").InnerText); - string rtftext = nd.Attributes.GetNamedItem("rtftext").InnerText; - string searchtext = nd.Attributes.GetNamedItem("searchtext").InnerText; - string config = nd.Attributes.GetNamedItem("config").InnerText; - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - AnnotationType annType = AnnotationType.GetByName(nd.Attributes.GetNamedItem("typename").InnerText); - Annotation ann = Annotation.MakeAnnotation(itm, annType, rtftext, searchtext, config, dts, userid); - ann.Save(); - } - } - private void AddParts(XmlNode myNode, ItemInfo parentInfo) - { - foreach (XmlNode xn in myNode.ChildNodes) - { - switch (xn.Name) - { - case "sections": - AddSections(xn, parentInfo); - break; - case "cautions": - AddCautions(xn, parentInfo); - break; - case "notes": - AddNotes(xn, parentInfo); - break; - case "rnos": - AddRNOs(xn, parentInfo); - break; - case "steps": - AddSteps(xn, parentInfo); - break; - case "tables": - AddTables(xn, parentInfo); - break; - default: - break; - } - } - } - private void AddTables(XmlNode xn, ItemInfo parentInfo) - { - if (parentInfo.IsProcedure) - { - pbImportSection.Value = 0; - pbImportStep.Value = 0; - pbImportSection.Maximum = xn.ChildNodes.Count; - } - if (parentInfo.IsSection) - { - pbImportStep.Value = 0; - pbImportStep.Maximum = xn.ChildNodes.Count; - } - ItemInfo prevInfo = null; - foreach (XmlNode nd in xn.ChildNodes) - prevInfo = AddTable(nd, parentInfo, prevInfo); - } - private ItemInfo AddTable(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid) - { - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int steptype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Table); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(oldid, step.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID); - prevInfo = StepInfo.Get(step.ItemID); - return prevInfo; - } - private ItemInfo AddTable(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo) - { - pbImportStep.PerformStep(); - lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString()); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - Step step; - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Table); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID); - if (xc.SelectNodes("grid").Count > 0) - AddGrid(step.MyContent, xc); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(step.ItemID, xn); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(step.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(step.MyContent, xc); - prevInfo = StepInfo.Get(step.ItemID); - if (xc.HasChildNodes) - AddParts(xc, prevInfo); - return prevInfo; - } - private void AddSteps(XmlNode xn, ItemInfo parentInfo) - { - if (parentInfo.IsProcedure) - { - pbImportSection.Value = 0; - pbImportStep.Value = 0; - pbImportSection.Maximum = xn.ChildNodes.Count; - } - if (parentInfo.IsSection) - { - pbImportStep.Value = 0; - pbImportStep.Maximum = xn.ChildNodes.Count; - } - ItemInfo prevInfo = null; - foreach (XmlNode nd in xn.ChildNodes) - prevInfo = AddStep(nd, parentInfo, prevInfo); - } - private ItemInfo AddStep(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid) - { - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int steptype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Step); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(oldid, step.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID); - prevInfo = StepInfo.Get(step.ItemID); - return prevInfo; - } - private ItemInfo AddStep(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo) - { - pbImportStep.PerformStep(); - lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString()); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - Step step; - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Step); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(step.ItemID, xn); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(step.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(step.MyContent, xc); - prevInfo = StepInfo.Get(step.ItemID); - if (xc.HasChildNodes) - AddParts(xc, prevInfo); - return prevInfo; - } - private void AddRNOs(XmlNode xn, ItemInfo parentInfo) - { - if (parentInfo.IsProcedure) - { - pbImportSection.Value = 0; - pbImportStep.Value = 0; - pbImportSection.Maximum = xn.ChildNodes.Count; - } - if (parentInfo.IsSection) - { - pbImportStep.Value = 0; - pbImportStep.Maximum = xn.ChildNodes.Count; - } - ItemInfo prevInfo = null; - foreach (XmlNode nd in xn.ChildNodes) - prevInfo = AddRNO(nd, parentInfo, prevInfo); - } - private ItemInfo AddRNO(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid) - { - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int steptype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.RNO); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(oldid, step.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID); - prevInfo = StepInfo.Get(step.ItemID); - return prevInfo; - } - private ItemInfo AddRNO(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo) - { - pbImportStep.PerformStep(); - lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString()); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - Step step; - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.RNO); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(step.ItemID, xn); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(step.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(step.MyContent, xc); - prevInfo = StepInfo.Get(step.ItemID); - if (xc.HasChildNodes) - AddParts(xc, prevInfo); - return prevInfo; - } - private void AddNotes(XmlNode xn, ItemInfo parentInfo) - { - if (parentInfo.IsProcedure) - { - pbImportSection.Value = 0; - pbImportStep.Value = 0; - pbImportSection.Maximum = xn.ChildNodes.Count; - } - if (parentInfo.IsSection) - { - pbImportStep.Value = 0; - pbImportStep.Maximum = xn.ChildNodes.Count; - } - ItemInfo prevInfo = null; - foreach (XmlNode nd in xn.ChildNodes) - prevInfo = AddNote(nd, parentInfo, prevInfo); - } - private ItemInfo AddNote(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid) - { - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int steptype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Note); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(oldid, step.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID); - prevInfo = StepInfo.Get(step.ItemID); - return prevInfo; - } - private ItemInfo AddNote(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo) - { - pbImportStep.PerformStep(); - lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString()); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - Step step; - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Note); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(step.ItemID, xn); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(step.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(step.MyContent, xc); - prevInfo = StepInfo.Get(step.ItemID); - if (xc.HasChildNodes) - AddParts(xc, prevInfo); - return prevInfo; - } - private void AddCautions(XmlNode xn, ItemInfo parentInfo) - { - if (parentInfo.IsProcedure) - { - pbImportSection.Value = 0; - pbImportStep.Value = 0; - pbImportSection.Maximum = xn.ChildNodes.Count; - } - if (parentInfo.IsSection) - { - pbImportStep.Value = 0; - pbImportStep.Maximum = xn.ChildNodes.Count; - } - ItemInfo prevInfo = null; - foreach (XmlNode nd in xn.ChildNodes) - prevInfo = AddCaution(nd, parentInfo, prevInfo); - } - private ItemInfo AddCaution(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid) - { - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int steptype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Step step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Caution); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(oldid, step.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), step.MyContent.ContentID); - prevInfo = StepInfo.Get(step.ItemID); - return prevInfo; - } - private ItemInfo AddCaution(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo) - { - pbImportStep.PerformStep(); - lblImportStep.Text = string.Format("{0} of {1} Steps", pbImportStep.Value.ToString(), pbImportStep.Maximum.ToString()); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - Step step; - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int steptype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - step = Step.MakeStep(parentInfo, prevInfo, number, text, steptype, E_FromType.Caution); - step.DTS = dts; - step.UserID = userid; - if (formatid != string.Empty) - step.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - step.MyContent.Config = config; - step.MyContent.DTS = dts; - step.MyContent.UserID = userid; - step.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), step.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(step.ItemID, xn); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(step.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(step.MyContent, xc); - prevInfo = StepInfo.Get(step.ItemID); - if (xc.HasChildNodes) - AddParts(xc, prevInfo); - return prevInfo; - } - private void AddSections(XmlNode xn, ItemInfo parentInfo) - { - if (parentInfo.IsProcedure) - { - pbImportSection.Value = 0; - pbImportStep.Value = 0; - pbImportSection.Maximum = xn.ChildNodes.Count; - } - if (parentInfo.IsSection) - { - pbImportStep.Value = 0; - pbImportStep.Maximum = xn.ChildNodes.Count; - } - ItemInfo prevInfo = null; - foreach (XmlNode nd in xn.ChildNodes) - prevInfo = AddSection(nd, parentInfo, prevInfo); - } - private Dictionary GetSectionData(XmlReader xr) - { - Dictionary rv = new Dictionary(); - rv.Add("itemid", xr.GetAttribute("itemid")); - return rv; - } - private ItemInfo AddSection(XmlReader xr, ItemInfo parentInfo, ItemInfo prevInfo, int oldid) - { - string number = xr.GetAttribute("number"); - string text = xr.GetAttribute("text"); - int sectiontype = int.Parse(xr.GetAttribute("type")); - string formatid = xr.GetAttribute("formatid"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Section sect = Section.MakeSection(parentInfo, prevInfo, number, text, sectiontype); - sect.DTS = dts; - sect.UserID = userid; - if (formatid != string.Empty) - sect.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - sect.MyContent.Config = config; - sect.MyContent.DTS = dts; - sect.MyContent.UserID = userid; - sect.Save(); - Old2NewItem.Add(oldid, sect.ItemID); - Old2NewContent.Add(int.Parse(xr.GetAttribute("contentid")), sect.MyContent.ContentID); - prevInfo = SectionInfo.Get(sect.ItemID); - return prevInfo; - } - private ItemInfo AddSection(XmlNode xn, ItemInfo parentInfo, ItemInfo prevInfo) - { - pbImportSection.PerformStep(); - lblImportSection.Text = string.Format("{0} of {1} Sections", pbImportSection.Value.ToString(), pbImportSection.Maximum.ToString()); - Application.DoEvents(); - XmlNode xc = xn.SelectSingleNode("content"); - Section sect; - string number = xc.Attributes.GetNamedItem("number").InnerText; - string text = xc.Attributes.GetNamedItem("text").InnerText; - int sectiontype = int.Parse(xc.Attributes.GetNamedItem("type").InnerText); - string formatid = xc.Attributes.GetNamedItem("formatid").InnerText; - string config = xc.Attributes.GetNamedItem("config").InnerText; - string userid = xc.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xc.Attributes.GetNamedItem("dts").InnerText); - sect = Section.MakeSection(parentInfo, prevInfo, number, text, sectiontype); - sect.DTS = dts; - sect.UserID = userid; - if (formatid != string.Empty) - sect.MyContent.MyFormat = OldToNewFormat(int.Parse(formatid)); - sect.MyContent.Config = config; - sect.MyContent.DTS = dts; - sect.MyContent.UserID = userid; - sect.Save(); - Old2NewItem.Add(int.Parse(xn.Attributes.GetNamedItem("itemid").InnerText), sect.ItemID); - Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), sect.MyContent.ContentID); - if (xn.SelectNodes("annotation").Count > 0) - AddAnnotations(sect.ItemID, xn); - if (xc.SelectNodes("entry").Count > 0) - AddEntry(sect.MyContent, xc); - if (xc.SelectNodes("rousage").Count > 0) - AddROUsages(sect.MyContent, xc); - if (xc.SelectNodes("transition").Count > 0) - AddTransitions(sect.MyContent, xc); - prevInfo = SectionInfo.Get(sect.ItemID); - if (xc.HasChildNodes) - AddParts(xc, prevInfo); - return prevInfo; - } - private void AddGrid(XmlReader xr) - { - int contentid = int.Parse(xr.GetAttribute("contentid")); - contentid = Old2NewContent[contentid]; - Content content = Content.Get(contentid); - string data = xr.GetAttribute("data"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - Grid gg = Grid.MakeGrid(content, data, config, dts, userid); - } - private void AddGrid(Content content, XmlNode xc) - { - XmlNode nd = xc.SelectSingleNode("grid"); - string data = nd.Attributes.GetNamedItem("data").InnerText; - XmlDocument xd = new XmlDocument(); - xd.LoadXml(data); - XmlNode gn = xd.SelectSingleNode("C1FlexGrid/Control/IsRoTable"); - if (gn.InnerText.ToLower() == "true") - { - gn = xd.SelectSingleNode("C1FlexGrid/Control/RODbId"); - gn.InnerText = newRODbID.ToString(); - data = xd.OuterXml; - } - else - { - XmlNodeList nl = xd.SelectNodes("C1FlexGrid/Cells/Cell/Data"); - bool modified = false; - string lookFor = string.Format(" {0}[END", oldRODbID.ToString()); - string replaceWith = string.Format(" {0}[END", newRODbID.ToString()); - foreach (XmlNode nn in nl) - { - if (nn.InnerText.Contains("#Link:ReferencedObject:")) - { - nn.InnerText = nn.InnerText.Replace(lookFor, replaceWith); - modified = true; - } - } - if (modified) - data = xd.OuterXml; - } - string config = nd.Attributes.GetNamedItem("config").InnerText; - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - Grid gg = Grid.MakeGrid(content, data, config, dts, userid); - gg.Save(); - } - private Dictionary AddEntry(XmlReader xr) - { - Dictionary dic = new Dictionary(); - dic.Add("contentid", xr.GetAttribute("contentid")); - dic.Add("dts", xr.GetAttribute("dts")); - dic.Add("userid", xr.GetAttribute("userid")); - return dic; - } - private void AddEntry(Content content, XmlNode xc) - { - XmlNode nd = xc.SelectSingleNode("entry"); - string userid = nd.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(nd.Attributes.GetNamedItem("dts").InnerText); - Document dd = AddDocument(nd.SelectSingleNode("document")); - Entry ee = Entry.MakeEntry(content, dd, dts, userid); - ee.Save(); - } - private void AddDocument(XmlReader xr, Dictionary dic) - { - string libtitle = xr.GetAttribute("libtitle"); - byte[] doccontent = Convert.FromBase64String(xr.GetAttribute("doccontent")); - string docascii = xr.GetAttribute("docascii"); - string config = xr.GetAttribute("config"); - string userid = xr.GetAttribute("userid"); - DateTime dts = DateTime.Parse(xr.GetAttribute("dts")); - string fileextension = xr.GetAttribute("fileextension"); - Document dd = Document.MakeDocument(libtitle, doccontent, docascii, config, dts, userid, fileextension); - int contentid = int.Parse(dic["contentid"]); - contentid = Old2NewContent[contentid]; - Content content = Content.Get(contentid); - dts = DateTime.Parse(dic["dts"]); - userid = dic["userid"]; - Entry ee = Entry.MakeEntry(content, dd, dts, userid); - } - private Document AddDocument(XmlNode xn) - { - Document d; - int docid = int.Parse(xn.Attributes.GetNamedItem("docid").InnerText); - if (Old2NewLibDoc.ContainsKey(docid)) - { - docid = Old2NewLibDoc[docid]; - d = Document.Get(docid); - } - else - { - string libtitle = xn.Attributes.GetNamedItem("libtitle").InnerText; - byte[] doccontent = Convert.FromBase64String(xn.Attributes.GetNamedItem("doccontent").InnerText); - string docascii = xn.Attributes.GetNamedItem("docascii").InnerText; - string config = xn.Attributes.GetNamedItem("config").InnerText; - string userid = xn.Attributes.GetNamedItem("userid").InnerText; - DateTime dts = DateTime.Parse(xn.Attributes.GetNamedItem("dts").InnerText); - string fileextension = xn.Attributes.GetNamedItem("fileextension").InnerText; - d = Document.MakeDocument(libtitle, doccontent, docascii, config, dts, userid, fileextension); - d.Save(); - Old2NewLibDoc.Add(docid, d.DocID); - } - return d; - } - #endregion - - private void btnCloseExport_Click(object sender, EventArgs e) - { - this.Close(); - } - - private void btnCloseImport_Click(object sender, EventArgs e) - { - this.Close(); - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/dlgExportImport.designer.cs b/PROMS/DataLoader/dlgExportImport.designer.cs deleted file mode 100644 index 1d470b27..00000000 --- a/PROMS/DataLoader/dlgExportImport.designer.cs +++ /dev/null @@ -1,413 +0,0 @@ -namespace DataLoader -{ - partial class dlgExportImport - { - /// - /// 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.pnlExport = new System.Windows.Forms.Panel(); - this.lblExportStatus = new System.Windows.Forms.Label(); - this.pbExportStep = new System.Windows.Forms.ProgressBar(); - this.lblExportStep = new System.Windows.Forms.Label(); - this.pbExportSection = new System.Windows.Forms.ProgressBar(); - this.lblExportSection = new System.Windows.Forms.Label(); - this.pbExportProcedure = new System.Windows.Forms.ProgressBar(); - this.lblExportProcedure = new System.Windows.Forms.Label(); - this.btnDoExport = new System.Windows.Forms.Button(); - this.btnExport = new System.Windows.Forms.Button(); - this.txtExport = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.pnlImport = new System.Windows.Forms.Panel(); - this.lblImportStatus = new System.Windows.Forms.Label(); - this.pbImportStep = new System.Windows.Forms.ProgressBar(); - this.lblImportStep = new System.Windows.Forms.Label(); - this.pbImportSection = new System.Windows.Forms.ProgressBar(); - this.lblImportSection = new System.Windows.Forms.Label(); - this.pbImportProcedure = new System.Windows.Forms.ProgressBar(); - this.lblImportProcedure = new System.Windows.Forms.Label(); - this.btnDoImport = new System.Windows.Forms.Button(); - this.btnImport = new System.Windows.Forms.Button(); - this.txtImport = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.ofd = new System.Windows.Forms.OpenFileDialog(); - this.sfd = new System.Windows.Forms.SaveFileDialog(); - this.btnCloseExport = new System.Windows.Forms.Button(); - this.btnCloseImport = new System.Windows.Forms.Button(); - this.lblExportTime = new System.Windows.Forms.Label(); - this.lblImportTime = new System.Windows.Forms.Label(); - this.pnlExport.SuspendLayout(); - this.pnlImport.SuspendLayout(); - this.SuspendLayout(); - // - // pnlExport - // - this.pnlExport.Controls.Add(this.btnCloseExport); - this.pnlExport.Controls.Add(this.lblExportTime); - this.pnlExport.Controls.Add(this.lblExportStatus); - this.pnlExport.Controls.Add(this.pbExportStep); - this.pnlExport.Controls.Add(this.lblExportStep); - this.pnlExport.Controls.Add(this.pbExportSection); - this.pnlExport.Controls.Add(this.lblExportSection); - this.pnlExport.Controls.Add(this.pbExportProcedure); - this.pnlExport.Controls.Add(this.lblExportProcedure); - this.pnlExport.Controls.Add(this.btnDoExport); - this.pnlExport.Controls.Add(this.btnExport); - this.pnlExport.Controls.Add(this.txtExport); - this.pnlExport.Controls.Add(this.label1); - this.pnlExport.Location = new System.Drawing.Point(12, 12); - this.pnlExport.Name = "pnlExport"; - this.pnlExport.Size = new System.Drawing.Size(618, 199); - this.pnlExport.TabIndex = 0; - // - // lblExportStatus - // - this.lblExportStatus.AutoSize = true; - this.lblExportStatus.Location = new System.Drawing.Point(140, 30); - this.lblExportStatus.Name = "lblExportStatus"; - this.lblExportStatus.Size = new System.Drawing.Size(133, 13); - this.lblExportStatus.TabIndex = 10; - this.lblExportStatus.Text = "Awaiting Export File Name:"; - // - // pbExportStep - // - this.pbExportStep.Location = new System.Drawing.Point(15, 155); - this.pbExportStep.Name = "pbExportStep"; - this.pbExportStep.Size = new System.Drawing.Size(561, 20); - this.pbExportStep.Step = 1; - this.pbExportStep.TabIndex = 9; - // - // lblExportStep - // - this.lblExportStep.AutoSize = true; - this.lblExportStep.Location = new System.Drawing.Point(12, 139); - this.lblExportStep.Name = "lblExportStep"; - this.lblExportStep.Size = new System.Drawing.Size(34, 13); - this.lblExportStep.TabIndex = 8; - this.lblExportStep.Text = "Steps"; - // - // pbExportSection - // - this.pbExportSection.Location = new System.Drawing.Point(15, 116); - this.pbExportSection.Name = "pbExportSection"; - this.pbExportSection.Size = new System.Drawing.Size(561, 20); - this.pbExportSection.Step = 1; - this.pbExportSection.TabIndex = 7; - // - // lblExportSection - // - this.lblExportSection.AutoSize = true; - this.lblExportSection.Location = new System.Drawing.Point(12, 100); - this.lblExportSection.Name = "lblExportSection"; - this.lblExportSection.Size = new System.Drawing.Size(48, 13); - this.lblExportSection.TabIndex = 6; - this.lblExportSection.Text = "Sections"; - // - // pbExportProcedure - // - this.pbExportProcedure.Location = new System.Drawing.Point(15, 77); - this.pbExportProcedure.Name = "pbExportProcedure"; - this.pbExportProcedure.Size = new System.Drawing.Size(561, 20); - this.pbExportProcedure.Step = 1; - this.pbExportProcedure.TabIndex = 5; - // - // lblExportProcedure - // - this.lblExportProcedure.AutoSize = true; - this.lblExportProcedure.Location = new System.Drawing.Point(12, 61); - this.lblExportProcedure.Name = "lblExportProcedure"; - this.lblExportProcedure.Size = new System.Drawing.Size(61, 13); - this.lblExportProcedure.TabIndex = 4; - this.lblExportProcedure.Text = "Procedures"; - // - // btnDoExport - // - this.btnDoExport.Enabled = false; - this.btnDoExport.Location = new System.Drawing.Point(15, 25); - this.btnDoExport.Name = "btnDoExport"; - this.btnDoExport.Size = new System.Drawing.Size(119, 23); - this.btnDoExport.TabIndex = 3; - this.btnDoExport.Text = "Process Export"; - this.btnDoExport.UseVisualStyleBackColor = true; - this.btnDoExport.Click += new System.EventHandler(this.btnDoExport_Click); - // - // btnExport - // - this.btnExport.Location = new System.Drawing.Point(582, 3); - this.btnExport.Name = "btnExport"; - this.btnExport.Size = new System.Drawing.Size(25, 23); - this.btnExport.TabIndex = 2; - this.btnExport.Text = "..."; - this.btnExport.UseVisualStyleBackColor = true; - this.btnExport.Click += new System.EventHandler(this.btnExport_Click); - // - // txtExport - // - this.txtExport.Location = new System.Drawing.Point(141, 6); - this.txtExport.Name = "txtExport"; - this.txtExport.ReadOnly = true; - this.txtExport.Size = new System.Drawing.Size(435, 20); - this.txtExport.TabIndex = 1; - this.txtExport.TextChanged += new System.EventHandler(this.txtExport_TextChanged); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 9); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(123, 13); - this.label1.TabIndex = 0; - this.label1.Text = "Select Export File Name:"; - // - // pnlImport - // - this.pnlImport.Controls.Add(this.btnCloseImport); - this.pnlImport.Controls.Add(this.lblImportTime); - this.pnlImport.Controls.Add(this.lblImportStatus); - this.pnlImport.Controls.Add(this.pbImportStep); - this.pnlImport.Controls.Add(this.lblImportStep); - this.pnlImport.Controls.Add(this.pbImportSection); - this.pnlImport.Controls.Add(this.lblImportSection); - this.pnlImport.Controls.Add(this.pbImportProcedure); - this.pnlImport.Controls.Add(this.lblImportProcedure); - this.pnlImport.Controls.Add(this.btnDoImport); - this.pnlImport.Controls.Add(this.btnImport); - this.pnlImport.Controls.Add(this.txtImport); - this.pnlImport.Controls.Add(this.label2); - this.pnlImport.Location = new System.Drawing.Point(12, 217); - this.pnlImport.Name = "pnlImport"; - this.pnlImport.Size = new System.Drawing.Size(618, 225); - this.pnlImport.TabIndex = 1; - // - // lblImportStatus - // - this.lblImportStatus.AutoSize = true; - this.lblImportStatus.Location = new System.Drawing.Point(137, 31); - this.lblImportStatus.Name = "lblImportStatus"; - this.lblImportStatus.Size = new System.Drawing.Size(132, 13); - this.lblImportStatus.TabIndex = 16; - this.lblImportStatus.Text = "Awaiting Import File Name:"; - // - // pbImportStep - // - this.pbImportStep.Location = new System.Drawing.Point(15, 156); - this.pbImportStep.Name = "pbImportStep"; - this.pbImportStep.Size = new System.Drawing.Size(561, 20); - this.pbImportStep.Step = 1; - this.pbImportStep.TabIndex = 15; - // - // lblImportStep - // - this.lblImportStep.AutoSize = true; - this.lblImportStep.Location = new System.Drawing.Point(12, 140); - this.lblImportStep.Name = "lblImportStep"; - this.lblImportStep.Size = new System.Drawing.Size(34, 13); - this.lblImportStep.TabIndex = 14; - this.lblImportStep.Text = "Steps"; - // - // pbImportSection - // - this.pbImportSection.Location = new System.Drawing.Point(14, 117); - this.pbImportSection.Name = "pbImportSection"; - this.pbImportSection.Size = new System.Drawing.Size(561, 20); - this.pbImportSection.Step = 1; - this.pbImportSection.TabIndex = 13; - // - // lblImportSection - // - this.lblImportSection.AutoSize = true; - this.lblImportSection.Location = new System.Drawing.Point(12, 101); - this.lblImportSection.Name = "lblImportSection"; - this.lblImportSection.Size = new System.Drawing.Size(48, 13); - this.lblImportSection.TabIndex = 12; - this.lblImportSection.Text = "Sections"; - // - // pbImportProcedure - // - this.pbImportProcedure.Location = new System.Drawing.Point(14, 78); - this.pbImportProcedure.Name = "pbImportProcedure"; - this.pbImportProcedure.Size = new System.Drawing.Size(561, 20); - this.pbImportProcedure.Step = 1; - this.pbImportProcedure.TabIndex = 11; - // - // lblImportProcedure - // - this.lblImportProcedure.AutoSize = true; - this.lblImportProcedure.Location = new System.Drawing.Point(12, 62); - this.lblImportProcedure.Name = "lblImportProcedure"; - this.lblImportProcedure.Size = new System.Drawing.Size(61, 13); - this.lblImportProcedure.TabIndex = 10; - this.lblImportProcedure.Text = "Procedures"; - // - // btnDoImport - // - this.btnDoImport.Enabled = false; - this.btnDoImport.Location = new System.Drawing.Point(15, 26); - this.btnDoImport.Name = "btnDoImport"; - this.btnDoImport.Size = new System.Drawing.Size(119, 23); - this.btnDoImport.TabIndex = 5; - this.btnDoImport.Text = "Process Import"; - this.btnDoImport.UseVisualStyleBackColor = true; - this.btnDoImport.Click += new System.EventHandler(this.btnDoImport_Click); - // - // btnImport - // - this.btnImport.Location = new System.Drawing.Point(581, 4); - this.btnImport.Name = "btnImport"; - this.btnImport.Size = new System.Drawing.Size(25, 23); - this.btnImport.TabIndex = 4; - this.btnImport.Text = "..."; - this.btnImport.UseVisualStyleBackColor = true; - this.btnImport.Click += new System.EventHandler(this.btnImport_Click); - // - // txtImport - // - this.txtImport.Location = new System.Drawing.Point(140, 7); - this.txtImport.Name = "txtImport"; - this.txtImport.ReadOnly = true; - this.txtImport.Size = new System.Drawing.Size(435, 20); - this.txtImport.TabIndex = 3; - this.txtImport.TextChanged += new System.EventHandler(this.txtImport_TextChanged); - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(12, 10); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(122, 13); - this.label2.TabIndex = 1; - this.label2.Text = "Select Import File Name:"; - // - // ofd - // - this.ofd.AddExtension = false; - this.ofd.Filter = "PROMS Export Files|*.expx"; - this.ofd.Title = "Import File Name"; - // - // sfd - // - this.sfd.DefaultExt = "expx"; - this.sfd.Filter = "PROMS Export Files|*.expx"; - this.sfd.Title = "Export File Name"; - // - // lblExportTime - // - this.lblExportTime.AutoSize = true; - this.lblExportTime.Location = new System.Drawing.Point(392, 29); - this.lblExportTime.Name = "lblExportTime"; - this.lblExportTime.Size = new System.Drawing.Size(28, 13); - this.lblExportTime.TabIndex = 11; - this.lblExportTime.Text = "0:00"; - this.lblExportTime.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // lblImportTime - // - this.lblImportTime.AutoSize = true; - this.lblImportTime.Location = new System.Drawing.Point(392, 30); - this.lblImportTime.Name = "lblImportTime"; - this.lblImportTime.Size = new System.Drawing.Size(28, 13); - this.lblImportTime.TabIndex = 17; - this.lblImportTime.Text = "0.00"; - this.lblImportTime.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - // - // btnCloseExport - // - this.btnCloseExport.Enabled = false; - this.btnCloseExport.Location = new System.Drawing.Point(562, 32); - this.btnCloseExport.Name = "btnCloseExport"; - this.btnCloseExport.Size = new System.Drawing.Size(53, 23); - this.btnCloseExport.TabIndex = 12; - this.btnCloseExport.Text = "Close"; - this.btnCloseExport.UseVisualStyleBackColor = true; - this.btnCloseExport.Click += new System.EventHandler(this.btnCloseExport_Click); - // - // btnCloseImport - // - this.btnCloseImport.Enabled = false; - this.btnCloseImport.Location = new System.Drawing.Point(562, 33); - this.btnCloseImport.Name = "btnCloseImport"; - this.btnCloseImport.Size = new System.Drawing.Size(53, 23); - this.btnCloseImport.TabIndex = 18; - this.btnCloseImport.Text = "Close"; - this.btnCloseImport.UseVisualStyleBackColor = true; - this.btnCloseImport.Click += new System.EventHandler(this.btnCloseImport_Click); - // - // dlgExportImport - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(634, 454); - this.Controls.Add(this.pnlImport); - this.Controls.Add(this.pnlExport); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "dlgExportImport"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Export Import Dialog"; - this.Load += new System.EventHandler(this.dlgExportImport_Load); - this.pnlExport.ResumeLayout(false); - this.pnlExport.PerformLayout(); - this.pnlImport.ResumeLayout(false); - this.pnlImport.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Panel pnlExport; - private System.Windows.Forms.Panel pnlImport; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Button btnExport; - private System.Windows.Forms.TextBox txtExport; - private System.Windows.Forms.Button btnImport; - private System.Windows.Forms.TextBox txtImport; - private System.Windows.Forms.Button btnDoExport; - private System.Windows.Forms.Button btnDoImport; - private System.Windows.Forms.ProgressBar pbExportStep; - private System.Windows.Forms.Label lblExportStep; - private System.Windows.Forms.ProgressBar pbExportSection; - private System.Windows.Forms.Label lblExportSection; - private System.Windows.Forms.ProgressBar pbExportProcedure; - private System.Windows.Forms.Label lblExportProcedure; - private System.Windows.Forms.ProgressBar pbImportStep; - private System.Windows.Forms.Label lblImportStep; - private System.Windows.Forms.ProgressBar pbImportSection; - private System.Windows.Forms.Label lblImportSection; - private System.Windows.Forms.ProgressBar pbImportProcedure; - private System.Windows.Forms.Label lblImportProcedure; - private System.Windows.Forms.OpenFileDialog ofd; - private System.Windows.Forms.SaveFileDialog sfd; - private System.Windows.Forms.Label lblExportStatus; - private System.Windows.Forms.Label lblImportStatus; - private System.Windows.Forms.Label lblExportTime; - private System.Windows.Forms.Label lblImportTime; - private System.Windows.Forms.Button btnCloseExport; - private System.Windows.Forms.Button btnCloseImport; - - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/dlgExportImport.resx b/PROMS/DataLoader/dlgExportImport.resx deleted file mode 100644 index c8010a4d..00000000 --- a/PROMS/DataLoader/dlgExportImport.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - 17, 17 - - - 87, 17 - - \ No newline at end of file diff --git a/PROMS/DataLoader/frmCntTkn.Designer.cs b/PROMS/DataLoader/frmCntTkn.Designer.cs deleted file mode 100644 index 50cae084..00000000 --- a/PROMS/DataLoader/frmCntTkn.Designer.cs +++ /dev/null @@ -1,74 +0,0 @@ -namespace DataLoader -{ - partial class frmCntTkn - { - /// - /// 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.button1 = new System.Windows.Forms.Button(); - this.listBox1 = new System.Windows.Forms.ListBox(); - this.SuspendLayout(); - // - // button1 - // - this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.button1.Location = new System.Drawing.Point(12, 8); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(132, 22); - this.button1.TabIndex = 0; - this.button1.Text = "Count Chars/Tokens"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); - // - // listBox1 - // - this.listBox1.Font = new System.Drawing.Font("Arial Unicode MS", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.listBox1.FormattingEnabled = true; - this.listBox1.ItemHeight = 15; - this.listBox1.Location = new System.Drawing.Point(12, 36); - this.listBox1.Name = "listBox1"; - this.listBox1.Size = new System.Drawing.Size(225, 409); - this.listBox1.TabIndex = 55; - // - // frmCntTkn - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(331, 486); - this.Controls.Add(this.listBox1); - this.Controls.Add(this.button1); - this.Name = "frmCntTkn"; - this.Text = "frmCntTkn"; - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.Button button1; - private System.Windows.Forms.ListBox listBox1; - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/frmCntTkn.cs b/PROMS/DataLoader/frmCntTkn.cs deleted file mode 100644 index 8afac0d8..00000000 --- a/PROMS/DataLoader/frmCntTkn.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Data.OleDb; -using System.Drawing; -using System.Text; -using System.IO; -using System.Windows.Forms; -using VEPROMS.CSLA.Library; - -namespace DataLoader -{ - public partial class frmCntTkn : Form - { - private Dictionary dicCharCount; - - public frmCntTkn() - { - InitializeComponent(); - } - - private void CountChars(string txt) - { - foreach (char ch in txt) - { - //'A' is a newline - int ich = Convert.ToInt32(ch); - if (ich == 0xD) Console.WriteLine("D is {0}", txt); - if (ich == 0x17) Console.WriteLine("17 is {0}", txt); - if (!dicCharCount.ContainsKey(ch)) - dicCharCount[ch] = 1; - else - dicCharCount[ch] = dicCharCount[ch] + 1; - } - } - - //private void ProcessText() - //{ - // TextMInfoList txtMList = TextMInfoList.Get(); - // foreach (TextMInfo txtM in txtMList) - // { - // string thetext = txtM.TextMValue; - // CountChars(thetext); - // } - //} - private void button1_Click(object sender, EventArgs e) - { - // Create a dictionary that stores characters - // read in data from dbf - // list chars - dicCharCount = new Dictionary(); - //ProcessText(); - - // now display dictionary results.. - Console.WriteLine("Char\t\tHex\t\tDec\t\tCount"); - foreach (char ch in dicCharCount.Keys) - { - // if character is a 'token' and not a hardspace (A0), linefeed (A), RO token (15) - // Transition tokens (0x252c & -x2566) then show it. - if ((ch < 0x20 || ch > 0x7E) && ch!= 0xA0 && ch != 0xA && ch != 0x15 && ch != 0x252C && ch != 0x2566) - { - int ich = Convert.ToInt32(ch); - string cntstr = String.Format("{0}\t\t{1}\t\t{2}\t\t{3}", ch, ich.ToString("X4"), ich.ToString(), dicCharCount[ch]); - listBox1.Items.Add(cntstr); - Console.WriteLine(cntstr); - } - } - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/frmCntTkn.resx b/PROMS/DataLoader/frmCntTkn.resx deleted file mode 100644 index 19dc0dd8..00000000 --- a/PROMS/DataLoader/frmCntTkn.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/PROMS/DataLoader/frmErrors.Designer.cs b/PROMS/DataLoader/frmErrors.Designer.cs deleted file mode 100644 index c34448a6..00000000 --- a/PROMS/DataLoader/frmErrors.Designer.cs +++ /dev/null @@ -1,62 +0,0 @@ -namespace DataLoader -{ - partial class frmErrors - { - /// - /// 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.tbErrors = new System.Windows.Forms.TextBox(); - this.SuspendLayout(); - // - // tbErrors - // - this.tbErrors.Dock = System.Windows.Forms.DockStyle.Fill; - this.tbErrors.Location = new System.Drawing.Point(0, 0); - this.tbErrors.Multiline = true; - this.tbErrors.Name = "tbErrors"; - this.tbErrors.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.tbErrors.Size = new System.Drawing.Size(548, 264); - this.tbErrors.TabIndex = 0; - // - // frmErrors - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(548, 264); - this.Controls.Add(this.tbErrors); - this.Name = "frmErrors"; - this.Text = "Data Loader Errors"; - this.Load += new System.EventHandler(this.frmErrors_Load); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.TextBox tbErrors; - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/frmErrors.cs b/PROMS/DataLoader/frmErrors.cs deleted file mode 100644 index 11b8ddc8..00000000 --- a/PROMS/DataLoader/frmErrors.cs +++ /dev/null @@ -1,101 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; - -namespace DataLoader -{ - public partial class frmErrors : Form - { - private Form _MyParent; - public frmErrors(Form myParent) - { - InitializeComponent(); - _MyParent = myParent; - _MyParent.Move += new EventHandler(_MyParent_Move); - } - void _MyParent_Move(object sender, EventArgs e) - { - AdjustLocation(); - } - private int _ErrorCount = 0; - public int ErrorCount - { - get { return _ErrorCount; } - set { _ErrorCount = value; } - } - private int _WarningCount = 0; - public int WarningCount - { - get { return _WarningCount; } - set { _WarningCount = value; } - } - private int _InfoCount = 0; - public int InfoCount - { - get { return _InfoCount; } - set { _InfoCount = value; } - } - string sep = ""; - public void Add(string err, MessageType messageType) - { - switch (messageType) - { - case MessageType.Information: - _InfoCount++; - break; - case MessageType.Warning: - _WarningCount++; - break; - case MessageType.Error: - _ErrorCount++; - break; - default: - break; - } - //tbErrors.SelectionStart = tbErrors.TextLength; - //tbErrors.SelectedText = sep + err; - tbErrors.AppendText(sep + err); - sep = "\r\n"; - Show(); - Application.DoEvents(); - } - public void Clear() - { - tbErrors.Text = ""; - sep = ""; - Hide(); - } - private void frmErrors_Load(object sender, EventArgs e) - { - AdjustLocation(); - } - private void AdjustLocation() - { - int maxRight = Screen.GetWorkingArea(this).Right; - if (Screen.AllScreens.Length > 1) - { - foreach (Screen sc in Screen.AllScreens) - if (sc.WorkingArea.Right > maxRight) maxRight = sc.WorkingArea.Right; - } - Top = _MyParent.Top; - Left = _MyParent.Right + Width > maxRight ? maxRight - Width : _MyParent.Right; - } - public void Save(string path) - { - StreamWriter fs = new StreamWriter(path, false); - fs.Write(tbErrors.Text); - fs.Close(); - } - } - public enum MessageType - { - Information, - Warning, - Error - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/frmErrors.resx b/PROMS/DataLoader/frmErrors.resx deleted file mode 100644 index 19dc0dd8..00000000 --- a/PROMS/DataLoader/frmErrors.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/PROMS/DataLoader/frmLoader.Designer.cs b/PROMS/DataLoader/frmLoader.Designer.cs deleted file mode 100644 index 312ecf3e..00000000 --- a/PROMS/DataLoader/frmLoader.Designer.cs +++ /dev/null @@ -1,615 +0,0 @@ -namespace DataLoader -{ - partial class frmLoader - { - /// - /// 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); - Volian.MSWord.WordDoc.CloseApp(); - } - - #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(); - this.sc = new System.Windows.Forms.SplitContainer(); - this.lblCurSetFolder = new System.Windows.Forms.Label(); - this.lblProcessing = new System.Windows.Forms.Label(); - this.lblTime = new System.Windows.Forms.Label(); - this.pbStep = new System.Windows.Forms.ProgressBar(); - this.pbSect = new System.Windows.Forms.ProgressBar(); - this.pbProc = new System.Windows.Forms.ProgressBar(); - this.lblStep = new System.Windows.Forms.Label(); - this.lblSection = new System.Windows.Forms.Label(); - this.lblProc = new System.Windows.Forms.Label(); - this.tv = new System.Windows.Forms.TreeView(); - this.fbd = new System.Windows.Forms.FolderBrowserDialog(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); - this.tsslError = new System.Windows.Forms.ToolStripStatusLabel(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.loadTreeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.processToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.completeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); - this.formatOnlyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); - this.convertDBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.fixTransitionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.convertToChangeManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.convertToApprovalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.load16BitApprovalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.fixesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.fixROValuesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.createEmptyPROMSDatabaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.oldToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.convertSecurityToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator(); - this.convertTopFoldersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.loadTreeFromCSLAToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.loadVETreeFromCSLAToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.groupSecurityToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.countTokensToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); - this.convertDbfSelectedInTreeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.fixAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.approvalDatabasesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.updateFormatsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.fixROsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.fixROsToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.exportDataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.importDataToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.exportProcedureOnlyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.importProcedureOnlyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.sc.Panel1.SuspendLayout(); - this.sc.Panel2.SuspendLayout(); - this.sc.SuspendLayout(); - this.statusStrip1.SuspendLayout(); - this.menuStrip1.SuspendLayout(); - this.SuspendLayout(); - // - // sc - // - this.sc.Dock = System.Windows.Forms.DockStyle.Fill; - this.sc.Location = new System.Drawing.Point(0, 24); - this.sc.Margin = new System.Windows.Forms.Padding(2); - this.sc.Name = "sc"; - this.sc.Orientation = System.Windows.Forms.Orientation.Horizontal; - // - // sc.Panel1 - // - this.sc.Panel1.Controls.Add(this.lblCurSetFolder); - this.sc.Panel1.Controls.Add(this.lblProcessing); - this.sc.Panel1.Controls.Add(this.lblTime); - this.sc.Panel1.Controls.Add(this.pbStep); - this.sc.Panel1.Controls.Add(this.pbSect); - this.sc.Panel1.Controls.Add(this.pbProc); - this.sc.Panel1.Controls.Add(this.lblStep); - this.sc.Panel1.Controls.Add(this.lblSection); - this.sc.Panel1.Controls.Add(this.lblProc); - // - // sc.Panel2 - // - this.sc.Panel2.BackColor = System.Drawing.SystemColors.Control; - this.sc.Panel2.Controls.Add(this.tv); - this.sc.Size = new System.Drawing.Size(664, 370); - this.sc.SplitterDistance = 134; - this.sc.SplitterWidth = 3; - this.sc.TabIndex = 46; - // - // lblCurSetFolder - // - this.lblCurSetFolder.AutoSize = true; - this.lblCurSetFolder.ForeColor = System.Drawing.Color.Blue; - this.lblCurSetFolder.Location = new System.Drawing.Point(177, 97); - this.lblCurSetFolder.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblCurSetFolder.Name = "lblCurSetFolder"; - this.lblCurSetFolder.Size = new System.Drawing.Size(16, 13); - this.lblCurSetFolder.TabIndex = 75; - this.lblCurSetFolder.Text = "..."; - this.lblCurSetFolder.Visible = false; - // - // lblProcessing - // - this.lblProcessing.AutoSize = true; - this.lblProcessing.Location = new System.Drawing.Point(7, 97); - this.lblProcessing.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblProcessing.Name = "lblProcessing"; - this.lblProcessing.Size = new System.Drawing.Size(165, 13); - this.lblProcessing.TabIndex = 74; - this.lblProcessing.Text = "Processing Procedure Set Folder:"; - this.lblProcessing.Visible = false; - // - // lblTime - // - this.lblTime.BackColor = System.Drawing.SystemColors.ButtonShadow; - this.lblTime.Location = new System.Drawing.Point(7, 67); - this.lblTime.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblTime.Name = "lblTime"; - this.lblTime.Size = new System.Drawing.Size(106, 16); - this.lblTime.TabIndex = 58; - // - // pbStep - // - this.pbStep.Location = new System.Drawing.Point(115, 41); - this.pbStep.Margin = new System.Windows.Forms.Padding(2); - this.pbStep.Name = "pbStep"; - this.pbStep.Size = new System.Drawing.Size(375, 12); - this.pbStep.TabIndex = 57; - // - // pbSect - // - this.pbSect.Location = new System.Drawing.Point(115, 24); - this.pbSect.Margin = new System.Windows.Forms.Padding(2); - this.pbSect.Name = "pbSect"; - this.pbSect.Size = new System.Drawing.Size(375, 12); - this.pbSect.TabIndex = 56; - // - // pbProc - // - this.pbProc.Location = new System.Drawing.Point(115, 9); - this.pbProc.Margin = new System.Windows.Forms.Padding(2); - this.pbProc.Name = "pbProc"; - this.pbProc.Size = new System.Drawing.Size(375, 12); - this.pbProc.TabIndex = 55; - // - // lblStep - // - this.lblStep.BackColor = System.Drawing.SystemColors.ButtonShadow; - this.lblStep.Location = new System.Drawing.Point(7, 47); - this.lblStep.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblStep.Name = "lblStep"; - this.lblStep.Size = new System.Drawing.Size(106, 16); - this.lblStep.TabIndex = 49; - // - // lblSection - // - this.lblSection.BackColor = System.Drawing.SystemColors.ButtonShadow; - this.lblSection.Location = new System.Drawing.Point(7, 28); - this.lblSection.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblSection.Name = "lblSection"; - this.lblSection.Size = new System.Drawing.Size(106, 15); - this.lblSection.TabIndex = 48; - // - // lblProc - // - this.lblProc.BackColor = System.Drawing.SystemColors.ButtonShadow; - this.lblProc.Location = new System.Drawing.Point(7, 9); - this.lblProc.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblProc.Name = "lblProc"; - this.lblProc.Size = new System.Drawing.Size(106, 15); - this.lblProc.TabIndex = 47; - // - // tv - // - this.tv.CheckBoxes = true; - this.tv.Dock = System.Windows.Forms.DockStyle.Fill; - this.tv.Location = new System.Drawing.Point(0, 0); - this.tv.Margin = new System.Windows.Forms.Padding(2); - this.tv.Name = "tv"; - this.tv.Size = new System.Drawing.Size(664, 233); - this.tv.TabIndex = 24; - this.tv.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.tv_BeforeExpand); - this.tv.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tv_AfterSelect); - // - // statusStrip1 - // - this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripStatusLabel1, - this.tsslError}); - this.statusStrip1.Location = new System.Drawing.Point(0, 349); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(664, 45); - this.statusStrip1.TabIndex = 47; - this.statusStrip1.Text = "statusStrip1"; - // - // toolStripStatusLabel1 - // - this.toolStripStatusLabel1.AutoSize = false; - this.toolStripStatusLabel1.ImageAlign = System.Drawing.ContentAlignment.TopLeft; - this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; - this.toolStripStatusLabel1.Size = new System.Drawing.Size(500, 40); - this.toolStripStatusLabel1.Text = "Status Information"; - this.toolStripStatusLabel1.TextAlign = System.Drawing.ContentAlignment.TopLeft; - // - // tsslError - // - this.tsslError.AutoSize = false; - this.tsslError.Name = "tsslError"; - this.tsslError.Size = new System.Drawing.Size(150, 40); - this.tsslError.Text = "No Errors"; - this.tsslError.TextAlign = System.Drawing.ContentAlignment.TopLeft; - // - // menuStrip1 - // - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileToolStripMenuItem, - this.processToolStripMenuItem, - this.settingsToolStripMenuItem, - this.oldToolStripMenuItem, - this.fixAllToolStripMenuItem, - this.fixROsToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(664, 24); - this.menuStrip1.TabIndex = 48; - this.menuStrip1.Text = "menuStrip1"; - // - // fileToolStripMenuItem - // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.exitToolStripMenuItem, - this.loadTreeToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "&File"; - // - // exitToolStripMenuItem - // - this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.Size = new System.Drawing.Size(126, 22); - this.exitToolStripMenuItem.Text = "E&xit"; - this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); - // - // loadTreeToolStripMenuItem - // - this.loadTreeToolStripMenuItem.Name = "loadTreeToolStripMenuItem"; - this.loadTreeToolStripMenuItem.Size = new System.Drawing.Size(126, 22); - this.loadTreeToolStripMenuItem.Text = "Load Tree"; - this.loadTreeToolStripMenuItem.Click += new System.EventHandler(this.loadTreeToolStripMenuItem_Click); - // - // processToolStripMenuItem - // - this.processToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.completeToolStripMenuItem, - this.toolStripMenuItem1, - this.formatOnlyToolStripMenuItem, - this.toolStripMenuItem2, - this.convertDBToolStripMenuItem, - this.fixTransitionsToolStripMenuItem, - this.convertToChangeManagerToolStripMenuItem, - this.convertToApprovalToolStripMenuItem, - this.load16BitApprovalToolStripMenuItem, - this.fixesToolStripMenuItem, - this.fixROValuesToolStripMenuItem, - this.createEmptyPROMSDatabaseToolStripMenuItem}); - this.processToolStripMenuItem.Name = "processToolStripMenuItem"; - this.processToolStripMenuItem.Size = new System.Drawing.Size(59, 20); - this.processToolStripMenuItem.Text = "&Process"; - // - // completeToolStripMenuItem - // - this.completeToolStripMenuItem.Name = "completeToolStripMenuItem"; - this.completeToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.completeToolStripMenuItem.Text = "Complete"; - this.completeToolStripMenuItem.Click += new System.EventHandler(this.completeToolStripMenuItem_Click); - // - // toolStripMenuItem1 - // - this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(236, 6); - // - // formatOnlyToolStripMenuItem - // - this.formatOnlyToolStripMenuItem.Name = "formatOnlyToolStripMenuItem"; - this.formatOnlyToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.formatOnlyToolStripMenuItem.Text = "Format Only"; - this.formatOnlyToolStripMenuItem.Click += new System.EventHandler(this.formatOnlyToolStripMenuItem_Click); - // - // toolStripMenuItem2 - // - this.toolStripMenuItem2.Name = "toolStripMenuItem2"; - this.toolStripMenuItem2.Size = new System.Drawing.Size(236, 6); - // - // convertDBToolStripMenuItem - // - this.convertDBToolStripMenuItem.Name = "convertDBToolStripMenuItem"; - this.convertDBToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.convertDBToolStripMenuItem.Text = "Convert DB"; - this.convertDBToolStripMenuItem.Click += new System.EventHandler(this.convertDBToolStripMenuItem_Click); - // - // fixTransitionsToolStripMenuItem - // - this.fixTransitionsToolStripMenuItem.Name = "fixTransitionsToolStripMenuItem"; - this.fixTransitionsToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.fixTransitionsToolStripMenuItem.Text = "Fix Transitions"; - this.fixTransitionsToolStripMenuItem.Click += new System.EventHandler(this.fixTransitionsToolStripMenuItem_Click); - // - // convertToChangeManagerToolStripMenuItem - // - this.convertToChangeManagerToolStripMenuItem.Name = "convertToChangeManagerToolStripMenuItem"; - this.convertToChangeManagerToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.convertToChangeManagerToolStripMenuItem.Text = "Convert to Change Manager"; - this.convertToChangeManagerToolStripMenuItem.Click += new System.EventHandler(this.convertToChangeManagerToolStripMenuItem_Click); - // - // convertToApprovalToolStripMenuItem - // - this.convertToApprovalToolStripMenuItem.Name = "convertToApprovalToolStripMenuItem"; - this.convertToApprovalToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.convertToApprovalToolStripMenuItem.Text = "Convert to Approval"; - this.convertToApprovalToolStripMenuItem.Click += new System.EventHandler(this.convertToApprovalToolStripMenuItem_Click); - // - // load16BitApprovalToolStripMenuItem - // - this.load16BitApprovalToolStripMenuItem.Name = "load16BitApprovalToolStripMenuItem"; - this.load16BitApprovalToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.load16BitApprovalToolStripMenuItem.Text = "Load 16-Bit Approval"; - this.load16BitApprovalToolStripMenuItem.Click += new System.EventHandler(this.load16BitApprovalToolStripMenuItem_Click); - // - // fixesToolStripMenuItem - // - this.fixesToolStripMenuItem.Name = "fixesToolStripMenuItem"; - this.fixesToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.fixesToolStripMenuItem.Text = "Fixes"; - this.fixesToolStripMenuItem.Click += new System.EventHandler(this.fixesToolStripMenuItem_Click); - // - // fixROValuesToolStripMenuItem - // - this.fixROValuesToolStripMenuItem.Name = "fixROValuesToolStripMenuItem"; - this.fixROValuesToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.fixROValuesToolStripMenuItem.Text = "Fix RO Values"; - this.fixROValuesToolStripMenuItem.Click += new System.EventHandler(this.fixROValuesToolStripMenuItem_Click); - // - // createEmptyPROMSDatabaseToolStripMenuItem - // - this.createEmptyPROMSDatabaseToolStripMenuItem.Name = "createEmptyPROMSDatabaseToolStripMenuItem"; - this.createEmptyPROMSDatabaseToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.createEmptyPROMSDatabaseToolStripMenuItem.Text = "Create Empty PROMS Database"; - this.createEmptyPROMSDatabaseToolStripMenuItem.Click += new System.EventHandler(this.createEmptyPROMSDatabaseToolStripMenuItem_Click); - // - // settingsToolStripMenuItem - // - this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem"; - this.settingsToolStripMenuItem.Size = new System.Drawing.Size(61, 20); - this.settingsToolStripMenuItem.Text = "&Settings"; - this.settingsToolStripMenuItem.Click += new System.EventHandler(this.settingsToolStripMenuItem_Click); - // - // oldToolStripMenuItem - // - this.oldToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.convertSecurityToolStripMenuItem, - this.toolStripMenuItem4, - this.convertTopFoldersToolStripMenuItem, - this.loadTreeFromCSLAToolStripMenuItem, - this.loadVETreeFromCSLAToolStripMenuItem, - this.groupSecurityToolStripMenuItem, - this.countTokensToolStripMenuItem, - this.toolStripMenuItem3, - this.convertDbfSelectedInTreeToolStripMenuItem}); - this.oldToolStripMenuItem.Name = "oldToolStripMenuItem"; - this.oldToolStripMenuItem.Size = new System.Drawing.Size(38, 20); - this.oldToolStripMenuItem.Text = "Old"; - // - // convertSecurityToolStripMenuItem - // - this.convertSecurityToolStripMenuItem.Name = "convertSecurityToolStripMenuItem"; - this.convertSecurityToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.convertSecurityToolStripMenuItem.Text = "Convert Security"; - this.convertSecurityToolStripMenuItem.Click += new System.EventHandler(this.convertSecurityToolStripMenuItem_Click); - // - // toolStripMenuItem4 - // - this.toolStripMenuItem4.Name = "toolStripMenuItem4"; - this.toolStripMenuItem4.Size = new System.Drawing.Size(221, 6); - // - // convertTopFoldersToolStripMenuItem - // - this.convertTopFoldersToolStripMenuItem.Name = "convertTopFoldersToolStripMenuItem"; - this.convertTopFoldersToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.convertTopFoldersToolStripMenuItem.Text = "Convert Top Folders"; - this.convertTopFoldersToolStripMenuItem.Click += new System.EventHandler(this.convertTopFoldersToolStripMenuItem_Click); - // - // loadTreeFromCSLAToolStripMenuItem - // - this.loadTreeFromCSLAToolStripMenuItem.Name = "loadTreeFromCSLAToolStripMenuItem"; - this.loadTreeFromCSLAToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.loadTreeFromCSLAToolStripMenuItem.Text = "Load Tree From CSLA"; - this.loadTreeFromCSLAToolStripMenuItem.Click += new System.EventHandler(this.loadTreeFromCSLAToolStripMenuItem_Click); - // - // loadVETreeFromCSLAToolStripMenuItem - // - this.loadVETreeFromCSLAToolStripMenuItem.Name = "loadVETreeFromCSLAToolStripMenuItem"; - this.loadVETreeFromCSLAToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.loadVETreeFromCSLAToolStripMenuItem.Text = "Load VETree From CSLA"; - this.loadVETreeFromCSLAToolStripMenuItem.Click += new System.EventHandler(this.loadVETreeFromCSLAToolStripMenuItem_Click); - // - // groupSecurityToolStripMenuItem - // - this.groupSecurityToolStripMenuItem.Name = "groupSecurityToolStripMenuItem"; - this.groupSecurityToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.groupSecurityToolStripMenuItem.Text = "Group/Security"; - this.groupSecurityToolStripMenuItem.Click += new System.EventHandler(this.groupSecurityToolStripMenuItem_Click); - // - // countTokensToolStripMenuItem - // - this.countTokensToolStripMenuItem.Name = "countTokensToolStripMenuItem"; - this.countTokensToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.countTokensToolStripMenuItem.Text = "Count Tokens"; - this.countTokensToolStripMenuItem.Click += new System.EventHandler(this.countTokensToolStripMenuItem_Click); - // - // toolStripMenuItem3 - // - this.toolStripMenuItem3.Name = "toolStripMenuItem3"; - this.toolStripMenuItem3.Size = new System.Drawing.Size(221, 6); - // - // convertDbfSelectedInTreeToolStripMenuItem - // - this.convertDbfSelectedInTreeToolStripMenuItem.Name = "convertDbfSelectedInTreeToolStripMenuItem"; - this.convertDbfSelectedInTreeToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.convertDbfSelectedInTreeToolStripMenuItem.Text = "Convert Dbf Selected In Tree"; - this.convertDbfSelectedInTreeToolStripMenuItem.Click += new System.EventHandler(this.convertDbfSelectedInTreeToolStripMenuItem_Click); - // - // fixAllToolStripMenuItem - // - this.fixAllToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.approvalDatabasesToolStripMenuItem, - this.updateFormatsToolStripMenuItem}); - this.fixAllToolStripMenuItem.Name = "fixAllToolStripMenuItem"; - this.fixAllToolStripMenuItem.Size = new System.Drawing.Size(50, 20); - this.fixAllToolStripMenuItem.Text = "Fix All"; - // - // approvalDatabasesToolStripMenuItem - // - this.approvalDatabasesToolStripMenuItem.Name = "approvalDatabasesToolStripMenuItem"; - this.approvalDatabasesToolStripMenuItem.Size = new System.Drawing.Size(178, 22); - this.approvalDatabasesToolStripMenuItem.Text = "Approval Databases"; - this.approvalDatabasesToolStripMenuItem.Click += new System.EventHandler(this.approvalDatabasesToolStripMenuItem_Click); - // - // updateFormatsToolStripMenuItem - // - this.updateFormatsToolStripMenuItem.Name = "updateFormatsToolStripMenuItem"; - this.updateFormatsToolStripMenuItem.Size = new System.Drawing.Size(178, 22); - this.updateFormatsToolStripMenuItem.Text = "Update Formats"; - this.updateFormatsToolStripMenuItem.Click += new System.EventHandler(this.updateFormatsToolStripMenuItem_Click); - // - // fixROsToolStripMenuItem - // - this.fixROsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fixROsToolStripMenuItem1, - this.exportDataToolStripMenuItem, - this.importDataToolStripMenuItem, - this.exportProcedureOnlyToolStripMenuItem, - this.importProcedureOnlyToolStripMenuItem}); - this.fixROsToolStripMenuItem.Name = "fixROsToolStripMenuItem"; - this.fixROsToolStripMenuItem.Size = new System.Drawing.Size(67, 20); - this.fixROsToolStripMenuItem.Text = "Selection"; - // - // fixROsToolStripMenuItem1 - // - this.fixROsToolStripMenuItem1.Name = "fixROsToolStripMenuItem1"; - this.fixROsToolStripMenuItem1.Size = new System.Drawing.Size(195, 22); - this.fixROsToolStripMenuItem1.Text = "Fix ROs"; - this.fixROsToolStripMenuItem1.Click += new System.EventHandler(this.fixROsToolStripMenuItem1_Click); - // - // exportDataToolStripMenuItem - // - this.exportDataToolStripMenuItem.Name = "exportDataToolStripMenuItem"; - this.exportDataToolStripMenuItem.Size = new System.Drawing.Size(195, 22); - this.exportDataToolStripMenuItem.Text = "Export Data"; - this.exportDataToolStripMenuItem.Click += new System.EventHandler(this.exportDataToolStripMenuItem_Click); - // - // importDataToolStripMenuItem - // - this.importDataToolStripMenuItem.Name = "importDataToolStripMenuItem"; - this.importDataToolStripMenuItem.Size = new System.Drawing.Size(195, 22); - this.importDataToolStripMenuItem.Text = "Import Data"; - this.importDataToolStripMenuItem.Click += new System.EventHandler(this.importDataToolStripMenuItem_Click); - // - // exportProcedureOnlyToolStripMenuItem - // - this.exportProcedureOnlyToolStripMenuItem.Name = "exportProcedureOnlyToolStripMenuItem"; - this.exportProcedureOnlyToolStripMenuItem.Size = new System.Drawing.Size(195, 22); - this.exportProcedureOnlyToolStripMenuItem.Text = "Export Procedure Only"; - this.exportProcedureOnlyToolStripMenuItem.Click += new System.EventHandler(this.exportProcedureOnlyToolStripMenuItem_Click); - // - // importProcedureOnlyToolStripMenuItem - // - this.importProcedureOnlyToolStripMenuItem.Name = "importProcedureOnlyToolStripMenuItem"; - this.importProcedureOnlyToolStripMenuItem.Size = new System.Drawing.Size(195, 22); - this.importProcedureOnlyToolStripMenuItem.Text = "Import Procedure Only"; - this.importProcedureOnlyToolStripMenuItem.Click += new System.EventHandler(this.importProcedureOnlyToolStripMenuItem_Click); - // - // frmLoader - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(664, 394); - this.Controls.Add(this.statusStrip1); - this.Controls.Add(this.sc); - this.Controls.Add(this.menuStrip1); - this.Margin = new System.Windows.Forms.Padding(2); - this.Name = "frmLoader"; - this.Text = "PROMS-2010 Data Loader"; - this.Load += new System.EventHandler(this.frmLoader_Load); - this.sc.Panel1.ResumeLayout(false); - this.sc.Panel1.PerformLayout(); - this.sc.Panel2.ResumeLayout(false); - this.sc.ResumeLayout(false); - this.statusStrip1.ResumeLayout(false); - this.statusStrip1.PerformLayout(); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.SplitContainer sc; - private System.Windows.Forms.Label lblTime; - private System.Windows.Forms.ProgressBar pbStep; - private System.Windows.Forms.ProgressBar pbSect; - private System.Windows.Forms.ProgressBar pbProc; - private System.Windows.Forms.Label lblStep; - private System.Windows.Forms.Label lblSection; - private System.Windows.Forms.Label lblProc; - private System.Windows.Forms.TreeView tv; - private System.Windows.Forms.FolderBrowserDialog fbd; - private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; - private System.Windows.Forms.ToolStripStatusLabel tsslError; - private System.Windows.Forms.Label lblCurSetFolder; - private System.Windows.Forms.Label lblProcessing; - private System.Windows.Forms.ToolTip toolTip1; - private System.Windows.Forms.MenuStrip menuStrip1; - private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem processToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem completeToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; - private System.Windows.Forms.ToolStripMenuItem formatOnlyToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; - private System.Windows.Forms.ToolStripMenuItem convertDBToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem fixTransitionsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem convertToChangeManagerToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem convertToApprovalToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem oldToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem convertSecurityToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem convertTopFoldersToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem loadTreeFromCSLAToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem loadVETreeFromCSLAToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem groupSecurityToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem countTokensToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem convertDbfSelectedInTreeToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3; - private System.Windows.Forms.ToolStripSeparator toolStripMenuItem4; - private System.Windows.Forms.ToolStripMenuItem load16BitApprovalToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem fixesToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem fixAllToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem approvalDatabasesToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem updateFormatsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem fixROValuesToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem createEmptyPROMSDatabaseToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem fixROsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem fixROsToolStripMenuItem1; - private System.Windows.Forms.ToolStripMenuItem loadTreeToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem exportDataToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem importDataToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem exportProcedureOnlyToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem importProcedureOnlyToolStripMenuItem; - } -} diff --git a/PROMS/DataLoader/frmLoader.Designer.cs.bak b/PROMS/DataLoader/frmLoader.Designer.cs.bak deleted file mode 100644 index c76f7ec5..00000000 --- a/PROMS/DataLoader/frmLoader.Designer.cs.bak +++ /dev/null @@ -1,545 +0,0 @@ -namespace DataLoader -{ - partial class frmLoader - { - /// - /// 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); - Volian.MSWord.WordDoc.CloseApp(); - } - - #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(); - this.sc = new System.Windows.Forms.SplitContainer(); - this.lblCurSetFolder = new System.Windows.Forms.Label(); - this.lblProcessing = new System.Windows.Forms.Label(); - this.lblTime = new System.Windows.Forms.Label(); - this.pbStep = new System.Windows.Forms.ProgressBar(); - this.pbSect = new System.Windows.Forms.ProgressBar(); - this.pbProc = new System.Windows.Forms.ProgressBar(); - this.lblStep = new System.Windows.Forms.Label(); - this.lblSection = new System.Windows.Forms.Label(); - this.lblProc = new System.Windows.Forms.Label(); - this.tv = new System.Windows.Forms.TreeView(); - this.fbd = new System.Windows.Forms.FolderBrowserDialog(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); - this.tsslError = new System.Windows.Forms.ToolStripStatusLabel(); - this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.processToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.completeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); - this.formatOnlyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator(); - this.convertDBToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.fixTransitionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.convertToChangeManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.convertToApprovalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.load16BitApprovalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.fixesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.oldToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.convertSecurityToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem4 = new System.Windows.Forms.ToolStripSeparator(); - this.convertTopFoldersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.loadTreeFromCSLAToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.loadVETreeFromCSLAToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.groupSecurityToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.countTokensToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripSeparator(); - this.convertDbfSelectedInTreeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.fixAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.approvalDatabasesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.updateFormatsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.fixROValuesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.createEmptyPROMSDatabaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.sc.Panel1.SuspendLayout(); - this.sc.Panel2.SuspendLayout(); - this.sc.SuspendLayout(); - this.statusStrip1.SuspendLayout(); - this.menuStrip1.SuspendLayout(); - this.SuspendLayout(); - // - // sc - // - this.sc.Dock = System.Windows.Forms.DockStyle.Fill; - this.sc.Location = new System.Drawing.Point(0, 24); - this.sc.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); - this.sc.Name = "sc"; - this.sc.Orientation = System.Windows.Forms.Orientation.Horizontal; - // - // sc.Panel1 - // - this.sc.Panel1.Controls.Add(this.lblCurSetFolder); - this.sc.Panel1.Controls.Add(this.lblProcessing); - this.sc.Panel1.Controls.Add(this.lblTime); - this.sc.Panel1.Controls.Add(this.pbStep); - this.sc.Panel1.Controls.Add(this.pbSect); - this.sc.Panel1.Controls.Add(this.pbProc); - this.sc.Panel1.Controls.Add(this.lblStep); - this.sc.Panel1.Controls.Add(this.lblSection); - this.sc.Panel1.Controls.Add(this.lblProc); - // - // sc.Panel2 - // - this.sc.Panel2.BackColor = System.Drawing.SystemColors.Control; - this.sc.Panel2.Controls.Add(this.tv); - this.sc.Size = new System.Drawing.Size(664, 370); - this.sc.SplitterDistance = 134; - this.sc.SplitterWidth = 3; - this.sc.TabIndex = 46; - // - // lblCurSetFolder - // - this.lblCurSetFolder.AutoSize = true; - this.lblCurSetFolder.ForeColor = System.Drawing.Color.Blue; - this.lblCurSetFolder.Location = new System.Drawing.Point(177, 97); - this.lblCurSetFolder.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblCurSetFolder.Name = "lblCurSetFolder"; - this.lblCurSetFolder.Size = new System.Drawing.Size(16, 13); - this.lblCurSetFolder.TabIndex = 75; - this.lblCurSetFolder.Text = "..."; - this.lblCurSetFolder.Visible = false; - // - // lblProcessing - // - this.lblProcessing.AutoSize = true; - this.lblProcessing.Location = new System.Drawing.Point(7, 97); - this.lblProcessing.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblProcessing.Name = "lblProcessing"; - this.lblProcessing.Size = new System.Drawing.Size(165, 13); - this.lblProcessing.TabIndex = 74; - this.lblProcessing.Text = "Processing Procedure Set Folder:"; - this.lblProcessing.Visible = false; - // - // lblTime - // - this.lblTime.BackColor = System.Drawing.SystemColors.ButtonShadow; - this.lblTime.Location = new System.Drawing.Point(7, 67); - this.lblTime.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblTime.Name = "lblTime"; - this.lblTime.Size = new System.Drawing.Size(106, 16); - this.lblTime.TabIndex = 58; - // - // pbStep - // - this.pbStep.Location = new System.Drawing.Point(115, 41); - this.pbStep.Margin = new System.Windows.Forms.Padding(2); - this.pbStep.Name = "pbStep"; - this.pbStep.Size = new System.Drawing.Size(375, 12); - this.pbStep.TabIndex = 57; - // - // pbSect - // - this.pbSect.Location = new System.Drawing.Point(115, 24); - this.pbSect.Margin = new System.Windows.Forms.Padding(2); - this.pbSect.Name = "pbSect"; - this.pbSect.Size = new System.Drawing.Size(375, 12); - this.pbSect.TabIndex = 56; - // - // pbProc - // - this.pbProc.Location = new System.Drawing.Point(115, 9); - this.pbProc.Margin = new System.Windows.Forms.Padding(2); - this.pbProc.Name = "pbProc"; - this.pbProc.Size = new System.Drawing.Size(375, 12); - this.pbProc.TabIndex = 55; - // - // lblStep - // - this.lblStep.BackColor = System.Drawing.SystemColors.ButtonShadow; - this.lblStep.Location = new System.Drawing.Point(7, 47); - this.lblStep.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblStep.Name = "lblStep"; - this.lblStep.Size = new System.Drawing.Size(106, 16); - this.lblStep.TabIndex = 49; - // - // lblSection - // - this.lblSection.BackColor = System.Drawing.SystemColors.ButtonShadow; - this.lblSection.Location = new System.Drawing.Point(7, 28); - this.lblSection.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblSection.Name = "lblSection"; - this.lblSection.Size = new System.Drawing.Size(106, 15); - this.lblSection.TabIndex = 48; - // - // lblProc - // - this.lblProc.BackColor = System.Drawing.SystemColors.ButtonShadow; - this.lblProc.Location = new System.Drawing.Point(7, 9); - this.lblProc.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); - this.lblProc.Name = "lblProc"; - this.lblProc.Size = new System.Drawing.Size(106, 15); - this.lblProc.TabIndex = 47; - // - // tv - // - this.tv.CheckBoxes = true; - this.tv.Dock = System.Windows.Forms.DockStyle.Fill; - this.tv.Location = new System.Drawing.Point(0, 0); - this.tv.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); - this.tv.Name = "tv"; - this.tv.Size = new System.Drawing.Size(664, 233); - this.tv.TabIndex = 24; - this.tv.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.tv_BeforeExpand); - this.tv.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.tv_AfterSelect); - // - // statusStrip1 - // - this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.toolStripStatusLabel1, - this.tsslError}); - this.statusStrip1.Location = new System.Drawing.Point(0, 349); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(664, 45); - this.statusStrip1.TabIndex = 47; - this.statusStrip1.Text = "statusStrip1"; - // - // toolStripStatusLabel1 - // - this.toolStripStatusLabel1.AutoSize = false; - this.toolStripStatusLabel1.ImageAlign = System.Drawing.ContentAlignment.TopLeft; - this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; - this.toolStripStatusLabel1.Size = new System.Drawing.Size(500, 40); - this.toolStripStatusLabel1.Text = "Status Information"; - this.toolStripStatusLabel1.TextAlign = System.Drawing.ContentAlignment.TopLeft; - // - // tsslError - // - this.tsslError.AutoSize = false; - this.tsslError.Name = "tsslError"; - this.tsslError.Size = new System.Drawing.Size(150, 40); - this.tsslError.Text = "No Errors"; - this.tsslError.TextAlign = System.Drawing.ContentAlignment.TopLeft; - // - // menuStrip1 - // - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileToolStripMenuItem, - this.processToolStripMenuItem, - this.settingsToolStripMenuItem, - this.oldToolStripMenuItem, - this.fixAllToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(664, 24); - this.menuStrip1.TabIndex = 48; - this.menuStrip1.Text = "menuStrip1"; - // - // fileToolStripMenuItem - // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.exitToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "&File"; - // - // exitToolStripMenuItem - // - this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.exitToolStripMenuItem.Text = "E&xit"; - this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); - // - // processToolStripMenuItem - // - this.processToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.completeToolStripMenuItem, - this.toolStripMenuItem1, - this.formatOnlyToolStripMenuItem, - this.toolStripMenuItem2, - this.convertDBToolStripMenuItem, - this.fixTransitionsToolStripMenuItem, - this.convertToChangeManagerToolStripMenuItem, - this.convertToApprovalToolStripMenuItem, - this.load16BitApprovalToolStripMenuItem, - this.fixesToolStripMenuItem, - this.fixROValuesToolStripMenuItem}); - this.createEmptyPROMSDatabaseToolStripMenuItem}); - this.processToolStripMenuItem.Name = "processToolStripMenuItem"; - this.processToolStripMenuItem.Size = new System.Drawing.Size(59, 20); - this.processToolStripMenuItem.Text = "&Process"; - // - // completeToolStripMenuItem - // - this.completeToolStripMenuItem.Name = "completeToolStripMenuItem"; - this.completeToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.completeToolStripMenuItem.Text = "Complete"; - this.completeToolStripMenuItem.Click += new System.EventHandler(this.completeToolStripMenuItem_Click); - // - // toolStripMenuItem1 - // - this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(236, 6); - // - // formatOnlyToolStripMenuItem - // - this.formatOnlyToolStripMenuItem.Name = "formatOnlyToolStripMenuItem"; - this.formatOnlyToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.formatOnlyToolStripMenuItem.Text = "Format Only"; - this.formatOnlyToolStripMenuItem.Click += new System.EventHandler(this.formatOnlyToolStripMenuItem_Click); - // - // toolStripMenuItem2 - // - this.toolStripMenuItem2.Name = "toolStripMenuItem2"; - this.toolStripMenuItem2.Size = new System.Drawing.Size(236, 6); - // - // convertDBToolStripMenuItem - // - this.convertDBToolStripMenuItem.Name = "convertDBToolStripMenuItem"; - this.convertDBToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.convertDBToolStripMenuItem.Text = "Convert DB"; - this.convertDBToolStripMenuItem.Click += new System.EventHandler(this.convertDBToolStripMenuItem_Click); - // - // fixTransitionsToolStripMenuItem - // - this.fixTransitionsToolStripMenuItem.Name = "fixTransitionsToolStripMenuItem"; - this.fixTransitionsToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.fixTransitionsToolStripMenuItem.Text = "Fix Transitions"; - this.fixTransitionsToolStripMenuItem.Click += new System.EventHandler(this.fixTransitionsToolStripMenuItem_Click); - // - // convertToChangeManagerToolStripMenuItem - // - this.convertToChangeManagerToolStripMenuItem.Name = "convertToChangeManagerToolStripMenuItem"; - this.convertToChangeManagerToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.convertToChangeManagerToolStripMenuItem.Text = "Convert to Change Manager"; - this.convertToChangeManagerToolStripMenuItem.Click += new System.EventHandler(this.convertToChangeManagerToolStripMenuItem_Click); - // - // convertToApprovalToolStripMenuItem - // - this.convertToApprovalToolStripMenuItem.Name = "convertToApprovalToolStripMenuItem"; - this.convertToApprovalToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.convertToApprovalToolStripMenuItem.Text = "Convert to Approval"; - this.convertToApprovalToolStripMenuItem.Click += new System.EventHandler(this.convertToApprovalToolStripMenuItem_Click); - // - // load16BitApprovalToolStripMenuItem - // - this.load16BitApprovalToolStripMenuItem.Name = "load16BitApprovalToolStripMenuItem"; - this.load16BitApprovalToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.load16BitApprovalToolStripMenuItem.Text = "Load 16-Bit Approval"; - this.load16BitApprovalToolStripMenuItem.Click += new System.EventHandler(this.load16BitApprovalToolStripMenuItem_Click); - // - // fixesToolStripMenuItem - // - this.fixesToolStripMenuItem.Name = "fixesToolStripMenuItem"; - this.fixesToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.fixesToolStripMenuItem.Text = "Fixes"; - this.fixesToolStripMenuItem.Click += new System.EventHandler(this.fixesToolStripMenuItem_Click); - // - // settingsToolStripMenuItem - // - this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem"; - this.settingsToolStripMenuItem.Size = new System.Drawing.Size(61, 20); - this.settingsToolStripMenuItem.Text = "&Settings"; - this.settingsToolStripMenuItem.Click += new System.EventHandler(this.settingsToolStripMenuItem_Click); - // - // oldToolStripMenuItem - // - this.oldToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.convertSecurityToolStripMenuItem, - this.toolStripMenuItem4, - this.convertTopFoldersToolStripMenuItem, - this.loadTreeFromCSLAToolStripMenuItem, - this.loadVETreeFromCSLAToolStripMenuItem, - this.groupSecurityToolStripMenuItem, - this.countTokensToolStripMenuItem, - this.toolStripMenuItem3, - this.convertDbfSelectedInTreeToolStripMenuItem}); - this.oldToolStripMenuItem.Name = "oldToolStripMenuItem"; - this.oldToolStripMenuItem.Size = new System.Drawing.Size(38, 20); - this.oldToolStripMenuItem.Text = "Old"; - // - // convertSecurityToolStripMenuItem - // - this.convertSecurityToolStripMenuItem.Name = "convertSecurityToolStripMenuItem"; - this.convertSecurityToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.convertSecurityToolStripMenuItem.Text = "Convert Security"; - this.convertSecurityToolStripMenuItem.Click += new System.EventHandler(this.convertSecurityToolStripMenuItem_Click); - // - // toolStripMenuItem4 - // - this.toolStripMenuItem4.Name = "toolStripMenuItem4"; - this.toolStripMenuItem4.Size = new System.Drawing.Size(221, 6); - // - // convertTopFoldersToolStripMenuItem - // - this.convertTopFoldersToolStripMenuItem.Name = "convertTopFoldersToolStripMenuItem"; - this.convertTopFoldersToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.convertTopFoldersToolStripMenuItem.Text = "Convert Top Folders"; - this.convertTopFoldersToolStripMenuItem.Click += new System.EventHandler(this.convertTopFoldersToolStripMenuItem_Click); - // - // loadTreeFromCSLAToolStripMenuItem - // - this.loadTreeFromCSLAToolStripMenuItem.Name = "loadTreeFromCSLAToolStripMenuItem"; - this.loadTreeFromCSLAToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.loadTreeFromCSLAToolStripMenuItem.Text = "Load Tree From CSLA"; - this.loadTreeFromCSLAToolStripMenuItem.Click += new System.EventHandler(this.loadTreeFromCSLAToolStripMenuItem_Click); - // - // loadVETreeFromCSLAToolStripMenuItem - // - this.loadVETreeFromCSLAToolStripMenuItem.Name = "loadVETreeFromCSLAToolStripMenuItem"; - this.loadVETreeFromCSLAToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.loadVETreeFromCSLAToolStripMenuItem.Text = "Load VETree From CSLA"; - this.loadVETreeFromCSLAToolStripMenuItem.Click += new System.EventHandler(this.loadVETreeFromCSLAToolStripMenuItem_Click); - // - // groupSecurityToolStripMenuItem - // - this.groupSecurityToolStripMenuItem.Name = "groupSecurityToolStripMenuItem"; - this.groupSecurityToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.groupSecurityToolStripMenuItem.Text = "Group/Security"; - this.groupSecurityToolStripMenuItem.Click += new System.EventHandler(this.groupSecurityToolStripMenuItem_Click); - // - // countTokensToolStripMenuItem - // - this.countTokensToolStripMenuItem.Name = "countTokensToolStripMenuItem"; - this.countTokensToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.countTokensToolStripMenuItem.Text = "Count Tokens"; - this.countTokensToolStripMenuItem.Click += new System.EventHandler(this.countTokensToolStripMenuItem_Click); - // - // toolStripMenuItem3 - // - this.toolStripMenuItem3.Name = "toolStripMenuItem3"; - this.toolStripMenuItem3.Size = new System.Drawing.Size(221, 6); - // - // convertDbfSelectedInTreeToolStripMenuItem - // - this.convertDbfSelectedInTreeToolStripMenuItem.Name = "convertDbfSelectedInTreeToolStripMenuItem"; - this.convertDbfSelectedInTreeToolStripMenuItem.Size = new System.Drawing.Size(224, 22); - this.convertDbfSelectedInTreeToolStripMenuItem.Text = "Convert Dbf Selected In Tree"; - this.convertDbfSelectedInTreeToolStripMenuItem.Click += new System.EventHandler(this.convertDbfSelectedInTreeToolStripMenuItem_Click); - // - // fixAllToolStripMenuItem - // - this.fixAllToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.approvalDatabasesToolStripMenuItem, - this.updateFormatsToolStripMenuItem}); - this.fixAllToolStripMenuItem.Name = "fixAllToolStripMenuItem"; - this.fixAllToolStripMenuItem.Size = new System.Drawing.Size(50, 20); - this.fixAllToolStripMenuItem.Text = "Fix All"; - // - // approvalDatabasesToolStripMenuItem - // - this.approvalDatabasesToolStripMenuItem.Name = "approvalDatabasesToolStripMenuItem"; - this.approvalDatabasesToolStripMenuItem.Size = new System.Drawing.Size(178, 22); - this.approvalDatabasesToolStripMenuItem.Text = "Approval Databases"; - this.approvalDatabasesToolStripMenuItem.Click += new System.EventHandler(this.approvalDatabasesToolStripMenuItem_Click); - // - // updateFormatsToolStripMenuItem - // - this.updateFormatsToolStripMenuItem.Name = "updateFormatsToolStripMenuItem"; - this.updateFormatsToolStripMenuItem.Size = new System.Drawing.Size(178, 22); - this.updateFormatsToolStripMenuItem.Text = "Update Formats"; - this.updateFormatsToolStripMenuItem.Click += new System.EventHandler(this.updateFormatsToolStripMenuItem_Click); - // - // fixROValuesToolStripMenuItem - // - this.fixROValuesToolStripMenuItem.Name = "fixROValuesToolStripMenuItem"; - this.fixROValuesToolStripMenuItem.Size = new System.Drawing.Size(264, 24); - this.fixROValuesToolStripMenuItem.Text = "Fix RO Values"; - this.fixROValuesToolStripMenuItem.Click += new System.EventHandler(this.fixROValuesToolStripMenuItem_Click); - // - // createEmptyPROMSDatabaseToolStripMenuItem - // - this.createEmptyPROMSDatabaseToolStripMenuItem.Name = "createEmptyPROMSDatabaseToolStripMenuItem"; - this.createEmptyPROMSDatabaseToolStripMenuItem.Size = new System.Drawing.Size(239, 22); - this.createEmptyPROMSDatabaseToolStripMenuItem.Text = "Create Empty PROMS Database"; - this.createEmptyPROMSDatabaseToolStripMenuItem.Click += new System.EventHandler(this.createEmptyPROMSDatabaseToolStripMenuItem_Click); - // - // frmLoader - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(664, 394); - this.Controls.Add(this.statusStrip1); - this.Controls.Add(this.sc); - this.Controls.Add(this.menuStrip1); - this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2); - this.Name = "frmLoader"; - this.Text = "PROMS-2010 Data Loader"; - this.Load += new System.EventHandler(this.frmLoader_Load); - this.sc.Panel1.ResumeLayout(false); - this.sc.Panel1.PerformLayout(); - this.sc.Panel2.ResumeLayout(false); - this.sc.ResumeLayout(false); - this.statusStrip1.ResumeLayout(false); - this.statusStrip1.PerformLayout(); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.SplitContainer sc; - private System.Windows.Forms.Label lblTime; - private System.Windows.Forms.ProgressBar pbStep; - private System.Windows.Forms.ProgressBar pbSect; - private System.Windows.Forms.ProgressBar pbProc; - private System.Windows.Forms.Label lblStep; - private System.Windows.Forms.Label lblSection; - private System.Windows.Forms.Label lblProc; - private System.Windows.Forms.TreeView tv; - private System.Windows.Forms.FolderBrowserDialog fbd; - private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; - private System.Windows.Forms.ToolStripStatusLabel tsslError; - private System.Windows.Forms.Label lblCurSetFolder; - private System.Windows.Forms.Label lblProcessing; - private System.Windows.Forms.ToolTip toolTip1; - private System.Windows.Forms.MenuStrip menuStrip1; - private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem settingsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem processToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem completeToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; - private System.Windows.Forms.ToolStripMenuItem formatOnlyToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2; - private System.Windows.Forms.ToolStripMenuItem convertDBToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem fixTransitionsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem convertToChangeManagerToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem convertToApprovalToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem oldToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem convertSecurityToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem convertTopFoldersToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem loadTreeFromCSLAToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem loadVETreeFromCSLAToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem groupSecurityToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem countTokensToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem convertDbfSelectedInTreeToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3; - private System.Windows.Forms.ToolStripSeparator toolStripMenuItem4; - private System.Windows.Forms.ToolStripMenuItem load16BitApprovalToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem fixesToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem fixAllToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem approvalDatabasesToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem updateFormatsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem fixROValuesToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem createEmptyPROMSDatabaseToolStripMenuItem; - } -} diff --git a/PROMS/DataLoader/frmLoader.cs b/PROMS/DataLoader/frmLoader.cs deleted file mode 100644 index 099b31ea..00000000 --- a/PROMS/DataLoader/frmLoader.cs +++ /dev/null @@ -1,1430 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.Configuration; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using Volian.MSWord; -using vlnObjectLibrary; -using vlnServerLibrary; -using VEPROMS.CSLA.Library; -using Config; -using Volian.Controls.Library; -using Volian.Base.Library; -using System.Data.SqlClient; - - -[assembly: log4net.Config.XmlConfigurator(Watch = true)] - -namespace DataLoader -{ - public partial class frmLoader : Form - { - #region Log4Net - public static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - #endregion - #region settings - private bool _FormatsOnly = false; - public bool FormatsOnly - { - get { return _FormatsOnly; } - set { _FormatsOnly = value; } - } - #endregion - private bool _Loading = true; - - private FolderTreeNode _topnode; - private bool UseVeTree = false; - private Loader ldr; - public TreeView TV { get { return tv; } } - public int pbProcMaximum { get { return pbProc.Maximum; } set { pbProc.Maximum = value; } } - public int pbSectMaximum { get { return pbSect.Maximum; } set { pbSect.Maximum = value; } } - public int pbSectValue { get { return pbSect.Value; } set { pbSect.Value = value; } } - public int pbStepMaximum { get { return pbStep.Maximum; } set { pbStep.Maximum = value; } } - public int pbStepValue { get { return pbStep.Value; } set { pbStep.Value = value; } } - public int pbProcValue { get { return pbProc.Value; } set { pbProc.Value = value; } } - private bool _Automatic = false; - public bool Automatic - { - get { return _Automatic; } - set { _Automatic = value; } - } - private string _DBName = null; - public string DBName - { - get - { - if (_DBName != null) return _DBName; - return MySettings.DBName; - } - } - private string _ProcedureSetPath = null; - public string ProcedureSetPath - { - get - { - if (_ProcedureSetPath != null) return _ProcedureSetPath; - return MySettings.ProcedureSetPath; - } - } - private int? _SkipProcedures = null; - public int SkipProcedures - { - get - { - if (_SkipProcedures != null) return (int)_SkipProcedures; - return MySettings.Skip; - } - } - private int? _HowManyProcedures = null; - public int HowManyProcedures - { - get - { - if (_HowManyProcedures != null) return (int)_HowManyProcedures; - return MySettings.HowMany; - } - } - private bool? _PurgeExistingData = null; - public bool PurgeExistingData - { - get - { - if (_PurgeExistingData != null) return (bool)_PurgeExistingData; - return MySettings.PurgeExistingData; - } - } - public string Status - { - get { return toolStripStatusLabel1.Text; } - set - { - toolStripStatusLabel1.Text = value; - Application.DoEvents(); - } - } - private int _ChildrenProcessed; - public int ChildrenProcessed - { - get { return _ChildrenProcessed; } - set { _ChildrenProcessed = value; } - } - private frmErrors _MyFrmErrors = null; - public frmErrors MyFrmErrors - { - get - { - if (_MyFrmErrors == null) - { - _MyFrmErrors = new frmErrors(this); - _MyFrmErrors.FormClosing += new FormClosingEventHandler(_MyFrmErrors_FormClosing); - } - return _MyFrmErrors; - } - } - void _MyFrmErrors_FormClosing(object sender, FormClosingEventArgs e) - { - _MyFrmErrors = null; - } - public string MyError - { - get { return tsslError.Text; } - set - { - MyFrmErrors.Add(value, MessageType.Error); - _MyLog.ErrorFormat(value); - tsslError.Text = string.Format("{0} Errors", MyFrmErrors.ErrorCount); - } - } - public string MyWarning - { - get { return tsslError.Text; } - set - { - MyFrmErrors.Add(value, MessageType.Warning); - _MyLog.WarnFormat(value); - //tsslError.Text = string.Format("{0} Errors", MyFrmErrors.ErrorCount); - } - } - public string MyInfo - { - get { return tsslError.Text; } - set - { - MyFrmErrors.Add(value, MessageType.Information); - _MyLog.Info(value); - //tsslError.Text = string.Format("{0} Errors", MyFrmErrors.ErrorCount); - } - } - public void AddError(string format, params object[] objs) - { - MyError = string.Format(format, objs); - } - public void AddWarn(string format, params object[] objs) - { - MyWarning = string.Format(format, objs); - } - public void AddInfo(string format, params object[] objs) - { - MyInfo = string.Format(format, objs); - } - public void AddError(Exception ex, string format, params object[] objs) - { - StringBuilder sb = new StringBuilder(string.Format(format, objs)); - int indent = 0; - while (ex != null) - { - sb.Append("\r\n" + "".PadRight((++indent) * 2, ' ') + string.Format("{0} - {1}", ex.GetType().Name, ex.Message)); - sb.Append(ex.StackTrace); - ex = ex.InnerException; - } - MyError = sb.ToString(); - } - - public frmLoader() - { - ldr = new Loader(_MyLog, this); - InitializeComponent(); - MSWordToPDF.FormForPlotGraphics = this; - lblTime.Tag = DateTime.Now; - } - private void btnConvertSelected_Click(object sender, EventArgs e) - { - if (UseVeTree) - { - VETreeNode tn = (VETreeNode)tv.SelectedNode; - if (tn == null) - { - MessageBox.Show("Must select a version node (working draft, approved, etc)", "No Node Selected"); - return; - } - object o = tn.VEObject; - if (o.GetType() != typeof(DocVersionInfo)) - { - MessageBox.Show("Must select a version node (working draft, approved, etc)", "No Node Selected"); - return; - } - DocVersion v = ((DocVersionInfo)o).Get(); - ldr.MigrateDocVersion(v); - if (v.MyItem != null) - { - tn.Checked = true; - } - - } - else - { - TreeNode tn = tv.SelectedNode; - if (tn == null) - { - MessageBox.Show("Must select a version node (working draft, approved, etc)", "No Node Selected"); - return; - } - object o = tn.Tag; - if (o.GetType() != typeof(DocVersion)) - { - MessageBox.Show("Must select a version node (working draft, approved, etc)", "No Node Selected"); - return; - } - DocVersion v = (DocVersion)o; - ldr.MigrateDocVersion(v); - if (v.MyItem != null) - { - tn.Checked = true; - } - } - } - private void tv_BeforeExpand(object sender, TreeViewCancelEventArgs e) - { - if (UseVeTree) - { - ((VETreeNode)e.Node).LoadChildren(); - return; - } - - TreeNode tn = e.Node; - object o = tn.Tag; - switch (o.GetType().ToString()) - { - case "Volian.CSLA.Library.FolderInfo": - FolderInfo fld = (FolderInfo)o; - if (fld.ChildFolderCount > 0) - tn.Checked = ldr.LoadChildren(fld, tn); // load docversions. - break; - default: - break; - } - } - private void tv_AfterSelect(object sender, TreeViewEventArgs e) - { - if (UseVeTree) return; - - TreeNode tn = e.Node; - object o = tn.Tag; - tn.Expand(); - if (o.GetType() == typeof(DocVersion)) MySettings.ProcedureSetPath = ((DocVersion)o).Title; - } - private void btnLoadTreeDB_Click(object sender, EventArgs e) - { - // When loading folders, i.e. the tree from dBase (old 16-bit) - // always clear the data - ldr.ClearData(); - bool suc = ldr.LoadFolders(MySettings.VEPromsPath); - } - private string GetScript(string scriptName) - { - StreamReader sr = File.OpenText(Application.StartupPath + "\\" + scriptName); - string myScript = sr.ReadToEnd(); - sr.Close(); - return myScript; - } - private DateTime _ProcessTime; - public DateTime ProcessTime - { - get { return _ProcessTime; } - set - { - _ProcessTime = value; - // Set the Log File Name when the ProcessTime is set - ChangeLogFileName("LogFileAppender", DBName + " " + ProcessTime.ToString("yyyyMMdd HHmmss") + " DMErrorLog.txt"); - } - } - private void btnConvert_Click(object sender, System.EventArgs e) - { - // Set Connection String - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); - // Setup based upon RedPDF Setting - // if in debug mode, pdf output is red - VlnSettings.DebugMode = (MySettings.ExecutionMode == ExecutionMode.Debug) && MySettings.RedPDFs; - if (VlnSettings.DebugMode) // Debug Mode - { - MSWordToPDF.DebugStatus = 1; - Loader.OverrideColor = Color.Red; - } - else - { - MSWordToPDF.DebugStatus = 0; - Loader.OverrideColor = Color.Empty; - } - //if (!CheckLogPath()) return; - //#if (!DEBUG) - if (!VlnSettings.DebugMode) - { - DialogResult dlgrst = MessageBox.Show("The VE-PROMS data currently in SQL Server (Express) will be deleted.\r\n\nProceed with Data Conversion?", "WARNING", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); - if (dlgrst == DialogResult.No) return; - } - //#endif - try - { - //TextConvert.ResetSpecialCharacters(); - //MyFrmErrors.Clear(); - System.Diagnostics.Process[] wordProcesses = WordDoc.WordProcesses; - if (!FormatsOnly && wordProcesses.Length > 0) - { - AddError("{0} copies of MS Word are running", wordProcesses.Length); - if (Automatic || MessageBox.Show("MS Word is Running and must be stopped before proceeding.\n\nStop MS Word?", "MS Word is Running", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - WordDoc.TerminateProcesses(wordProcesses); - MyFrmErrors.Clear(); - } - else - return; - } - Database.LoggingInfo = false; - bool success = true; - if (FormatsOnly) - { - // ASSUMES No Formats/genmacs exist in database. - //MessageBox.Show(@"Format files are taken from c:\development\fmtall"); - //ldr._FmtAllPath = @"c:\development\fmtall"; - //ldr._GenmacAllPath = @"c:\development\genmacall"; - Format.UpdateFormats(MySettings.FormatFolder, MySettings.GenMacFolder); - //Format.UpdateFormats(@"c:\development\fmtall",@"c:\development\genmacall"); //ldr.LoadAllFormats(); - MessageBox.Show("Formats Loaded"); - return; - } - // Create Database - - // if purge data, purge it all & reload folders & security. - if (PurgeExistingData) - { - if(!RunScript("BuildVEPROMS.Sql", "Master")) return; - if(!RunScript("PROMS2010.SQL", DBName)) return; - Status = "Purging Data"; - ldr.ClearData(); - Status = "Loading Folders"; - success = ldr.LoadFolders(MySettings.VEPromsPath); - if (success) - { - Status = "Loading Security"; - success = ldr.LoadSecurity(MySettings.VESamFile, MySettings.VEPromsPath); - } - } - else - { - // check if images have been zipped & if not, zip them: - ROImageInfo.ZipImages(); - success = ldr.LoadFoldersIntoExisting(MySettings.VEPromsPath); - } - if (createEmptyPROMS) return; - if (success) - { - TimeSpan ts = new TimeSpan(); - DocVersionInfoList vl = DocVersionInfoList.Get(); - //DocVersion v = null; - MyInfo = "Computer Name: " + SystemInformation.ComputerName.ToUpper(); - foreach (DocVersionInfo vi in vl) - { - if (!MySettings.OnlyThisSet || (vi.Title.ToUpper() == ProcedureSetPath.ToUpper())) // is this the procedure set we want to convert? - { - using (DocVersion v = DocVersion.Get(vi.VersionID)) - { - //v = DocVersion.Get(vi.VersionID); - Status = "Load " + v.Title + " - " + v.Name; - lblCurSetFolder.Text = v.Title; - lblCurSetFolder.Visible = true; - lblProcessing.Visible = true; - MyInfo = "Data Set: " + v.Title; - ts += ldr.MigrateDocVersion(v, true); - } - } - } - string ConversionTime = string.Format("Conversion completion time: {0:D2}:{1:D2}:{2:D2}.{3}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds); - MyInfo = ConversionTime; - SaveLogFiles(); - if (!ProcessComplete) MessageBox.Show(string.Format("{0}\r\n\n({1} Total Seconds)", ConversionTime, ts.TotalSeconds)); - //MessageBox.Show(string.Format("Conversion completion time: {0:D2}:{1:D2}:{2:D2}.{3}\r\n\n({4} Total Seconds)", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds, ts.TotalSeconds)); - //MessageBox.Show(string.Format("{0} seconds", ts.TotalSeconds)); - //TextConvert.ListSpecialCharacters(); - } - } - catch (Exception ex) - { - AddError(ex, "===================== Fatal Error ==========================\r\n{0} - {1}", ex.GetType().Name, ex.Message); - SaveLogFiles(); - MessageBox.Show(ex.Message, "Fatal Error During Loading", MessageBoxButtons.OK, MessageBoxIcon.Error); - _MyLog.Fatal(ex.Message); - } - } - public bool RunScript(string scriptName, string dbName) - { - bool ok = false; - Status = String.Format("Running Script '{0}'", scriptName); - string script = GetScript(scriptName); - script = script.Replace("{DBName}", DBName); - script = script.Replace("{DBPath}", MySettings.DBPath); - SQLScriptRunner ssr = new SQLScriptRunner(script, MySettings.ConnectionString.Replace("{DBName}", dbName)); - ssr.InfoMessage += new SQLScriptRunnerEvent(ssr_InfoMessage); - try - { - AddInfo("Running Script '{0}'", scriptName); - ssr.Run(); - Status = String.Format("Script '{0}' Complete", scriptName); - ok = true; - } - catch (Exception ex) - { - AddInfo("====****===="); - AddError(ex, "While processing database {0}", dbName); - AddInfo("====****===="); - Status = String.Format("Script '{0}' Failed", scriptName); - } - return ok; - } - public bool RunScript(string script) - { - bool ok = false; - Status = String.Format("Running {0}", script); - script = script.Replace("{DBName}", DBName); - script = script.Replace("{DBPath}", MySettings.DBPath); - SQLScriptRunner ssr = new SQLScriptRunner(script, MySettings.ConnectionString.Replace("{DBName}", DBName)); - ssr.InfoMessage += new SQLScriptRunnerEvent(ssr_InfoMessage); - try - { - ssr.Run(); - Status = "Script Complete"; - ok = true; - } - catch (Exception ex) - { - AddInfo("====****===="); - AddError(ex, "While processing database {0}", DBName); - AddInfo("====****===="); - Status = String.Format("Script {0} Failed", script); - } - return ok; - } - private void Backup(string suffix) - { - SQLScriptRunner ssrbu = new SQLScriptRunner(DBName, MySettings.BackupFolder, - MySettings.ConnectionString.Replace("{DBName}", "Master"), ProcessTime, suffix); - ssrbu.InfoMessage += new SQLScriptRunnerEvent(ssr_InfoMessage); - ssrbu.Run(); - } - void ssr_InfoMessage(object sender, System.Data.SqlClient.SqlInfoMessageEventArgs args) - { - MyInfo = args.Message; - } - private bool _ShowSections = false; - public bool ShowSections - { - get { return _ShowSections; } - set { _ShowSections = value; } - } - public void UpdateLabels(int incPrc, int incSec, int incStp) - { - if (incPrc == 0 && incSec == 0 && incStp == 0)//Reset - { - pbProc.Value = 0; - pbSect.Value = 0; - pbStep.Value = 0; - } - else - { - try - { - pbProc.Value += incPrc; - pbSect.Value += incSec; - if (pbStep.Value < pbStep.Maximum) - pbStep.Value += incStp; - else - _MyLog.WarnFormat("trying to increment status bar beyond maximum"); - } - catch (Exception ex) - { - _MyLog.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - AddError(ex, "UpdateLabels"); - } - } - //Database.LoggingInfo = (pbProc.Value > 153 && pbSect.Value > 11 && pbStep.Value > 61); - lblProc.Text = string.Format("{0}/{1} Procedures", pbProc.Value, pbProc.Maximum); - if (ShowSections) - { - lblSection.Text = string.Format("{0}/{1} Sections", pbSect.Value, pbSect.Maximum); - lblStep.Text = string.Format("{0}/{1} Steps", pbStep.Value, pbStep.Maximum); - } - else - { - lblSection.Text = ""; - lblStep.Text = ""; - } - //pbProc.Value = iPrc; - //pbSect.Value = iSec; - //pbStep.Value = iStp; - TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - ProcessTime.Ticks); - lblTime.Text = string.Format("{0:D2}:{1:D2}:{2:D2} Elapsed", ts.Hours, ts.Minutes, ts.Seconds); - Application.DoEvents(); - } - private void btnLoadTreeCSLA_Click(object sender, EventArgs e) - { - _topnode = FolderTreeNode.BuildTreeList(); - tv.Nodes.Add(_topnode); - tv.Nodes[0].Expand(); - UseVeTree = false; - } - private void btnVesam_Click(object sender, EventArgs e) - { - // if purge data, purge it all & reload folders. - if (PurgeExistingData) - { - ldr.ClearData(); - ldr.LoadFolders(MySettings.VEPromsPath); - } - bool sec = ldr.LoadSecurity(MySettings.VESamFile, MySettings.VEPromsPath); - } - - private void btnVETree_CSLA_Click(object sender, EventArgs e) - { - tv.Nodes.Add(VETreeNode.GetFolder(1)); - UseVeTree = true; - } - - private void btnGroup_Click(object sender, EventArgs e) - { - GroupProp f = new GroupProp(); - f.ShowDialog(); - } - - private void btnCtTok_Click(object sender, EventArgs e) - { - frmCntTkn frm = new frmCntTkn(); - frm.ShowDialog(); - } - public void UpdateLabelsSetProc(int prc) - { - pbProc.Maximum = prc; - } - public void UpdateLabelsSetSect(int sec) - { - pbSect.Maximum = sec; - } - public void UpdateLabelsLibDocs(int incLib, int incUsages) - { - if (incLib == 0 && incUsages == 0)//Reset - { - pbProc.Value = 0; - pbSect.Value = 0; - } - else - { - pbProc.Value += incLib; - pbSect.Value += incUsages; - } - lblProc.Text = string.Format("{0}/{1} Lib Docs", pbProc.Value, pbProc.Maximum); - lblSection.Text = string.Format("{0}/{1} Usages", pbSect.Value, pbSect.Maximum); - lblStep.Text = ""; - TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - ProcessTime.Ticks); - lblTime.Text = string.Format("{0:D2}:{1:D2}:{2:D2} Elapsed", ts.Hours, ts.Minutes, ts.Seconds); - Application.DoEvents(); - } - public void UpdateLabelsImages(int incImages) - { - if (incImages == 0)//Reset - pbProc.Value = 0; - else - pbProc.Value += incImages; - lblProc.Text = string.Format("{0}/{1} Images", pbProc.Value, pbProc.Maximum); - lblSection.Text = ""; - lblStep.Text = ""; - TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - ProcessTime.Ticks); - lblTime.Text = string.Format("{0:D2}:{1:D2}:{2:D2} Elapsed", ts.Hours, ts.Minutes, ts.Seconds); - Application.DoEvents(); - } - public void UpdateLabelsFormats(int incFormats) - { - if (incFormats == 0)//Reset - pbProc.Value = 0; - else - pbProc.Value += incFormats; - lblProc.Text = string.Format("{0}/{1} Formats", pbProc.Value, pbProc.Maximum); - lblSection.Text = ""; - lblStep.Text = ""; - TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - ProcessTime.Ticks); - lblTime.Text = string.Format("{0:D2}:{1:D2}:{2:D2} Elapsed", ts.Hours, ts.Minutes, ts.Seconds); - Application.DoEvents(); - } - private DataLoaderSettings _MySettings; - internal DataLoaderSettings MySettings - { - get - { - if (_MySettings == null) - _MySettings = new DataLoaderSettings(); - return _MySettings; - } - set { _MySettings = value; } - } - private void LoadSettings() - { - Console.WriteLine("Start"); - if (Properties.Settings.Default["VePromsFilename"].ToString() != "") - MySettings.VEPromsPath = Properties.Settings.Default.VePromsFilename; - if (Properties.Settings.Default["VeSamFilename"].ToString() != "") - MySettings.VESamFile = Properties.Settings.Default.VeSamFilename; - if (Properties.Settings.Default["DbfPathname"].ToString() != "") - MySettings.ProcedureSetPath = Properties.Settings.Default.DbfPathname; - if (Properties.Settings.Default["ProcessOnlyInLocation"].ToString() != "") - MySettings.ProcessOnlyInLocation = Properties.Settings.Default.ProcessOnlyInLocation; - if (Properties.Settings.Default["BackupFileName"].ToString() != "") - MySettings.BackupFileName = Properties.Settings.Default.BackupFileName; - if (Properties.Settings.Default["BackupFolder"].ToString() != "") - MySettings.BackupFolder = Properties.Settings.Default.BackupFolder; - if (Properties.Settings.Default["LogFileLoc"].ToString() != "") - MySettings.LogFilePath = Properties.Settings.Default.LogFileLoc; - if (Properties.Settings.Default["ConnectionString"].ToString() != "") - MySettings.ConnectionString = Properties.Settings.Default.ConnectionString; - if (Properties.Settings.Default["DBName"].ToString() != "") - MySettings.DBName = Properties.Settings.Default.DBName; - if (Properties.Settings.Default["DBPath"].ToString() != "") - MySettings.DBPath = Properties.Settings.Default.DBPath; - MySettings.PurgeExistingData = (Properties.Settings.Default.PurgeData == CheckState.Checked); - //if (Properties.Settings.Default["PDFFolder"].ToString() != "") - // MySettings.PDFFolder = Properties.Settings.Default.PDFFolder; - MySettings.OnlyThisSet = (Properties.Settings.Default.OnlyThisSet == CheckState.Checked); - MySettings.CheckRTF = (Properties.Settings.Default.CheckRTF == CheckState.Checked); - MySettings.Skip = Properties.Settings.Default.Skip; - MySettings.HowMany = Properties.Settings.Default.HowMany; - MySettings.ConvertTo = (AccPageConversion)Properties.Settings.Default.ConvertTo; - MySettings.ExecutionMode = (ExecutionMode)Properties.Settings.Default.ExecutionMode; - MySettings.Phase1Suffix = Properties.Settings.Default.Phase1; - MySettings.Phase2Suffix = Properties.Settings.Default.Phase2; - MySettings.Phase3Suffix = Properties.Settings.Default.Phase3; - MySettings.FormatFolder = Properties.Settings.Default.FormatFolder; - MySettings.GenMacFolder = Properties.Settings.Default.GenMacFolder; - MySettings.LoadApproved = Properties.Settings.Default.LoadApproved; - MySettings.Phase4Suffix = Properties.Settings.Default.Phase4; - MySettings.RedPDFs = (Properties.Settings.Default.RedPDFs == CheckState.Checked); - MySettings.AnnotateWhenConvertingToText = Properties.Settings.Default.AnnotateWhenConvertingToText; - MySettings.AnnotateWhenShowingDifferentRO = Properties.Settings.Default.AnnotateWhenShowingDifferentRO; - MySettings.AnnotateWhenShowingMissingRO = Properties.Settings.Default.AnnotateWhenShowingMissingRO; - MySettings.SelectedROFst = Properties.Settings.Default.SelectedROFst; - MySettings.WhatROsToConvert = (ROUpdateMode)Properties.Settings.Default.WhatROsToConvert; - string validity = MySettings.ValidityCheck; - if (validity != "") - { - MessageBox.Show(validity, "Settings Incorrect", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - OpenSettings(); - } - } - private void OpenSettings() - { - DataLoaderSettings tmpDLS = (DataLoaderSettings)MySettings.Clone(); - frmPG myPG = new frmPG("Data Loader Settings", tmpDLS); - if (myPG.ShowDialog() == DialogResult.OK) - { - MySettings = tmpDLS; - SaveSettings(); - } - string validity = MySettings.ValidityCheck; - if (validity != "") - { - processToolStripMenuItem.Enabled = false; - oldToolStripMenuItem.Enabled = false; - } - else - { - processToolStripMenuItem.Enabled = true; - oldToolStripMenuItem.Enabled = true; - } - } - private void SaveSettings() - { - Properties.Settings.Default.VePromsFilename = MySettings.VEPromsPath; - Properties.Settings.Default.VeSamFilename = MySettings.VESamFile; - Properties.Settings.Default.DbfPathname = MySettings.ProcedureSetPath; - Properties.Settings.Default.ProcessOnlyInLocation = MySettings.ProcessOnlyInLocation; - Properties.Settings.Default.BackupFileName = MySettings.BackupFileName; - Properties.Settings.Default.BackupFolder = MySettings.BackupFolder; - Properties.Settings.Default.LogFileLoc = MySettings.LogFilePath; - Properties.Settings.Default.ConnectionString = MySettings.ConnectionString; - Properties.Settings.Default.DBName = MySettings.DBName; - Properties.Settings.Default.DBPath = MySettings.DBPath; - Properties.Settings.Default.PurgeData = MySettings.PurgeExistingData ? CheckState.Checked : CheckState.Unchecked; - //Properties.Settings.Default.PDFFolder = MySettings.PDFFolder; - Properties.Settings.Default.OnlyThisSet = MySettings.OnlyThisSet ? CheckState.Checked : CheckState.Unchecked; - Properties.Settings.Default.CheckRTF = MySettings.CheckRTF ? CheckState.Checked : CheckState.Unchecked; - Properties.Settings.Default.Skip = MySettings.Skip; - Properties.Settings.Default.HowMany = MySettings.HowMany; - Properties.Settings.Default.ConvertTo = (int)MySettings.ConvertTo; - Properties.Settings.Default.ExecutionMode = (int)MySettings.ExecutionMode; - Properties.Settings.Default.Phase1 = MySettings.Phase1Suffix; - Properties.Settings.Default.Phase2 = MySettings.Phase2Suffix; - Properties.Settings.Default.Phase3 = MySettings.Phase3Suffix; - Properties.Settings.Default.FormatFolder = MySettings.FormatFolder; - Properties.Settings.Default.GenMacFolder = MySettings.GenMacFolder; - Properties.Settings.Default.LoadApproved = MySettings.LoadApproved; - Properties.Settings.Default.Phase4 = MySettings.Phase4Suffix; - Properties.Settings.Default.RedPDFs = MySettings.RedPDFs ? CheckState.Checked : CheckState.Unchecked; - Properties.Settings.Default.AnnotateWhenConvertingToText = MySettings.AnnotateWhenConvertingToText; - Properties.Settings.Default.AnnotateWhenShowingDifferentRO = MySettings.AnnotateWhenShowingDifferentRO; - Properties.Settings.Default.AnnotateWhenShowingMissingRO = MySettings.AnnotateWhenShowingMissingRO; - Properties.Settings.Default.SelectedROFst = MySettings.SelectedROFst; - Properties.Settings.Default.WhatROsToConvert = (int)MySettings.WhatROsToConvert; - Properties.Settings.Default.Save(); - } - private void frmLoader_Load(object sender, EventArgs e) - { - LoadSettings(); - LoadCommandLineSettings(); - _Loading = false; - MSWordToPDF.CloseWordWhenDone = false; - Format.FormatLoaded += new FormatEvent(Format_FormatLoaded); - StepRTB.DoSpellCheck = false; - } - private void LoadCommandLineSettings() - { - string[] parameters = System.Environment.CommandLine.Split(" ".ToCharArray()); - if (ParameterCheck(parameters, "/Auto")!=null) - { - Automatic = true; - _DBName = ParameterCheck(parameters, "/DBName="); - _ProcedureSetPath = ParameterCheck(parameters, "/ProcedureSetPath="); - _SkipProcedures = IntParameterCheck(parameters, "/Skip="); - _HowManyProcedures = IntParameterCheck(parameters, "/HowMany="); - _PurgeExistingData = BooleanParameterCheck(parameters, "/PurgeData="); - vlnServer.XMLControlPath = Application.StartupPath + @"\vlnControl.xml"; - tAutomatic.Interval = 1000;//Wait 1000 Milliseconds - tAutomatic.Enabled = true; - tAutomatic.Tick += new EventHandler(tAutomatic_Tick); - } - } - Timer tAutomatic = new Timer(); - void tAutomatic_Tick(object sender, EventArgs e) - { - tAutomatic.Enabled = false; - completeToolStripMenuItem_Click(this, new EventArgs()); - this.Close(); - } - private int? IntParameterCheck(string[] parameters, string lookfor) - { - string pcheck = ParameterCheck(parameters, lookfor); - if (pcheck != null) return int.Parse(pcheck); - return null; - } - private bool? BooleanParameterCheck(string[] parameters, string lookfor) - { - string pcheck = ParameterCheck(parameters, lookfor); - if (pcheck != null) return bool.Parse(pcheck); - return null; - } - private string ParameterCheck(string[] parameters, string lookfor) - { - foreach (string parameter in parameters) - { - if (parameter.ToUpper().StartsWith(lookfor.ToUpper())) - return parameter.Substring(lookfor.Length); - } - return null; - } - void Format_FormatLoaded(object sender, FormatEventArgs args) - { - if (args.Status.StartsWith("Loading Format")) - UpdateLabelsFormats(1); - else if (!args.Status.StartsWith("Format") && !args.Status.StartsWith("Loading ")) - { - pbProcMaximum = int.Parse(args.Status.Split(" ".ToCharArray())[0]); - UpdateLabelsFormats(0); - } - MyInfo = args.Status; - } - private void btnFixTransitions_Click(object sender, EventArgs e) - { - List cacheContentInfo = ContentInfo.CacheList; - List cacheItemInfo = ItemInfo.CacheList; - //List cacheEntryInfo = EntryInfo.CacheList; - //List cachePdfInfo = PdfInfo.CacheList; - //List cacheDocVersionInfo = DocVersionInfo.CacheList; - //if (!CheckLogPath()) return; - using (StepRTB rtb = new StepRTB()) - { - TransitionFixer myFixer = new TransitionFixer(rtb, MySettings.LogFilePath, this); - myFixer.StatusChanged += new TransitionFixerEvent(myFixer_StatusChanged); - TimeSpan howlong = myFixer.Process(MySettings.CheckRTF); - string TransFixTime = string.Format("Fix Transitions completion time: {0:D2}:{1:D2}:{2:D2}.{3}", howlong.Hours, howlong.Minutes, howlong.Seconds, howlong.Milliseconds); - MyInfo = TransFixTime; - //if (!ProcessComplete) MessageBox.Show(string.Format("{0}\r\n\n({1} Total Seconds)", TransFixTime, howlong.TotalSeconds)); - //MessageBox.Show(string.Format("Fix Transitions completion time: {0:D2}:{1:D2}:{2:D2}.{3}\r\n\n({4} Total Seconds)", howlong.Hours, howlong.Minutes, howlong.Seconds, howlong.Milliseconds, howlong.TotalSeconds)); - CreateBackupRestoreBatchFiles(); - ItemInfo.RestoreCacheList(cacheItemInfo); - ContentInfo.RestoreCacheList(cacheContentInfo); - //EntryInfo.RestoreCacheList(cacheEntryInfo); - //PdfInfo.RestoreCacheList(cachePdfInfo); - //DocVersionInfo.RestoreCacheList(cacheDocVersionInfo); - MyInfo = CSLACache.UsageAll; - } - } - - void myFixer_StatusChanged(object sender, TransitionFixerEventArgs args) - { - Status = args.MyStatus; - } - private bool _DidLogPathCheck = false; - //private string _LogFilePath = ""; - - //private bool CheckLogPath() - //{ - // bool rtn = false; - // if (_DidLogPathCheck) return true; - // try - // { - // _LogFilePath = txbLogFileLoc.Text; - // if (!Directory.Exists(_LogFilePath)) - // Directory.CreateDirectory(_LogFilePath); - // if (_LogFilePath.EndsWith(@"\")) _LogFilePath = _LogFilePath.Substring(0, _LogFilePath.Length - 1); - // rtn = true; - // _DidLogPathCheck = true; - // } - // catch (Exception ex) - // { - // MessageBox.Show(ex.Message, "Invalid Path for Log Files", MessageBoxButtons.OK, MessageBoxIcon.Error); - // } - // return rtn; - //} - - private void SaveLogFiles() - { - //if (_LogFilePath == "") return; - // Save the Glitches log - if (TextConvert.MyGlitches.Glitches.Count > 0) - TextConvert.MyGlitches.Save(MySettings.LogFilePath + @"\ConversionGlitches.xml"); - // Save the Error Log - if (_MyFrmErrors.ErrorCount > 0) - _MyFrmErrors.Save(MySettings.LogFilePath + @"\ConversionErrors.txt"); - } - - private bool _EnteredFileLoc = false; - private void txbLogFileLoc_TextChanged(object sender, EventArgs e) - { - _DidLogPathCheck = false; - } - - private void CreateBackupRestoreBatchFiles() - { - string pause = "pause"; - string bckupFileName = MySettings.BackupFileName; - if (!bckupFileName.EndsWith(".bak")) bckupFileName += ".bak"; - string backupPath = MySettings.LogFilePath + @"\" + bckupFileName + "'\""; - string bckupcmd = string.Format("sqlcmd -E -S.\\sqlexpress -Q \"backup database [{0}] to disk = '{1}", DBName, backupPath); - string rstorecmd = string.Format("sqlcmd -E -S.\\sqlexpress -Q \"restore database [{0}] from disk = '{1}", DBName, backupPath); - StreamWriter fsbackup = new StreamWriter(MySettings.LogFilePath + @"\Backup" + bckupFileName.Substring(0, bckupFileName.Length - 4) + ".bat"); - fsbackup.WriteLine(bckupcmd); - fsbackup.WriteLine(pause); - fsbackup.Close(); - StreamWriter fsrestore = new StreamWriter(MySettings.LogFilePath + @"\Restore" + bckupFileName.Substring(0, bckupFileName.Length - 4) + ".bat"); - fsrestore.WriteLine(rstorecmd); - fsrestore.WriteLine(pause); - fsrestore.Close(); - } - // Menu Items - #region File Menu Items - private void exitToolStripMenuItem_Click(object sender, EventArgs e) - { - this.Close(); - } - #endregion - #region Process Menu Items - private bool _ProcessFailed = false; - public bool ProcessFailed - { - get { return _ProcessFailed; } - set { _ProcessFailed = value; } - } - private bool _ProcessComplete = false; - public bool ProcessComplete - { - get { return _ProcessComplete; } - set { _ProcessComplete = value; } - } - static bool ChangeLogFileName(string AppenderName, string NewFilename) - { - log4net.Repository.ILoggerRepository RootRep; - RootRep = log4net.LogManager.GetRepository(); - foreach (log4net.Appender.IAppender iApp in RootRep.GetAppenders()) - { - if (iApp.Name.CompareTo(AppenderName) == 0 - && iApp is log4net.Appender.FileAppender) - { - log4net.Appender.FileAppender fApp = (log4net.Appender.FileAppender)iApp; - string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); - fApp.File = folderPath + @"\VEPROMS\" + NewFilename; - fApp.ActivateOptions(); - return true; // Appender found and name changed to NewFilename - } - } - return false; - } - private void completeToolStripMenuItem_Click(object sender, EventArgs e) - { - ChildrenProcessed = 0; - ProcessFailed = false; - ProcessComplete = true; - ProcessTime = DateTime.Now; - MessageBuilder mb = new MessageBuilder("Performing Complete Process\r\n"); - // Phase 1 - Convert dBase to SQL - btnConvert_Click(this, new System.EventArgs()); - if (ProcessFailed) return; - if (ChildrenProcessed == 0 && !createEmptyPROMS) - { - MessageBox.Show("No children found to convert. Check vlnControl.xml file. Process complete"); - return; - } - mb.Append("dBase Conversion Complete"); - Status = "Backing up Phase 1 Data"; - Backup("_" + MySettings.Phase1Suffix); - mb.Append("Phase 1 Backup Complete"); - // Phase 2 - Fix Transitions - if (!createEmptyPROMS) - { - btnFixTransitions_Click(this, new System.EventArgs()); - mb.Append("Fix Transtions Complete"); - } - Status = "Backing up Phase 2 Data"; - Backup("_" + MySettings.Phase2Suffix); - mb.Append("Phase 2 Backup Complete"); - // only do the following two steps if we are NOT appending to an existing set - if (PurgeExistingData) - { - // Phase 3 - Convert to Change Manager Version - if (!ConvertToChangeManager()) return; - mb.Append("Conversion to Change Manager Complete"); - Status = "Backing up Phase 3 Data"; - Backup("_" + MySettings.Phase3Suffix); - mb.Append("Phase 3 Backup Complete"); - //Phase 4 - Convert to Approval Version - if (!ConvertToApproval()) return; - mb.Append("Conversion to Approval Complete"); - } - if(!FixProceduresAndFunctions()) return; - mb.Append("FixProceduresAndFunctions Complete"); - if (MySettings.LoadApproved && !createEmptyPROMS) - { - Status = "Backing up Phase 4 Data"; - Backup("_" + MySettings.Phase4Suffix); - mb.Append("Phase 4 Backup Complete"); - //Phase 5 - Load Approved Data - LoadApprovedData(); - mb.Append("Conversion of Approved Data Complete"); - } - Status = "Backing up Data"; - Backup(""); - mb.Append("Backup Complete"); - mb.LastTime = ProcessTime; // Reset time to get total time. - mb.Append("Processing Complete"); - Status = "Processing Complete"; - ProcessComplete = false; - //Clipboard.Clear(); - //Clipboard.SetText(mb.ToString()); - AddInfo(mb.ToString()); - if (!Automatic) - MessageBox.Show(mb.ToString(), "Processing Complete", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private bool ConvertToChangeManager() - { - return RunScript("PROMStoCM.sql", DBName); - } - private bool ConvertToApproval() - { - return RunScript("PROMStoAPPR.sql", DBName); - } - private void formatOnlyToolStripMenuItem_Click(object sender, EventArgs e) - { - ProcessTime = DateTime.Now; - FormatsOnly = true; - btnConvert_Click(this, new System.EventArgs()); - if (ProcessFailed) return; - MyInfo = "Format Load Complete"; - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Format Change Data"; - Backup("_" + "FormatChange"); - MyInfo = "Format Change Backup Complete"; - } - //Status = "Format Change Complete"; - //MessageBox.Show("Format Change Complete", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private void convertDBToolStripMenuItem_Click(object sender, EventArgs e) - { - ProcessTime = DateTime.Now; - RunScript("vesp_TurnChangeManagerOFF"); - btnConvert_Click(this, new System.EventArgs()); - RunScript("vesp_TurnChangeManagerON"); - if (ProcessFailed) return; - MyInfo = "dBase Conversion Complete"; - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Phase 1 Data"; - Backup("_" + MySettings.Phase1Suffix); - MyInfo = "Phase 1 Backup Complete"; - } - //Status = "dBase Conversion Complete"; - //MessageBox.Show("dBase Conversion Complete", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private void fixTransitionsToolStripMenuItem_Click(object sender, EventArgs e) - { - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); - ProcessTime = DateTime.Now; - RunScript("vesp_TurnChangeManagerOFF"); - btnFixTransitions_Click(this, new System.EventArgs()); - RunScript("vesp_TurnChangeManagerON"); - MyInfo = "Fix Transtions Complete"; - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Phase 2 Data"; - Backup("_" + MySettings.Phase2Suffix); - MyInfo = "Phase 2 Backup Complete"; - } - Status = "Fix Transtions Complete"; - MessageBox.Show("Fix Transtions Complete", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private void convertToChangeManagerToolStripMenuItem_Click(object sender, EventArgs e) - { - ProcessTime = DateTime.Now; - if(!ConvertToChangeManager()) return; - MyInfo = "Conversion to Change Manager Complete"; - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Phase 3 Data"; - Backup("_" + MySettings.Phase3Suffix); - MyInfo = "Phase 3 Backup Complete"; - } - //Status = "Conversion to Change Manager Complete"; - //MessageBox.Show("Conversion to Change Manager Complete", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private void convertToApprovalToolStripMenuItem_Click(object sender, EventArgs e) - { - ProcessTime = DateTime.Now; - if(!ConvertToApproval()) return; - MyInfo = "Conversion to Approval Complete"; - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Phase 4 Data"; - Backup("_" + MySettings.Phase4Suffix); - MyInfo = "Phase 4 Backup Complete"; - } - //Status = "Conversion to Approval Complete"; - //MessageBox.Show("Conversion to Approval Complete", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private void load16BitApprovalToolStripMenuItem_Click(object sender, EventArgs e) - { - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); - ProcessTime = DateTime.Now; - if (LoadApprovedData()) - { - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Data"; - Backup(""); - MyInfo = "Backup Complete"; - } - Status = "Processing Complete"; - } - else - Status = "Loading 16 Bit Approval Data Failed"; - //MessageBox.Show("Loading 16 Bit Approval Data Complete", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private bool LoadApprovedData() - { - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); - Status = "Converting 16-Bit Approved Data"; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); - bool ok = ldr.BuildApprovedRevision(); - Status = "Conversion " + (ok ? "Succeeded" : "Failed"); - return ok; - } - private void fixesToolStripMenuItem_Click(object sender, EventArgs e) - { - if (!FixProceduresAndFunctions()) return; - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Data"; - Backup("_Fixed"); - MyInfo = "Backup Complete"; - } - //Status = "Processing Complete"; - //MessageBox.Show("Fixed Stored Procedures", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private bool FixProceduresAndFunctions() - { - return RunScript("PROMSFixes.sql", DBName); - } - #endregion - #region Settings Menu Items - private void settingsToolStripMenuItem_Click(object sender, EventArgs e) - { - OpenSettings(); - } - #endregion - #region Old Menu Items - private void convertSecurityToolStripMenuItem_Click(object sender, EventArgs e) - { - btnVesam_Click(this, new EventArgs()); - } - private void convertTopFoldersToolStripMenuItem_Click(object sender, EventArgs e) - { - btnLoadTreeDB_Click(this, new EventArgs()); - } - private void loadTreeFromCSLAToolStripMenuItem_Click(object sender, EventArgs e) - { - btnLoadTreeCSLA_Click(this, new EventArgs()); - } - private void loadVETreeFromCSLAToolStripMenuItem_Click(object sender, EventArgs e) - { - btnVETree_CSLA_Click(this, new EventArgs()); - } - private void groupSecurityToolStripMenuItem_Click(object sender, EventArgs e) - { - btnGroup_Click(this, new EventArgs()); - } - private void countTokensToolStripMenuItem_Click(object sender, EventArgs e) - { - btnCtTok_Click(this, new EventArgs()); - } - private void convertDbfSelectedInTreeToolStripMenuItem_Click(object sender, EventArgs e) - { - btnConvertSelected_Click(this, new EventArgs()); - } - #endregion - - private void approvalDatabasesToolStripMenuItem_Click(object sender, EventArgs e) - { - this.Cursor = Cursors.WaitCursor; - //MySettings.ConnectionString - //"{DBName}", dbName - string tmp = MySettings.ConnectionString.Replace("{DBName}", "master"); - SqlConnection cn = new SqlConnection(tmp); - cn.Open(); - SqlDataAdapter da = new SqlDataAdapter("select name, case when object_id(name + '..Items') is null then 'Not PROMS' when object_id(name + '..Revisions') is not null then 'Approval' when object_id(name + '..ContentAudits') is not null then 'Change Manager' else 'Original' end functionality from sysdatabases where name not in ('master','model','msdb','tempdb') order by name", cn); - DataSet ds = new DataSet(); - da.Fill(ds); - cn.Close(); - List cms = new List(); - StringBuilder sb = new StringBuilder(); - sb.Append("The following databases will be fixed...\r\n"); - foreach (DataRow dr in ds.Tables[0].Rows) - { - if (dr["functionality"].ToString() == "Approval") - { - cms.Add(dr["name"].ToString()); - sb.Append("\r\n " + dr["name"].ToString()); - } - } - this.Cursor = Cursors.Default; - if (MessageBox.Show(sb.ToString(), "Data Loader Fixes", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) - { - int good = 0; - int bad = 0; - foreach (string s in cms) - { - AddInfo("\r\nFixing database {0}\r\n", s); - if (RunScript("PROMSFixes.sql", s)) good++; - else bad++; - } - AddInfo("\r\nFixing databases complete. {0} Fixed, {1} Failures", good, bad); - Status = String.Format("Fixing databases complete. {0} Fixed, {1} Failures", good, bad); - } - } - - private void updateFormatsToolStripMenuItem_Click(object sender, EventArgs e) - { - MessageBox.Show("Can't get this to work yet"); - //this.Cursor = Cursors.WaitCursor; - ////MySettings.ConnectionString - ////"{DBName}", dbName - //string tmp = MySettings.ConnectionString.Replace("{DBName}", "master"); - //SqlConnection cn = new SqlConnection(tmp); - //cn.Open(); - //SqlDataAdapter da = new SqlDataAdapter("select name, case when object_id(name + '..Items') is null then 'Not PROMS' when object_id(name + '..Revisions') is not null then 'Approval' when object_id(name + '..ContentAudits') is not null then 'Change Manager' else 'Original' end functionality from sysdatabases where name not in ('master','model','msdb','tempdb') order by name", cn); - //DataSet ds = new DataSet(); - //da.Fill(ds); - //cn.Close(); - //List cms = new List(); - //StringBuilder sb = new StringBuilder(); - //sb.Append("Formats will be updated in the following databases ...\r\n"); - //foreach (DataRow dr in ds.Tables[0].Rows) - //{ - // if (dr["functionality"].ToString() == "Approval") // get only the databases with Approval fnctionality - // { - // cms.Add(dr["name"].ToString()); - // sb.Append("\r\n " + dr["name"].ToString()); - // } - //} - //this.Cursor = Cursors.Default; - //if (MessageBox.Show(sb.ToString(), "Format Updates", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) - //{ - // int good = 0; - // int bad = 0; - // string saveDbName = DBName; - // foreach (string s in cms) - // { - // try - // { - // AddInfo("\r\nUpdating Formats in database {0}\r\n", s); - // DBName = s; - // Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", s); - // Format.UpdateFormats(MySettings.FormatFolder, MySettings.GenMacFolder); - // Database.VEPROMS_SqlConnection.Close(); - // //RunScript("PROMSFixes.sql", s); - // good++; - // } - // catch (Exception ex) - // { - // AddInfo("====****===="); - // AddError(ex, "While Updating Formats for database {0}", s); - // AddInfo("====****===="); - // bad++; - // } - // } - // DBName = saveDbName; - // AddInfo("\r\nUpdating Formats in databases complete. {0} Fixed, {1} Failures", good, bad); - // Status = String.Format("Updating Formats in databases complete. {0} Fixed, {1} Failures", good, bad); - //} - - } - private void fixROValuesToolStripMenuItem_Click(object sender, EventArgs e) - { - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); - ROFixer myRoFixer = new ROFixer(MySettings.LogFilePath,this); - myRoFixer.StatusChanged += new ROFixerEvent(myRoFixer_StatusChanged); - TimeSpan howlong = myRoFixer.Process(); - string RoFixTime = string.Format("Fix RO Values completion time: {0:D2}:{1:D2}:{2:D2}.{3}", howlong.Hours, howlong.Minutes, howlong.Seconds, howlong.Milliseconds); - MyInfo = RoFixTime; - } - - void myRoFixer_StatusChanged(object sender, ROFixerEventArgs args) - { - Status = args.MyStatus; - } - - public bool createEmptyPROMS = false; - private void createEmptyPROMSDatabaseToolStripMenuItem_Click(object sender, EventArgs e) - { - createEmptyPROMS = true; - completeToolStripMenuItem_Click(sender, e); - createEmptyPROMS = false; - } - - private void loadTreeToolStripMenuItem_Click(object sender, EventArgs e) - { - tv.CheckBoxes = false; - tv.Nodes.Clear(); - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); - - FolderInfo fi = FolderInfo.GetTop(); - TreeNode tn = tv.Nodes.Add(fi.Name); - tn.Tag = fi; - if (fi.ChildFolderCount > 0) - LoadChildFolders(fi, tn); - //if (myTV.SelectedNode != null) - // myTV.SelectedNode.Expand(); - - } - private void LoadChildFolders(FolderInfo fi, TreeNode tn) - { - foreach (FolderInfo fic in fi.ChildFolders) - { - TreeNode tnc = tn.Nodes.Add(fic.Name); - tnc.Tag = fic; - if (fic.ChildFolderCount > 0) - LoadChildFolders(fic, tnc); - if (fic.FolderDocVersionCount > 0) - LoadDocVersions(fic, tnc); - } - } - private void LoadDocVersions(FolderInfo fic, TreeNode tnc) - { - foreach (DocVersionInfo dvi in fic.FolderDocVersions) - { - TreeNode tn = tnc.Nodes.Add(dvi.Name); - tn.Tag = dvi; - if (dvi.Procedures.Count > 0) - LoadProcedures(dvi, tn); - } - } - private void LoadProcedures(DocVersionInfo dvi, TreeNode tnc) - { - foreach (ProcedureInfo pi in dvi.Procedures) - { - TreeNode tn = tnc.Nodes.Add(pi.DisplayNumber); - tn.Tag = pi; - } - } - - private void fixROsToolStripMenuItem1_Click(object sender, EventArgs e) - { - TreeNode tn = tv.SelectedNode; - if (tn.Tag is ProcedureInfo) - { - ProcedureInfo pi = tn.Tag as ProcedureInfo; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); - ROFixer myRoFixer = new ROFixer(MySettings.LogFilePath, this); - myRoFixer.StatusChanged += new ROFixerEvent(myRoFixer_StatusChanged); - TimeSpan howlong = myRoFixer.Process(pi); - string RoFixTime = string.Format("Fix RO Values completion time: {0:D2}:{1:D2}:{2:D2}.{3}", howlong.Hours, howlong.Minutes, howlong.Seconds, howlong.Milliseconds); - MyInfo = RoFixTime; - } - else if (tn.Tag is DocVersionInfo) - { - DocVersionInfo dvi = tn.Tag as DocVersionInfo; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); - ROFixer myRoFixer = new ROFixer(MySettings.LogFilePath, this); - myRoFixer.StatusChanged += new ROFixerEvent(myRoFixer_StatusChanged); - TimeSpan howlong = myRoFixer.Process(dvi); - string RoFixTime = string.Format("Fix RO Values completion time: {0:D2}:{1:D2}:{2:D2}.{3}", howlong.Hours, howlong.Minutes, howlong.Seconds, howlong.Milliseconds); - MyInfo = RoFixTime; - } - //else if (tn.Tag is FolderInfo) - //{ - // FolderInfo fi = tn.Tag as FolderInfo; - //} - } - - private void exportDataToolStripMenuItem_Click(object sender, EventArgs e) - { - TreeNode tn = tv.SelectedNode; - if (tn.Tag is FolderInfo) - { - FolderInfo fi = tn.Tag as FolderInfo; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); - dlgExportImport dlg = new dlgExportImport("export", fi); - dlg.ShowDialog(this); - } - } - - private void importDataToolStripMenuItem_Click(object sender, EventArgs e) - { - TreeNode tn = tv.SelectedNode; - if (tn.Tag is FolderInfo) - { - FolderInfo fi = tn.Tag as FolderInfo; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); - dlgExportImport dlg = new dlgExportImport("import", fi); - dlg.ShowDialog(this); - } - loadTreeToolStripMenuItem_Click(sender, e); - } - - private void exportProcedureOnlyToolStripMenuItem_Click(object sender, EventArgs e) - { - TreeNode tn = tv.SelectedNode; - if (tn.Tag is ProcedureInfo) - { - ProcedureInfo pi = tn.Tag as ProcedureInfo; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", DBName); - dlgExportImport dlg = new dlgExportImport("export", pi); - dlg.ShowDialog(this); - } - } - - private void importProcedureOnlyToolStripMenuItem_Click(object sender, EventArgs e) - { - - } - - - } - public class MessageBuilder - { - private StringBuilder _MyStringBulider = new StringBuilder(); - private DateTime _LastTime = DateTime.Now; - public DateTime LastTime - { - get { return _LastTime; } - set { _LastTime = value; } - } - public MessageBuilder(string heading) - { - _MyStringBulider.Append(heading); - } - public void Append(string format, params object[] args) - { - string msg = string.Format(format, args); - DateTime now = DateTime.Now; - TimeSpan ts = TimeSpan.FromTicks(now.Ticks - _LastTime.Ticks); - string timestamp = string.Format("{0:D2}:{1:D2}:{2:D2}.{3:D3}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds); - _LastTime = now; - GC.Collect(); - long memUse = GC.GetTotalMemory(true); - _MyStringBulider.Append("\r\n" + timestamp + "\t" + memUse.ToString() + "\t" + msg); - } - public override string ToString() - { - return _MyStringBulider.ToString(); - } - } -} diff --git a/PROMS/DataLoader/frmLoader.cs.bak b/PROMS/DataLoader/frmLoader.cs.bak deleted file mode 100644 index 23292af3..00000000 --- a/PROMS/DataLoader/frmLoader.cs.bak +++ /dev/null @@ -1,1190 +0,0 @@ -// ======================================================================== -// Copyright 2006 - Volian Enterprises, Inc. All rights reserved. -// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE -// ------------------------------------------------------------------------ -// $Workfile: $ $Revision: $ -// $Author: $ $Date: $ -// -// $History: $ -// ======================================================================== -using System; -using System.Drawing; -using System.Collections; -using System.Configuration; -using System.ComponentModel; -using System.Windows.Forms; -using System.Data; -using System.Data.OleDb; -using System.Collections.Specialized; -using System.Collections.Generic; -using System.Xml; -using System.IO; -using System.Text; -using Volian.MSWord; -using vlnObjectLibrary; -using vlnServerLibrary; -using VEPROMS.CSLA.Library; -using Config; -using Volian.Controls.Library; -using Volian.Base.Library; -using System.Data.SqlClient; - - -[assembly: log4net.Config.XmlConfigurator(Watch = true)] - -namespace DataLoader -{ - public partial class frmLoader : Form - { - #region Log4Net - public static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - #endregion - #region settings - private bool _FormatsOnly = false; - public bool FormatsOnly - { - get { return _FormatsOnly; } - set { _FormatsOnly = value; } - } - #endregion - private bool _Loading = true; - - private FolderTreeNode _topnode; - private bool UseVeTree = false; - private Loader ldr; - public TreeView TV { get { return tv; } } - public int pbProcMaximum { get { return pbProc.Maximum; } set { pbProc.Maximum = value; } } - public int pbSectMaximum { get { return pbSect.Maximum; } set { pbSect.Maximum = value; } } - public int pbSectValue { get { return pbSect.Value; } set { pbSect.Value = value; } } - public int pbStepMaximum { get { return pbStep.Maximum; } set { pbStep.Maximum = value; } } - public int pbStepValue { get { return pbStep.Value; } set { pbStep.Value = value; } } - public int pbProcValue { get { return pbProc.Value; } set { pbProc.Value = value; } } - public int SkipProcedures - { - get { return MySettings.Skip; } - } - public string Status - { - get { return toolStripStatusLabel1.Text; } - set - { - toolStripStatusLabel1.Text = value; - Application.DoEvents(); - } - } - private int _ChildrenProcessed; - public int ChildrenProcessed - { - get { return _ChildrenProcessed; } - set { _ChildrenProcessed = value; } - } - private frmErrors _MyFrmErrors = null; - public frmErrors MyFrmErrors - { - get - { - if (_MyFrmErrors == null) - { - _MyFrmErrors = new frmErrors(this); - _MyFrmErrors.FormClosing += new FormClosingEventHandler(_MyFrmErrors_FormClosing); - } - return _MyFrmErrors; - } - } - void _MyFrmErrors_FormClosing(object sender, FormClosingEventArgs e) - { - _MyFrmErrors = null; - } - public string MyError - { - get { return tsslError.Text; } - set - { - MyFrmErrors.Add(value, MessageType.Error); - _MyLog.ErrorFormat(value); - tsslError.Text = string.Format("{0} Errors", MyFrmErrors.ErrorCount); - } - } - public string MyWarning - { - get { return tsslError.Text; } - set - { - MyFrmErrors.Add(value, MessageType.Warning); - _MyLog.WarnFormat(value); - //tsslError.Text = string.Format("{0} Errors", MyFrmErrors.ErrorCount); - } - } - public string MyInfo - { - get { return tsslError.Text; } - set - { - MyFrmErrors.Add(value, MessageType.Information); - _MyLog.Info(value); - //tsslError.Text = string.Format("{0} Errors", MyFrmErrors.ErrorCount); - } - } - public void AddError(string format, params object[] objs) - { - MyError = string.Format(format, objs); - } - public void AddWarn(string format, params object[] objs) - { - MyWarning = string.Format(format, objs); - } - public void AddInfo(string format, params object[] objs) - { - MyInfo = string.Format(format, objs); - } - public void AddError(Exception ex, string format, params object[] objs) - { - StringBuilder sb = new StringBuilder(string.Format(format, objs)); - int indent = 0; - while (ex != null) - { - sb.Append("\r\n" + "".PadRight((++indent) * 2, ' ') + string.Format("{0} - {1}", ex.GetType().Name, ex.Message)); - sb.Append(ex.StackTrace); - ex = ex.InnerException; - } - MyError = sb.ToString(); - } - - public frmLoader() - { - ldr = new Loader(_MyLog, this); - InitializeComponent(); - MSWordToPDF.FormForPlotGraphics = this; - lblTime.Tag = DateTime.Now; - } - private void btnConvertSelected_Click(object sender, EventArgs e) - { - if (UseVeTree) - { - VETreeNode tn = (VETreeNode)tv.SelectedNode; - if (tn == null) - { - MessageBox.Show("Must select a version node (working draft, approved, etc)", "No Node Selected"); - return; - } - object o = tn.VEObject; - if (o.GetType() != typeof(DocVersionInfo)) - { - MessageBox.Show("Must select a version node (working draft, approved, etc)", "No Node Selected"); - return; - } - DocVersion v = ((DocVersionInfo)o).Get(); - ldr.MigrateDocVersion(v); - if (v.MyItem != null) - { - tn.Checked = true; - } - - } - else - { - TreeNode tn = tv.SelectedNode; - if (tn == null) - { - MessageBox.Show("Must select a version node (working draft, approved, etc)", "No Node Selected"); - return; - } - object o = tn.Tag; - if (o.GetType() != typeof(DocVersion)) - { - MessageBox.Show("Must select a version node (working draft, approved, etc)", "No Node Selected"); - return; - } - DocVersion v = (DocVersion)o; - ldr.MigrateDocVersion(v); - if (v.MyItem != null) - { - tn.Checked = true; - } - } - } - private void tv_BeforeExpand(object sender, TreeViewCancelEventArgs e) - { - if (UseVeTree) - { - ((VETreeNode)e.Node).LoadChildren(); - return; - } - - TreeNode tn = e.Node; - object o = tn.Tag; - switch (o.GetType().ToString()) - { - case "Volian.CSLA.Library.FolderInfo": - FolderInfo fld = (FolderInfo)o; - if (fld.ChildFolderCount > 0) - tn.Checked = ldr.LoadChildren(fld, tn); // load docversions. - break; - default: - break; - } - } - private void tv_AfterSelect(object sender, TreeViewEventArgs e) - { - if (UseVeTree) return; - - TreeNode tn = e.Node; - object o = tn.Tag; - tn.Expand(); - if (o.GetType() == typeof(DocVersion)) MySettings.ProcedureSetPath = ((DocVersion)o).Title; - } - private void btnLoadTreeDB_Click(object sender, EventArgs e) - { - // When loading folders, i.e. the tree from dBase (old 16-bit) - // always clear the data - ldr.ClearData(); - bool suc = ldr.LoadFolders(MySettings.VEPromsPath); - } - private string GetScript(string scriptName) - { - StreamReader sr = File.OpenText(Application.StartupPath + "\\" + scriptName); - string myScript = sr.ReadToEnd(); - sr.Close(); - return myScript; - } - private DateTime _ProcessTime; - public DateTime ProcessTime - { - get { return _ProcessTime; } - set - { - _ProcessTime = value; - // Set the Log File Name when the ProcessTime is set - ChangeLogFileName("LogFileAppender", MySettings.DBName + " " + ProcessTime.ToString("yyyyMMdd HHmmss") + " DMErrorLog.txt"); - } - } - private void btnConvert_Click(object sender, System.EventArgs e) - { - // Set Connection String - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); - // Setup based upon RedPDF Setting - // if in debug mode, pdf output is red - VlnSettings.DebugMode = (MySettings.ExecutionMode == ExecutionMode.Debug) && MySettings.RedPDFs; - if (VlnSettings.DebugMode) // Debug Mode - { - MSWordToPDF.DebugStatus = 1; - Loader.OverrideColor = Color.Red; - } - else - { - MSWordToPDF.DebugStatus = 0; - Loader.OverrideColor = Color.Empty; - } - //if (!CheckLogPath()) return; - //#if (!DEBUG) - if (!VlnSettings.DebugMode) - { - DialogResult dlgrst = MessageBox.Show("The VE-PROMS data currently in SQL Server (Express) will be deleted.\r\n\nProceed with Data Conversion?", "WARNING", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); - if (dlgrst == DialogResult.No) return; - } - //#endif - try - { - //TextConvert.ResetSpecialCharacters(); - //MyFrmErrors.Clear(); - System.Diagnostics.Process[] wordProcesses = WordDoc.WordProcesses; - if (!FormatsOnly && wordProcesses.Length > 0) - { - AddError("{0} copies of MS Word are running", wordProcesses.Length); - if (MessageBox.Show("MS Word is Running and must be stopped before proceeding.\n\nStop MS Word?", "MS Word is Running", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - WordDoc.TerminateProcesses(wordProcesses); - MyFrmErrors.Clear(); - } - else - return; - } - Database.LoggingInfo = false; - bool success = true; - if (FormatsOnly) - { - // ASSUMES No Formats/genmacs exist in database. - //MessageBox.Show(@"Format files are taken from c:\development\fmtall"); - //ldr._FmtAllPath = @"c:\development\fmtall"; - //ldr._GenmacAllPath = @"c:\development\genmacall"; - Format.UpdateFormats(MySettings.FormatFolder, MySettings.GenMacFolder); - //Format.UpdateFormats(@"c:\development\fmtall",@"c:\development\genmacall"); //ldr.LoadAllFormats(); - MessageBox.Show("Formats Loaded"); - return; - } - // Create Database - - // if purge data, purge it all & reload folders & security. - if (MySettings.PurgeExistingData) - { - if(!RunScript("BuildVEPROMS.Sql", "Master")) return; - if(!RunScript("PROMS2010.SQL", MySettings.DBName)) return; - Status = "Purging Data"; - ldr.ClearData(); - Status = "Loading Folders"; - success = ldr.LoadFolders(MySettings.VEPromsPath); - if (success) - { - Status = "Loading Security"; - success = ldr.LoadSecurity(MySettings.VESamFile, MySettings.VEPromsPath); - } - } - else - { - // check if images have been zipped & if not, zip them: - ROImageInfo.ZipImages(); - success = ldr.LoadFoldersIntoExisting(MySettings.VEPromsPath); - } - if (createEmptyPROMS) return; - if (success) - { - TimeSpan ts = new TimeSpan(); - DocVersionInfoList vl = DocVersionInfoList.Get(); - //DocVersion v = null; - MyInfo = "Computer Name: " + SystemInformation.ComputerName.ToUpper(); - foreach (DocVersionInfo vi in vl) - { - if (!MySettings.OnlyThisSet || (vi.Title.ToUpper() == MySettings.ProcedureSetPath.ToUpper())) // is this the procedure set we want to convert? - { - using (DocVersion v = DocVersion.Get(vi.VersionID)) - { - //v = DocVersion.Get(vi.VersionID); - Status = "Load " + v.Title + " - " + v.Name; - lblCurSetFolder.Text = v.Title; - lblCurSetFolder.Visible = true; - lblProcessing.Visible = true; - MyInfo = "Data Set: " + v.Title; - ts += ldr.MigrateDocVersion(v, true); - } - } - } - string ConversionTime = string.Format("Conversion completion time: {0:D2}:{1:D2}:{2:D2}.{3}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds); - MyInfo = ConversionTime; - SaveLogFiles(); - if (!ProcessComplete) MessageBox.Show(string.Format("{0}\r\n\n({1} Total Seconds)", ConversionTime, ts.TotalSeconds)); - //MessageBox.Show(string.Format("Conversion completion time: {0:D2}:{1:D2}:{2:D2}.{3}\r\n\n({4} Total Seconds)", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds, ts.TotalSeconds)); - //MessageBox.Show(string.Format("{0} seconds", ts.TotalSeconds)); - //TextConvert.ListSpecialCharacters(); - } - } - catch (Exception ex) - { - AddError(ex, "===================== Fatal Error ==========================\r\n{0} - {1}", ex.GetType().Name, ex.Message); - SaveLogFiles(); - MessageBox.Show(ex.Message, "Fatal Error During Loading", MessageBoxButtons.OK, MessageBoxIcon.Error); - _MyLog.Fatal(ex.Message); - } - } - public bool RunScript(string scriptName, string dbName) - { - bool ok = false; - Status = String.Format("Running Script '{0}'", scriptName); - string script = GetScript(scriptName); - script = script.Replace("{DBName}", MySettings.DBName); - script = script.Replace("{DBPath}", MySettings.DBPath); - SQLScriptRunner ssr = new SQLScriptRunner(script, MySettings.ConnectionString.Replace("{DBName}", dbName)); - ssr.InfoMessage += new SQLScriptRunnerEvent(ssr_InfoMessage); - try - { - AddInfo("Running Script '{0}'", scriptName); - ssr.Run(); - Status = String.Format("Script '{0}' Complete", scriptName); - ok = true; - } - catch (Exception ex) - { - AddInfo("====****===="); - AddError(ex, "While processing database {0}", dbName); - AddInfo("====****===="); - Status = String.Format("Script '{0}' Failed", scriptName); - } - return ok; - } - public bool RunScript(string script) - { - bool ok = false; - Status = String.Format("Running {0}", script); - script = script.Replace("{DBName}", MySettings.DBName); - script = script.Replace("{DBPath}", MySettings.DBPath); - SQLScriptRunner ssr = new SQLScriptRunner(script, MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName)); - ssr.InfoMessage += new SQLScriptRunnerEvent(ssr_InfoMessage); - try - { - ssr.Run(); - Status = "Script Complete"; - ok = true; - } - catch (Exception ex) - { - AddInfo("====****===="); - AddError(ex, "While processing database {0}", MySettings.DBName); - AddInfo("====****===="); - Status = String.Format("Script {0} Failed", script); - } - return ok; - } - private void Backup(string suffix) - { - SQLScriptRunner ssrbu = new SQLScriptRunner(MySettings.DBName, MySettings.BackupFolder, - MySettings.ConnectionString.Replace("{DBName}", "Master"), ProcessTime, suffix); - ssrbu.InfoMessage += new SQLScriptRunnerEvent(ssr_InfoMessage); - ssrbu.Run(); - } - void ssr_InfoMessage(object sender, System.Data.SqlClient.SqlInfoMessageEventArgs args) - { - MyInfo = args.Message; - } - private bool _ShowSections = false; - public bool ShowSections - { - get { return _ShowSections; } - set { _ShowSections = value; } - } - public void UpdateLabels(int incPrc, int incSec, int incStp) - { - if (incPrc == 0 && incSec == 0 && incStp == 0)//Reset - { - pbProc.Value = 0; - pbSect.Value = 0; - pbStep.Value = 0; - } - else - { - try - { - pbProc.Value += incPrc; - pbSect.Value += incSec; - pbStep.Value += incStp; - } - catch (Exception ex) - { - _MyLog.ErrorFormat("{0}\r\n\r\n{1}", ex.Message, ex.InnerException); - AddError(ex, "UpdateLabels"); - } - } - //Database.LoggingInfo = (pbProc.Value > 153 && pbSect.Value > 11 && pbStep.Value > 61); - lblProc.Text = string.Format("{0}/{1} Procedures", pbProc.Value, pbProc.Maximum); - if (ShowSections) - { - lblSection.Text = string.Format("{0}/{1} Sections", pbSect.Value, pbSect.Maximum); - lblStep.Text = string.Format("{0}/{1} Steps", pbStep.Value, pbStep.Maximum); - } - else - { - lblSection.Text = ""; - lblStep.Text = ""; - } - //pbProc.Value = iPrc; - //pbSect.Value = iSec; - //pbStep.Value = iStp; - TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - ProcessTime.Ticks); - lblTime.Text = string.Format("{0:D2}:{1:D2}:{2:D2} Elapsed", ts.Hours, ts.Minutes, ts.Seconds); - Application.DoEvents(); - } - private void btnLoadTreeCSLA_Click(object sender, EventArgs e) - { - _topnode = FolderTreeNode.BuildTreeList(); - tv.Nodes.Add(_topnode); - tv.Nodes[0].Expand(); - UseVeTree = false; - } - private void btnVesam_Click(object sender, EventArgs e) - { - // if purge data, purge it all & reload folders. - if (MySettings.PurgeExistingData) - { - ldr.ClearData(); - ldr.LoadFolders(MySettings.VEPromsPath); - } - bool sec = ldr.LoadSecurity(MySettings.VESamFile, MySettings.VEPromsPath); - } - - private void btnVETree_CSLA_Click(object sender, EventArgs e) - { - tv.Nodes.Add(VETreeNode.GetFolder(1)); - UseVeTree = true; - } - - private void btnGroup_Click(object sender, EventArgs e) - { - GroupProp f = new GroupProp(); - f.ShowDialog(); - } - - private void btnCtTok_Click(object sender, EventArgs e) - { - frmCntTkn frm = new frmCntTkn(); - frm.ShowDialog(); - } - public void UpdateLabelsSetProc(int prc) - { - pbProc.Maximum = prc; - } - public void UpdateLabelsSetSect(int sec) - { - pbSect.Maximum = sec; - } - public void UpdateLabelsLibDocs(int incLib, int incUsages) - { - if (incLib == 0 && incUsages == 0)//Reset - { - pbProc.Value = 0; - pbSect.Value = 0; - } - else - { - pbProc.Value += incLib; - pbSect.Value += incUsages; - } - lblProc.Text = string.Format("{0}/{1} Lib Docs", pbProc.Value, pbProc.Maximum); - lblSection.Text = string.Format("{0}/{1} Usages", pbSect.Value, pbSect.Maximum); - lblStep.Text = ""; - TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - ProcessTime.Ticks); - lblTime.Text = string.Format("{0:D2}:{1:D2}:{2:D2} Elapsed", ts.Hours, ts.Minutes, ts.Seconds); - Application.DoEvents(); - } - public void UpdateLabelsImages(int incImages) - { - if (incImages == 0)//Reset - pbProc.Value = 0; - else - pbProc.Value += incImages; - lblProc.Text = string.Format("{0}/{1} Images", pbProc.Value, pbProc.Maximum); - lblSection.Text = ""; - lblStep.Text = ""; - TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - ProcessTime.Ticks); - lblTime.Text = string.Format("{0:D2}:{1:D2}:{2:D2} Elapsed", ts.Hours, ts.Minutes, ts.Seconds); - Application.DoEvents(); - } - public void UpdateLabelsFormats(int incFormats) - { - if (incFormats == 0)//Reset - pbProc.Value = 0; - else - pbProc.Value += incFormats; - lblProc.Text = string.Format("{0}/{1} Formats", pbProc.Value, pbProc.Maximum); - lblSection.Text = ""; - lblStep.Text = ""; - TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - ProcessTime.Ticks); - lblTime.Text = string.Format("{0:D2}:{1:D2}:{2:D2} Elapsed", ts.Hours, ts.Minutes, ts.Seconds); - Application.DoEvents(); - } - private DataLoaderSettings _MySettings; - internal DataLoaderSettings MySettings - { - get - { - if (_MySettings == null) - _MySettings = new DataLoaderSettings(); - return _MySettings; - } - set { _MySettings = value; } - } - private void LoadSettings() - { - Console.WriteLine("Start"); - if (Properties.Settings.Default["VePromsFilename"].ToString() != "") - MySettings.VEPromsPath = Properties.Settings.Default.VePromsFilename; - if (Properties.Settings.Default["VeSamFilename"].ToString() != "") - MySettings.VESamFile = Properties.Settings.Default.VeSamFilename; - if (Properties.Settings.Default["DbfPathname"].ToString() != "") - MySettings.ProcedureSetPath = Properties.Settings.Default.DbfPathname; - if (Properties.Settings.Default["ProcessOnlyInLocation"].ToString() != "") - MySettings.ProcessOnlyInLocation = Properties.Settings.Default.ProcessOnlyInLocation; - if (Properties.Settings.Default["BackupFileName"].ToString() != "") - MySettings.BackupFileName = Properties.Settings.Default.BackupFileName; - if (Properties.Settings.Default["BackupFolder"].ToString() != "") - MySettings.BackupFolder = Properties.Settings.Default.BackupFolder; - if (Properties.Settings.Default["LogFileLoc"].ToString() != "") - MySettings.LogFilePath = Properties.Settings.Default.LogFileLoc; - if (Properties.Settings.Default["ConnectionString"].ToString() != "") - MySettings.ConnectionString = Properties.Settings.Default.ConnectionString; - if (Properties.Settings.Default["DBName"].ToString() != "") - MySettings.DBName = Properties.Settings.Default.DBName; - if (Properties.Settings.Default["DBPath"].ToString() != "") - MySettings.DBPath = Properties.Settings.Default.DBPath; - MySettings.PurgeExistingData = (Properties.Settings.Default.PurgeData == CheckState.Checked); - if (Properties.Settings.Default["PDFFolder"].ToString() != "") - MySettings.PDFFolder = Properties.Settings.Default.PDFFolder; - MySettings.OnlyThisSet = (Properties.Settings.Default.OnlyThisSet == CheckState.Checked); - MySettings.CheckRTF = (Properties.Settings.Default.CheckRTF == CheckState.Checked); - MySettings.Skip = Properties.Settings.Default.Skip; - MySettings.ConvertTo = (AccPageConversion)Properties.Settings.Default.ConvertTo; - MySettings.ExecutionMode = (ExecutionMode)Properties.Settings.Default.ExecutionMode; - MySettings.Phase1Suffix = Properties.Settings.Default.Phase1; - MySettings.Phase2Suffix = Properties.Settings.Default.Phase2; - MySettings.Phase3Suffix = Properties.Settings.Default.Phase3; - MySettings.FormatFolder = Properties.Settings.Default.FormatFolder; - MySettings.GenMacFolder = Properties.Settings.Default.GenMacFolder; - MySettings.LoadApproved = Properties.Settings.Default.LoadApproved; - MySettings.Phase4Suffix = Properties.Settings.Default.Phase4; - MySettings.RedPDFs = (Properties.Settings.Default.RedPDFs == CheckState.Checked); - string validity = MySettings.ValidityCheck; - if (validity != "") - { - MessageBox.Show(validity, "Settings Incorrect", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); - OpenSettings(); - } - } - private void OpenSettings() - { - DataLoaderSettings tmpDLS = (DataLoaderSettings)MySettings.Clone(); - frmPG myPG = new frmPG("Data Loader Settings", tmpDLS); - if (myPG.ShowDialog() == DialogResult.OK) - { - MySettings = tmpDLS; - SaveSettings(); - } - string validity = MySettings.ValidityCheck; - if (validity != "") - { - processToolStripMenuItem.Enabled = false; - oldToolStripMenuItem.Enabled = false; - } - else - { - processToolStripMenuItem.Enabled = true; - oldToolStripMenuItem.Enabled = true; - } - } - private void SaveSettings() - { - Properties.Settings.Default.DbfPathname = MySettings.ProcedureSetPath; - Properties.Settings.Default.VePromsFilename = MySettings.VEPromsPath; - Properties.Settings.Default.VeSamFilename = MySettings.VESamFile; - Properties.Settings.Default.DbfPathname = MySettings.ProcedureSetPath; - Properties.Settings.Default.ProcessOnlyInLocation = MySettings.ProcessOnlyInLocation; - Properties.Settings.Default.BackupFileName = MySettings.BackupFileName; - Properties.Settings.Default.BackupFolder = MySettings.BackupFolder; - Properties.Settings.Default.LogFileLoc = MySettings.LogFilePath; - Properties.Settings.Default.ConnectionString = MySettings.ConnectionString; - Properties.Settings.Default.DBName = MySettings.DBName; - Properties.Settings.Default.DBPath = MySettings.DBPath; - Properties.Settings.Default.PurgeData = MySettings.PurgeExistingData ? CheckState.Checked : CheckState.Unchecked; - Properties.Settings.Default.PDFFolder = MySettings.PDFFolder; - Properties.Settings.Default.OnlyThisSet = MySettings.OnlyThisSet ? CheckState.Checked : CheckState.Unchecked; - Properties.Settings.Default.CheckRTF = MySettings.CheckRTF ? CheckState.Checked : CheckState.Unchecked; - Properties.Settings.Default.Skip = MySettings.Skip; - Properties.Settings.Default.ConvertTo = (int)MySettings.ConvertTo; - Properties.Settings.Default.ExecutionMode = (int)MySettings.ExecutionMode; - Properties.Settings.Default.Phase1 = MySettings.Phase1Suffix; - Properties.Settings.Default.Phase2 = MySettings.Phase2Suffix; - Properties.Settings.Default.Phase3 = MySettings.Phase3Suffix; - Properties.Settings.Default.FormatFolder = MySettings.FormatFolder; - Properties.Settings.Default.GenMacFolder = MySettings.GenMacFolder; - Properties.Settings.Default.LoadApproved = MySettings.LoadApproved; - Properties.Settings.Default.Phase4 = MySettings.Phase4Suffix; - Properties.Settings.Default.RedPDFs = MySettings.RedPDFs ? CheckState.Checked : CheckState.Unchecked; - Properties.Settings.Default.Save(); - } - private void frmLoader_Load(object sender, EventArgs e) - { - LoadSettings(); - _Loading = false; - MSWordToPDF.CloseWordWhenDone = false; - Format.FormatLoaded += new FormatEvent(Format_FormatLoaded); - StepRTB.DoSpellCheck = false; - } - void Format_FormatLoaded(object sender, FormatEventArgs args) - { - if (args.Status.StartsWith("Loading Format")) - UpdateLabelsFormats(1); - else if (!args.Status.StartsWith("Format") && !args.Status.StartsWith("Loading ")) - { - pbProcMaximum = int.Parse(args.Status.Split(" ".ToCharArray())[0]); - UpdateLabelsFormats(0); - } - MyInfo = args.Status; - } - private void btnFixTransitions_Click(object sender, EventArgs e) - { - List cacheContentInfo = ContentInfo.CacheList; - List cacheItemInfo = ItemInfo.CacheList; - //List cacheEntryInfo = EntryInfo.CacheList; - //List cachePdfInfo = PdfInfo.CacheList; - //List cacheDocVersionInfo = DocVersionInfo.CacheList; - //if (!CheckLogPath()) return; - using (StepRTB rtb = new StepRTB()) - { - TransitionFixer myFixer = new TransitionFixer(rtb, MySettings.LogFilePath); - myFixer.StatusChanged += new TransitionFixerEvent(myFixer_StatusChanged); - TimeSpan howlong = myFixer.Process(MySettings.CheckRTF); - string TransFixTime = string.Format("Fix Transitions completion time: {0:D2}:{1:D2}:{2:D2}.{3}", howlong.Hours, howlong.Minutes, howlong.Seconds, howlong.Milliseconds); - MyInfo = TransFixTime; - //if (!ProcessComplete) MessageBox.Show(string.Format("{0}\r\n\n({1} Total Seconds)", TransFixTime, howlong.TotalSeconds)); - //MessageBox.Show(string.Format("Fix Transitions completion time: {0:D2}:{1:D2}:{2:D2}.{3}\r\n\n({4} Total Seconds)", howlong.Hours, howlong.Minutes, howlong.Seconds, howlong.Milliseconds, howlong.TotalSeconds)); - CreateBackupRestoreBatchFiles(); - ItemInfo.RestoreCacheList(cacheItemInfo); - ContentInfo.RestoreCacheList(cacheContentInfo); - //EntryInfo.RestoreCacheList(cacheEntryInfo); - //PdfInfo.RestoreCacheList(cachePdfInfo); - //DocVersionInfo.RestoreCacheList(cacheDocVersionInfo); - MyInfo = CSLACache.UsageAll; - } - } - - void myFixer_StatusChanged(object sender, TransitionFixerEventArgs args) - { - Status = args.MyStatus; - } - private bool _DidLogPathCheck = false; - //private string _LogFilePath = ""; - - //private bool CheckLogPath() - //{ - // bool rtn = false; - // if (_DidLogPathCheck) return true; - // try - // { - // _LogFilePath = txbLogFileLoc.Text; - // if (!Directory.Exists(_LogFilePath)) - // Directory.CreateDirectory(_LogFilePath); - // if (_LogFilePath.EndsWith(@"\")) _LogFilePath = _LogFilePath.Substring(0, _LogFilePath.Length - 1); - // rtn = true; - // _DidLogPathCheck = true; - // } - // catch (Exception ex) - // { - // MessageBox.Show(ex.Message, "Invalid Path for Log Files", MessageBoxButtons.OK, MessageBoxIcon.Error); - // } - // return rtn; - //} - - private void SaveLogFiles() - { - //if (_LogFilePath == "") return; - // Save the Glitches log - if (TextConvert.MyGlitches.Glitches.Count > 0) - TextConvert.MyGlitches.Save(MySettings.LogFilePath + @"\ConversionGlitches.xml"); - // Save the Error Log - if (_MyFrmErrors.ErrorCount > 0) - _MyFrmErrors.Save(MySettings.LogFilePath + @"\ConversionErrors.txt"); - } - - private bool _EnteredFileLoc = false; - private void txbLogFileLoc_TextChanged(object sender, EventArgs e) - { - _DidLogPathCheck = false; - } - - private void CreateBackupRestoreBatchFiles() - { - string pause = "pause"; - string bckupFileName = MySettings.BackupFileName; - if (!bckupFileName.EndsWith(".bak")) bckupFileName += ".bak"; - string backupPath = MySettings.LogFilePath + @"\" + bckupFileName + "'\""; - string bckupcmd = string.Format("sqlcmd -E -S.\\sqlexpress -Q \"backup database [{0}] to disk = '{1}", MySettings.DBName, backupPath); - string rstorecmd = string.Format("sqlcmd -E -S.\\sqlexpress -Q \"restore database [{0}] from disk = '{1}", MySettings.DBName, backupPath); - StreamWriter fsbackup = new StreamWriter(MySettings.LogFilePath + @"\Backup" + bckupFileName.Substring(0, bckupFileName.Length - 4) + ".bat"); - fsbackup.WriteLine(bckupcmd); - fsbackup.WriteLine(pause); - fsbackup.Close(); - StreamWriter fsrestore = new StreamWriter(MySettings.LogFilePath + @"\Restore" + bckupFileName.Substring(0, bckupFileName.Length - 4) + ".bat"); - fsrestore.WriteLine(rstorecmd); - fsrestore.WriteLine(pause); - fsrestore.Close(); - } - // Menu Items - #region File Menu Items - private void exitToolStripMenuItem_Click(object sender, EventArgs e) - { - this.Close(); - } - #endregion - #region Process Menu Items - private bool _ProcessFailed = false; - public bool ProcessFailed - { - get { return _ProcessFailed; } - set { _ProcessFailed = value; } - } - private bool _ProcessComplete = false; - public bool ProcessComplete - { - get { return _ProcessComplete; } - set { _ProcessComplete = value; } - } - static bool ChangeLogFileName(string AppenderName, string NewFilename) - { - log4net.Repository.ILoggerRepository RootRep; - RootRep = log4net.LogManager.GetRepository(); - foreach (log4net.Appender.IAppender iApp in RootRep.GetAppenders()) - { - if (iApp.Name.CompareTo(AppenderName) == 0 - && iApp is log4net.Appender.FileAppender) - { - log4net.Appender.FileAppender fApp = (log4net.Appender.FileAppender)iApp; - string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); - fApp.File = folderPath + @"\VEPROMS\" + NewFilename; - fApp.ActivateOptions(); - return true; // Appender found and name changed to NewFilename - } - } - return false; - } - private void completeToolStripMenuItem_Click(object sender, EventArgs e) - { - ChildrenProcessed = 0; - ProcessFailed = false; - ProcessComplete = true; - ProcessTime = DateTime.Now; - MessageBuilder mb = new MessageBuilder("Performing Complete Process\r\n"); - // Phase 1 - Convert dBase to SQL - btnConvert_Click(this, new System.EventArgs()); - if (ProcessFailed) return; - if (ChildrenProcessed == 0 && !createEmptyPROMS) - { - MessageBox.Show("No children found to convert. Check vlnControl.xml file. Process complete"); - return; - } - mb.Append("dBase Conversion Complete"); - Status = "Backing up Phase 1 Data"; - Backup("_" + MySettings.Phase1Suffix); - mb.Append("Phase 1 Backup Complete"); - // Phase 2 - Fix Transitions - if (!createEmptyPROMS) - { - btnFixTransitions_Click(this, new System.EventArgs()); - mb.Append("Fix Transtions Complete"); - } - Status = "Backing up Phase 2 Data"; - Backup("_" + MySettings.Phase2Suffix); - mb.Append("Phase 2 Backup Complete"); - // only do the following two steps if we are NOT appending to an existing set - if (MySettings.PurgeExistingData) - { - // Phase 3 - Convert to Change Manager Version - if (!ConvertToChangeManager()) return; - mb.Append("Conversion to Change Manager Complete"); - Status = "Backing up Phase 3 Data"; - Backup("_" + MySettings.Phase3Suffix); - mb.Append("Phase 3 Backup Complete"); - //Phase 4 - Convert to Approval Version - if (!ConvertToApproval()) return; - mb.Append("Conversion to Approval Complete"); - } - if(!FixProceduresAndFunctions()) return; - mb.Append("FixProceduresAndFunctions Complete"); - if (MySettings.LoadApproved && !createEmptyPROMS) - { - Status = "Backing up Phase 4 Data"; - Backup("_" + MySettings.Phase4Suffix); - mb.Append("Phase 4 Backup Complete"); - //Phase 5 - Load Approved Data - LoadApprovedData(); - mb.Append("Conversion of Approved Data Complete"); - } - Status = "Backing up Data"; - Backup(""); - mb.Append("Backup Complete"); - mb.LastTime = ProcessTime; // Reset time to get total time. - mb.Append("Processing Complete"); - Status = "Processing Complete"; - ProcessComplete = false; - //Clipboard.Clear(); - //Clipboard.SetText(mb.ToString()); - AddInfo(mb.ToString()); - MessageBox.Show(mb.ToString(), "Processing Complete", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private bool ConvertToChangeManager() - { - return RunScript("PROMStoCM.sql", MySettings.DBName); - } - private bool ConvertToApproval() - { - return RunScript("PROMStoAPPR.sql", MySettings.DBName); - } - private void formatOnlyToolStripMenuItem_Click(object sender, EventArgs e) - { - ProcessTime = DateTime.Now; - FormatsOnly = true; - btnConvert_Click(this, new System.EventArgs()); - if (ProcessFailed) return; - MyInfo = "Format Load Complete"; - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Format Change Data"; - Backup("_" + "FormatChange"); - MyInfo = "Format Change Backup Complete"; - } - //Status = "Format Change Complete"; - //MessageBox.Show("Format Change Complete", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private void convertDBToolStripMenuItem_Click(object sender, EventArgs e) - { - ProcessTime = DateTime.Now; - RunScript("vesp_TurnChangeManagerOFF"); - btnConvert_Click(this, new System.EventArgs()); - RunScript("vesp_TurnChangeManagerON"); - if (ProcessFailed) return; - MyInfo = "dBase Conversion Complete"; - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Phase 1 Data"; - Backup("_" + MySettings.Phase1Suffix); - MyInfo = "Phase 1 Backup Complete"; - } - //Status = "dBase Conversion Complete"; - //MessageBox.Show("dBase Conversion Complete", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private void fixTransitionsToolStripMenuItem_Click(object sender, EventArgs e) - { - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); - ProcessTime = DateTime.Now; - RunScript("vesp_TurnChangeManagerOFF"); - btnFixTransitions_Click(this, new System.EventArgs()); - RunScript("vesp_TurnChangeManagerON"); - MyInfo = "Fix Transtions Complete"; - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Phase 2 Data"; - Backup("_" + MySettings.Phase2Suffix); - MyInfo = "Phase 2 Backup Complete"; - } - Status = "Fix Transtions Complete"; - MessageBox.Show("Fix Transtions Complete", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private void convertToChangeManagerToolStripMenuItem_Click(object sender, EventArgs e) - { - ProcessTime = DateTime.Now; - if(!ConvertToChangeManager()) return; - MyInfo = "Conversion to Change Manager Complete"; - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Phase 3 Data"; - Backup("_" + MySettings.Phase3Suffix); - MyInfo = "Phase 3 Backup Complete"; - } - //Status = "Conversion to Change Manager Complete"; - //MessageBox.Show("Conversion to Change Manager Complete", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private void convertToApprovalToolStripMenuItem_Click(object sender, EventArgs e) - { - ProcessTime = DateTime.Now; - if(!ConvertToApproval()) return; - MyInfo = "Conversion to Approval Complete"; - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Phase 4 Data"; - Backup("_" + MySettings.Phase4Suffix); - MyInfo = "Phase 4 Backup Complete"; - } - //Status = "Conversion to Approval Complete"; - //MessageBox.Show("Conversion to Approval Complete", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private void load16BitApprovalToolStripMenuItem_Click(object sender, EventArgs e) - { - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); - ProcessTime = DateTime.Now; - if (LoadApprovedData()) - { - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Data"; - Backup(""); - MyInfo = "Backup Complete"; - } - Status = "Processing Complete"; - } - else - Status = "Loading 16 Bit Approval Data Failed"; - //MessageBox.Show("Loading 16 Bit Approval Data Complete", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private bool LoadApprovedData() - { - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); - Status = "Converting 16-Bit Approved Data"; - Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", MySettings.DBName); - bool ok = ldr.BuildApprovedRevision(); - Status = "Conversion " + (ok ? "Succeeded" : "Failed"); - return ok; - } - private void fixesToolStripMenuItem_Click(object sender, EventArgs e) - { - if (!FixProceduresAndFunctions()) return; - if (MessageBox.Show("Backup Database?", "Backup", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) - { - Status = "Backing up Data"; - Backup("_Fixed"); - MyInfo = "Backup Complete"; - } - //Status = "Processing Complete"; - //MessageBox.Show("Fixed Stored Procedures", "Status", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - private bool FixProceduresAndFunctions() - { - return RunScript("PROMSFixes.sql", MySettings.DBName); - } - #endregion - #region Settings Menu Items - private void settingsToolStripMenuItem_Click(object sender, EventArgs e) - { - OpenSettings(); - } - #endregion - #region Old Menu Items - private void convertSecurityToolStripMenuItem_Click(object sender, EventArgs e) - { - btnVesam_Click(this, new EventArgs()); - } - private void convertTopFoldersToolStripMenuItem_Click(object sender, EventArgs e) - { - btnLoadTreeDB_Click(this, new EventArgs()); - } - private void loadTreeFromCSLAToolStripMenuItem_Click(object sender, EventArgs e) - { - btnLoadTreeCSLA_Click(this, new EventArgs()); - } - private void loadVETreeFromCSLAToolStripMenuItem_Click(object sender, EventArgs e) - { - btnVETree_CSLA_Click(this, new EventArgs()); - } - private void groupSecurityToolStripMenuItem_Click(object sender, EventArgs e) - { - btnGroup_Click(this, new EventArgs()); - } - private void countTokensToolStripMenuItem_Click(object sender, EventArgs e) - { - btnCtTok_Click(this, new EventArgs()); - } - private void convertDbfSelectedInTreeToolStripMenuItem_Click(object sender, EventArgs e) - { - btnConvertSelected_Click(this, new EventArgs()); - } - #endregion - - private void approvalDatabasesToolStripMenuItem_Click(object sender, EventArgs e) - { - this.Cursor = Cursors.WaitCursor; - //MySettings.ConnectionString - //"{DBName}", dbName - string tmp = MySettings.ConnectionString.Replace("{DBName}", "master"); - SqlConnection cn = new SqlConnection(tmp); - cn.Open(); - SqlDataAdapter da = new SqlDataAdapter("select name, case when object_id(name + '..Items') is null then 'Not PROMS' when object_id(name + '..Revisions') is not null then 'Approval' when object_id(name + '..ContentAudits') is not null then 'Change Manager' else 'Original' end functionality from sysdatabases where name not in ('master','model','msdb','tempdb') order by name", cn); - DataSet ds = new DataSet(); - da.Fill(ds); - cn.Close(); - List cms = new List(); - StringBuilder sb = new StringBuilder(); - sb.Append("The following databases will be fixed...\r\n"); - foreach (DataRow dr in ds.Tables[0].Rows) - { - if (dr["functionality"].ToString() == "Approval") - { - cms.Add(dr["name"].ToString()); - sb.Append("\r\n " + dr["name"].ToString()); - } - } - this.Cursor = Cursors.Default; - if (MessageBox.Show(sb.ToString(), "Data Loader Fixes", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) - { - int good = 0; - int bad = 0; - foreach (string s in cms) - { - AddInfo("\r\nFixing database {0}\r\n", s); - if (RunScript("PROMSFixes.sql", s)) good++; - else bad++; - } - AddInfo("\r\nFixing databases complete. {0} Fixed, {1} Failures", good, bad); - Status = String.Format("Fixing databases complete. {0} Fixed, {1} Failures", good, bad); - } - } - - private void updateFormatsToolStripMenuItem_Click(object sender, EventArgs e) - { - MessageBox.Show("Can't get this to work yet"); - //this.Cursor = Cursors.WaitCursor; - ////MySettings.ConnectionString - ////"{DBName}", dbName - //string tmp = MySettings.ConnectionString.Replace("{DBName}", "master"); - //SqlConnection cn = new SqlConnection(tmp); - //cn.Open(); - //SqlDataAdapter da = new SqlDataAdapter("select name, case when object_id(name + '..Items') is null then 'Not PROMS' when object_id(name + '..Revisions') is not null then 'Approval' when object_id(name + '..ContentAudits') is not null then 'Change Manager' else 'Original' end functionality from sysdatabases where name not in ('master','model','msdb','tempdb') order by name", cn); - //DataSet ds = new DataSet(); - //da.Fill(ds); - //cn.Close(); - //List cms = new List(); - //StringBuilder sb = new StringBuilder(); - //sb.Append("Formats will be updated in the following databases ...\r\n"); - //foreach (DataRow dr in ds.Tables[0].Rows) - //{ - // if (dr["functionality"].ToString() == "Approval") // get only the databases with Approval fnctionality - // { - // cms.Add(dr["name"].ToString()); - // sb.Append("\r\n " + dr["name"].ToString()); - // } - //} - //this.Cursor = Cursors.Default; - //if (MessageBox.Show(sb.ToString(), "Format Updates", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK) - //{ - // int good = 0; - // int bad = 0; - // string saveDbName = MySettings.DBName; - // foreach (string s in cms) - // { - // try - // { - // AddInfo("\r\nUpdating Formats in database {0}\r\n", s); - // MySettings.DBName = s; - // Database.VEPROMS_Connection = MySettings.ConnectionString.Replace("{DBName}", s); - // Format.UpdateFormats(MySettings.FormatFolder, MySettings.GenMacFolder); - // Database.VEPROMS_SqlConnection.Close(); - // //RunScript("PROMSFixes.sql", s); - // good++; - // } - // catch (Exception ex) - // { - // AddInfo("====****===="); - // AddError(ex, "While Updating Formats for database {0}", s); - // AddInfo("====****===="); - // bad++; - // } - // } - // MySettings.DBName = saveDbName; - // AddInfo("\r\nUpdating Formats in databases complete. {0} Fixed, {1} Failures", good, bad); - // Status = String.Format("Updating Formats in databases complete. {0} Fixed, {1} Failures", good, bad); - //} - - } - public bool createEmptyPROMS = false; - private void createEmptyPROMSDatabaseToolStripMenuItem_Click(object sender, EventArgs e) - { - createEmptyPROMS = true; - completeToolStripMenuItem_Click(sender, e); - createEmptyPROMS = false; - } - - - } - public class MessageBuilder - { - private StringBuilder _MyStringBulider = new StringBuilder(); - private DateTime _LastTime = DateTime.Now; - public DateTime LastTime - { - get { return _LastTime; } - set { _LastTime = value; } - } - public MessageBuilder(string heading) - { - _MyStringBulider.Append(heading); - } - public void Append(string format, params object[] args) - { - string msg = string.Format(format, args); - DateTime now = DateTime.Now; - TimeSpan ts = TimeSpan.FromTicks(now.Ticks - _LastTime.Ticks); - string timestamp = string.Format("{0:D2}:{1:D2}:{2:D2}.{3:D3}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds); - _LastTime = now; - GC.Collect(); - long memUse = GC.GetTotalMemory(true); - _MyStringBulider.Append("\r\n" + timestamp + "\t" + memUse.ToString() + "\t" + msg); - } - public override string ToString() - { - return _MyStringBulider.ToString(); - } - } -} diff --git a/PROMS/DataLoader/frmLoader.resx b/PROMS/DataLoader/frmLoader.resx deleted file mode 100644 index 9b12f7fc..00000000 --- a/PROMS/DataLoader/frmLoader.resx +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - 17, 17 - - - 84, 17 - - - 217, 17 - - - 314, 17 - - \ No newline at end of file diff --git a/PROMS/DataLoader/frmPG.cs b/PROMS/DataLoader/frmPG.cs deleted file mode 100644 index 4113fca8..00000000 --- a/PROMS/DataLoader/frmPG.cs +++ /dev/null @@ -1,110 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.Reflection; - -namespace DataLoader -{ - public partial class frmPG : Form - { - private object _SelectedObject; - public object SelectedObject - { - get { return _SelectedObject; } - set { _SelectedObject = value; } - } - - public frmPG(string title, object selectedObject) - { - InitializeComponent(); - this.Text = title; - _SelectedObject = selectedObject; - } - private void CheckValidity() - { - if (SelectedObject.GetType().Name == "DataLoaderSettings") - { - DataLoaderSettings myDls = (DataLoaderSettings)SelectedObject; - string validity = myDls.ValidityCheck; - pg.SelectedObject = SelectedObject; - tbError.Text = validity; - if (validity == "") - tbError.Visible = false; - else - { - using (Graphics gr = tbError.CreateGraphics()) - { - SizeF sf = gr.MeasureString(validity, tbError.Font,tbError.ClientRectangle.Width-10); - tbError.Height = (int)(tbError.Font.GetHeight(gr.DpiY) + sf.Height); - } - tbError.Visible = true; - } - } - else - tbError.Visible = false; - btnOK.Enabled = !tbError.Visible; - } - private void frmPG_Load(object sender, EventArgs e) - { - pg.PropertyValueChanged += new PropertyValueChangedEventHandler(pg_PropertyValueChanged); - pg.SelectedObject = SelectedObject; - Resize += new EventHandler(frmPG_Resize); - CheckValidity(); - MoveSplitterTo(pg, SplitterWidth); - } - void pg_PropertyValueChanged(object s, PropertyValueChangedEventArgs e) - { - if (e.ChangedItem.Label == "VEProms Exe Folder") - { - DataLoaderSettings dls = SelectedObject as DataLoaderSettings; - if (dls != null) - dls.VESamFile = dls.VEPromsPath + "\\vesam.opt"; - } - //if (e.ChangedItem.Label == "Procedure Folder") - //{ - // DataLoaderSettings dls = SelectedObject as DataLoaderSettings; - // //if (dls != null) - // // dls.PDFFolder = ""; - //} - CheckValidity(); - } - void frmPG_Resize(object sender, EventArgs e) - { - MoveSplitterTo(pg, SplitterWidth); - } - private int _SplitterWidth = 0; - public int SplitterWidth - { - get - { - if (_SplitterWidth == 0) - { - using (Graphics gr = this.CreateGraphics()) - _SplitterWidth = 180 * ((int)gr.DpiX) / 96; - } - return _SplitterWidth; - } - } - static void MoveSplitterTo(PropertyGrid grid, int x) - { - // HEALTH WARNING: reflection can be brittle... - FieldInfo field = typeof(PropertyGrid) - .GetField("gridView", - BindingFlags.NonPublic | BindingFlags.Instance); - field.FieldType - .GetMethod("MoveSplitterTo", - BindingFlags.NonPublic | BindingFlags.Instance) - .Invoke(field.GetValue(grid), new object[] { x }); - } - - private void btnCancel_Click(object sender, EventArgs e) - { - PropertyDescriptor pd = pg.SelectedGridItem.PropertyDescriptor; - pd.ResetValue(pg.SelectedObject); - } - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/frmPG.designer.cs b/PROMS/DataLoader/frmPG.designer.cs deleted file mode 100644 index 16619a89..00000000 --- a/PROMS/DataLoader/frmPG.designer.cs +++ /dev/null @@ -1,120 +0,0 @@ -namespace DataLoader -{ - partial class frmPG - { - /// - /// 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.panel1 = new System.Windows.Forms.Panel(); - this.btnCancel = new System.Windows.Forms.Button(); - this.btnOK = new System.Windows.Forms.Button(); - this.pg = new System.Windows.Forms.PropertyGrid(); - this.tbError = new System.Windows.Forms.TextBox(); - this.panel1.SuspendLayout(); - this.SuspendLayout(); - // - // panel1 - // - this.panel1.Controls.Add(this.btnCancel); - this.panel1.Controls.Add(this.btnOK); - this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; - this.panel1.Location = new System.Drawing.Point(0, 540); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(453, 38); - this.panel1.TabIndex = 0; - // - // btnCancel - // - this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(366, 6); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 1; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); - // - // btnOK - // - this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOK.Location = new System.Drawing.Point(285, 6); - this.btnOK.Name = "btnOK"; - this.btnOK.Size = new System.Drawing.Size(75, 23); - this.btnOK.TabIndex = 0; - this.btnOK.Text = "OK"; - this.btnOK.UseVisualStyleBackColor = true; - // - // pg - // - this.pg.Dock = System.Windows.Forms.DockStyle.Fill; - this.pg.Location = new System.Drawing.Point(0, 0); - this.pg.Name = "pg"; - this.pg.Size = new System.Drawing.Size(453, 425); - this.pg.TabIndex = 1; - // - // tbError - // - this.tbError.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(128))))); - this.tbError.Dock = System.Windows.Forms.DockStyle.Bottom; - this.tbError.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tbError.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - this.tbError.Location = new System.Drawing.Point(0, 425); - this.tbError.Multiline = true; - this.tbError.Name = "tbError"; - this.tbError.Size = new System.Drawing.Size(453, 115); - this.tbError.TabIndex = 2; - // - // frmPG - // - this.AcceptButton = this.btnOK; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnCancel; - this.ClientSize = new System.Drawing.Size(453, 578); - this.ControlBox = false; - this.Controls.Add(this.pg); - this.Controls.Add(this.tbError); - this.Controls.Add(this.panel1); - this.Name = "frmPG"; - this.Text = "frmPG"; - this.Load += new System.EventHandler(this.frmPG_Load); - this.panel1.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.PropertyGrid pg; - private System.Windows.Forms.TextBox tbError; - } -} \ No newline at end of file diff --git a/PROMS/DataLoader/frmPG.resx b/PROMS/DataLoader/frmPG.resx deleted file mode 100644 index 19dc0dd8..00000000 --- a/PROMS/DataLoader/frmPG.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/PROMS/DataLoader/logfile/AEP Database & Log Files/AOP1 and Du1 ConversionErrors.txt b/PROMS/DataLoader/logfile/AEP Database & Log Files/AOP1 and Du1 ConversionErrors.txt deleted file mode 100644 index 1e80303a..00000000 --- a/PROMS/DataLoader/logfile/AEP Database & Log Files/AOP1 and Du1 ConversionErrors.txt +++ /dev/null @@ -1,135 +0,0 @@ -Computer Name: KATHY-VISTA -Data Set: c:\16bit\debug\veaep\aop1.prc -Bad OldToNew Document Style 001-006:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\aop1.prc\rtffiles\proc013.A03 -Error in -Bad OldToNew Document Style 002-001:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\aop1.prc\rtffiles\PROC009.A03 -Bad OldToNew Document Style 012-005:Attachment C dStyleIndex = 'A ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP & AOP Single Column Attachment Pages - BOLD STEPS (AEP01) - Missing OldToNew 1024 -Processing c:\16bit\debug\veaep\aop1.prc\rtffiles\proc022.A06 -Processing c:\16bit\debug\veaep\aop1.prc\rtffiles\proc031.A04 -Processing c:\16bit\debug\veaep\aop1.prc\rtffiles\proc031.A08 -Processing c:\16bit\debug\veaep\aop1.prc\rtffiles\proc031.A07 -Missing Transition Destination 017-001|K0 - 9464 -Missing Transition Destination 017-001|J0 - 9463 -Missing Transition Destination 001-006|A?S3 - 853 -Missing Transition Destination 017-001|F0 - 9652 -Missing Transition Destination 017-001|E0 - 9514 -Missing Transition Destination 017-001|B1S - 9584 -Missing Transition Destination 017-001|B0 - 9589 -Missing Transition Destination 016.004|J=S7 - 7979 -Missing Transition Destination 017-001|I0 - 9244 -Missing Transition Destination 016-004|AÇS - 7602 -Data Set: c:\16bit\debug\veaep\du1.prc -Cannot Find Image File c:\16bit\debug\veaep\ro\CNTRLRM1.GIF -Cannot Find Image File c:\16bit\debug\veaep\ro\CNTRLRM2.GIF -Cannot Find Image File c:\16bit\debug\veaep\ro\CNTLRM12.GIF -Cannot Find Image File c:\16bit\debug\veaep\ro\CNTLRM11.GIF -Cannot Find Image File c:\16bit\debug\veaep\ro\STMTABLE.GIF -Cannot Find Image File c:\16bit\debug\veaep\ro\HV2.GIF -Bad OldToNew Document Style E-0:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-0.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\ES02.A05 -Bad OldToNew Document Style ES-0.2:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\ES03.A03 -Bad OldToNew Document Style ES-0.3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style E-1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-1.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-1.2:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-1.3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style E-3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-3.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-3.2:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-3.3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\ECA00.A01 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\ECA00.A04 -Bad OldToNew Document Style ECA-0.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\ECA11.A03 -Bad OldToNew Document Style ECA-1.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\proc022.A03 -Bad OldToNew Document Style ECA-1.3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ECA-2.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\ECA31.A03 -Bad OldToNew Document Style ECA-3.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ECA-3.2:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ECA-3.3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\proc004.A07 -MigrateRos 'F-0.5' 'A2S' 0 - ArgumentNullException - Value cannot be null. -Parameter name: input at System.Text.RegularExpressions.Regex.Replace(String input, String replacement) - at System.Text.RegularExpressions.Regex.Replace(String input, String pattern, String replacement) - at DataLoader.TextConvert.ConvertDOSSuperAndSubScripts(String instr) in C:\Development\PROMS\DataLoader\TextConvert.cs:line 218 - at DataLoader.Loader.MigrateRos(OleDbConnection cn, String textm, String seqcvt, Content content, DocVersion docver, Boolean conv_caret) in C:\Development\PROMS\DataLoader\RefObjs.cs:line 81 -Bad OldToNew Document Style FR-C.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style FR-C.2:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style FR-C.3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style FR-H.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\FRP1.A03 -Bad OldToNew Document Style FR-P.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\FRP2.A03 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\FRI3.A03 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\FRI3.A04 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\proc009.A05 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\proc012.A02 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\proc020.A02 -Missing Transition Destination ECA-1.1|BNS36 - 15533 -Missing Transition Destination ES-3.1|BIS - 22871 -Missing Transition Destination F-0.2|D0 - 18727 -Missing Transition Destination ECA-1.3|AUS33 - 16163 -Missing Transition Destination ECA-1.3|AUS36 - 16164 -Missing Transition Destination ECA-3.3|BBS - 22594 -Missing Transition Destination F-0.5|C0 - 20949 -Missing Transition Destination ECA-1.1|BFS33 - 15441 -Missing Transition Destination ES-0.2|B;S2 - 10712 -Missing Transition Destination ECA-2.1|B9S43 - 16564 -Missing Transition Destination ES-1.3|A6SB - 12507 -Missing Transition Destination F-0.6|E0 - 21213 -Missing Transition Destination ECA-2.1|B9S46 - 16565 -Missing Transition Destination F-0.6|C0 - 21117 -Missing Transition Destination FR-C.1|BFS25 - 19037 -Missing Transition Destination FR-H.1|ABS - 20220 -Missing Transition Destination E-1|B>S32 - 11248 -Missing Transition Destination E-1|B>S34 - 11249 -Missing Transition Destination F-0.3|C0 - 19579 -Missing Transition Destination FR-C.1|BFS26 - 19048 -Missing Transition Destination ECA-3.2|B0S - 17180 -Missing Transition Destination SUP-015|C0 - 20660 -Missing Transition Destination FR-C.2|B@S36 - 19440 -Missing Transition Destination FR-C.1|B@S36 - 18954 -Missing Transition Destination F-0.4|B0 - 12823 -Missing Transition Destination ECA-1.3|ANS36 - 16076 -Missing Transition Destination ECA-0.1|A5S - 14908 -Missing Transition Destination E-3|CES - 13327 -Missing Transition Destination ECA-1.1|BFS36 - 15442 -Missing Transition Destination ECA-1.3|ANS33 - 16075 -Missing Transition Destination ECA-1.1|BNS33 - 15532 -Missing Transition Destination F-0.1|C0 - 18472 -Missing Transition Destination FR-C.1|BIS36 - 19111 -Conversion completion time: 00:10:24.74 diff --git a/PROMS/DataLoader/logfile/AEP Database & Log Files/AOP1 and Du1 ConversionGlitches.xml b/PROMS/DataLoader/logfile/AEP Database & Log Files/AOP1 and Du1 ConversionGlitches.xml deleted file mode 100644 index 04ca7aec..00000000 --- a/PROMS/DataLoader/logfile/AEP Database & Log Files/AOP1 and Du1 ConversionGlitches.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/DataLoader/logfile/AEP Database & Log Files/All 1s ConversionErrors.txt b/PROMS/DataLoader/logfile/AEP Database & Log Files/All 1s ConversionErrors.txt deleted file mode 100644 index 61e610f0..00000000 --- a/PROMS/DataLoader/logfile/AEP Database & Log Files/All 1s ConversionErrors.txt +++ /dev/null @@ -1,181 +0,0 @@ -Computer Name: KATHY-VISTA -Data Set: c:\16bit\debug\veaep\aop1.prc -Bad OldToNew Document Style 001-006:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\aop1.prc\rtffiles\proc013.A03 -Error in -Bad OldToNew Document Style 002-001:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\aop1.prc\rtffiles\PROC009.A03 -Bad OldToNew Document Style 012-005:Attachment C dStyleIndex = 'A ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP & AOP Single Column Attachment Pages - BOLD STEPS (AEP01) - Missing OldToNew 1024 -Processing c:\16bit\debug\veaep\aop1.prc\rtffiles\proc022.A06 -Processing c:\16bit\debug\veaep\aop1.prc\rtffiles\proc031.A04 -Processing c:\16bit\debug\veaep\aop1.prc\rtffiles\proc031.A08 -Processing c:\16bit\debug\veaep\aop1.prc\rtffiles\proc031.A07 -Missing Transition Destination 017-001|K0 - 9495 -Missing Transition Destination 017-001|J0 - 9494 -Missing Transition Destination 001-006|A?S3 - 884 -Missing Transition Destination 017-001|F0 - 9683 -Missing Transition Destination 017-001|E0 - 9545 -Missing Transition Destination 017-001|B1S - 9615 -Missing Transition Destination 017-001|B0 - 9620 -Missing Transition Destination 016.004|J=S7 - 8010 -Missing Transition Destination 017-001|I0 - 9275 -Missing Transition Destination 016-004|AÇS - 7633 -Data Set: c:\16bit\debug\veaep\appr1.prc -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc001.A02 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc001.A04 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc001.A05 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc001.A06 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc001.A09 -Error in -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc001.A08 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc002.A06 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc003.A04 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc003.A08 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc003.A05 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc003.A06 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc004.A04 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc004.A09 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc004.A05 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc004.A07 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc005.A05 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc000.A05 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc007.A03 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc008.A06 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc008.A05 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc009.A03 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc010.A03 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc011.A05 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc012.A03 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc013.A10 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc014.A02 -Bad OldToNew Document Style R-8:Table R-8-A dStyleIndex = 'I ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP & AOP Single Column Attachment Pages - BOLD STEPS (AEP01) - Missing OldToNew 32 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc023.A02 -Bad OldToNew Document Style R-8:Table R-8-B dStyleIndex = 'I ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP & AOP Single Column Attachment Pages - BOLD STEPS (AEP01) - Missing OldToNew 32 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc023.A04 -Bad OldToNew Document Style R-8:Table R-8-C dStyleIndex = 'I ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP & AOP Single Column Attachment Pages - BOLD STEPS (AEP01) - Missing OldToNew 32 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc023.A06 -Bad OldToNew Document Style R-8:Table R-8-D dStyleIndex = 'I ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP & AOP Single Column Attachment Pages - BOLD STEPS (AEP01) - Missing OldToNew 32 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc023.A08 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc027.A25 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc027.A26 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc027.A27 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc027.A28 -Processing c:\16bit\debug\veaep\appr1.prc\rtffiles\proc027.A29 -Missing Transition Destination R-12|A6S - 14134 -Data Set: c:\16bit\debug\veaep\du1.prc -Cannot Find Image File c:\16bit\debug\veaep\ro\CNTRLRM1.GIF -Cannot Find Image File c:\16bit\debug\veaep\ro\CNTRLRM2.GIF -Cannot Find Image File c:\16bit\debug\veaep\ro\CNTLRM12.GIF -Cannot Find Image File c:\16bit\debug\veaep\ro\CNTLRM11.GIF -Cannot Find Image File c:\16bit\debug\veaep\ro\STMTABLE.GIF -Cannot Find Image File c:\16bit\debug\veaep\ro\HV2.GIF -Bad OldToNew Document Style E-0:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-0.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\ES02.A05 -Bad OldToNew Document Style ES-0.2:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\ES03.A03 -Bad OldToNew Document Style ES-0.3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style E-1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-1.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-1.2:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-1.3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style E-3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-3.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-3.2:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ES-3.3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\ECA00.A01 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\ECA00.A04 -Bad OldToNew Document Style ECA-0.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\ECA11.A03 -Bad OldToNew Document Style ECA-1.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\proc022.A03 -Bad OldToNew Document Style ECA-1.3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ECA-2.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\ECA31.A03 -Bad OldToNew Document Style ECA-3.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ECA-3.2:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style ECA-3.3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\proc004.A07 -MigrateRos 'F-0.5' 'A2S' 0 - ArgumentNullException - Value cannot be null. -Parameter name: input at System.Text.RegularExpressions.Regex.Replace(String input, String replacement) - at System.Text.RegularExpressions.Regex.Replace(String input, String pattern, String replacement) - at DataLoader.TextConvert.ConvertDOSSuperAndSubScripts(String instr) in C:\Development\PROMS\DataLoader\TextConvert.cs:line 218 - at DataLoader.Loader.MigrateRos(OleDbConnection cn, String textm, String seqcvt, Content content, DocVersion docver, Boolean conv_caret) in C:\Development\PROMS\DataLoader\RefObjs.cs:line 81 -Bad OldToNew Document Style FR-C.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style FR-C.2:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style FR-C.3:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Bad OldToNew Document Style FR-H.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\FRP1.A03 -Bad OldToNew Document Style FR-P.1:FOLDOUT dStyleIndex = '0 ' -D.C. Cook EOP and AOP Format - D.C. Cook EOP - Foldout Pages (AEP00) - Missing OldToNew 1 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\FRP2.A03 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\FRI3.A03 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\FRI3.A04 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\proc009.A05 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\proc012.A02 -Processing c:\16bit\debug\veaep\du1.prc\rtffiles\proc020.A02 -Missing Transition Destination ECA-1.1|BNS36 - 20870 -Missing Transition Destination ES-3.1|BIS - 28208 -Missing Transition Destination F-0.2|D0 - 24064 -Missing Transition Destination ECA-1.3|AUS33 - 21500 -Missing Transition Destination ECA-1.3|AUS36 - 21501 -Missing Transition Destination ECA-3.3|BBS - 27931 -Missing Transition Destination F-0.5|C0 - 26286 -Missing Transition Destination ECA-1.1|BFS33 - 20778 -Missing Transition Destination ES-0.2|B;S2 - 16049 -Missing Transition Destination ECA-2.1|B9S43 - 21901 -Missing Transition Destination ES-1.3|A6SB - 17844 -Missing Transition Destination F-0.6|E0 - 26550 -Missing Transition Destination ECA-2.1|B9S46 - 21902 -Missing Transition Destination F-0.6|C0 - 26454 -Missing Transition Destination FR-C.1|BFS25 - 24374 -Missing Transition Destination FR-H.1|ABS - 25557 -Missing Transition Destination E-1|B>S32 - 16585 -Missing Transition Destination E-1|B>S34 - 16586 -Missing Transition Destination F-0.3|C0 - 24916 -Missing Transition Destination FR-C.1|BFS26 - 24385 -Missing Transition Destination ECA-3.2|B0S - 22517 -Missing Transition Destination SUP-015|C0 - 25997 -Missing Transition Destination FR-C.2|B@S36 - 24777 -Missing Transition Destination FR-C.1|B@S36 - 24291 -Missing Transition Destination F-0.4|B0 - 18160 -Missing Transition Destination ECA-1.3|ANS36 - 21413 -Missing Transition Destination ECA-0.1|A5S - 20245 -Missing Transition Destination E-3|CES - 18664 -Missing Transition Destination ECA-1.1|BFS36 - 20779 -Missing Transition Destination ECA-1.3|ANS33 - 21412 -Missing Transition Destination ECA-1.1|BNS33 - 20869 -Missing Transition Destination F-0.1|C0 - 23809 -Missing Transition Destination FR-C.1|BIS36 - 24448 -Conversion completion time: 00:13:35.809 diff --git a/PROMS/DataLoader/logfile/AEP Database & Log Files/All 1s ConversionGlitches.xml b/PROMS/DataLoader/logfile/AEP Database & Log Files/All 1s ConversionGlitches.xml deleted file mode 100644 index 04ca7aec..00000000 --- a/PROMS/DataLoader/logfile/AEP Database & Log Files/All 1s ConversionGlitches.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/DataLoader/logfile/AEP Database & Log Files/VEPROMS.zip b/PROMS/DataLoader/logfile/AEP Database & Log Files/VEPROMS.zip deleted file mode 100644 index 47ae975f..00000000 Binary files a/PROMS/DataLoader/logfile/AEP Database & Log Files/VEPROMS.zip and /dev/null differ diff --git a/PROMS/DataLoader/logfile/Backup.bat b/PROMS/DataLoader/logfile/Backup.bat deleted file mode 100644 index 09557e81..00000000 --- a/PROMS/DataLoader/logfile/Backup.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMS] to disk = 'C:\Development\PROMS\DataLoader\logfile\.bak'" -pause diff --git a/PROMS/DataLoader/logfile/BackupVEPROMS.bat b/PROMS/DataLoader/logfile/BackupVEPROMS.bat deleted file mode 100644 index 343fafdc..00000000 --- a/PROMS/DataLoader/logfile/BackupVEPROMS.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMS] to disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMS.bak'" -pause diff --git a/PROMS/DataLoader/logfile/BackupVEPROMSRGE_AbbyProc.bat b/PROMS/DataLoader/logfile/BackupVEPROMSRGE_AbbyProc.bat deleted file mode 100644 index 4d0d5710..00000000 --- a/PROMS/DataLoader/logfile/BackupVEPROMSRGE_AbbyProc.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMSRGE_AbbyProc] to disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSRGE_AbbyProc.bak'" -pause diff --git a/PROMS/DataLoader/logfile/BackupVEPROMSRGE_Rev1SAMG.bat b/PROMS/DataLoader/logfile/BackupVEPROMSRGE_Rev1SAMG.bat deleted file mode 100644 index 6c239394..00000000 --- a/PROMS/DataLoader/logfile/BackupVEPROMSRGE_Rev1SAMG.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMSRGE_Rev1SAMG] to disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSRGE_Rev1SAMG.bak'" -pause diff --git a/PROMS/DataLoader/logfile/BackupVEPROMSWCNADM_AI.bat b/PROMS/DataLoader/logfile/BackupVEPROMSWCNADM_AI.bat deleted file mode 100644 index 2ebc100a..00000000 --- a/PROMS/DataLoader/logfile/BackupVEPROMSWCNADM_AI.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMSWCNADM_AI] to disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNADM_AI.bak'" -pause diff --git a/PROMS/DataLoader/logfile/BackupVEPROMSWCNALR_ALRCRJune11.bat b/PROMS/DataLoader/logfile/BackupVEPROMSWCNALR_ALRCRJune11.bat deleted file mode 100644 index 58bfc620..00000000 --- a/PROMS/DataLoader/logfile/BackupVEPROMSWCNALR_ALRCRJune11.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMS_WCNALR_ALRCR] to disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNALR_ALRCRJune11.bak'" -pause diff --git a/PROMS/DataLoader/logfile/BackupVEPROMSWCNALR_ALRCRJune12.bat b/PROMS/DataLoader/logfile/BackupVEPROMSWCNALR_ALRCRJune12.bat deleted file mode 100644 index 583af691..00000000 --- a/PROMS/DataLoader/logfile/BackupVEPROMSWCNALR_ALRCRJune12.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMS_WCNALR_ALRCR] to disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNALR_ALRCRJune12.bak'" -pause diff --git a/PROMS/DataLoader/logfile/BackupVEPROMSWCNALR_ALRLOCALJune12.bat b/PROMS/DataLoader/logfile/BackupVEPROMSWCNALR_ALRLOCALJune12.bat deleted file mode 100644 index 87aaac96..00000000 --- a/PROMS/DataLoader/logfile/BackupVEPROMSWCNALR_ALRLOCALJune12.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMS_WCNALR_ALRLOCAL] to disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNALR_ALRLOCALJune12.bak'" -pause diff --git a/PROMS/DataLoader/logfile/BackupVEPROMSWCNCAP_AIJune12.bat b/PROMS/DataLoader/logfile/BackupVEPROMSWCNCAP_AIJune12.bat deleted file mode 100644 index 4d0c2c07..00000000 --- a/PROMS/DataLoader/logfile/BackupVEPROMSWCNCAP_AIJune12.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMS_WCNCAP_AI] to disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNCAP_AIJune12.bak'" -pause diff --git a/PROMS/DataLoader/logfile/BackupVEPROMSWCNFP.bat b/PROMS/DataLoader/logfile/BackupVEPROMSWCNFP.bat deleted file mode 100644 index 5a6db7d7..00000000 --- a/PROMS/DataLoader/logfile/BackupVEPROMSWCNFP.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMSWCNFP] to disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNFP.bak'" -pause diff --git a/PROMS/DataLoader/logfile/BackupVEPROMSWCNSYS_SYS.bat b/PROMS/DataLoader/logfile/BackupVEPROMSWCNSYS_SYS.bat deleted file mode 100644 index 99211edc..00000000 --- a/PROMS/DataLoader/logfile/BackupVEPROMSWCNSYS_SYS.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMS_WCNSYS_SYS] to disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNSYS_SYS.bak'" -pause diff --git a/PROMS/DataLoader/logfile/BackupVEPROMS_RGE_EOPS.bat b/PROMS/DataLoader/logfile/BackupVEPROMS_RGE_EOPS.bat deleted file mode 100644 index d225e7d6..00000000 --- a/PROMS/DataLoader/logfile/BackupVEPROMS_RGE_EOPS.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMS_Ginna_EOPS] to disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMS_RGE_EOPS.bak'" -pause diff --git a/PROMS/DataLoader/logfile/BackupVEPROMS_WCN_EMGS.bat b/PROMS/DataLoader/logfile/BackupVEPROMS_WCN_EMGS.bat deleted file mode 100644 index 0beb35b6..00000000 --- a/PROMS/DataLoader/logfile/BackupVEPROMS_WCN_EMGS.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "backup database [VEPROMS_WCN_EMGS] to disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMS_WCN_EMGS.bak'" -pause diff --git a/PROMS/DataLoader/logfile/ConversionErrors.txt b/PROMS/DataLoader/logfile/ConversionErrors.txt deleted file mode 100644 index f391a34b..00000000 --- a/PROMS/DataLoader/logfile/ConversionErrors.txt +++ /dev/null @@ -1,1022 +0,0 @@ -Changed database context to 'master'. -Dropping existing database VEPROMS_WCNCAP_AI -Creating Database VEPROMS_WCNCAP_AI - C:\Development\PROMS\Data\VEPROMS_WCNCAP_AI.mdf -VEPROMS_WCNCAP_AI Created -DBCC execution completed. If DBCC printed error messages, contact your system administrator. -{sp_dbcmptlevel} Completed -Changed database context to 'VEPROMS_WCNCAP_AI'. -Trigger Fired -Changed database context to 'master'. -Adding procedures and functions to VEPROMS_WCNCAP_AI -Table Creation: DeleteLog Succeeded -Procedure Creation: vlnErrorHandler Succeeded -Procedure Creation: addAnnotation Succeeded -Procedure Creation: addAnnotationType Succeeded -Procedure Creation: addAssignment Succeeded -Procedure Creation: addAssociation Succeeded -Procedure Creation: addConnection Succeeded -Procedure Creation: addContent Succeeded -Procedure Creation: addDetail Succeeded -Procedure Creation: addDocument Succeeded -Procedure Creation: addDocVersion Succeeded -Procedure Creation: addDROUsage Succeeded -Procedure Creation: addEntry Succeeded -Procedure Creation: addFigure Succeeded -Procedure Creation: addFiguresByROFstIDandImageIDs Succeeded -Procedure Creation: addFolder Succeeded -Procedure Creation: addFormat Succeeded -Procedure Creation: addGrid Succeeded -Procedure Creation: addGroup Succeeded -Procedure Creation: addImage Succeeded -Procedure Creation: addItem Succeeded -Procedure Creation: addPart Succeeded -Procedure Creation: updatePart Succeeded -Procedure Creation: getItem Succeeded -Procedure Creation: addItemChild Succeeded -Procedure Creation: addItemSiblingAfter Succeeded -Procedure Creation: addItemSiblingBefore Succeeded -Procedure Creation: addMembership Succeeded -Procedure Creation: addPdf Succeeded -Procedure Creation: addPermission Succeeded -Procedure Creation: addRODb Succeeded -Procedure Creation: addROFst Succeeded -Procedure Creation: addROImage Succeeded -Procedure Creation: addRole Succeeded -Procedure Creation: addRoUsage Succeeded -Procedure Creation: addTransition Succeeded -Procedure Creation: addUser Succeeded -Procedure Creation: addZContent Succeeded -Procedure Creation: addZTransition Succeeded -Procedure Creation: CopyItemAndChildren Succeeded -Procedure Creation: deleteAllPdfs Succeeded -Procedure Creation: deleteAnnotation Succeeded -Procedure Creation: deleteAnnotationType Succeeded -Procedure Creation: deleteAssignment Succeeded -Procedure Creation: deleteAssociation Succeeded -Procedure Creation: deleteConnection Succeeded -Procedure Creation: deleteContent Succeeded -Procedure Creation: deleteDetail Succeeded -Procedure Creation: deleteDocument Succeeded -Procedure Creation: deleteDocVersion Succeeded -Procedure Creation: deleteDROUsage Succeeded -Procedure Creation: deleteEntry Succeeded -Procedure Creation: deleteFigure Succeeded -Procedure Creation: deleteFolder Succeeded -Procedure Creation: deleteFormat Succeeded -Procedure Creation: deleteGrid Succeeded -Procedure Creation: deleteGroup Succeeded -Procedure Creation: deleteImage Succeeded -Procedure Creation: deleteItem Succeeded -Procedure Creation: DeleteItemAndChildren Succeeded -Procedure Creation: DeleteItemAndChildrenTest Succeeded -Procedure Creation: deleteMembership Succeeded -Procedure Creation: deletePart Succeeded -Procedure Creation: deletePdf Succeeded -Procedure Creation: deletePermission Succeeded -Procedure Creation: deleteRODb Succeeded -Procedure Creation: deleteROFst Succeeded -Procedure Creation: deleteROImage Succeeded -Procedure Creation: deleteRole Succeeded -Procedure Creation: deleteRoUsage Succeeded -Procedure Creation: deleteTransition Succeeded -Procedure Creation: deleteUser Succeeded -Procedure Creation: deleteZContent Succeeded -Procedure Creation: deleteZTransition Succeeded -Procedure Creation: existsAnnotation Succeeded -Procedure Creation: existsAnnotationType Succeeded -Procedure Creation: existsAssignment Succeeded -Procedure Creation: existsAssociation Succeeded -Procedure Creation: existsConnection Succeeded -Procedure Creation: existsContent Succeeded -Procedure Creation: existsDetail Succeeded -Procedure Creation: existsDocument Succeeded -Procedure Creation: existsDocVersion Succeeded -Procedure Creation: existsDROUsage Succeeded -Procedure Creation: existsEntry Succeeded -Procedure Creation: existsFigure Succeeded -Procedure Creation: existsFolder Succeeded -Procedure Creation: existsFormat Succeeded -Procedure Creation: existsGrid Succeeded -Procedure Creation: existsGroup Succeeded -Procedure Creation: existsImage Succeeded -Procedure Creation: existsItem Succeeded -Procedure Creation: existsMembership Succeeded -Procedure Creation: existsPart Succeeded -Procedure Creation: existsPdf Succeeded -Procedure Creation: existsPermission Succeeded -Procedure Creation: existsRODb Succeeded -Procedure Creation: existsROFst Succeeded -Procedure Creation: existsROImage Succeeded -Procedure Creation: existsRole Succeeded -Procedure Creation: existsRoUsage Succeeded -Procedure Creation: existsTransition Succeeded -Procedure Creation: existsUser Succeeded -Procedure Creation: existsZContent Succeeded -Procedure Creation: existsZTransition Succeeded -TableFunction Creation: FindText Succeeded -Procedure Creation: getAffectedDRoUsages Succeeded -Procedure Creation: getAffectedRoUsages Succeeded -Procedure Creation: getAffectedTransitions Succeeded -Procedure Creation: getAnnotation Succeeded -Procedure Creation: getAnnotations Succeeded -Procedure Creation: getAnnotationsByItemID Succeeded -Procedure Creation: getAnnotationsByTypeID Succeeded -Procedure Creation: getAnnotationType Succeeded -Procedure Creation: getAnnotationTypeByName Succeeded -Procedure Creation: getAnnotationTypes Succeeded -Procedure Creation: getAssignment Succeeded -Procedure Creation: getAssignments Succeeded -Procedure Creation: getAssignmentsByFolderID Succeeded -Procedure Creation: getAssignmentsByGID Succeeded -Procedure Creation: getAssignmentsByRID Succeeded -Procedure Creation: getAssociation Succeeded -Procedure Creation: getAssociationByVersionID_ROFstID Succeeded -Procedure Creation: getAssociations Succeeded -Procedure Creation: getAssociationsByROFstID Succeeded -Procedure Creation: getAssociationsByVersionID Succeeded -Procedure Creation: getChildFolders Succeeded -Procedure Creation: getChildFormats Succeeded -Procedure Creation: getConnection Succeeded -Procedure Creation: getConnectionByName Succeeded -Procedure Creation: getConnections Succeeded -Procedure Creation: getContent Succeeded -Procedure Creation: getContentAudit Succeeded -Procedure Creation: getContentAudits Succeeded -Procedure Creation: getContentAuditsByContentID Succeeded -Procedure Creation: getContents Succeeded -Procedure Creation: getContentsByFormatID Succeeded -Procedure Creation: getDetail Succeeded -Procedure Creation: getDetails Succeeded -Procedure Creation: getDetailsByContentID Succeeded -Procedure Creation: getDocument Succeeded -Procedure Creation: getDocumentAudit Succeeded -Procedure Creation: getDocumentAudits Succeeded -Procedure Creation: getDocumentAuditsByDocID Succeeded -Procedure Creation: getDocuments Succeeded -Procedure Creation: getDocVersion Succeeded -Procedure Creation: getDocVersions Succeeded -Procedure Creation: getDocVersionsByFolderID Succeeded -Procedure Creation: getDocVersionsByFormatID Succeeded -Procedure Creation: getDocVersionsByItemID Succeeded -Procedure Creation: getDROUsage Succeeded -Procedure Creation: getDROUsages Succeeded -Procedure Creation: getDROUsagesByDocID Succeeded -Procedure Creation: getDROUsagesByRODbID Succeeded -Procedure Creation: getDRoUsagesByROIDs Succeeded -Procedure Creation: getEntries Succeeded -Procedure Creation: getEntriesByContentID Succeeded -Procedure Creation: getEntriesByDocID Succeeded -Procedure Creation: getEntry Succeeded -Procedure Creation: getEntryAudit Succeeded -Procedure Creation: getEntryAudits Succeeded -Procedure Creation: getEntryAuditsByContentID Succeeded -Procedure Creation: getExternalTransitions Succeeded -Procedure Creation: getExternalTransitionsToChildren Succeeded -Procedure Creation: getFigure Succeeded -Procedure Creation: getFigureByROFstID_ImageID Succeeded -Procedure Creation: getFigures Succeeded -Procedure Creation: getFiguresByImageID Succeeded -Procedure Creation: getFiguresByROFstID Succeeded -Procedure Creation: getFolder Succeeded -Procedure Creation: getFolderByParentID_Name Succeeded -Procedure Creation: getFolders Succeeded -Procedure Creation: getFoldersByDBID Succeeded -Procedure Creation: getFoldersByFormatID Succeeded -Procedure Creation: getFormat Succeeded -Procedure Creation: getJustFormat Succeeded -Procedure Creation: getFormat Succeeded -Procedure Creation: getFormatByParentID_Name Succeeded -Procedure Creation: getFormats Succeeded -Procedure Creation: getGrid Succeeded -Procedure Creation: getGridAudit Succeeded -Procedure Creation: getGridAudits Succeeded -Procedure Creation: getGridAuditsByContentID Succeeded -Procedure Creation: getGrids Succeeded -Procedure Creation: getGridsByContentID Succeeded -Procedure Creation: getGroup Succeeded -Procedure Creation: getGroupByGroupName Succeeded -Procedure Creation: getGroups Succeeded -Procedure Creation: getImage Succeeded -Procedure Creation: getImageAudit Succeeded -Procedure Creation: getImageAudits Succeeded -Procedure Creation: getImageAuditsByContentID Succeeded -Procedure Creation: getImages Succeeded -Procedure Creation: getImagesByContentID Succeeded -Procedure Creation: getItemAndChildren Succeeded -Procedure Creation: getItemAudit Succeeded -Procedure Creation: getItemAudits Succeeded -Procedure Creation: getItemAuditsByItemID Succeeded -Procedure Creation: getItemNextAndChildren Succeeded -Procedure Creation: getItems Succeeded -Procedure Creation: getItemsByContentID Succeeded -Procedure Creation: getItemsByPartType Succeeded -Procedure Creation: getItemsByPartTypeAndContent Succeeded -Procedure Creation: getJustRODb Succeeded -Procedure Creation: getJustROFst Succeeded -Procedure Creation: getLibraryDocuments Succeeded -Procedure Creation: getMembership Succeeded -Procedure Creation: getMemberships Succeeded -Procedure Creation: getMembershipsByGID Succeeded -Procedure Creation: getMembershipsByUID Succeeded -Procedure Creation: getNextItems Succeeded -Procedure Creation: getParentFolder Succeeded -Procedure Creation: getParentFormat Succeeded -Procedure Creation: getPart Succeeded -Procedure Creation: getPartAudit Succeeded -Procedure Creation: getPartAudits Succeeded -Procedure Creation: getPartAuditsByContentID Succeeded -Procedure Creation: getParts Succeeded -Procedure Creation: getPartsByContentID Succeeded -Procedure Creation: getPartsByItemID Succeeded -Procedure Creation: getPastedAffectedTransitions Succeeded -Procedure Creation: getPdf Succeeded -Procedure Creation: getPdfs Succeeded -Procedure Creation: getPdfsByDocID Succeeded -Procedure Creation: getPermission Succeeded -Procedure Creation: getPermissions Succeeded -Procedure Creation: getPermissionsByRID Succeeded -Procedure Creation: getPreviousItem Succeeded -Procedure Creation: getRODb Succeeded -Procedure Creation: getRODbByFolderPath Succeeded -Procedure Creation: getRODbs Succeeded -Procedure Creation: getROFst Succeeded -Procedure Creation: getROFstByRODbID_DTS Succeeded -Procedure Creation: getRoFstBySize Succeeded -Procedure Creation: getROFsts Succeeded -Procedure Creation: getROFstsByRODbID Succeeded -Procedure Creation: getROImage Succeeded -Procedure Creation: getROImageByRODbID_FileName_DTS Succeeded -Procedure Creation: getROImageByROFstID_FileName Succeeded -Procedure Creation: getROImages Succeeded -Procedure Creation: getROImagesByRODbID Succeeded -Procedure Creation: getROImagesByRODbIDNoData Succeeded -Procedure Creation: getRole Succeeded -Procedure Creation: getRoleByName Succeeded -Procedure Creation: getRoles Succeeded -Procedure Creation: getRoUsage Succeeded -Procedure Creation: getRoUsages Succeeded -Procedure Creation: getRoUsagesByContentID Succeeded -Procedure Creation: getRoUsagesByRODbID Succeeded -Procedure Creation: getRoUsagesByROIDs Succeeded -Procedure Creation: getTopFolder Succeeded -Procedure Creation: getTransition Succeeded -Procedure Creation: getTransitions Succeeded -Procedure Creation: getTransitionsByFromID Succeeded -Procedure Creation: getTransitionsByRangeID Succeeded -Procedure Creation: getTransitionsByToID Succeeded -Procedure Creation: getUser Succeeded -Procedure Creation: getUsers Succeeded -Procedure Creation: getZContent Succeeded -Procedure Creation: getZContents Succeeded -Procedure Creation: getZContentsByContentID Succeeded -Procedure Creation: getZTransition Succeeded -Procedure Creation: getZTransitions Succeeded -Procedure Creation: getZTransitionsByTransitionID Succeeded -Procedure Creation: PasteItemReplace Succeeded -Procedure Creation: PasteItemSiblingAfter Succeeded -Procedure Creation: PasteItemSiblingBefore Succeeded -Procedure Creation: purgeData Succeeded -Procedure Creation: Standardize Succeeded -Procedure Creation: updateAnnotation Succeeded -Procedure Creation: updateAnnotationType Succeeded -Procedure Creation: updateAssignment Succeeded -Procedure Creation: updateAssociation Succeeded -Procedure Creation: updateConnection Succeeded -Procedure Creation: updateContent Succeeded -Procedure Creation: updateDetail Succeeded -Procedure Creation: updateDocument Succeeded -Procedure Creation: updateDocVersion Succeeded -Procedure Creation: updateDROUsage Succeeded -Procedure Creation: updateEntry Succeeded -Procedure Creation: updateFigure Succeeded -Procedure Creation: updateFolder Succeeded -Procedure Creation: updateFormat Succeeded -Procedure Creation: updateGrid Succeeded -Procedure Creation: updateGroup Succeeded -Procedure Creation: updateImage Succeeded -Procedure Creation: updateItem Succeeded -Procedure Creation: updateMembership Succeeded -Procedure Creation: updatePdf Succeeded -Procedure Creation: updatePermission Succeeded -Procedure Creation: updateRODb Succeeded -Procedure Creation: updateROFst Succeeded -Procedure Creation: updateROImage Succeeded -Procedure Creation: updateRole Succeeded -Procedure Creation: updateRoUsage Succeeded -Procedure Creation: updateTransition Succeeded -Procedure Creation: updateUser Succeeded -Procedure Creation: updateZContent Succeeded -Procedure Creation: updateZTransition Succeeded -ScalarFunction Creation: ve_GetChildCount Succeeded -ScalarFunction Creation: ve_GetFolderPath Succeeded -ScalarFunction Creation: ve_GetNextTranCount Succeeded -ScalarFunction Creation: ve_GetParts Succeeded -ScalarFunction Creation: ve_GetPath Succeeded -ScalarFunction Creation: ve_GetPathFromContentID Succeeded -ScalarFunction Creation: ve_GetShortPart Succeeded -ScalarFunction Creation: ve_GetShortPath Succeeded -ScalarFunction Creation: ve_GetShortPathFromContentID Succeeded -ScalarFunction Creation: ve_GetSiblingCount Succeeded -TableFunction Creation: vefn_AllHighLevelSteps Succeeded -TableFunction Creation: vefn_AllHighLevelStepTransitions Succeeded -ScalarFunction Creation: vefn_AllSections Succeeded -TableFunction Creation: vefn_AnnotationTypeSplit Succeeded -TableFunction Creation: vefn_ChildItems Succeeded -TableFunction Creation: vefn_ChildItemsRange Succeeded -TableFunction Creation: vefn_ChildrenItems Succeeded -ScalarFunction Creation: vefn_CompareTranFormat Succeeded -TableFunction Creation: vefn_DocVersionSplit Succeeded -TableFunction Creation: vefn_DVContent Succeeded -TableFunction Creation: vefn_FindAffectedTransitions Succeeded -TableFunction Creation: vefn_FindContentText Succeeded -TableFunction Creation: vefn_FindExternalChildTransitions Succeeded -TableFunction Creation: vefn_FindExternalTransitions Succeeded -TableFunction Creation: vefn_FindInternalTransitions Succeeded -TableFunction Creation: vefn_FindInternalTransitionsForCopy Succeeded -TableFunction Creation: vefn_FindText Succeeded -ScalarFunction Creation: vefn_FirstLink Succeeded -ScalarFunction Creation: vefn_FixROData Succeeded -ScalarFunction Creation: vefn_FixROText Succeeded -ScalarFunction Creation: vefn_FixSearchString Succeeded -ScalarFunction Creation: vefn_FixTransitionDataForCopy Succeeded -ScalarFunction Creation: vefn_FixTransitionText Succeeded -ScalarFunction Creation: vefn_FixTransitionTextForCopy Succeeded -ScalarFunction Creation: vefn_GetDocumentPageLength Succeeded -TableFunction Creation: vefn_GetFormatField Succeeded -TableFunction Creation: vefn_GetFormatFieldByStepType Succeeded -TableFunction Creation: vefn_GetFormatFieldByStepType2 Succeeded -TableFunction Creation: vefn_GetFormatFieldNoValue Succeeded -TableFunction Creation: vefn_GetFormatValues Succeeded -TableFunction Creation: vefn_GetGenMacMacros Succeeded -ScalarFunction Creation: vefn_GetInheritedFormat Succeeded -ScalarFunction Creation: vefn_GetNewTranType Succeeded -TableFunction Creation: vefn_GetNullFormatValues Succeeded -TableFunction Creation: vefn_GetTokens Succeeded -ScalarFunction Creation: vefn_GetTransFormat Succeeded -TableFunction Creation: vefn_HighLevelStepTransitions Succeeded -TableFunction Creation: vefn_NextStepTransitions Succeeded -ScalarFunction Creation: vefn_RemoveExtraText Succeeded -ScalarFunction Creation: vefn_RemoveRange Succeeded -TableFunction Creation: vefn_SectionFormats Succeeded -TableFunction Creation: vefn_SiblingAndChildrenItems Succeeded -TableFunction Creation: vefn_SiblingChildrenItems Succeeded -TableFunction Creation: vefn_SiblingItems Succeeded -TableFunction Creation: vefn_SplitInt Succeeded -TableFunction Creation: vefn_SplitROSearch Succeeded -ScalarFunction Creation: vefn_XmlPath Succeeded -Procedure Creation: vesp_CleanUpItems Succeeded -Procedure Creation: vesp_GetFormatFields Succeeded -Procedure Creation: vesp_GetFormatFieldsAll Succeeded -Procedure Creation: vesp_GetFormatFieldsByStepType Succeeded -Procedure Creation: vesp_GetFormatFieldsByStepType2 Succeeded -Procedure Creation: vesp_GetFormatFieldsNoValue Succeeded -Procedure Creation: vesp_GetFormatGroupFields Succeeded -Procedure Creation: vesp_GetFormatGroupFieldsByStepType Succeeded -Procedure Creation: vesp_GetFormatGroupFieldsNoValues Succeeded -Procedure Creation: vesp_GetGenMacMacros Succeeded -Procedure Creation: vesp_ListChildren Succeeded -Procedure Creation: vesp_ListContentPath Succeeded -Procedure Creation: vesp_ListContentsByItemID Succeeded -Procedure Creation: vesp_ListItemAndChildren Succeeded -Procedure Creation: vesp_ListItems Succeeded -Procedure Creation: vesp_ListItemsAndContent Succeeded -Procedure Creation: vesp_ListTables Succeeded -Procedure Creation: vesp_ListTables2 Succeeded -Procedure Creation: vesp_ListTables3 Succeeded -Procedure Creation: vesp_ResetFolderManualOrder Succeeded -Procedure Creation: vesp_SearchAnnotationItemAndChildren Succeeded -Procedure Creation: vesp_SearchItemAndChildren Succeeded -Procedure Creation: vesp_SearchItemAndChildrenNew Succeeded -Procedure Creation: vesp_SearchROItemAndChildren Succeeded -Loading Format base -Loading Format AEP -Loading Format AEP_00all.xml -Loading Format AEP_00 -Loading Format AEP_01all.xml -Loading Format AEP_01 -Loading Format AEP_02all.xml -Loading Format AEP_02 -Loading Format AEPAPPR -Loading Format AEPCHID -Loading Format AEPCHID_00all.xml -Loading Format AEPCHID_00 -Loading Format AEPDEV -Loading Format BGEALN -Loading Format BGEEOP -Loading Format BGEEOP_00all.xml -Loading Format BGEEOP_00 -Loading Format BGEOI -Loading Format BGEOI_00all.xml -Loading Format BGEOI_00 -Loading Format BGESTP -Loading Format BGEVL -Loading Format CAL1 -Loading Format CAL2 -Loading Format CAL2_00all.xml -Loading Format CAL2_00 -Loading Format CALBCK -Loading Format CALOTO -Loading Format CATADEV -Loading Format CAT -Loading Format CATBOX -Loading Format CATDEV -Loading Format CATEBCK -Loading Format CPBCK2 -Loading Format CPBCK -Loading Format CPBCK_00all.xml -Loading Format CPBCK_00 -Loading Format CPBCK_01all.xml -Loading Format CPBCK_01 -Loading Format CPLA -Loading Format CPL -Loading Format CPL_00all.xml -Loading Format CPL_00 -Loading Format CPL_01all.xml -Loading Format CPL_01 -Loading Format CPL_02all.xml -Loading Format CPL_02 -Loading Format CPL_03all.xml -Loading Format CPL_03 -Loading Format CPLRDEV -Loading Format CPLS2 -Loading Format CPLS -Loading Format CPLSDEV -Loading Format CPLSSDD -Loading Format CPLSSUM -Loading Format CWE -Loading Format CWE_00all.xml -Loading Format CWE_00 -Loading Format CWE_01all.xml -Loading Format CWE_01 -Loading Format CWEDEV -Loading Format CWER -Loading Format CWER_00all.xml -Loading Format CWER_00 -Loading Format CWER_01all.xml -Loading Format CWER_01 -Loading Format EBCK -Loading Format ELFDEV -Loading Format EN -Loading Format ESFDEV -Loading Format EXCLN -Loading Format EXCLN_00all.xml -Loading Format EXCLN_00 -Loading Format EXCLN_01all.xml -Loading Format EXCLN_01 -Loading Format EXEBCK -Loading Format EXEBCK_00all.xml -Loading Format EXEBCK_00 -Loading Format EXEDEV -Loading Format FNP -Loading Format FNP_00all.xml -Loading Format FNP_00 -Loading Format FNP_01all.xml -Loading Format FNP_01 -Loading Format FNPCAS -Loading Format FNPDEV -Loading Format FNPEBK -Loading Format FPL -Loading Format FPLBCK -Loading Format GEN -Loading Format GENDEV -Loading Format GENPLAN -Loading Format GPCA -Loading Format GPCA_00all.xml -Loading Format GPCA_00 -Loading Format GPC -Loading Format HLP -Loading Format HLPDEV -Loading Format IP2 -Loading Format IP2_00all.xml -Loading Format IP2_00 -Loading Format IP2_01all.xml -Loading Format IP2_01 -Loading Format IP2_02all.xml -Loading Format IP2_02 -Loading Format IP2_03all.xml -Loading Format IP2_03 -Loading Format IP2BCK -Loading Format IP2DEV -Loading Format IP3 -Loading Format IP3_00all.xml -Loading Format IP3_00 -Loading Format IP3_01all.xml -Loading Format IP3_01 -Loading Format IP3_02all.xml -Loading Format IP3_02 -Loading Format IP3_03all.xml -Loading Format IP3_03 -Loading Format IP3_06all.xml -Loading Format IP3_06 -Loading Format IP3_07all.xml -Loading Format IP3_07 -Loading Format IP3_08all.xml -Loading Format IP3_08 -Loading Format IP3_09all.xml -Loading Format IP3_09 -Loading Format IP3_10all.xml -Loading Format IP3_10 -Loading Format IP3_11all.xml -Loading Format IP3_11 -Loading Format IP3_12all.xml -Loading Format IP3_12 -Loading Format IP3_13all.xml -Loading Format IP3_13 -Loading Format IP3_14all.xml -Loading Format IP3_14 -Loading Format IP3_15all.xml -Loading Format IP3_15 -Loading Format IP3DEV -Loading Format IP3DEV_00all.xml -Loading Format IP3DEV_00 -Loading Format MAING -Loading Format MCG -Loading Format MCGBOX -Loading Format MCGDEV -Loading Format MCGEBCK -Loading Format NSPAB -Loading Format NSPAB_00all.xml -Loading Format NSPAB_00 -Loading Format NSPAB_01all.xml -Loading Format NSPAB_01 -Loading Format NSPAB_02all.xml -Loading Format NSPAB_02 -Loading Format NSP -Loading Format NSP_00all.xml -Loading Format NSP_00 -Loading Format NSPARP -Loading Format NSPARP_00all.xml -Loading Format NSPARP_00 -Loading Format NSPBCK -Loading Format NSPDEV -Loading Format NSPEDEV -Loading Format NSPFC -Loading Format NSPIFG2 -Loading Format NSPIFG -Loading Format NSPIFG_00all.xml -Loading Format NSPIFG_00 -Loading Format NSPPE -Loading Format NSPSAM -Loading Format NSPWG -Loading Format OHLP -Loading Format RGE -Loading Format RGEBCK -Loading Format RGEBCK_00all.xml -Loading Format RGEBCK_00 -Loading Format RGEDEV -Loading Format RGESAM1 -Loading Format RGESAM2 -Loading Format RGESMPE -Loading Format ROB -Loading Format ROB_00all.xml -Loading Format ROB_00 -Loading Format ROB_01all.xml -Loading Format ROB_01 -Loading Format ROB_02all.xml -Loading Format ROB_02 -Loading Format SETDEV -Loading Format SHE -Loading Format SHEDEV -Loading Format SHERVSU -Loading Format SHESSD -Loading Format SHESSD_00all.xml -Loading Format SHESSD_00 -Loading Format TP -Loading Format TP_00all.xml -Loading Format TP_00 -Loading Format TPBCK2 -Loading Format TPBCK -Loading Format TPBCK_00all.xml -Loading Format TPBCK_00 -Loading Format TPBCK_01all.xml -Loading Format TPBCK_01 -Loading Format TUECABN -Loading Format TUEC -Loading Format TUECDEV -Loading Format VLNCAS -Loading Format WCN1 -Loading Format WCN2 -Loading Format WCNBCK -Loading Format WCNCKL -Loading Format WCNCLB -Loading Format WCNDEV -Loading Format WCNOFB -Loading Format WEP2 -Loading Format WEPBCK -Loading Format WEPENB -Loading Format WEPENB_00all.xml -Loading Format WEPENB_00 -Loading Format WEPENB_01all.xml -Loading Format WEPENB_01 -Loading Format WEPSAM2 -Loading Format WEPSAMG -Loading Format WPBA -Loading Format WPB -Loading Format WPB_20all.xml -Loading Format WPB_20 -Loading Format WPB_22all.xml -Loading Format WPB_22 -Loading Format WPS -Loading Format WPS_00all.xml -Loading Format WPS_00 -Loading Format WPS_01all.xml -Loading Format WPS_01 -Loading Format WPS_02all.xml -Loading Format WPS_02 -Loading Format WPSARP -Loading Format WPSARP_00all.xml -Loading Format WPSARP_00 -Loading Format WPSBCK -Loading Format WPSBCK_00all.xml -Loading Format WPSBCK_00 -Loading Format WPSDEV -Loading Format WPSDOM -Loading Format WPSDOM_00all.xml -Loading Format WPSDOM_00 -Loading Format WPSDOM_01all.xml -Loading Format WPSDOM_01 -Loading Format WPSDOM_02all.xml -Loading Format WPSDOM_02 -Loading Format WPSOP -Loading Format WPSOP_00all.xml -Loading Format WPSOP_00 -Loading Format WPSOP_01all.xml -Loading Format WPSOP_01 -Loading Format WPSOP_02all.xml -Loading Format WPSOP_02 -Loading Format WPSOP_03all.xml -Loading Format WPSOP_03 -Loading Format WPSOP_04all.xml -Loading Format WPSOP_04 -Loading Format WPSOP_05all.xml -Loading Format WPSOP_05 -Loading Format WPSSAMG -Formats Updated -Processing Procedure AI 28A-001 12189796 -Processing Procedure AI 28A-003 12396264 -Processing Procedure AI 28A-004 12401516 -Processing Procedure AI 28A-005 12406660 -Processing Procedure AI 28A-006 12411724 -Processing Procedure AI 28A-007 12416768 -Processing Procedure AI 28A-008 12421832 -Processing Procedure AI 28A-016 12427096 -Processing Procedure AI 28A-017 12432212 -Processing Procedure AI 28D-001 12437364 -Processing Procedure AI 28E-007 12442484 -Processing Procedure AI 28E-009 12447548 -Processing Procedure AI 34-006 12452776 -Processing Procedure AI XX-XXX 12457888 -Processing Procedure AI 34-XXX 12462948 -Processing Procedure AI 28D-003 12468008 -Processing Procedure AI 28A-010 12473072 -Processing Procedure AI 28A-EVAL 12478668 -Processing Procedure AI28AEVAL-db 12483732 -Processing Procedure AI28AEVAL-mw 12488800 -'Created' 'Not Disposed' 'Not Finalized' -AnnotationType 6 6 6 -Connection 1 1 1 -Content 20 20 20 -DocVersion 1 1 1 -DocVersionInfo 1 1 1 -Folder 4 4 4 -Format 190 188 190 -FormatContents 1 1 1 -FormatDocVersions 1 1 1 -FormatFolder 1 1 1 -FormatFolders 1 1 1 -FormatInfo 2 2 2 -FormatInfoList 1 1 1 -Item 20 20 20 - - - - -Computer Name: KATHY-VISTA -Data Set: c:\16bit\debug\vewcncap\ai.prc -Before MigrateROFST12650728 -'Created' 'Not Disposed' 'Not Finalized' -AnnotationType 6 6 6 -Connection 1 1 1 -ConnectionInfo 1 1 1 -Content 20 20 20 -ContentInfo 1 1 1 -DocVersion 1 1 1 -DocVersionInfo 2 2 2 -DocVersionInfoList 1 1 1 -Folder 4 4 4 -FolderInfo 6 6 6 -FolderInfoList 1 1 1 -Format 190 188 190 -FormatContents 1 1 1 -FormatDocVersions 1 1 1 -FormatFolder 1 1 1 -FormatFolders 1 1 1 -FormatInfo 2 2 2 -FormatInfoList 1 1 1 -Group 1 1 1 -Item 20 20 20 -ItemInfo 1 1 1 -Permission 6 6 6 -Role 6 6 6 -User 3 3 3 -UserMembership 3 3 3 -UserMemberships 3 3 3 - -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-005.TIF -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-016.BMP -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-042.TIF -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-046.TIF -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-052.BMP -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-053.BMP -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-055.TIF -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-056.TIF -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-057.TIF -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-058.TIF -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-059.TIF -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-060.TIF -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-061.TIF -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-064.bmp -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-068.bmp -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-070.TIF -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-075.TIF -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-076.tif -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-077.tif -Cannot Find Image File c:\16bit\debug\WCNRO\RO\00-079.tif -After MigrateROFST92605664 -'Created' 'Not Disposed' 'Not Finalized' -AnnotationType 6 6 6 -AssociationInfo 1 1 1 -AssociationInfoList 1 1 1 -Connection 1 1 1 -ConnectionInfo 1 1 1 -Content 20 20 20 -ContentInfo 1 1 1 -DocVersion 1 1 1 -DocVersionAssociation 1 1 1 -DocVersionAssociations 1 1 1 -DocVersionInfo 2 2 2 -DocVersionInfoList 1 1 1 -Figure 1246 0 0 -Folder 4 4 4 -FolderInfo 6 6 6 -FolderInfoList 1 1 1 -Format 190 188 190 -FormatContents 1 1 1 -FormatDocVersions 1 1 1 -FormatFolder 1 1 1 -FormatFolders 1 1 1 -FormatInfo 2 2 2 -FormatInfoList 1 1 1 -Group 1 1 1 -Item 20 20 20 -ItemInfo 1 1 1 -Permission 6 6 6 -RODb 2 1 1 -RODbInfo 1 1 1 -RODbInfoList 1 1 1 -ROFst 3 1 2 -ROFstAssociation 1 1 1 -ROFstAssociations 1 1 1 -ROFstFigures 1 1 1 -ROFstInfo 1 1 1 -ROImage 1246 0 0 -Role 6 6 6 -User 3 3 3 -UserMembership 3 3 3 -UserMemberships 3 3 3 - -Before MigrateLibDocs92609364 -'Created' 'Not Disposed' 'Not Finalized' -AnnotationType 6 6 6 -AssociationInfo 1 1 1 -AssociationInfoList 1 1 1 -Connection 1 1 1 -ConnectionInfo 1 1 1 -Content 20 20 20 -ContentInfo 1 1 1 -DocVersion 1 1 1 -DocVersionAssociation 1 1 1 -DocVersionAssociations 1 1 1 -DocVersionInfo 2 2 2 -DocVersionInfoList 1 1 1 -Figure 1246 0 0 -Folder 4 4 4 -FolderInfo 6 6 6 -FolderInfoList 1 1 1 -Format 190 188 190 -FormatContents 1 1 1 -FormatDocVersions 1 1 1 -FormatFolder 1 1 1 -FormatFolders 1 1 1 -FormatInfo 2 2 2 -FormatInfoList 1 1 1 -Group 1 1 1 -Item 20 20 20 -ItemInfo 1 1 1 -Permission 6 6 6 -RODb 2 1 1 -RODbInfo 1 1 1 -RODbInfoList 1 1 1 -ROFst 3 1 2 -ROFstAssociation 1 1 1 -ROFstAssociations 1 1 1 -ROFstFigures 1 1 1 -ROFstInfo 1 1 1 -ROImage 1246 0 0 -Role 6 6 6 -User 3 3 3 -UserMembership 3 3 3 -UserMemberships 3 3 3 - -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmpDBA.tmp 92618228 -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp19DD.tmp 92625424 -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp2008.tmp 92625528 -After MigrateLibDocs93017908 -'Created' 'Not Disposed' 'Not Finalized' -AnnotationType 6 6 6 -AssociationInfo 1 1 1 -AssociationInfoList 1 1 1 -Connection 1 1 1 -ConnectionInfo 1 1 1 -Content 20 20 20 -ContentInfo 1 1 1 -Document 3 0 1 -DocVersion 1 1 1 -DocVersionAssociation 1 1 1 -DocVersionAssociations 1 1 1 -DocVersionInfo 2 2 2 -DocVersionInfoList 1 1 1 -Figure 1246 0 0 -Folder 4 4 4 -FolderInfo 6 6 6 -FolderInfoList 1 1 1 -Format 190 188 190 -FormatContents 1 1 1 -FormatDocVersions 1 1 1 -FormatFolder 1 1 1 -FormatFolders 1 1 1 -FormatInfo 2 2 2 -FormatInfoList 1 1 1 -Group 1 1 1 -Item 20 20 20 -ItemInfo 1 1 1 -Permission 6 6 6 -RODb 2 1 1 -RODbInfo 1 1 1 -RODbInfoList 1 1 1 -ROFst 3 1 2 -ROFstAssociation 1 1 1 -ROFstAssociations 1 1 1 -ROFstFigures 1 1 1 -ROFstInfo 1 1 1 -ROImage 1246 0 0 -Role 6 6 6 -User 3 3 3 -UserMembership 3 3 3 -UserMemberships 3 3 3 - -Processing Procedure AI 28A-001 92670508 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc007.A17 106054624 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc007.A41 106219768 -Processing Procedure AI 28A-003 105466624 -Processing Procedure AI 28A-004 106911364 -Processing Procedure AI 28A-005 108264316 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc006.A17 108496588 -Processing Procedure AI 28A-006 109635996 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc013.A27 114593924 -Processing Procedure AI 28A-007 113857712 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc003.A17 120427572 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc003.A41 120593660 -Processing Procedure AI 28A-008 119839016 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc001.A23 122225608 -Processing Procedure AI 28A-016 122238024 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc004.A22 126813288 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc004.A23 126940640 -Processing Procedure AI 28A-017 126635512 -Processing Procedure AI 28D-001 127819580 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc020.A20 128981020 -Processing Procedure AI 28E-007 128683220 -Processing Procedure AI 28E-009 128940672 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc018.A15 130378844 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc018.A17 131163612 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc018.A18 131307996 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc018.A20 131454036 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc018.A19 134683304 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc018.A21 135158696 -Processing Procedure AI 34-006 134135540 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc009.A16 135244832 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc009.A13 136268212 -Processing Procedure AI XX-XXX 136481092 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc021.A16 137050988 -Processing Procedure AI 34-XXX 136921788 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc012.A02 137201396 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc012.A13 139203728 -Processing Procedure AI 28D-003 138661372 -Processing Procedure AI 28A-010 139204456 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc000.A16 143689000 -Processing Procedure AI 28A-EVAL 143019632 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc010.A17 153856148 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc010.A52 154035200 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc010.A53 154187096 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc010.A54 154338960 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc010.A55 154509604 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc010.A56 154668672 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc010.A57 154830424 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc010.A58 154994512 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc010.A59 155157956 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc010.A41 155322724 -Processing Procedure AI28AEVAL-db 152914736 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc002.A17 162375772 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc002.A55 162556800 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc002.A49 162708384 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc002.A50 162860632 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc002.A51 163009624 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc002.A52 163157852 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc002.A53 163305344 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc002.A54 163452840 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc002.A56 163601072 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc002.A41 163751016 -Processing Procedure AI28AEVAL-mw 161730296 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc015.A17 170136036 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc015.A55 170317860 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc015.A49 170469508 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc015.A50 170593700 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc015.A51 170751012 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc015.A52 170891304 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc015.A53 171038796 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc015.A54 171186272 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc015.A56 171334396 -Processing c:\16bit\debug\vewcncap\ai.prc\rtffiles\proc015.A41 171484364 -'Created' 'Not Disposed' 'Not Finalized' -Annotation 5 5 5 -AnnotationType 6 6 6 -AssociationInfo 5 5 5 -AssociationInfoList 5 5 5 -Connection 1 1 1 -ConnectionInfo 1 1 1 -Content 8116 8116 8116 -ContentInfo 8149 1 979 -ContentPart 2601 2601 2601 -ContentParts 2398 2398 2398 -Document 109 1 55 -DocumentDROUsage 15 15 15 -DocumentDROUsages 54 54 54 -DocumentEntries 54 54 54 -DocumentEntry 1 1 1 -DocumentInfo 70 0 11 -DocumentPdf 1 1 1 -DocumentPdfs 54 54 54 -DocVersion 1 1 1 -DocVersionAssociation 1 1 1 -DocVersionAssociations 1 1 1 -DocVersionInfo 6 2 3 -DocVersionInfoList 5 5 2 -Entry 70 70 70 -EntryInfo 70 0 11 -Figure 1246 0 0 -Folder 4 4 4 -FolderInfo 6 6 6 -FolderInfoList 1 1 1 -Format 191 189 191 -FormatContents 1 1 1 -FormatDocVersions 1 1 1 -FormatFolder 1 1 1 -FormatFolders 1 1 1 -FormatInfo 2 2 2 -FormatInfoList 1 1 1 -Grid 5 5 5 -Group 1 1 1 -Item 8116 8116 8116 -ItemAnnotation 5 5 5 -ItemAnnotations 5 5 5 -ItemInfo 8570 1 76 -ItemInfoList 16 1 3 -PartInfo 17 0 1 -PartInfoList 17 17 1 -Pdf 53 0 1 -PdfInfo 123 0 12 -Permission 6 6 6 -RODb 16 15 15 -RODbInfo 1 1 1 -RODbInfoList 1 1 1 -ROFst 3 1 2 -ROFstAssociation 1 1 1 -ROFstAssociations 1 1 1 -ROFstFigures 1 1 1 -ROFstInfo 1 1 1 -ROImage 1246 0 0 -ROImageInfo 14 14 14 -Role 6 6 6 -RoUsage 153 153 153 -Transition 277 0 0 -User 3 3 3 -UserMembership 3 3 3 -UserMemberships 3 3 3 -ZContent 8115 8115 8115 -ZTransition 277 0 0 - - - - -Missing Transition Destination AI28AEVAL-mw|G?S - 7734 -Conversion completion time: 00:05:57.104 \ No newline at end of file diff --git a/PROMS/DataLoader/logfile/ConversionGlitches.xml b/PROMS/DataLoader/logfile/ConversionGlitches.xml deleted file mode 100644 index 8312e1b0..00000000 --- a/PROMS/DataLoader/logfile/ConversionGlitches.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/PROMS/DataLoader/logfile/HLP Database/VEPROMS.zip b/PROMS/DataLoader/logfile/HLP Database/VEPROMS.zip deleted file mode 100644 index 14b1780e..00000000 Binary files a/PROMS/DataLoader/logfile/HLP Database/VEPROMS.zip and /dev/null differ diff --git a/PROMS/DataLoader/logfile/RTBProblems.xml b/PROMS/DataLoader/logfile/RTBProblems.xml deleted file mode 100644 index 54743ab3..00000000 --- a/PROMS/DataLoader/logfile/RTBProblems.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/PROMS/DataLoader/logfile/Restore.bat b/PROMS/DataLoader/logfile/Restore.bat deleted file mode 100644 index 879bfefc..00000000 --- a/PROMS/DataLoader/logfile/Restore.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMS] from disk = 'C:\Development\PROMS\DataLoader\logfile\.bak'" -pause diff --git a/PROMS/DataLoader/logfile/RestoreVEPROMS.bat b/PROMS/DataLoader/logfile/RestoreVEPROMS.bat deleted file mode 100644 index 90567e9c..00000000 --- a/PROMS/DataLoader/logfile/RestoreVEPROMS.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMS] from disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMS.bak'" -pause diff --git a/PROMS/DataLoader/logfile/RestoreVEPROMSRGE_AbbyProc.bat b/PROMS/DataLoader/logfile/RestoreVEPROMSRGE_AbbyProc.bat deleted file mode 100644 index 54549c85..00000000 --- a/PROMS/DataLoader/logfile/RestoreVEPROMSRGE_AbbyProc.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMSRGE_AbbyProc] from disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSRGE_AbbyProc.bak'" -pause diff --git a/PROMS/DataLoader/logfile/RestoreVEPROMSRGE_Rev1SAMG.bat b/PROMS/DataLoader/logfile/RestoreVEPROMSRGE_Rev1SAMG.bat deleted file mode 100644 index 0d7cadd2..00000000 --- a/PROMS/DataLoader/logfile/RestoreVEPROMSRGE_Rev1SAMG.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMSRGE_Rev1SAMG] from disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSRGE_Rev1SAMG.bak'" -pause diff --git a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNADM_AI.bat b/PROMS/DataLoader/logfile/RestoreVEPROMSWCNADM_AI.bat deleted file mode 100644 index 2f6965be..00000000 --- a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNADM_AI.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMSWCNADM_AI] from disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNADM_AI.bak'" -pause diff --git a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNALR_ALRCRJune11.bat b/PROMS/DataLoader/logfile/RestoreVEPROMSWCNALR_ALRCRJune11.bat deleted file mode 100644 index 140e26a1..00000000 --- a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNALR_ALRCRJune11.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMS_WCNALR_ALRCR] from disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNALR_ALRCRJune11.bak'" -pause diff --git a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNALR_ALRCRJune12.bat b/PROMS/DataLoader/logfile/RestoreVEPROMSWCNALR_ALRCRJune12.bat deleted file mode 100644 index 0568bb57..00000000 --- a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNALR_ALRCRJune12.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMS_WCNALR_ALRCR] from disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNALR_ALRCRJune12.bak'" -pause diff --git a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNALR_ALRLOCALJune12.bat b/PROMS/DataLoader/logfile/RestoreVEPROMSWCNALR_ALRLOCALJune12.bat deleted file mode 100644 index ece76dbe..00000000 --- a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNALR_ALRLOCALJune12.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMS_WCNALR_ALRLOCAL] from disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNALR_ALRLOCALJune12.bak'" -pause diff --git a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNCAP_AIJune12.bat b/PROMS/DataLoader/logfile/RestoreVEPROMSWCNCAP_AIJune12.bat deleted file mode 100644 index 2dcc857a..00000000 --- a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNCAP_AIJune12.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMS_WCNCAP_AI] from disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNCAP_AIJune12.bak'" -pause diff --git a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNFP.bat b/PROMS/DataLoader/logfile/RestoreVEPROMSWCNFP.bat deleted file mode 100644 index 381713a4..00000000 --- a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNFP.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMSWCNFP] from disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNFP.bak'" -pause diff --git a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNSYS_SYS.bat b/PROMS/DataLoader/logfile/RestoreVEPROMSWCNSYS_SYS.bat deleted file mode 100644 index 933555b5..00000000 --- a/PROMS/DataLoader/logfile/RestoreVEPROMSWCNSYS_SYS.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMS_WCNSYS_SYS] from disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMSWCNSYS_SYS.bak'" -pause diff --git a/PROMS/DataLoader/logfile/RestoreVEPROMS_RGE_EOPS.bat b/PROMS/DataLoader/logfile/RestoreVEPROMS_RGE_EOPS.bat deleted file mode 100644 index 914d891f..00000000 --- a/PROMS/DataLoader/logfile/RestoreVEPROMS_RGE_EOPS.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMS_Ginna_EOPS] from disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMS_RGE_EOPS.bak'" -pause diff --git a/PROMS/DataLoader/logfile/RestoreVEPROMS_WCN_EMGS.bat b/PROMS/DataLoader/logfile/RestoreVEPROMS_WCN_EMGS.bat deleted file mode 100644 index 0ba7bff5..00000000 --- a/PROMS/DataLoader/logfile/RestoreVEPROMS_WCN_EMGS.bat +++ /dev/null @@ -1,2 +0,0 @@ -sqlcmd -E -S.\sqlexpress -Q "restore database [VEPROMS_WCN_EMGS] from disk = 'C:\Development\PROMS\DataLoader\logfile\VEPROMS_WCN_EMGS.bak'" -pause diff --git a/PROMS/DataLoader/logfile/TUEC Database & Log Files/ConversionErrors.txt b/PROMS/DataLoader/logfile/TUEC Database & Log Files/ConversionErrors.txt deleted file mode 100644 index 9ea4bcd7..00000000 --- a/PROMS/DataLoader/logfile/TUEC Database & Log Files/ConversionErrors.txt +++ /dev/null @@ -1,683 +0,0 @@ -2 copies of MS Word are running -Computer Name: KATHY-VISTA -Data Set: c:\16bit\debug\vetuec\abn0.prc -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc008.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc008.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc000.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc009.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc009.A07 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc009.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc009.A06 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc009.A06 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc010.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc010.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc010.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc010.A25 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc010.A26 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc010.A27 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc010.A35 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc010.A36 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc010.A38 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc011.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc014.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc014.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc012.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc012.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc012.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc001.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc003.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc002.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc013.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc013.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc013.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc013.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc013.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc013.A12 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc013.A09 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc013.A10 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc013.A11 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc013.A08 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc015.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc016.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc017.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc017.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc017.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc004.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc018.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc018.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc018.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc018.A25 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc019.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc019.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc020.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc022.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc021.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc021.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc021.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc021.A25 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc023.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc023.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc023.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc023.A25 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc025.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc025.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc025.A27 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc025.A36 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc025.A40 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc025.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc024.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc024.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc005.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc005.A10 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc005.A11 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc005.A12 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc005.A13 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc005.A14 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc005.A09 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc026.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc026.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc026.A10 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc026.A11 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc026.A12 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc026.A13 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc026.A14 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc026.A15 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc026.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc027.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc028.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc029.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc029.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc029.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc029.A06 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc030.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc030.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc030.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc030.A06 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc031.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc031.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc031.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc031.A09 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc031.A25 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc031.A26 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc032.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc032.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc032.A07 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc032.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc032.A09 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc032.A10 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc033.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc033.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc033.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc034.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc035.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc035.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc035.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc035.A13 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc035.A15 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc035.A16 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc035.A17 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc036.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc036.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc036.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc036.A07 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc037.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc037.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc038.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc038.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc038.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc038.A07 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc039.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc039.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc040.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc040.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc040.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc040.A07 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A05 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A06 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A10 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A11 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A12 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A13 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A14 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A15 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A16 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A17 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A18 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A19 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc006.A09 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc007.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc041.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc041.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc042.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc043.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc043.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc044.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc044.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc044.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc044.A08 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc045.A02 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc045.A23 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc045.A01 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc045.A15 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc045.A25 -Processing c:\16bit\debug\vetuec\abn0.prc\rtffiles\proc045.A26 -Missing Transition Destination ABN-104|N3S - 1907 -Data Set: c:\16bit\debug\vetuec\master.prc -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A22 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A24 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A27 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A26 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A16 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A17 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A18 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A19 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A20 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A21 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc000.A23 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc001.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc001.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc001.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc001.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc001.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc001.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc001.A05 -Error in -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc001.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc001.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc001.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc002.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc002.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc002.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc002.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc002.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A17 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A19 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A18 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A20 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A21 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A22 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A16 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc003.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc004.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc004.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc004.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc004.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc004.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc005.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc005.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc005.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc005.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc005.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc005.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc005.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc005.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc005.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc005.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc005.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc005.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A09 -Error in -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A14 -Error in -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc006.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc007.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc007.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc007.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc007.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc007.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc007.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc007.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc007.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc007.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc008.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc008.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc008.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc008.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc008.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc008.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc008.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc008.A08 -Error in -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc008.A12 -Error in -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc008.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc008.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc009.A16 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A16 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc010.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc011.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc011.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc011.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc011.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc011.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc011.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc011.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc011.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc011.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc011.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc011.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc011.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc012.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc012.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc012.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc012.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc012.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc012.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc015.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc015.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc015.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc015.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc015.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc015.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc015.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc015.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc015.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc015.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc015.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc016.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc016.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc016.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc016.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc016.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc016.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc016.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc016.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc016.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc016.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc016.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc017.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc017.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc017.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc017.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc017.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc017.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc017.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc017.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc017.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc017.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc017.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A16 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A17 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A19 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A20 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A21 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A22 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A23 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A24 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc018.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc019.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc019.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc019.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc019.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc019.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc019.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc019.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A16 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A17 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A18 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A26 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A19 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A20 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A21 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A22 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A23 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A24 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A25 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc020.A27 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A16 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc022.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc023.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc023.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc023.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A16 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc025.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A21 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A16 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A17 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A18 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A20 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A19 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc028.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A16 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A17 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A18 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A19 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc029.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A16 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc030.A17 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc037.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc037.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc037.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc037.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc037.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc037.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc037.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc037.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc037.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc037.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc038.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc038.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc038.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc038.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc038.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc038.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc039.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc039.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc039.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc039.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc039.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc039.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc039.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc039.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc039.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc039.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc039.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\PROC013.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\PROC013.A03 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\PROC013.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\PROC013.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\PROC013.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\PROC013.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\PROC013.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\PROC013.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\PROC013.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\PROC013.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\PROC013.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc040.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc040.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc040.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc040.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc040.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc040.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc040.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc040.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc040.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc040.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc041.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc041.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc041.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc041.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc041.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc041.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc043.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc043.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc043.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc043.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc043.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc043.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc043.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc043.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc043.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc043.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc043.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc043.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc044.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc044.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc044.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc044.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc044.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc044.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc045.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc045.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc045.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc045.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc045.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc046.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc046.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc046.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc046.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc046.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc046.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc047.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc047.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc047.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc047.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc047.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc047.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc047.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc047.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc047.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc048.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc049.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc049.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc049.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc049.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc049.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc049.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc049.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc049.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc050.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc050.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc050.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc050.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc050.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc050.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc050.A11 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc050.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc050.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc050.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc050.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc050.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc051.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc051.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc051.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc051.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc052.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc052.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc052.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc052.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc052.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc052.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc053.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc053.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc053.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc053.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc053.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc053.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc053.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc054.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc054.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc054.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc054.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc054.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A02 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A04 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A13 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A14 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A15 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A16 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A17 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A06 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A07 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A08 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A12 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A09 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A10 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc055.A11 -Missing rtf file: c:\16bit\debug\vetuec\master.prc\rtffiles\proc056.A01 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc056.A02 -Missing rtf file: c:\16bit\debug\vetuec\master.prc\rtffiles\proc056.A03 -Missing rtf file: c:\16bit\debug\vetuec\master.prc\rtffiles\proc056.A04 -Missing rtf file: c:\16bit\debug\vetuec\master.prc\rtffiles\proc056.A05 -Processing c:\16bit\debug\vetuec\master.prc\rtffiles\proc056.A06 -Missing rtf file: c:\16bit\debug\vetuec\master.prc\rtffiles\proc056.A07 -Missing rtf file: c:\16bit\debug\vetuec\master.prc\rtffiles\proc056.A08 -Missing Transition Destination FRP-0.1|C0S - 28139 -Missing Transition Destination EOP-0.0|C0S - 21691 -Missing Transition Destination EOS-0.4|C0S - 22067 -Missing Transition Destination ECA-3.2|C0S - 28223 -Missing Transition Destination EOP-2.0|C0S - 21670 -Missing Transition Destination EOS-0.3|C0S - 22066 -Conversion completion time: 00:35:54.293 diff --git a/PROMS/DataLoader/logfile/TUEC Database & Log Files/ConversionGlitches.xml b/PROMS/DataLoader/logfile/TUEC Database & Log Files/ConversionGlitches.xml deleted file mode 100644 index 0bdb89b2..00000000 --- a/PROMS/DataLoader/logfile/TUEC Database & Log Files/ConversionGlitches.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/DataLoader/logfile/TUEC Database & Log Files/VEPROMS.zip b/PROMS/DataLoader/logfile/TUEC Database & Log Files/VEPROMS.zip deleted file mode 100644 index 35451cf2..00000000 Binary files a/PROMS/DataLoader/logfile/TUEC Database & Log Files/VEPROMS.zip and /dev/null differ diff --git a/PROMS/DataLoader/logfile/VEPROMS.bak b/PROMS/DataLoader/logfile/VEPROMS.bak deleted file mode 100644 index 2675cbc5..00000000 Binary files a/PROMS/DataLoader/logfile/VEPROMS.bak and /dev/null differ diff --git a/PROMS/DataLoader/logfile/VEPROMS.zip b/PROMS/DataLoader/logfile/VEPROMS.zip deleted file mode 100644 index eabdce99..00000000 Binary files a/PROMS/DataLoader/logfile/VEPROMS.zip and /dev/null differ diff --git a/PROMS/DataLoader/logfile/WNCEMG Data & Log Files/ConversionErrors.txt b/PROMS/DataLoader/logfile/WNCEMG Data & Log Files/ConversionErrors.txt deleted file mode 100644 index ebe63446..00000000 --- a/PROMS/DataLoader/logfile/WNCEMG Data & Log Files/ConversionErrors.txt +++ /dev/null @@ -1,144 +0,0 @@ -Computer Name: KATHY-VISTA -Data Set: c:\16bit\debug\vewcnemg\emgapp.prc -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp1A38.tmp -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp2489.tmp -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp2C68.tmp -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp3255.tmp -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp37F3.tmp -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp3D81.tmp -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp433F.tmp -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp490C.tmp -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp4F08.tmp -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp54B5.tmp -Processing C:\Users\Kathy.VOLIAN0\AppData\Local\Temp\tmp5A15.tmp -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc000.A03 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc000.A07 -Bad Date/Time 00/00/0000 00000 - ArgumentOutOfRangeException - Year, Month, and Day parameters describe an un-representable DateTime. at System.DateTime.DateToTicks(Int32 year, Int32 month, Int32 day) - at System.DateTime..ctor(Int32 year, Int32 month, Int32 day, Int32 hour, Int32 minute, Int32 second) - at DataLoader.Loader.GetDTS(String date, String time) in C:\Development\PROMS\DataLoader\Loader.cs:line 200 -Bad Date/Time 00/00/0000 00000 - ArgumentOutOfRangeException - Year, Month, and Day parameters describe an un-representable DateTime. at System.DateTime.DateToTicks(Int32 year, Int32 month, Int32 day) - at System.DateTime..ctor(Int32 year, Int32 month, Int32 day, Int32 hour, Int32 minute, Int32 second) - at DataLoader.Loader.GetDTS(String date, String time) in C:\Development\PROMS\DataLoader\Loader.cs:line 200 -Bad Date/Time 00/00/0000 00000 - ArgumentOutOfRangeException - Year, Month, and Day parameters describe an un-representable DateTime. at System.DateTime.DateToTicks(Int32 year, Int32 month, Int32 day) - at System.DateTime..ctor(Int32 year, Int32 month, Int32 day, Int32 hour, Int32 minute, Int32 second) - at DataLoader.Loader.GetDTS(String date, String time) in C:\Development\PROMS\DataLoader\Loader.cs:line 200 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc007.A13 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc007.A03 -Bad Date/Time 00/00/0000 00000 - ArgumentOutOfRangeException - Year, Month, and Day parameters describe an un-representable DateTime. at System.DateTime.DateToTicks(Int32 year, Int32 month, Int32 day) - at System.DateTime..ctor(Int32 year, Int32 month, Int32 day, Int32 hour, Int32 minute, Int32 second) - at DataLoader.Loader.GetDTS(String date, String time) in C:\Development\PROMS\DataLoader\Loader.cs:line 200 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc016.A09 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc016.A10 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc016.A18 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc016.A05 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc018.A07 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc018.A10 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc018.A05 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc053.A03 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc023.A05 -Missing rtf file: c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc025.A02 -Missing rtf file: c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc025.A18 -Missing rtf file: c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc025.A05 -Missing rtf file: c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc025.A06 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc025.A14 -Missing rtf file: c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc025.A07 -Missing rtf file: c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc025.A17 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc031.A04 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc031.A06 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc036.A05 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc036.A10 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc037.A07 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc037.A04 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc038.A04 -Processing c:\16bit\debug\vewcnemg\emgapp.prc\rtffiles\proc043.A10 -Missing Transition Destination EMG ES-02|E2S - 936 -Data Set: c:\16bit\debug\vewcnemg\samgs.prc -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc000.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc000.A07 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc000.A08 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc001.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc001.A06 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc001.A08 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc002.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc003.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc003.A08 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc003.A07 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc003.A06 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc003.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc004.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc004.A08 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc004.A07 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc005.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc005.A08 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc005.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc006.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc006.A06 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc006.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc007.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc007.A08 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc007.A07 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc007.A06 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc007.A13 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc007.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc008.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc008.A08 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc008.A06 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc008.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc009.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc009.A08 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc009.A07 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc009.A06 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc009.A13 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc009.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc010.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc010.A08 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc010.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc011.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc011.A08 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc011.A07 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc012.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc012.A08 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc012.A07 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc012.A06 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc012.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc013.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc013.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc014.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc014.A06 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc014.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc015.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc015.A05 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc016.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc020.A09 -Processing c:\16bit\debug\vewcnemg\samgs.prc\rtffiles\proc024.A09 -Unrecognized error in LoadSection proc025 - OleDbException - The Microsoft Jet database engine could not find the object 'proc025'. Make sure the object exists and that you spell its name and the path name correctly. at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) - at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) - at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) - at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) - at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) - at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) - at System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) - at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) - at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) - at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) - at DataLoader.Loader.LoadSection(DataSet ds, OleDbDataAdapter da, String FileName) in C:\Development\PROMS\DataLoader\Sections.cs:line 575 -MigrateProcedure - proc025 - OleDbException - The Microsoft Jet database engine could not find the object 'proc025'. Make sure the object exists and that you spell its name and the path name correctly. at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) - at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) - at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) - at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) - at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) - at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) - at System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) - at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) - at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) - at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) - at DataLoader.Loader.MigrateProcedure(OleDbConnection cn, DataRow dr, Item FromItem, String pth, DocVersion docver, Boolean convertProcedures, FormatInfo activeFormat) in C:\Development\PROMS\DataLoader\Procedures.cs:line 192 -Missing Transition Destination SAG-5|L?S - 19411 -Missing Transition Destination SAG-7|J@S - 19567 -Conversion completion time: 00:21:07.610 diff --git a/PROMS/DataLoader/logfile/WNCEMG Data & Log Files/ConversionGlitches.xml b/PROMS/DataLoader/logfile/WNCEMG Data & Log Files/ConversionGlitches.xml deleted file mode 100644 index fb209968..00000000 --- a/PROMS/DataLoader/logfile/WNCEMG Data & Log Files/ConversionGlitches.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/DataLoader/logfile/WNCEMG Data & Log Files/VEPROMS.zip b/PROMS/DataLoader/logfile/WNCEMG Data & Log Files/VEPROMS.zip deleted file mode 100644 index 879d15ff..00000000 Binary files a/PROMS/DataLoader/logfile/WNCEMG Data & Log Files/VEPROMS.zip and /dev/null differ diff --git a/PROMS/DataLoader/vlnControl.xml b/PROMS/DataLoader/vlnControl.xml deleted file mode 100644 index f298bd38..00000000 --- a/PROMS/DataLoader/vlnControl.xml +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/DataLoader/zipImage.TXT b/PROMS/DataLoader/zipImage.TXT deleted file mode 100644 index d8486530..00000000 --- a/PROMS/DataLoader/zipImage.TXT +++ /dev/null @@ -1 +0,0 @@ -http://stackoverflow.com/questions/2118904/zip-and-unzip-string-with-deflate \ No newline at end of file diff --git a/PROMS/Sync/7zip/7z.dll b/PROMS/Sync/7zip/7z.dll deleted file mode 100644 index 2bdaed6a..00000000 Binary files a/PROMS/Sync/7zip/7z.dll and /dev/null differ diff --git a/PROMS/Sync/7zip/7z64.dll b/PROMS/Sync/7zip/7z64.dll deleted file mode 100644 index f4f869f9..00000000 Binary files a/PROMS/Sync/7zip/7z64.dll and /dev/null differ diff --git a/PROMS/Sync/7zip/SevenZipSharp.dll b/PROMS/Sync/7zip/SevenZipSharp.dll deleted file mode 100644 index f588f8a2..00000000 Binary files a/PROMS/Sync/7zip/SevenZipSharp.dll and /dev/null differ diff --git a/PROMS/Sync/ActiveSync_icon_by_alex3305.png b/PROMS/Sync/ActiveSync_icon_by_alex3305.png deleted file mode 100644 index 390fe453..00000000 Binary files a/PROMS/Sync/ActiveSync_icon_by_alex3305.png and /dev/null differ diff --git a/PROMS/Sync/Sync.sln b/PROMS/Sync/Sync.sln deleted file mode 100644 index cdbac3a0..00000000 --- a/PROMS/Sync/Sync.sln +++ /dev/null @@ -1,37 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.30723.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sync", "Sync\Sync.csproj", "{400F2DAC-E405-4C1B-A388-5120FCF59DF0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SyncMany", "SyncMany\SyncMany.csproj", "{256A41AF-440F-42FE-A9B1-2CE36F1261A2}" -EndProject -Global - GlobalSection(SourceCodeControl) = preSolution - SccNumberOfProjects = 3 - SccLocalPath0 = . - SccProjectUniqueName1 = Sync\\Sync.csproj - SccLocalPath1 = Sync - SccProjectUniqueName2 = SyncMany\\SyncMany.csproj - SccProjectName2 = \u0022$/PROMS/Sync/SyncMany\u0022,\u0020LEEAAAAA - SccLocalPath2 = SyncMany - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Release|Any CPU.Build.0 = Release|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/PROMS/Sync/Sync/7z.dll b/PROMS/Sync/Sync/7z.dll deleted file mode 100644 index 2bdaed6a..00000000 Binary files a/PROMS/Sync/Sync/7z.dll and /dev/null differ diff --git a/PROMS/Sync/Sync/7z64.dll b/PROMS/Sync/Sync/7z64.dll deleted file mode 100644 index f4f869f9..00000000 Binary files a/PROMS/Sync/Sync/7z64.dll and /dev/null differ diff --git a/PROMS/Sync/Sync/FileCompare.cs b/PROMS/Sync/Sync/FileCompare.cs deleted file mode 100644 index 648e4ed0..00000000 --- a/PROMS/Sync/Sync/FileCompare.cs +++ /dev/null @@ -1,141 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; - -namespace Sync -{ - public class FileCompare - { - private FileInfo _Developement; - private FileInfo _SourceSafe; - private bool _ToProcess = false; - public bool ToProcess - { - get { return _ToProcess; } - set { _ToProcess = value; } - } - public string FileName - { - get { return _Developement.FullName; } - } - public Nullable DevModified - { - get - { - if (_Developement.Exists) - return _Developement.LastWriteTime; - return null; - } - } - public Nullable SSModified - { - get - { - if(_SourceSafe.Exists) - return _SourceSafe.LastWriteTime; - return null; - } - } - private bool _Different; - public bool Different - { - get { return _Different; } - } - public string SSFileName - { - get { return _SourceSafe.FullName; } - } - private bool _ReadOnly; - public bool ReadOnly - { - get { return _ReadOnly; } - } - private bool _Merge = false; - public bool Merge - { - get { return _Merge; } - set { _Merge = value; } - } - public FileCompare(FileInfo development, FileInfo sourceSafe) - { - _Developement = development; - _SourceSafe = sourceSafe; - _Different = DifferentContents(development, sourceSafe); - _ToProcess = _Different; - _ReadOnly = (development.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly; - } - public static bool DifferentContents(FileInfo development, FileInfo sourceSafe) - { - string strDev =ReadFile(development); - string strSS = ReadFile(sourceSafe); - return strDev != strSS; - } - private static string ReadFile(FileInfo fi) - { - if (fi.Exists == false) return ""; - TextReader tr = fi.OpenText(); - string retval = tr.ReadToEnd(); - tr.Close(); - return retval; - } - public void MoveToDevelopment() - { - if (_Developement.Exists) - { - _Developement.Attributes &= (_Developement.Attributes ^ FileAttributes.ReadOnly);// Turn-Off ReadOnly Attribute - _Developement.Attributes &= (_Developement.Attributes ^ FileAttributes.Hidden);// Turn-Off Hidden Attribute - } - BuildFolder(_Developement.Directory); - if(_SourceSafe.Exists)_SourceSafe.CopyTo(_Developement.FullName , true); - } - public void MoveDevToMailBox(string devFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_Developement.FullName.Replace(devFolder, mailboxFolder)); - BuildFolder(fi1.Directory); - if (fi1.Exists) fi1.IsReadOnly = false; - if(_Developement.Exists)_Developement.CopyTo(fi1.FullName,true); - } - } - public void MoveMailBoxToDev(string devFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_Developement.FullName.Replace(devFolder, mailboxFolder)); - BuildFolder(_Developement.Directory); - if (fi1.Exists) fi1.IsReadOnly = false; - if (_Developement.Exists) fi1.CopyTo(_Developement.FullName, true); - } - } - public void MoveSSToMailBox(string SSFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_SourceSafe.FullName.Replace(SSFolder, mailboxFolder)); - BuildFolder(fi1.Directory); - if (fi1.Exists) fi1.IsReadOnly = false; - if (_SourceSafe.Exists) _SourceSafe.CopyTo(fi1.FullName, true); - } - } - public void MoveMailBoxToSS(string SSFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_SourceSafe.FullName.Replace(SSFolder, mailboxFolder)); - BuildFolder(fi1.Directory); - if (fi1.Exists) fi1.IsReadOnly = false; - if (_SourceSafe.Exists) fi1.CopyTo(_SourceSafe.FullName, true); - } - } - private static void BuildFolder(DirectoryInfo directoryInfo) - { - if (!directoryInfo.Exists) - { - BuildFolder(directoryInfo.Parent); - directoryInfo.Create(); - } - } - } -} diff --git a/PROMS/Sync/Sync/FileCompare.cs.bak b/PROMS/Sync/Sync/FileCompare.cs.bak deleted file mode 100644 index 11f24c99..00000000 --- a/PROMS/Sync/Sync/FileCompare.cs.bak +++ /dev/null @@ -1,122 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; - -namespace Sync -{ - class FileCompare - { - private FileInfo _Developement; - private FileInfo _SourceSafe; - private bool _ToProcess = false; - public bool ToProcess - { - get { return _ToProcess; } - set { _ToProcess = value; } - } - public string FileName - { - get { return _Developement.FullName; } - } - public Nullable DevModified - { - get - { - if (_Developement.Exists) - return _Developement.LastWriteTime; - return null; - } - } - public Nullable SSModified - { - get - { - if(_SourceSafe.Exists) - return _SourceSafe.LastWriteTime; - return null; - } - } - private bool _Different; - public bool Different - { - get { return _Different; } - } - public string SSFileName - { - get { return _SourceSafe.FullName; } - } - public FileCompare(FileInfo development, FileInfo sourceSafe) - { - _Developement = development; - _SourceSafe = sourceSafe; - _Different = DifferentContents(development, sourceSafe); - _ToProcess = _Different; - } - public static bool DifferentContents(FileInfo development, FileInfo sourceSafe) - { - string strDev =ReadFile(development); - string strSS = ReadFile(sourceSafe); - return strDev != strSS; - } - private static string ReadFile(FileInfo fi) - { - if (fi.Exists == false) return ""; - TextReader tr = fi.OpenText(); - string retval = tr.ReadToEnd(); - tr.Close(); - return retval; - } - public void MoveToDevelopment() - { - //if (_Developement.Attributes & FileAttributes.ReadOnly == FileAttributes.ReadOnly) - if (_Developement.Exists) _Developement.Attributes &= (_Developement.Attributes ^ FileAttributes.ReadOnly); - BuildFolder(_Developement.Directory); - if(_SourceSafe.Exists)_SourceSafe.CopyTo(_Developement.FullName , true); - } - public void MoveDevToMailBox(string devFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_Developement.FullName.Replace(devFolder, mailboxFolder)); - BuildFolder(fi1.Directory); - if(_Developement.Exists)_Developement.CopyTo(fi1.FullName,true); - } - } - public void MoveMailBoxToDev(string devFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_Developement.FullName.Replace(devFolder, mailboxFolder)); - BuildFolder(_Developement.Directory); - fi1.CopyTo(_Developement.FullName, true); - } - } - public void MoveSSToMailBox(string SSFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_SourceSafe.FullName.Replace(SSFolder, mailboxFolder)); - BuildFolder(fi1.Directory); - if(_SourceSafe.Exists) _SourceSafe.CopyTo(fi1.FullName, true); - } - } - public void MoveMailBoxToSS(string SSFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_SourceSafe.FullName.Replace(SSFolder, mailboxFolder)); - BuildFolder(fi1.Directory); - if(fi1.Exists)fi1.CopyTo(_SourceSafe.FullName, true); - } - } - private static void BuildFolder(DirectoryInfo directoryInfo) - { - if (!directoryInfo.Exists) - { - BuildFolder(directoryInfo.Parent); - directoryInfo.Create(); - } - } - } -} diff --git a/PROMS/Sync/Sync/Production Sync.sln b/PROMS/Sync/Sync/Production Sync.sln deleted file mode 100644 index 7446513b..00000000 --- a/PROMS/Sync/Sync/Production Sync.sln +++ /dev/null @@ -1,37 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.30723.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sync", "Sync\Sync.csproj", "{400F2DAC-E405-4C1B-A388-5120FCF59DF0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SyncMany", "SyncMany\SyncMany.csproj", "{256A41AF-440F-42FE-A9B1-2CE36F1261A2}" -EndProject -Global - GlobalSection(SourceCodeControl) = preSolution - SccNumberOfProjects = 3 - SccProjectUniqueName0 = Sync\\Sync.csproj - SccLocalPath0 = Sync - SccProjectUniqueName1 = SyncMany\\SyncMany.csproj - SccProjectName1 = \u0022$/PROMS/Sync/SyncMany\u0022,\u0020LEEAAAAA - SccLocalPath1 = SyncMany - SccLocalPath2 = . - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Release|Any CPU.Build.0 = Release|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/PROMS/Sync/Sync/Program.cs b/PROMS/Sync/Sync/Program.cs deleted file mode 100644 index 8de31e2d..00000000 --- a/PROMS/Sync/Sync/Program.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; - -namespace Sync -{ - static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new frmSync()); - } - } -} \ No newline at end of file diff --git a/PROMS/Sync/Sync/Properties/AssemblyInfo.cs b/PROMS/Sync/Sync/Properties/AssemblyInfo.cs deleted file mode 100644 index fc96276e..00000000 --- a/PROMS/Sync/Sync/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Sync")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Volian Enterprises, Inc.")] -[assembly: AssemblyProduct("Sync")] -[assembly: AssemblyCopyright("Copyright © Volian Enterprises, Inc. 2007")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("5e74e740-f6c7-46e4-a77d-2353564108b6")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/PROMS/Sync/Sync/Properties/Resources.Designer.cs b/PROMS/Sync/Sync/Properties/Resources.Designer.cs deleted file mode 100644 index 3b8c4ead..00000000 --- a/PROMS/Sync/Sync/Properties/Resources.Designer.cs +++ /dev/null @@ -1,133 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.18408 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Sync.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [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() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [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("Sync.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon iSync { - get { - object obj = ResourceManager.GetObject("iSync", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iSync_128x128 { - get { - object obj = ResourceManager.GetObject("iSync_128x128", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon wi0124_16 { - get { - object obj = ResourceManager.GetObject("wi0124_16", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon wi0124_24 { - get { - object obj = ResourceManager.GetObject("wi0124_24", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon wi0124_32 { - get { - object obj = ResourceManager.GetObject("wi0124_32", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon wi0124_48 { - get { - object obj = ResourceManager.GetObject("wi0124_48", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon wi0124_64 { - get { - object obj = ResourceManager.GetObject("wi0124_64", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - } -} diff --git a/PROMS/Sync/Sync/Properties/Resources.resx b/PROMS/Sync/Sync/Properties/Resources.resx deleted file mode 100644 index 2979ec09..00000000 --- a/PROMS/Sync/Sync/Properties/Resources.resx +++ /dev/null @@ -1,2380 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAQAgIAAAAEAIAAoCAEARgAAADAwAAABACAAqCUAAG4IAQAgIAAAAQAgAKgQAAAWLgEAEBAAAAEA - IABoBAAAvj4BACgAAACAAAAAAAEAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAwAA - AAYAAAAIAAAACgAAAA0AAAAPAAAAEAAAABEAAAATAAAAEwAAABQAAAAUAAAAEwAAABMAAAARAAAAEAAA - AA8AAAANAAAACgAAAAgAAAAGAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAAwAAAAYAAAAKAAAADgAAABMAAAAZAAAAIAAAACUAAAArAAAALgAAADMAAAA2AAAAOAAA - ADoAAAA8AAAAPQAAAD0AAAA8AAAAOgAAADgAAAA2AAAAMwAAAC4AAAArAAAAJQAAACAAAAAZAAAAEwAA - AA4AAAAKAAAABgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAACgAAABAAAAAXAAAAHwAAACgAAAAxAAAAOwAA - AEYAAABPAAAAWAAAAGAAAABmAAAAbAAAAHAAAAB0AAAAeAAAAHoAAAB8AAAAfAAAAHoAAAB4AAAAdAAA - AHAAAABsAAAAZgAAAGAAAABYAAAATwAAAEYAAAA7AAAAMQAAACgAAAAfAAAAFwAAABAAAAAKAAAABAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAKAAAAEQAA - ABwAAAAnAAAANAAAAEEAAABPAAAAXQAAAGoAAAB4ExMTkiQkJKotLS27NTU1yT09PddGRkbjS0tL6VBQ - UO9UVFT0WVlZ+llZWfpZWVn6WVlZ+lRUVPRQUFDvS0tL6UZGRuM9PT3XNjY2yS0tLbskJCSqExMTkgAA - AHgAAABqAAAAXQAAAE8AAABBAAAANAAAACcAAAAcAAAAEQAAAAoAAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAAwAAAAcAAAAPAAAAGQAAACcAAAA2AAAARwAAAFkAAABqDw8PiBoaGqMwMDDEQ0ND4E1N - Te9WVlb4Xl5e/2RkZP9vb2//fHx8/4iIiP+RkZH/mZmZ/6Ghof+np6f/q6ur/6urq/+np6f/oaGh/5qa - mv+SkpL/iIiI/3x8fP9wcHD/ZGRk/19fX/9XV1f4Tk5O70REROAxMTHEHBwcow8PD4gAAABqAAAAWQAA - AEcAAAA2AAAAJwAAABkAAAAPAAAABwAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAAoAAAATAAAAIQAAADEAAABEAAAAWAAA - AG4RERGRLS0tv0FBQd5RUVH1XFxc/2lpaf+AgID/l5eX/6ysrP++vr7/y8vL/9XV1f/d3d3/5ubm/+zs - 7P/x8fH/9vb2//n5+f/6+vr/+vr6//n5+f/29vb/8vLy/+3t7f/m5ub/39/f/9fX1//Nzc3/v7+//66u - rv+Xl5f/goKC/2pqav9dXV3/UVFR9UFBQd4tLS2/ERERkQAAAG4AAABYAAAARAAAADEAAAAhAAAAEwAA - AAoAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAA - AAoAAAAVAAAAJQAAADkAAABPAAAAZg4ODooqKiq7QkJC41VVVfxkZGT/fn5+/52dnf+3t7f/zc3N/93d - 3f/o6Oj/8fHx//f39//6+vr/+/v7//z8/P/8/Pz//v7+//7+/v////////////////////////////// - //////////////7+/v/+/v7//v7+//v7+//6+vr/9PT0/+vr6//f39//z8/P/7i4uP+enp7/gYGB/2Vl - Zf9WVlb8Q0ND4y0tLbsODg6KAAAAZgAAAE8AAAA5AAAAJQAAABUAAAAKAAAABAAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAoAAAAVAAAAJgAAADwAAABVAAAAbxkZGaI7OzvYTk5O9mJi - Yv+BgYH/o6Oj/8HBwf/X19f/5+fn//Hx8f/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//z8 - /P/+/v7//v7+/////////////////////////////////////////////v7+//7+/v/8/Pz//Pz8//v7 - +//7+/v/+vr6//r6+v/39/f/9PT0/+rq6v/a2tr/w8PD/6ampv+EhIT/ZGRk/1BQUPY8PDzYGhoaogAA - AG8AAABVAAAAPAAAACYAAAAVAAAACgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAASAAAAIwAA - ADoAAABVAgICcyMjI7JCQkLlV1dX/3Nzc/+Xl5f/u7u7/9XV1f/l5eX/7e3t//Hx8f/y8vL/9PT0//X1 - 9f/29vb/9/f3//n5+f/6+vr/+/v7//v7+//8/Pz//Pz8//7+/v/+/v7///////////////////////// - ///////////////////+/v7//v7+//z8/P/8/Pz/+/v7//v7+//6+vr/+fn5//n5+f/39/f/9vb2//X1 - 9f/x8fH/6Ojo/9nZ2f+9vb3/m5ub/3V1df9ZWVn/Q0ND5SUlJbICAgJzAAAAVQAAADoAAAAjAAAAEgAA - AAcAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAANAAAAHAAAADQAAABQAAAAbiQkJLBDQ0PpXFxc/319ff+mpqb/yMjI/9zc - 3P/n5+f/6+vr/+3t7f/w8PD/8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6+v/6+vr/+/v7//z8 - /P/8/Pz//v7+//7+/v///////////////////////////////////////v7+//7+/v/+/v7//Pz8//z8 - /P/7+/v/+/v7//r6+v/5+fn/9/f3//f39//29vb/9fX1//T09P/y8vL/8PDw/+zs7P/h4eH/zc3N/6mp - qf+BgYH/XV1d/0ZGRukkJCSwAAAAbgAAAFAAAAA0AAAAHAAAAA0AAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAJAAAAFgAAACsAAABGAAAAZRoa - GqFBQUHnW1tb/4CAgP+pqan/y8vL/9/f3//m5ub/6Ojo/+vr6//s7Oz/7e3t/+/v7//x8fH/8vLy//T0 - 9P/19fX/9vb2//f39//5+fn/+vr6//r6+v/7+/v//Pz8//z8/P/+/v7//v7+//7+/v////////////// - ///////////////////+/v7//v7+//7+/v/8/Pz//Pz8//v7+//7+/v/+vr6//n5+f/39/f/9vb2//X1 - 9f/09PT/9PT0//Ly8v/w8PD/7+/v/+3t7f/r6+v/4uLi/9DQ0P+urq7/g4OD/11dXf9DQ0PnHBwcowAA - AGUAAABGAAAAKwAAABYAAAAJAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAEAAAADgAAACAAAAA6AAAAWQ8PD4g0NDTUUlJS/nl5ef+mpqb/x8fH/9vb2//i4uL/5eXl/+fn - 5//o6Oj/6urq/+vr6//t7e3/7+/v//Dw8P/x8fH/8vLy//T09P/19fX/9/f3//f39//5+fn/+vr6//v7 - +//8/Pz//Pz8//7+/v/+/v7//v7+//////////////////////////////////7+/v/+/v7//v7+//z8 - /P/8/Pz/+/v7//r6+v/6+vr/+fn5//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/v7+//7e3t/+zs - 7P/r6+v/5+fn/+Dg4P/Nzc3/qamp/3x8fP9VVVX+Nzc31A8PD4gAAABZAAAAOgAAACAAAAAOAAAABAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABwAAABQAAAArAAAASQAAAG0mJia4SEhI9Gxs - bP+ZmZn/v7+//9XV1f/f39//4eHh/+Li4v/l5eX/5ubm/+fn5//q6ur/6+vr/+zs7P/t7e3/8PDw//Hx - 8f/y8vL/9PT0//X19f/29vb/9/f3//n5+f/6+vr/+/v7//v7+//8/Pz//v7+//7+/v/+/v7///////// - /////////////////////////v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+vr6//n5+f/5+fn/9/f3//b2 - 9v/19fX/9PT0//Ly8v/x8fH/8PDw/+/v7//s7Oz/6+vr/+rq6v/o6Oj/5+fn/+Tk5P/b29v/xMTE/52d - nf9wcHD/SUlJ9CgoKLgAAABtAAAASQAAACsAAAAUAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAoAAAAbAAAANQAAAFgRERGPPDw84l5eXv+FhYX/sLCw/83Nzf/Z2dn/3Nzc/9/f3//g4OD/4uLi/+Tk - 5P/l5eX/5+fn/+jo6P/q6ur/7Ozs/+3t7f/v7+//8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6 - +v/7+/v/+/v7//z8/P/+/v7//v7+//7+/v/////////////////////////////////+/v7//v7+//7+ - /v/8/Pz/+/v7//v7+//6+vr/+fn5//f39//39/f/9vb2//X19f/09PT/8fHx//Dw8P/v7+//7e3t/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Tk5P/f39//0dHR/7a2tv+Kior/YGBg/z4+PuIRERGPAAAAWAAA - ADUAAAAbAAAACgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAANAAAAIQAAAD8AAABkIyMjtElJSfdxcXH/nZ2d/8HB - wf/R0dH/19fX/9ra2v/c3Nz/3d3d/9/f3//h4eH/4uLi/+Xl5f/m5ub/6Ojo/+rq6v/r6+v/7e3t/+/v - 7//w8PD/8fHx//T09P/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//7+/v/+/v7//v7+//// - //////////////////////////////7+/v/+/v7//v7+//z8/P/7+/v/+/v7//r6+v/5+fn/9/f3//b2 - 9v/19fX/9PT0//Ly8v/x8fH/8PDw/+/v7//t7e3/6+vr/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Hh - 4f/d3d3/2dnZ/8fHx/+jo6P/dHR0/0tLS/ckJCS0AAAAZAAAAD8AAAAhAAAADQAAAAQAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAADwAA - ACUAAABHBgYGdDIyMtFcXFz/g4OD/66urv/Jycn/0dHR/9XV1f/X19f/2dnZ/9vb2//c3Nz/39/f/+Dg - 4P/i4uL/5OTk/+Xl5f/n5+f/6Ojo/+vr6//s7Oz/7e3t//Dw8P/x8fH/8vLy//T09P/19fX/9/f3//n5 - +f/6+vr/+vr6//v7+//8/Pz//v7+//7+/v/+/v7//////////////////////////////////v7+//7+ - /v/8/Pz//Pz8//v7+//7+/v/+vr6//n5+f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7e3t/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Li4v/h4eH/4ODg/9/f3//c3Nz/2dnZ/9DQ0P+0tLT/h4eH/19f - X/80NDTRBgYGdAAAAEcAAAAlAAAADwAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABQAAABEAAAApAAAATREREYc+Pj7lZmZm/5KSkv+4uLj/y8vL/9DQ - 0P/T09P/1dXV/9bW1v/X19f/2tra/9vb2//d3d3/39/f/+Hh4f/i4uL/5eXl/+bm5v/o6Oj/6urq/+zs - 7P/t7e3/7+/v//Hx8f/y8vL/9PT0//X19f/29vb/9/f3//n5+f/6+vr/+/v7//z8/P/8/Pz//v7+//7+ - /v/////////////////////////////////+/v7//v7+//z8/P/8/Pz/+/v7//r6+v/6+vr/+fn5//f3 - 9//29vb/9fX1//T09P/x8fH/8PDw/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Dg - 4P/f39//3d3d/9vb2//a2tr/19fX/9TU1P+/v7//l5eX/2pqav8/Pz/lERERhwAAAE0AAAApAAAAEQAA - AAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAATAAAALQAA - AFIYGBiURkZG8XBwcP+cnJz/vLy8/8rKyv/Ozs7/0NDQ/9HR0f/T09P/1dXV/9bW1v/Z2dn/2tra/9zc - 3P/f39//4ODg/+Hh4f/k5OT/5ubm/+fn5//q6ur/6+vr/+zs7P/v7+//8PDw//Hx8f/09PT/9fX1//b2 - 9v/39/f/+fn5//r6+v/7+/v//Pz8//z8/P/+/v7//v7+//////////////////////////////////7+ - /v/+/v7//Pz8//z8/P/7+/v/+vr6//n5+f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7+/v/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Li4v/h4eH/4ODg/93d3f/c3Nz/29vb/9nZ2f/X19f/1tbW/9HR - 0f/ExMT/o6Oj/3R0dP9KSkrxGBgYlAAAAFIAAAAtAAAAEwAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAGAAAAFAAAAC8AAABVGRkZnkpKSvV2dnb/pKSk/76+vv/IyMj/y8vL/83N - zf/Pz8//0NDQ/9HR0f/U1NT/1tbW/9fX1//a2tr/29vb/93d3f/f39//4eHh/+Li4v/l5eX/5ubm/+jo - 6P/q6ur/7Ozs/+3t7f/w8PD/8fHx//Ly8v/19fX/9vb2//f39//5+fn/+vr6//v7+//8/Pz//Pz8//7+ - /v/+/v7//////////////////////////////////v7+//7+/v/8/Pz//Pz8//v7+//6+vr/+fn5//f3 - 9//29vb/9fX1//T09P/y8vL/8fHx/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Dg - 4P/f39//3Nzc/9vb2//a2tr/19fX/9bW1v/V1dX/09PT/9DQ0P/FxcX/qamp/3t7e/9PT0/1GxsbngAA - AFUAAAAvAAAAFAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQAAABMAAAAwAAAAWCEh - IapRUVH6enp6/6Wlpf++vr7/xcXF/8jIyP/Kysr/y8vL/87Ozv/Pz8//0NDQ/9PT0//V1dX/1tbW/9nZ - 2f/a2tr/3Nzc/93d3f/g4OD/4eHh/+Tk5P/m5ub/5+fn/+rq6v/r6+v/7e3t/+/v7//x8fH/8vLy//X1 - 9f/29vb/+vr6//v7+//8/Pz//v7+//7+/v/+/v7///////////////////////////////////////// - //////////////7+/v/+/v7//Pz8//z8/P/6+vr/+fn5//b29v/19fX/9PT0//Hx8f/w8PD/7+/v/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Li4v/h4eH/39/f/93d3f/c3Nz/2tra/9nZ2f/W1tb/1dXV/9TU - 1P/R0dH/0NDQ/87Ozv/FxcX/rKys/35+fv9TU1P6JCQkqgAAAFgAAAAwAAAAEwAAAAUAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAATAAAALgAAAFclJSWxUlJS/Hx8fP+mpqb/vLy8/8LCwv/FxcX/x8fH/8jI - yP/Kysr/y8vL/87Ozv/Pz8//0dHR/9PT0//V1dX/19fX/9nZ2f/b29v/3Nzc/9/f3//h4eH/4uLi/+Xl - 5f/m5ub/6Ojo/+vr6//s7Oz/8fHx//T09P/39/f/+vr6//r6+v/7+/v/+/v7//z8/P/g4fn/y8v3/6Gf - 8P+Ni+7/d3Tt/3d07f93dO7/d3Tu/3d07v93dO7/jYvw/6Kg8v+ioPL/ubf1/9nY+P/+/v7//Pz8//z8 - /P/7+/v/+vr6//f39//09PT/8fHx//Dw8P/t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4eHh/+Dg - 4P/d3d3/3Nzc/9vb2//Z2dn/19fX/9XV1f/U1NT/09PT/9DQ0P/Pz8//zs7O/8rKyv/ExMT/ra2t/4OD - g/9WVlb8JiYmsQAAAFcAAAAuAAAAEwAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAACsAAABVIyMjrVhY - WP1+fn7/pqam/7u7u//BwcH/wsLC/8PDw//FxcX/x8fH/8nJyf/Kysr/zc3N/87Ozv/Q0ND/0dHR/9TU - 1P/W1tb/19fX/9ra2v/b29v/3d3d/+Dg4P/h4eH/5OTk/+bm5v/q6ur/8PDw//X19f/29vb/9/f3//n5 - +f/a2fT/qKbs/3t55/9RTeH/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm - 5P8wJuP/MCbh/y8m4f8vJuD/LyXe/zIp3v9UUOL/hoPp/7u68P/19fn/+vr6//n5+f/29vb/8vLy/+3t - 7f/r6+v/6urq/+fn5//m5ub/5OTk/+Li4v/g4OD/39/f/9zc3P/b29v/2tra/9fX1//W1tb/1NTU/9PT - 0//Q0ND/z8/P/87Ozv/Ly8v/ysrK/8nJyf/ExMT/rq6u/4SEhP9cXFz9JiYmrQAAAFUAAAArAAAAEAAA - AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAA0AAAAnAAAATyIiIqVWVlb8fX19/6ampv+4uLj/vb29/7+/v//BwcH/wsLC/8TE - xP/T09P/ysrK/8nJyf/Kysr/zc3N/8/Pz//Q0ND/09PT/9TU1P/W1tb/2dnZ/9ra2v/c3Nz/39/f/+Hh - 4f/n5+f/7+/v//T09P/09PT/9fX1/7e36v97eeD/PznX/ywl1v8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m - 3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m - 2v8uJdn/LSXY/zQt1/9qZ+D/tLPr//f39//39/f/9fX1//Hx8f/q6ur/5+fn/+Xl5f/k5OT/4eHh/+Dg - 4P/d3d3/3Nzc/9ra2v/Z2dn/1tbW/9XV1f/T09P/0dHR/8/Pz//Ozs7/zc3N/8rKyv/Jycn/yMjI/8fH - x//BwcH/ra2t/4SEhP9aWlr8IyMjpQAAAE8AAAAnAAAADQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKAAAAIAAAAEcZGRmVVVVV+Hp6 - ev+jo6P/tbW1/7q6uv+8vLz/vb29/7+/v//BwcH/wsLC/9PU1f/c3Nz/ysrK/8nJyf/Ly8v/zc3N/8/P - z//R0dH/09PT/9XV1f/X19f/2dnZ/9vb2//h4eH/7Ozs//Dw8P/x8fH/zMzr/3V02/80Mc3/KiTN/ysk - 0P8rJNP/LCXW/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm - 5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdj/LCXW/ywk0/8rJNH/OTTS/4uK - 4f/l5fL/9fX1//Ly8v/s7Oz/5eXl/+Li4v/g4OD/39/f/9zc3P/b29v/2dnZ/9bW1v/V1dX/09PT/9HR - 0f/Q0ND/zs7O/83Nzf/Kysr/ycnJ/8jIyP/Hx8f/xMTE/8PDw/++vr7/qamp/4GBgf9YWFj4HR0dlQAA - AEcAAAAgAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABwAAABkAAAA9ERERgExMTPJ1dXX/nZ2d/7Ozs/+3t7f/uLi4/7q6uv+8vLz/vb29/7+/ - v//BwcH/b3Kp/8jJ2P/c3Nz/ysrK/8nJyf/Ly8v/zs7O/8/Pz//R0dH/1NTU/9bW1v/a2tr/5ubm/+3t - 7f/v7+//qarg/1JQz/8oIsb/KSPK/yoky/8qJM3/KyTQ/ysk0/8sJdb/LSXX/y4l2P8uJtr/Libd/y8l - 3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m - 3f8uJtr/LiXZ/y0l1/8sJdb/LCTT/ysk0f8qJM7/KiTM/y4py/9zctn/3+Dv//Ly8v/v7+//5ubm/9/f - 3//d3d3/29vb/9ra2v/X19f/1dXV/9TU1P/R0dH/0NDQ/87Ozv/Nzc3/y8vL/8nJyf/IyMj/x8fH/8TE - xP/Dw8P/wcHB/7+/v/+7u7v/paWl/3t7e/9RUVHyExMTgAAAAD0AAAAZAAAABwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAATAAAANAUFBWVGRkbjb29v/5aW - lv+tra3/s7Oz/7W1tf+3t7f/uLi4/7q6uv+8vLz/vb29/7+/v/9VWaD/Nzqj/9DR3P/d3d3/ysrK/8rK - yv/Ly8v/zs7O/9DQ0P/T09P/2tra/+jo6P/s7Oz/ubnh/0hGyP8mIsD/JyHE/ygixv8pIsn/KiPL/yok - zf8rJND/KyTT/ywl1v8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm - 5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl1v8sJNP/KyTR/yok - zv8qJMz/KSPK/ygjx/8vKsb/fH3X/+Xm7v/w8PD/6Ojo/93d3f/a2tr/19fX/9bW1v/U1NT/09PT/9DQ - 0P/Pz8//zc3N/8vLy//Jycn/yMjI/8fHx//ExMT/w8PD/8HBwf+/v7//vr6+/7y8vP+2trb/np6e/3V1 - df9JSUnjBQUFZQAAADQAAAATAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACAAAADgAAACoAAABVNzc3x2dnZ/+Ojo7/qKio/7CwsP+zs7P/tLS0/7W1tf+3t7f/uLi4/7q6 - uv+8vLz/vb29/1BUn/8cHpn/OTyp/83O3P/f39//y8vL/8rKyv/Nzc3/z8/P/93d3f/o6Oj/0NHk/1hZ - yP8lIbv/JiG+/yYiwP8nIcT/KCLG/ykiyf8qI8v/KiTN/ysk0P8rJNP/LCXU/y0l1/8uJdj/Liba/y4m - 3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l - 3v8uJt3/Liba/y4l2f8tJdf/LCXW/ywk0/8rJNH/KiTO/yoky/8pI8r/KCPH/ycixP8mIsL/ODbE/6ip - 3v/t7e3/6+vr/9zc3P/W1tb/1dXV/9PT0//Q0ND/z8/P/83Nzf/Ly8v/ycnJ/8jIyP/Hx8f/xMTE/8PD - w//BwcH/v7+//76+vv+9vb3/vLy8/7q6uv+wsLD/k5OT/2xsbP84ODjHAAAAVQAAACoAAAAOAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAkAAAAgAAAASSUlJaRcXFz+goKC/6Gh - of+tra3/r6+v/7Kysv+zs7P/tLS0/7W1tf+2trb/uLi4/7q6uv+8vLz/Rkqa/xwdmf8dHaD/NTiq/8vM - 2v/f39//zc3N/8rKyv/d3d3/5+fn/6Wl2P8vL7r/JCC6/yUhu/8mIb7/JiLA/ychxP8oIsb/KSLJ/yoj - y/8qI83/KyTQ/ysk0/8sJdT/LSXX/y4l2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm - 5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l1/8sJdb/LCTT/ysk - 0f8qJM7/KiTL/ykjyv8oIsf/JyHE/yYiwv8mIb7/JSG9/1layP/f3+j/6urq/93d3f/T09P/0dHR/8/P - z//Ozs7/y8vL/8rKyv/IyMj/x8fH/8TExP/Dw8P/wcHB/7+/v/++vr7/vb29/7u7u/+6urr/uLi4/7a2 - tv+pqan/iIiI/2FhYf4mJiakAAAASQAAACAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAFAAAAFgAAADoTExOCUVFR9Xd3d/+ampr/q6ur/62trf+urq7/r6+v/7CwsP+ysrL/tLS0/7W1 - tf+2trb/uLi4/7q6uv9DRpn/HB2a/x0doP8dHaH/MzWr/8fH2v/g4OD/2tra/+Hh4/9rbcX/IiCz/yMg - tv8kILj/JSG7/yYhvv8mIsD/JyHE/ygixv8pIsn/KiPL/yojzf8rJND/KyTT/ywl1P8tJdf/LiXY/y4m - 2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m - 4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl1v8sJNP/KyTR/yokzv8qI8v/KSPK/ygix/8nIcT/JiLC/yYh - vv8lIbz/JCC6/zY2vP+/v97/6urq/9/f3//Q0ND/zs7O/8vLy//Kysr/yMjI/8fHx//ExMT/w8PD/8HB - wf+/v7//vr6+/7y8vP+7u7v/urq6/7i4uP+3t7f/tra2/7Ozs/+jo6P/fHx8/1VVVfUVFRWCAAAAOgAA - ABYAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA4AAAAsAgICXkVFReFtbW3/kJCQ/6Wl - pf+pqan/q6ur/62trf+urq7/r6+v/7CwsP+ysrL/s7Oz/7W1tf+2trb/uLi4/zxAmP8cHZr/HR2f/x0d - of8eHaT/LzCr/8TF2v/g4OL/WFq+/yIfsP8iILP/IyC2/yQguP8lIbv/JiG+/yYiwP8nIcT/KCLF/yki - yf8qI8v/KiPN/ysk0P8rI9L/LCTU/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm - 4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdf/LCXW/ywk - 0/8rJNH/KiTO/yojy/8pIsn/KCLH/ychxP8mIsL/JiG+/yUhvP8kILr/IyC2/ygmtv+QktH/5+fn/+Hh - 4f/Ozs7/ysrK/8jIyP/Hx8f/xMTE/8PDw//BwcH/v7+//76+vv+8vLz/u7u7/7q6uv+4uLj/tra2/7W1 - tf+0tLT/s7Oz/66urv+Xl5f/cnJy/0lJSeECAgJeAAAALAAAAA4AAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAHAAAAHwAAAEktLS2yZGRk/4aGhv+fn5//pqam/6ioqP+pqan/q6ur/6ysrP+tra3/r6+v/7Cw - sP+ysrL/s7Oz/7W1tf+2trb/NjiV/xwdm/8dHZ//HR2h/x4dpP8fHab/Ly+t/1dZvf8hH63/Ih+w/yIg - s/8jILb/JCC4/yUhu/8mIb7/JiLA/ychxP8oIsX/KSLJ/yojy/8qI83/KyTQ/ysj0v8sJNT/LSXX/y4l - 2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m - 4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l1/8sJdT/LCTT/ysj0f8qJM7/KiPL/ykiyf8oIsf/JyHE/yYi - wv8mIb7/JSG8/yQguv8jILb/IiC0/yIgsP9iY8L/3d3j/+Dg4P/Kysr/x8fH/8TExP/Dw8P/wcHB/7+/ - v/+9vb3/vLy8/7u7u/+4uLj/t7e3/7a2tv+1tbX/tLS0/7Ozs/+ysrL/r6+v/6enp/+Ojo7/ampq/zAw - MLIAAABJAAAAHwAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABMAAAA1FBQUfVVVVfd5eXn/l5eX/6Sk - pP+mpqb/p6en/6ioqP+pqan/q6ur/6ysrP+tra3/rq6u/6+vr/+ysrL/s7Oz/7S0tP8zN5X/HB2c/x0d - n/8dHaH/Hh2k/x8dpv8fHqf/IB6r/yEerf8iH7D/IiCz/yMhtf8kILj/JSG7/yYhvv8mIsD/JyHD/ygi - xf8pIsn/KiPL/yojzf8rJND/KyPS/ywk1P8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm - 4P8wJt7/LyXe/y8l3v8vJd7/LyXe/zAm3v8wJt//Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl - 1P8sJNP/KyPR/yojzv8qI8v/KSLJ/ygixv8nIcT/JiLC/yYhvv8lIbz/JCC4/yMgtv8iILT/IiCw/yEf - rv9AQ7b/0NDe/93d3f/Hx8f/w8PD/8HBwf+/v7//vb29/7y8vP+7u7v/uLi4/7e3t/+2trb/tbW1/7S0 - tP+ysrL/sLCw/6+vr/+urq7/rKys/6CgoP+AgID/W1tb9xQUFH0AAAA2AAAAEwAAAAMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAKAAAAJAAAAFJAQEDVbW1t/46Ojv+enp7/o6Oj/6SkpP+lpaX/pqam/6enp/+oqKj/qamp/6ur - q/+tra3/rq6u/6+vr/+wsLD/s7Oz/ystkv8cHZv/HB2f/x0dof8dHaT/Hh2l/x8ep/8gHqv/IB6t/yEe - sP8iH7P/IyC1/yMguP8kIbv/JSG+/yYiwP8mIcP/JyLF/ykiyf8qI8v/KiPN/ysk0P8rI9L/LCTU/y0k - 1/8uJdj/Liba/y4m2v8uJdj/LibT/y0l0f8tJcz/LSXJ/y0lw/8tJcP/LSXD/y0lw/8tJcP/LSXE/y0l - yf8tJc3/LSXR/y4l1v8uJtr/Liba/y4l2f8tJdf/LCXU/ywk0/8rI9H/KiPO/yojy/8pIsn/KCLG/ych - xP8mIsL/JiG+/yUhvP8kILj/IyC2/yIgtP8iILD/IR+u/yAgq/84ObL/y8za/9vb2//Dw8P/vr6+/729 - vf+8vLz/urq6/7i4uP+3t7f/tbW1/7S0tP+zs7P/srKy/7CwsP+vr6//rq6u/62trf+srKz/p6en/5SU - lP9ycnL/RERE1QAAAFIAAAAkAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABUAAAA6IiIilV9fX/5+fn7/mZmZ/5+f - n/+hoaH/o6Oj/6SkpP+lpaX/paWl/6enp/+oqKj/qamp/6urq/+srKz/ra2t/6+vr/+wsLD/KCmS/xwd - nP8cHZ//HB2h/x0dpP8eHaX/Hx6n/yAeq/8gHq3/IR6w/yIfsv8jILX/IyC4/yQgu/8lIb7/JiK//yYh - w/8nIsX/KCLJ/ykjy/8qI83/KiTO/ysj0v8sJNT/LSTW/y0k0/8tJM7/LCTG/yskvP8qI7L/KSSq/ykj - ov8oI57/KCOa/ygjmv8oI5r/KCOa/ygjmv8oI5r/KCOc/ygjo/8qJKz/KyS3/ywkxP8sJcz/LSTS/y0l - 1P8sJNT/LCPS/ysj0f8qI87/KiPL/ykiyf8oIsb/JyHE/yYiwv8mIb7/JSG8/yQguP8jILb/IiC0/yIg - sP8hH67/IB+r/yAeqf80Nq3/ysvZ/9bW1v++vr7/u7u7/7q6uv+4uLj/tra2/7W1tf+0tLT/s7Oz/7Ky - sv+wsLD/rq6u/62trf+srKz/q6ur/6urq/+oqKj/oaGh/4aGhv9kZGT+IyMjlQAAADoAAAAVAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAKAAAAJgICAlhLS0vlcXFx/4+Pj/+dnZ3/n5+f/5+fn/+goKD/oaGh/6Ojo/+kpKT/paWl/6am - pv+np6f/qKio/6urq/+srKz/ra2t/6+vr/8jI4//HB2c/xwdn/8cHaH/HR2j/x4dpf8fHqf/IB6r/yAe - rf8hHq//Ih+y/yMgtf8jILj/JCC7/yUhvv8mIr//JiHD/ycixf8oIsn/KSPL/yojzf8qJM7/KyTQ/ysk - zv8rJMX/KiO4/ygjq/8nIp7/JyKW/yYikf8mIoz/JiKK/yomjP9IRZ7/SUaf/0lGn/9JRp//SUaf/0hF - nv8oJIn/JiKL/yYhjv8nIpT/KCKc/ygjqP8qI7X/KyPD/yslzP8sI9H/KyPR/yojzv8qI8v/KSLJ/ygi - xv8nIcP/JiLC/yYhvv8lIbz/JCC4/yMhtf8iILT/Ih+w/yEerv8gH6v/IB6p/x8dpv84Oq3/0NHZ/87O - zv+6urr/t7e3/7a2tv+1tbX/s7Oz/7Kysv+wsLD/r6+v/66urv+tra3/rKys/6urq/+pqan/qKio/6en - p/+lpaX/l5eX/3d3d/9PT0/lAgICWAAAACYAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABUAAAA8KCgon2VlZf+CgoL/l5eX/5yc - nP+dnZ3/np6e/5+fn/+goKD/oaGh/6Ghof+jo6P/pKSk/6Wlpf+np6f/qKio/6mpqf+rq6v/r6+v/xwe - jf8cHZz/HB2f/xwdof8dHaP/Hh2l/x8ep/8gHqv/IB6t/yEer/8iH7L/IyC1/yMguP8kILv/JSC9/yYh - v/8mIcP/JyLF/ygiyf8pI8v/KiPM/yojyf8pIsL/KCK0/yYhov8mIZT/JSGL/yUgh/9RT6D/hIO9/7Cv - 1P/e3e3//Pz8//7+/v///////////////////////v7+//z8/P/V1ej/rq3T/11aqP8qJ4v/JSGL/yYh - kv8mIp//KCOy/yojwv8rI8z/KiPN/yojy/8pIsn/KCLG/yYhw/8mIsD/JSG+/yQhvP8jILj/IyC1/yIf - s/8hH7D/IB6u/yAfq/8gHqn/Hx2m/x4dpP9ESK7/1tbY/8HBwf+2trb/tLS0/7Ozs/+ysrL/sLCw/6+v - r/+tra3/rKys/6urq/+pqan/qKio/6ioqP+np6f/pqam/6Wlpf+fn5//iIiI/2tra/8rKyugAAAAPAAA - ABUAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAKAAAAJQICAlhMTEzmcnJy/46Ojv+ZmZn/m5ub/5ycnP+cnJz/nZ2d/56env+fn5//oKCg/6Gh - of+jo6P/pKSk/6Wlpf+mpqb/p6en/6ioqP+srK3/GxyM/xwcnP8cHZ//HB2g/x0do/8eHaX/Hx6n/yAe - q/8gHqz/IR6v/yIfsv8jILX/IyC4/yQgu/8lIL3/JiG//yYhw/8nIcX/KCLH/ygixf8oIr7/JyKv/yUh - n/8kII//Ix+H/0RClf+QkMD/3t3o//X19f/39/f/+vr6//v7+//8/Pz//v7+//////////////////7+ - /v/+/v7//Pz8//v7+//5+fn/9vb2/+fn7v+dnMf/VlSg/yYih/8kII//JiGi/ygitf8pIsT/KSPJ/ygi - yf8nIsb/JiHD/yYiwP8lIb7/JCC8/yMguP8jILX/Ih+z/yEfsP8gHq7/IB+r/x8eqf8eHaX/HR2k/x0d - ov9maLX/1tbW/7a2tv+ysrL/sLCw/6+vr/+urq7/ra2t/6ysrP+rq6v/qamp/6ioqP+np6f/pqam/6Wl - pf+kpKT/pKSk/6Ghof+VlZX/eHh4/1BQUOYCAgJYAAAAJQAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABMAAAA5KSkpnmVlZf+BgYH/lJSU/5mZ - mf+ampr/mpqa/5ubm/+cnJz/nZ2d/52dnf+enp7/n5+f/6CgoP+hoaH/o6Oj/6SkpP+lpaX/p6en/6Kj - qf8bHI3/HByc/xwcnf8cHaD/HR2j/x4dpf8fHqf/IB6q/yAerP8hHq//Ih+y/yMgtf8jILj/JCC6/yUg - vf8mIb//JiHD/ychwv8nIrz/JiKu/yUfnP8jH43/Ix+F/0VElv+np8n/6+vr/+3t7f/x8fH/9PT0//b2 - 9v/5+fn/+/v7//z8/P/+/v7//////////////////v7+//7+/v/8/Pz/+vr6//n5+f/29vb/9PT0//Hx - 8f/v7+//ysrb/05Om/8jH4b/JCCT/yYhqf8oIrz/KCLG/ycixv8mIcP/JiLA/yUgvf8kILz/IyC4/yMg - tf8iH7P/IR+v/yAerv8gH6v/Hx6p/x4dpf8dHaP/HR2i/xwdnf+focb/y8vL/7CwsP+vr6//ra2t/6ys - rP+rq6v/qamp/6ioqP+np6f/pqam/6Wlpf+kpKT/pKSk/6Ojo/+hoaH/oKCg/52dnf+Hh4f/ampq/y0t - LZ4AAAA5AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAHAAAAIQMDA1JJSUngcXFx/4qKiv+VlZX/lpaW/5eXl/+ZmZn/mpqa/5qamv+bm5v/nJyc/52d - nf+enp7/n5+f/6CgoP+hoaH/o6Oj/6SkpP+lpaX/nJ2o/xsbjf8cHJz/HByd/xwcoP8dHKP/Hh2l/x8d - p/8gHqr/IB6s/yEer/8iH7L/IyC1/yMgt/8kILr/JSC9/yYhv/8mIcD/JiC1/yMfnv8iHov/IR6C/z08 - jv+iocD/4uLi/+bm5v/q6ur/7e3t//Dw8P/09PT/9vb2//n5+f/7+/v//Pz8//7+/v////////////// - ///+/v7//v7+//v7+//6+vr/9/f3//X19f/y8vL/8PDw/+3t7f/q6ur/5+fn/5mYv/8xMIn/Ih6J/yUg - n/8mIbf/JyLD/yYhw/8mIcD/JSC9/yQgu/8jILj/IyC1/yIfs/8hH6//IB6t/yAfq/8fHqn/Hh2l/x0d - o/8cHaH/HB2f/ygroP/HxtH/vb29/62trf+rq6v/qamp/6ioqP+np6f/pqam/6ampv+lpaX/pKSk/6Oj - o/+hoaH/oKCg/6CgoP+fn5//nZ2d/5KSkv93d3f/TU1N4AMDA1IAAAAhAAAABwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA8AAAAxISEhi2RkZP98fHz/kJCQ/5SU - lP+VlZX/lpaW/5aWlv+Xl5f/mZmZ/5qamv+ampr/m5ub/5ycnP+dnZ3/np6e/5+fn/+goKD/oaGh/6Oj - o/+YmKX/GxuN/xwcm/8cHJ3/HByg/x0co/8eHKX/Hx2m/yAdqv8gHaz/IR6v/yIfsv8iILT/IyC3/yQg - uv8lIL3/JiG//yYhv/8kIKz/IR2P/zQyh/+Li7L/2tra/93d3f/h4eH/5eXl/+jo6P/s7Oz/7+/v//Ly - 8v/19fX/9/f3//r6+v/8/Pz//v7+//////////////////7+/v/8/Pz/+/v7//r6+v/39/f/9fX1//Hx - 8f/v7+//7Ozs/+jo6P/l5eX/4uLi/9TU2v9gYKD/IR+F/yMfmv8lIbP/JiG+/yYhwP8lIL3/JCC7/yMg - uP8jILX/Ih+z/yEfr/8gHq3/IB+r/x8eqf8eHaX/HR2j/xwdof8cHZ//HB2c/0tPqf/T09P/r6+v/6mp - qf+oqKj/p6en/6ampv+lpaX/pKSk/6Ojo/+hoaH/oKCg/6CgoP+fn5//np6e/52dnf+dnZ3/l5eX/4SE - hP9paWn/IiIiiwAAADEAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAEAAAAGgAAAEVDQ0PPbm5u/4aGhv+SkpL/k5OT/5SUlP+UlJT/lZWV/5aWlv+Wlpb/l5eX/5mZ - mf+ampr/mpqa/5ubm/+cnJz/nZ2d/56env+fn5//oKCg/42NoP8bG47/HByb/xwcnf8cHKD/HRyj/x0c - pP8eHab/Hx2q/yAdrP8gHa//IR6y/yIftP8jILf/IyC6/yUgvf8mIb//JiHA/ysmt/+EhL//y8vO/9TU - 1P/X19f/29vb/9/f3//i4uL/5ubm/+rq6v/t7e3/8fHx//X19f/39/f/+vr6//z8/P/+/v7///////// - /////////v7+//z8/P/7+/v/+fn5//b29v/09PT/8fHx/+3t7f/q6ur/5+fn/+Tk5P/g4OD/3Nzc/9ra - 2v97e6v/IB2C/yIelv8kIK//JiG8/yUgvf8kILv/IyC3/yMgtf8iH7P/IR+v/yAerf8gH6r/Hx6p/x4d - pf8dHaP/HB2h/xwdn/8cHJz/Gxua/36Ct//CwsL/p6en/6ampv+lpaX/pKSk/6Ojo/+hoaH/oKCg/5+f - n/+fn5//np6e/52dnf+dnZ3/nJyc/5ubm/+ampr/jo6O/3R0dP9ISEjPAAAARQAAABoAAAAEAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAnExMTa1paWvZ3d3f/i4uL/5GR - kf+SkpL/kpKS/5OTk/+Tk5P/lJSU/5WVlf+Wlpb/lpaW/5eXl/+ZmZn/mpqa/5qamv+bm5v/nJyc/52d - nf+enp7/iIqf/xobjv8bHJv/HByd/xwcoP8dHKP/HRyk/x4dpv8fHar/IB2s/yAdr/8hHrD/Ih+0/yMf - t/8jH7r/JCC8/yUhvv8mIcL/WlnM/+Xl5f/Z2dn/0dHR/9XV1f/Z2dn/3Nzc/+Hh4f/l5eX/6Ojo/+zs - 7P/w8PD/9PT0//b29v/6+vr/+/v7//7+/v/////////////////+/v7//Pz8//v7+//5+fn/9vb2//Ly - 8v/w8PD/7Ozs/+jo6P/l5eX/4eHh/93d3f/b29v/19fX/9TU1P+EhK3/IB6B/yEelf8kIK//JSC7/yQg - u/8jILf/IyC1/yIfs/8hH6//IB6t/yAeqv8fHqn/Hh2l/x0co/8cHaH/HByd/xwcnP8bG5r/ICOZ/7q7 - yf+tra3/pKSk/6Ojo/+hoaH/oKCg/5+fn/+fn5//np6e/52dnf+cnJz/nJyc/5ubm/+ampr/mpqa/5mZ - mf+Tk5P/fX19/19fX/YTExNrAAAAJwAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAEgAAADczMzOoaWlp/4GBgf+Ojo7/kJCQ/5GRkf+RkZH/kpKS/5KSkv+Tk5P/k5OT/5SU - lP+VlZX/lZWV/5aWlv+Xl5f/mZmZ/5qamv+ampr/m5ub/5ycnP+Dg53/GhuP/xscm/8cHJ3/HByg/x0c - ov8dHKT/Hh2m/x8dqv8gHaz/IB2u/yEesP8iH7T/Ix+3/yMfuv8kH7z/JSC+/yYhwv8mIcT/fHvU/+Xl - 5f/a2tr/09PT/9bW1v/a2tr/39/f/+Li4v/n5+f/6+vr/+/v7//y8vL/9vb2//n5+f/7+/v//v7+//// - //////////////7+/v/8/Pz/+vr6//f39//19fX/8fHx/+/v7//r6+v/5+fn/+Tk5P/g4OD/3Nzc/9nZ - 2f/V1dX/0dHR/87Ozv+Ojq//IyCC/yEel/8kIK//JCC4/yMgt/8iILT/Ih+z/yEer/8gHa3/IB6q/x8d - p/8eHKX/HRyj/xwdof8cHJ3/HByb/xsbmv8aG5j/VVip/7+/v/+hoaH/oKCg/5+fn/+fn5//np6e/52d - nf+cnJz/nJyc/5ubm/+ampr/mpqa/5mZmf+Xl5f/l5eX/5SUlP+Hh4f/bm5u/zY2NqgAAAA3AAAAEgAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAASUxMTN1xcXH/hoaG/4yM - jP+Pj4//j4+P/5CQkP+QkJD/kZGR/5GRkf+SkpL/kpKS/5OTk/+UlJT/lJSU/5WVlf+Wlpb/l5eX/5mZ - mf+ampr/mpqa/25xjv8XFor/GBeW/xgXmP8YGJn/GRmc/xoYn/8bGaH/Gxmk/xwapv8dGar/Hhqs/x8c - rv8gG7L/IBy0/yEct/8iHrr/Ix29/yQev/8lH8P/d3fF/8vLy//Pz8//1NTU/9fX1//c3Nz/4eHh/+Xl - 5f/q6ur/7e3t//Hx8f/19fX/+fn5//v7+//+/v7//////////////////v7+//z8/P/6+vr/9/f3//T0 - 9P/w8PD/7Ozs/+jo6P/l5eX/4eHh/93d3f/a2tr/1dXV/9HR0f/Ozs7/y8vL/8jIyP+Fhaj/HhuB/yEd - nP8jILP/IyC3/yIftP8hHrL/IB6v/yAdrf8fHqr/Hh2n/x4cpf8dHKP/HB2h/xwcnf8cHJv/GxuZ/xob - mP8cHJf/p6rB/6Wlpf+enp7/np6e/52dnf+cnJz/m5ub/5ubm/+ampr/mZmZ/5mZmf+Xl5f/l5eX/5aW - lv+VlZX/lJSU/4uLi/92dnb/UFBQ3QAAAEkAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAACQAAACcWFhZwYGBg+3l5ef+IiIj/jIyM/46Ojv+Ojo7/j4+P/4+Pj/+Pj4//kJCQ/5CQ - kP+RkZH/kpKS/5KSkv+Tk5P/k5OT/5SUlP+VlZX/lpaW/5eXl/+ZmZn/a2yM/xYWiv8YF5X/GBeX/xgX - mf8ZF5z/Ghif/xsZof8bGaP/HBql/x0Zqf8dGqv/Hhuu/yAbsv8gHLT/IRy3/yIduv8jHb3/Ix6//yUe - w/8mH8X/eXjG/83Nzf/Q0ND/1dXV/9ra2v/f39//4uLi/+fn5//s7Oz/8PDw//T09P/39/f/+/v7//z8 - /P/////////////////+/v7/+/v7//n5+f/29vb/8vLy/+/v7//r6+v/5+fn/+Li4v/f39//29vb/9bW - 1v/T09P/z8/P/8vLy//IyMj/xMTE/8HBwf9naJr/HhuF/yEeo/8iH7P/Ih+0/yEesv8gHq//IB2t/x8e - qv8eHaf/HRyk/x0co/8cHaH/HByd/xscm/8aG5n/GhuY/xoal/9MUKL/tra2/52dnf+cnJz/m5ub/5qa - mv+ampr/mZmZ/5eXl/+Xl5f/lpaW/5aWlv+VlZX/lZWV/5SUlP+UlJT/j4+P/35+fv9kZGT7GRkZcAAA - ACcAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAQAAAAMzk5Oapra2v/gICA/4qK - iv+Li4v/i4uL/4yMjP+MjIz/jo6O/46Ojv+Pj4//j4+P/5CQkP+QkJD/kZGR/5GRkf+SkpL/k5OT/5OT - k/+UlJT/lZWV/5aWlv9iZIr/FhaK/xcXlf8YF5f/GBeZ/xkYnP8ZF53/Gxig/xsYo/8cGaX/HRmp/x0a - q/8eG67/Hxqy/yAbtP8hHLf/Ih26/yMcvf8jHb//JB7D/yYfxf8nH8f/fn3H/87Ozv/R0dH/1tbW/9vb - 2//g4OD/5eXl/+rq6v/v7+//8vLy//f39//6+vr//Pz8//7+/v////////////7+/v/7+/v/+fn5//X1 - 9f/x8fH/7e3t/+jo6P/l5eX/4ODg/9zc3P/X19f/1NTU/8/Pz//Ly8v/yMjI/8TExP/BwcH/vr6+/7u7 - u/8/Poj/HxyN/yEfqv8iH7L/IR6y/yAerv8gHaz/Hx6q/x4dp/8dHKT/HRyi/xwdof8cHJ3/Gxyb/xob - mf8aG5f/GhuW/xock/+vscD/nZ2d/5qamv+ZmZn/mZmZ/5eXl/+Wlpb/lpaW/5WVlf+VlZX/lJSU/5SU - lP+Tk5P/k5OT/5KSkv+RkZH/hoaG/3BwcP88PDyqAAAANAAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAABcAAABBSkpK0nFxcf+Dg4P/ioqK/4qKiv+Kior/i4uL/4uLi/+Li4v/jIyM/4yM - jP+Ojo7/jo6O/4+Pj/+Pj4//kJCQ/5CQkP+RkZH/kpKS/5KSkv+Tk5P/lJSU/11ghv8WFoj/FxeR/xcX - kf8XF5P/GBeV/xkXl/8aGJn/Gxec/xsYn/8cGaL/HRqj/x0apf8eGqn/Hxur/yAbrv8gHK//Ihyy/yId - s/8jHrb/JB63/yUduv8mH73/goHE/8/Pz//U1NT/2dnZ/93d3f/i4uL/6Ojo/+3t7f/x8fH/9vb2//r6 - +v/8/Pz//v7+/////////////v7+//v7+//39/f/9PT0//Dw8P/r6+v/5+fn/+Li4v/d3d3/2dnZ/9XV - 1f/Q0ND/zc3N/8jIyP/ExMT/wcHB/729vf+7u7v/t7e3/6Skr/8lJH//IB2Z/yEerv8hHrL/IB6u/yAd - rP8fHqr/Hh2n/x0cpP8dHKL/HB2g/xwcnf8bHJv/GhuZ/xobl/8aG5b/GRuV/19jpv+np6f/l5eX/5eX - l/+Wlpb/lZWV/5WVlf+UlJT/lJSU/5OTk/+Tk5P/kpKS/5KSkv+RkZH/kZGR/5GRkf+JiYn/dnZ2/01N - TdMAAABBAAAAFwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAHxAQEF5ZWVnwdXV1/4SE - hP+JiYn/iYmJ/4mJif+Kior/ioqK/4qKiv+Li4v/i4uL/4uLi/+MjIz/jIyM/46Ojv+Ojo7/j4+P/4+P - j/+QkJD/kZGR/5GRkf+SkpL/V1mA/xUWeP8WFn7/FhZ9/xYWff8XF37/GBeB/xgXgv8YF4X/GReG/xoY - if8bGYr/GxqM/xwZjv8dGpD/HRqU/x4blf8fGpT/IBuU/yAclv8gHJj/IhyZ/yIem/8jHZ//goK4/9DQ - 0P/V1dX/2tra/+Dg4P/m5ub/6+vr//Dw8P/19fX/+fn5//z8/P/+/v7////////////8/Pz/+vr6//b2 - 9v/y8vL/7+/v/+rq6v/l5eX/4ODg/9vb2//W1tb/0dHR/83Nzf/Jycn/xMTE/8HBwf+9vb3/urq6/7e3 - t/+0tLT/srKy/3N1mP8cGoX/IR6k/yEesP8gHq7/IB2s/x8dqf8eHaf/HRyk/x0bov8cHKD/HBud/xsb - m/8aGpn/GhqX/xoalv8ZGpT/ISSS/7Cytf+VlZX/lZWV/5SUlP+UlJT/k5OT/5OTk/+SkpL/kpKS/5GR - kf+RkZH/kJCQ/5CQkP+QkJD/j4+P/4qKiv97e3v/XFxc8RAQEF4AAAAgAAAABgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAoAAAApJiYmhGhoaP97e3v/hYWF/4iIiP+IiIj/iIiI/4iIiP+JiYn/iYmJ/4mJ - if+Kior/ioqK/4uLi/+Li4v/i4uL/4yMjP+MjIz/jo6O/46Ojv+Pj4//kJCQ/5CQkP9QUnj/FBVh/xQW - ZP8VFmT/FRVl/xYWZv8WFmf/FhZp/xcWa/8XFmz/GBdu/xgXb/8YGHH/Ghhz/xsYdf8bGHf/Gxp3/xwa - eP8dGnj/HRp6/x0bfP8fG33/IByA/yAcgv8iHoX/iomx/9HR0f/X19f/3Nzc/+Li4v/o6Oj/7+/v//T0 - 9P/39/f/+/v7//7+/v////////////z8/P/6+vr/9vb2//Hx8f/s7Oz/5+fn/+Hh4f/c3Nz/19fX/9PT - 0//Ozs7/ycnJ/8TExP/BwcH/vb29/7q6uv+2trb/s7Oz/7CwsP+urq7/rKys/zU2g/8eG5T/IR6q/yAd - rv8gHaz/Hx2p/x4cpv8dG6T/HRui/xwcoP8cG5z/Gxub/xoamf8aGpf/GhqW/xkalP8YGpH/h4qw/5WV - lf+Tk5P/k5OT/5KSkv+SkpL/kZGR/5GRkf+QkJD/kJCQ/4+Pj/+Pj4//j4+P/46Ojv+Ojo7/i4uL/4CA - gP9sbGz/JiYmhAAAACkAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAADwAAADI7OzuwbW1t/35+ - fv+FhYX/h4eH/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iIiI/4mJif+JiYn/iYmJ/4qKiv+Kior/ioqK/4uL - i/+Li4v/jIyM/4yMjP+Ojo7/jo6O/1pbef8mKWP/Jylk/zM1av8/QXD/P0Jx/0BDcv9BQ3P/QkN1/0ND - dv9ERHj/RUV5/0ZGe/9HR33/R0l+/0hKgf9KS4L/Y2KO/2pqkv9ra5X/bW2X/3Bwmv9ycpz/dnWh/3l5 - pP9/fqr/yMjK/9PT0//Z2dn/4ODg/+bm5v/s7Oz/8vLy//f39//7+/v//v7+///////+/v7//Pz8//n5 - +f/09PT/7+/v/+rq6v/k5OT/39/f/9nZ2f/T09P/zs7O/8nJyf/ExMT/v7+//7y8vP+4uLj/tbW1/7Ky - sv+vr6//ra2t/6urq/+oqKj/hYaa/xwagv8gHaH/IB2t/x8drP8fHan/Hhym/x0bpP8dG6L/HByg/xwb - nP8bG5v/GhqZ/xoal/8aGpb/GRqU/xgak/9KTpv/np6e/5GRkf+RkZH/kJCQ/5CQkP+QkJD/j4+P/4+P - j/+Ojo7/jo6O/46Ojv+MjIz/jIyM/4yMjP+Kior/hISE/3Fxcf8+Pj6wAAAAMgAAAA8AAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAUAAAAPE1NTdVxcXH/gICA/4aGhv+Ghob/hoaG/4aGhv+Ghob/h4eH/4eH - h/+Hh4f/h4eH/4iIiP+IiIj/iIiI/4mJif+JiYn/iYmJ/4qKiv+Kior/i4uL/4uLi/+MjIz/jIyM/46O - jv+Pj4//j4+P/5CQkP+RkZH/kpKS/5OTk/+Tk5P/lZWV/5aWlv+Xl5f/mpqa/5ubm/+dnZ3/n5+f/6Gh - of+kpKT/pqam/6mpqf+tra3/sLCw/7S0tP+4uLj/vb29/8PDw//IyMj/z8/P/9XV1f/c3Nz/4uLi/+rq - 6v/w8PD/9vb2//v7+//+/v7///////7+/v/7+/v/9/f3//Ly8v/t7e3/5+fn/+Hh4f/b29v/1dXV/8/P - z//Jycn/xMTE/7+/v/+8vLz/t7e3/7S0tP+wsLD/rq6u/6urq/+oqKj/pqam/6Wlpf+jo6P/PDyB/x0b - lf8fHan/Hx2s/x4dqf8dHKb/HRuj/x0bov8cHKD/HBuc/xsbmv8aGpn/GhqX/xoalv8ZGpT/GBqT/x4f - jP+lpaf/kJCQ/4+Pj/+Pj4//j4+P/46Ojv+Ojo7/jIyM/4yMjP+MjIz/i4uL/4uLi/+Li4v/i4uL/4qK - iv+FhYX/dXV1/1JSUtUAAAA8AAAAFAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABoDAwNKV1dX63V1 - df+BgYH/hYWF/4WFhf+FhYX/hYWF/4WFhf+Ghob/hoaG/4aGhv+Ghob/h4eH/4eHh/+Hh4f/h4eH/4iI - iP+IiIj/iIiI/4mJif+JiYn/ioqK/4qKiv+Li4v/i4uL/4yMjP+MjIz/jo6O/4+Pj/+Pj4//kJCQ/5GR - kf+SkpL/k5OT/5SUlP+Wlpb/l5eX/5qamv+bm5v/nZ2d/5+fn/+hoaH/paWl/6enp/+rq6v/r6+v/7Oz - s/+4uLj/vb29/8PDw//Jycn/0NDQ/9fX1//f39//5ubm/+3t7f/19fX/+vr6//7+/v///////v7+//v7 - +//29vb/8fHx/+rq6v/k5OT/3Nzc/9bW1v/Q0ND/ysrK/8TExP+/v7//u7u7/7a2tv+zs7P/r6+v/62t - rf+pqan/p6en/6Wlpf+jo6P/oKCg/5+fn/9+fpL/GxmF/x4dov8fHav/Hh2p/x0cpv8dG6P/HBui/xsc - oP8bG5z/Ghua/xoamP8aGpf/GhqW/xkalP8YGpP/GBqM/4iLpv+Ojo7/jo6O/4yMjP+MjIz/jIyM/4uL - i/+Li4v/i4uL/4qKiv+Kior/ioqK/4qKiv+JiYn/iYmJ/4aGhv95eXn/W1tb6wMDA0oAAAAaAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAGAAAAIBoaGmlfX1/2eHh4/4KCgv+EhIT/hISE/4SEhP+EhIT/hISE/4WF - hf+FhYX/hYWF/4WFhf+FhYX/hoaG/4aGhv+Ghob/hoaG/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iIiI/4mJ - if+JiYn/ioqK/4qKiv+Li4v/jIyM/4yMjP+Ojo7/j4+P/5CQkP+RkZH/kpKS/5OTk/+UlJT/lZWV/5eX - l/+ampr/m5ub/52dnf+goKD/o6Oj/6ampv+pqan/rq6u/7Ozs/+3t7f/vb29/8TExP/Kysr/09PT/9ra - 2v/i4uL/6+vr//Ly8v/5+fn//v7+///////+/v7/+vr6//X19f/v7+//5+fn/+Dg4P/Z2dn/0dHR/8rK - yv/ExMT/vr6+/7q6uv+1tbX/srKy/66urv+rq6v/qKio/6Wlpf+jo6P/oKCg/5+fn/+dnZ3/nJyc/5qa - mv8wMX//Hh2Y/x8dqf8eHan/HRym/x0bo/8cHKH/Gxyg/xsbnP8aG5r/GhqY/xoal/8aGpb/GRqU/xga - k/8YGo7/Y2ie/4yMjP+Li4v/i4uL/4uLi/+Kior/ioqK/4qKiv+JiYn/iYmJ/4mJif+JiYn/iIiI/4iI - iP+IiIj/hoaG/3x8fP9iYmL2HR0daQAAACAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAlLS0th2ho - aP57e3v/goKC/4ODg/+Dg4P/g4OD/4ODg/+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+FhYX/hYWF/4WF - hf+FhYX/hoaG/4aGhv+Ghob/hoaG/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iYmJ/4mJif+Kior/ioqK/4uL - i/+MjIz/jIyM/46Ojv+Pj4//kJCQ/5GRkf+SkpL/k5OT/5WVlf+Xl5f/mpqa/5ycnP+enp7/oaGh/6Sk - pP+oqKj/ra2t/7Kysv+3t7f/vb29/8TExP/Nzc3/1dXV/9/f3//n5+f/8PDw//f39//8/Pz///////7+ - /v/5+fn/8vLy/+vr6//i4uL/29vb/9PT0//Ly8v/xMTE/76+vv+4uLj/tLS0/7CwsP+srKz/qKio/6am - pv+jo6P/oKCg/56env+dnZ3/m5ub/5qamv+Xl5f/lpaW/2RliP8cGoz/Hxyk/x4cp/8dHKb/HRuj/xwc - of8bHJ//Gxuc/xobmv8aGpj/GRuW/xkalv8YGpT/GBqT/xgZj/9ARZT/jIyM/4qKiv+JiYn/iYmJ/4mJ - if+JiYn/iIiI/4iIiP+IiIj/iIiI/4eHh/+Hh4f/h4eH/4eHh/+Ghob/gICA/2pqav4tLS2HAAAAJQAA - AAgAAAAAAAAAAAAAAAAAAAAAAAAACgAAACs4ODidb29v/3x8fP+BgYH/goKC/4KCgv+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4SEhP+EhIT/hISE/4SEhP+EhIT/hYWF/4WFhf+FhYX/hYWF/4aG - hv+Ghob/hoaG/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iYmJ/4mJif+Kior/i4uL/4uLi/+MjIz/jo6O/4+P - j/+QkJD/kpKS/5OTk/+VlZX/lpaW/5qamv+cnJz/n5+f/6Ojo/+mpqb/q6ur/7CwsP+2trb/vb29/8XF - xf/Pz8//2dnZ/+Li4v/t7e3/9vb2//z8/P///////v7+//f39//w8PD/5+fn/93d3f/V1dX/zc3N/8TE - xP+9vb3/t7e3/7Ozs/+urq7/qamp/6ampv+kpKT/oKCg/56env+cnJz/m5ub/5mZmf+Xl5f/lZWV/5SU - lP+Tk5P/jo6R/x8fgv8eHaD/Hhyn/x0bpf8dG6P/HBuh/xsbn/8bG5z/Ghqa/xoamP8ZG5b/GRqV/xga - lP8XGpP/FxmQ/yQniv+Tk5P/iIiI/4iIiP+IiIj/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Ghob/hoaG/4aG - hv+Ghob/hoaG/4WFhf+BgYH/cnJy/zw8PJ0AAAArAAAACgAAAAAAAAAAAAAAAAAAAAAAAAANAAAALkND - Q7JxcXH/fn5+/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4ODg/+Dg4P/hISE/4SEhP+EhIT/hISE/4WFhf+FhYX/hYWF/4WFhf+Ghob/hoaG/4aG - hv+Hh4f/h4eH/4iIiP+IiIj/iYmJ/4qKiv+Li4v/i4uL/4yMjP+Ojo7/kJCQ/5GRkf+SkpL/lJSU/5aW - lv+ampr/nJyc/5+fn/+kpKT/qKio/66urv+1tbX/vb29/8fHx//R0dH/3Nzc/+jo6P/09PT/+/v7//// - ///8/Pz/9vb2/+zs7P/h4eH/19fX/87Ozv/ExMT/vb29/7a2tv+wsLD/rKys/6enp/+kpKT/oKCg/56e - nv+cnJz/mpqa/5eXl/+Wlpb/lJSU/5OTk/+SkpL/kZGR/5CQkP+Pj4//Pz9+/x0bmP8dHKb/HRul/x0b - o/8cG6H/Gxuf/xsanP8aGpr/GhqY/xkalv8ZGpX/GBqU/xcak/8XGZD/FxmF/5GSlv+Hh4f/h4eH/4aG - hv+Ghob/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WFhf+FhYX/hYWF/4KCgv9zc3P/REREsgAA - AC4AAAANAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAzS0tLx3Jycv99fX3/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4SEhP+EhIT/hISE/4SEhP+EhIT/hYWF/4WFhf+Ghob/hoaG/4aGhv+Hh4f/h4eH/4iI - iP+JiYn/iYmJ/4qKiv+Li4v/jIyM/4+Pj/+QkJD/kpKS/5OTk/+Wlpb/mpqa/52dnf+hoaH/pqam/62t - rf+0tLT/vb29/8jIyP/V1dX/4uLi//Dw8P/7+/v///////v7+//y8vL/5+fn/9vb2//Pz8//xMTE/7y8 - vP+0tLT/rq6u/6ioqP+lpaX/oKCg/52dnf+bm5v/mZmZ/5aWlv+VlZX/k5OT/5KSkv+RkZH/kJCQ/4+P - j/+Ojo7/jIyM/4yMjP9kZIL/GxqP/x0bo/8dG6X/HBui/xwbof8bG5//Gxqb/xoamv8aGpj/GRqW/xkZ - lf8YGZP/FxmT/xcZkP8XGYb/fX6R/4WFhf+FhYX/hYWF/4WFhf+FhYX/hYWF/4WFhf+EhIT/hISE/4SE - hP+EhIT/hISE/4SEhP+EhIT/gYGB/3V1df9MTEzHAAAAMwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAEAAA - ADZSUlLVdHR0/35+fv+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4GBgf+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/hISE/4SEhP+EhIT/hISE/4WFhf+FhYX/hoaG/4aGhv+Hh4f/h4eH/4iIiP+JiYn/ioqK/4uL - i/+MjIz/j4+P/5GRkf+Tk5P/lZWV/5qamv+dnZ3/o6Oj/6mpqf+zs7P/vb29/8rKyv/a2tr/6+vr//n5 - +f//////+vr6/+/v7//g4OD/0dHR/8TExP+6urr/srKy/6urq/+lpaX/oKCg/52dnf+ampr/l5eX/5WV - lf+Tk5P/kpKS/5CQkP+Pj4//jo6O/4yMjP+MjIz/i4uL/4qKiv+Kior/iYmJ/4WFiP8dHIb/HRyf/x0b - pf8cG6L/Gxuh/xsbn/8bGpv/Ghqa/xoamP8ZGpb/GRmV/xgZk/8XGZH/FxiQ/xcZh/9pbIz/hISE/4SE - hP+EhIT/hISE/4SEhP+EhIT/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+BgYH/dnZ2/1VV - VdQAAAA2AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAOVhYWOB2dnb/fX19/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+EhIT/hISE/4SEhP+FhYX/hYWF/4aGhv+Hh4f/h4eH/4iIiP+JiYn/i4uL/4yMjP+Pj4//kpKS/5WV - lf+ampr/n5+f/6ampv+wsLD/vb29/8/Pz//i4uL/9vb2///////39/f/5+fn/9XV1f/ExMT/t7e3/66u - rv+mpqb/oKCg/5ycnP+ZmZn/lZWV/5OTk/+RkZH/kJCQ/4+Pj/+MjIz/i4uL/4uLi/+Kior/iYmJ/4mJ - if+IiIj/h4eH/4eHh/+Hh4f/hoaG/zI0gP8cG47/GxuU/xsakf8aGpD/GhqO/xoai/8aGor/GRmJ/xgZ - h/8YGYb/GBmE/xcZhP8XGIL/Fhl7/2Rmiv+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+CgoL/goKC/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4CAgP94eHj/WVlZ4AAAADgAAAASAAAAAAAAAAAAAAAAAAAAAAAA - ABMAAAA6XV1d63d3d/9+fn7/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4SE - hP+EhIT/hYWF/4aGhv+Ghob/h4eH/4mJif+Kior/jIyM/5CQkP+Tk5P/mpqa/6Ghof+tra3/vb29/9XV - 1f/w8PD///////Ly8v/b29v/xMTE/7S0tP+oqKj/oKCg/5ubm/+Wlpb/k5OT/5GRkf+Pj4//jIyM/4uL - i/+Kior/iYmJ/4iIiP+IiIj/h4eH/4eHh/+Ghob/hoaG/4WFhf+FhYX/hYWF/4SEhP+EhIT/RUV0/xYW - bP8VFW3/FRVr/xUVav8UFWn/FBRn/xQUZv8TE2X/EhNj/xIUYv8SFGH/EhRg/xITYP8RE13/S05u/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gICA/3h4 - eP9fX1/rAAAAOgAAABMAAAAAAAAAAAAAAAAAAAAAAAAAEwAAADxhYWHxeHh4/319ff9+fn7/fn5+/35+ - fv9+fn7/fn5+/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4KCgv+CgoL/goKC/4ODg/+Dg4P/hISE/4WF - hf+Ghob/h4eH/4mJif+MjIz/kpKS/5qamv+mpqb/vb29/+Li4v//////5+fn/8TExP+urq7/oKCg/5mZ - mf+Tk5P/kJCQ/4yMjP+Li4v/iYmJ/4iIiP+Hh4f/hoaG/4aGhv+FhYX/hYWF/4SEhP+EhIT/hISE/4OD - g/+Dg4P/g4OD/4ODg/+Dg4P/goKC/4KCgv9cW3f/FBVf/xQVXv8UFFz/ExRb/xMUWv8TE1n/ExNY/xIT - V/8SE1b/EhNV/xETVP8RE1P/ERNS/xETUv9FR2n/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP9+fn7/eXl5/2JiYvAAAAA8AAAAEwAAAAAAAAAAAAAAAAAA - AAAAAAATAAAAPWZmZvV5eXn/fX19/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+BgYH/gYGB/4GBgf+CgoL/goKC/4ODg/+FhYX/h4eH/4yM - jP+ampr/vb29///////ExMT/oKCg/5OTk/+MjIz/iYmJ/4eHh/+Ghob/hYWF/4SEhP+Dg4P/g4OD/4OD - g/+CgoL/goKC/4KCgv+CgoL/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/35+ - fv96enr/ZGRk8wAAAD0AAAATAAAAAAAAAAAAAAAAAAAAAAAAABMAAAA9Z2dn+Ht7e/99fX3/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv+bm5v/vLy8/7y8 - vP+8vLz/vLy8/7y8vP+8vLz/vLy8/7y8vP+8vLz/vLy8/7y8vP+8vLz/vLy8/7y8vP+SkpL/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fX19/3p6ev9mZmb2AAAAPQAAABMAAAAAAAAAAAAA - AAAAAAAAAAAAEwAAADxoaGj4fHx8/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/2pri/9OUpr/TlKg/05SoP9OU6L/TlOi/09To/9PVKT/T1Sl/1BU - pf9RU6f/UVOo/1FUq/9SVKz/UlWm/4GBk/9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/gICA/4CAgP+AgID/gICA/4GBgf+CgoL/g4OD/4WF - hf+Kior/lpaW/7u7u///////w8PD/6CgoP+Tk5P/jIyM/4mJif+Hh4f/hoaG/4WFhf+EhIT/g4OD/4OD - g/+Dg4P/goKC/4KCgv+CgoL/goKC/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/fHx8/2pqavgAAAA8AAAAEwAAAAAAAAAAAAAAAAAAAAAAAAATAAAAOmlpafV8fHz/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/UFOB/xcY - hv8XGY7/FxiP/xcZkf8YGZP/GBmV/xgalv8ZGpf/GhqZ/xsam/8bGpz/Gxug/xwbov8cG5z/b3CW/35+ - fv9+fn7/fn5+/35+fv+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4GBgf+BgYH/gYGB/4KC - gv+CgoL/g4OD/4SEhP+FhYX/h4eH/4qKiv+Pj4//lpaW/6Ojo/+7u7v/4uLi///////l5eX/w8PD/62t - rf+goKD/mZmZ/5OTk/+Pj4//jIyM/4qKiv+JiYn/iIiI/4eHh/+Ghob/hoaG/4WFhf+FhYX/hISE/4SE - hP+EhIT/g4OD/4ODg/+Dg4P/g4OD/4ODg/+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP99fX3/ampq9QAAADoAAAATAAAAAAAA - AAAAAAAAAAAAAAAAABIAAAA5Z2dn8H19ff+AgID/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9QUn7/FxiF/xcZjv8XGI//FxmR/xgZk/8YGZX/GBqW/xka - l/8aGpn/Gxqb/xsanf8bG6D/HBui/xwbn/9naZ7/gICA/4CAgP+AgID/gICA/4CAgP+BgYH/gYGB/4GB - gf+BgYH/goKC/4KCgv+CgoL/g4OD/4ODg/+EhIT/hYWF/4aGhv+IiIj/ioqK/4yMjP+RkZH/lpaW/56e - nv+pqan/u7u7/9XV1f/x8fH///////Hx8f/Z2dn/w8PD/7Ozs/+oqKj/oKCg/5qamv+Wlpb/k5OT/5CQ - kP+Pj4//jIyM/4uLi/+Kior/iYmJ/4iIiP+Hh4f/h4eH/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4SE - hP+EhIT/hISE/4SEhP+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4KCgv+CgoL/goKC/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/goKC/4CAgP9paWnwAAAAOQAAABIAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADZmZmbqfX19/4CA - gP9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/4CAgP+AgID/gICA/1RW - e/8XGIP/FxiP/xcYj/8XGZH/GBmT/xkZlf8ZGpb/GRqX/xoamf8bGpv/Gxqd/xsboP8cG6L/HRui/1hZ - ov+BgYH/gYGB/4GBgf+CgoL/goKC/4KCgv+CgoL/g4OD/4ODg/+EhIT/hISE/4WFhf+Ghob/h4eH/4iI - iP+Kior/jIyM/4+Pj/+SkpL/lpaW/5ycnP+jo6P/rq6u/7u7u//Ozs7/4uLi//b29v//////9vb2/+Xl - 5f/T09P/w8PD/7a2tv+tra3/pqam/6CgoP+cnJz/mZmZ/5WVlf+Tk5P/kZGR/4+Pj/+Ojo7/jIyM/4uL - i/+Kior/ioqK/4mJif+IiIj/iIiI/4eHh/+Hh4f/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+Dg4P/gYGB/2lpaekAAAA2AAAAEAAA - AAAAAAAAAAAAAAAAAAAAAAAPAAAAM2FhYd59fX3/gYGB/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/WVt3/xcYgf8XGY7/FxiP/xcZkf8YGZP/GRmV/xka - lv8ZGpf/GhqZ/xsam/8bGp3/Gxug/xwbov8dG6T/P0Ch/4yMjP+CgoL/g4OD/4ODg/+EhIT/hISE/4WF - hf+FhYX/hoaG/4eHh/+IiIj/iIiI/4qKiv+Li4v/jo6O/5CQkP+Tk5P/lpaW/5ubm/+goKD/p6en/7Cw - sP+7u7v/ycnJ/9ra2v/r6+v/+vr6///////5+fn/7Ozs/93d3f/Pz8//w8PD/7i4uP+wsLD/qamp/6Wl - pf+goKD/nJyc/5qamv+Wlpb/lJSU/5OTk/+RkZH/kJCQ/4+Pj/+Ojo7/jIyM/4uLi/+Li4v/ioqK/4mJ - if+JiYn/iIiI/4iIiP+IiIj/h4eH/4eHh/+Hh4f/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+FhYX/hISE/4SEhP+EhIT/hISE/4SEhP+EhIT/hISE/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4WFhf+CgoL/ZGRk3QAAADIAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAuX19f0X5+ - fv+CgoL/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gYGB/4GB - gf9oaHn/Fhh7/xcZjf8XGI//FxmR/xgZk/8ZGZX/GRqW/xoamP8aGpn/Gxqb/xsanf8bG6D/HBui/x0b - pP8mJqD/n5+f/4SEhP+FhYX/hYWF/4aGhv+Ghob/h4eH/4iIiP+JiYn/ioqK/4uLi/+MjIz/j4+P/5GR - kf+Tk5P/lpaW/5qamv+enp7/o6Oj/6mpqf+ysrL/u7u7/8fHx//V1dX/4uLi//Hx8f/7+/v///////v7 - +//x8fH/5eXl/9nZ2f/Ozs7/w8PD/7q6uv+zs7P/ra2t/6ioqP+kpKT/oKCg/52dnf+ampr/mZmZ/5aW - lv+UlJT/k5OT/5KSkv+QkJD/j4+P/4+Pj/+Ojo7/jIyM/4uLi/+Li4v/ioqK/4qKiv+JiYn/iYmJ/4iI - iP+IiIj/iIiI/4eHh/+Hh4f/h4eH/4eHh/+Ghob/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+FhYX/hYWF/4SEhP+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+EhIT/hoaG/4KCgv9gYGDRAAAALgAA - AA0AAAAAAAAAAAAAAAAAAAAAAAAACgAAACpZWVnCfn5+/4KCgv+AgID/gICA/4CAgP+AgID/gYGB/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/3h5fv8VF3X/FxmL/xcYkP8XGZH/GBmT/xkZ - lf8ZGpb/GhqY/xoamf8bGpv/Gxqd/xsboP8cG6L/HRuk/x0bo/+Ula3/hoaG/4eHh/+Hh4f/iIiI/4mJ - if+Kior/i4uL/4yMjP+Ojo7/kJCQ/5GRkf+Tk5P/lpaW/5qamv+dnZ3/oaGh/6ampv+srKz/s7Oz/7u7 - u//FxcX/0NDQ/9zc3P/q6ur/9fX1//z8/P//////+/v7//X19f/r6+v/4ODg/9XV1f/Ly8v/w8PD/7y8 - vP+1tbX/r6+v/6urq/+mpqb/o6Oj/6CgoP+dnZ3/m5ub/5mZmf+Xl5f/lZWV/5SUlP+Tk5P/kpKS/5GR - kf+QkJD/j4+P/46Ojv+Ojo7/jIyM/4yMjP+Li4v/i4uL/4qKiv+Kior/iYmJ/4mJif+JiYn/iIiI/4iI - iP+IiIj/h4eH/4eHh/+Hh4f/h4eH/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+FhYX/hYWF/4WFhf+Ghob/g4OD/1xcXMIAAAArAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAJVJS - Uqt+fn7/g4OD/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4KCgv+CgoL/goKC/4KC - gv+CgoL/goKC/x4hc/8XGIj/FxiQ/xcZkf8YGZP/GRmV/xkalv8aGpj/GhqZ/xsam/8bGp3/Gxug/xwb - ov8dG6T/HRum/2psrv+RkZH/iYmJ/4qKiv+Li4v/jIyM/46Ojv+Pj4//kJCQ/5KSkv+UlJT/lpaW/5mZ - mf+cnJz/n5+f/6Ojo/+oqKj/rq6u/7S0tP+7u7v/xMTE/87Ozv/X19f/4uLi/+3t7f/29vb//Pz8//// - ///8/Pz/9vb2/+/v7//l5eX/3Nzc/9PT0//Kysr/w8PD/7y8vP+2trb/srKy/62trf+pqan/pqam/6Oj - o/+goKD/nZ2d/5ycnP+ampr/mZmZ/5aWlv+VlZX/lJSU/5OTk/+SkpL/kZGR/5CQkP+Pj4//j4+P/46O - jv+Ojo7/jIyM/4yMjP+Li4v/i4uL/4qKiv+Kior/ioqK/4mJif+JiYn/iYmJ/4iIiP+IiIj/iIiI/4iI - iP+Hh4f/h4eH/4eHh/+Hh4f/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4eHh/+Dg4P/VVVVqwAA - ACUAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAfR0dHk35+fv+EhIT/gYGB/4GBgf+BgYH/goKC/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+Dg4P/g4OD/4ODg/+Dg4P/MDRy/xcZhP8XGJD/FxmR/xgZ - k/8ZGZX/GRqW/xoamP8aGpr/Gxqb/xsanf8bG6H/HBui/x0bpP8dG6f/OTuo/6mpqf+Li4v/jIyM/46O - jv+Pj4//kZGR/5KSkv+UlJT/lpaW/5mZmf+bm5v/np6e/6Ghof+lpaX/qamp/6+vr/+1tbX/u7u7/8PD - w//Ly8v/1dXV/93d3f/n5+f/8fHx//n5+f/+/v7///////z8/P/39/f/8fHx/+rq6v/h4eH/2dnZ/9HR - 0f/Kysr/w8PD/729vf+3t7f/s7Oz/6+vr/+rq6v/qKio/6Wlpf+jo6P/oKCg/56env+cnJz/mpqa/5mZ - mf+Xl5f/lpaW/5WVlf+UlJT/k5OT/5KSkv+RkZH/kJCQ/5CQkP+Pj4//j4+P/46Ojv+Ojo7/jIyM/4yM - jP+Li4v/i4uL/4qKiv+Kior/ioqK/4mJif+JiYn/iYmJ/4mJif+IiIj/iIiI/4iIiP+IiIj/h4eH/4eH - h/+Hh4f/h4eH/4eHh/+Ghob/iIiI/4SEhP9ISEiTAAAAIAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAwAA - ABk8PDx6fHx8/oaGhv+Dg4P/goKC/4KCgv+CgoL/goKC/4KCgv+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4SE - hP+EhIT/hISE/4SEhP9GSnL/Fhh+/xcYjv8XGZH/GBmT/xkZlf8ZGpb/GhqY/xoamv8bGpv/Gxqd/xwb - of8dG6P/HRuk/x0bp/8eHKf/pKW7/5KSkv+QkJD/kZGR/5OTk/+UlJT/lpaW/5mZmf+bm5v/nZ2d/6Cg - oP+jo6P/p6en/6ysrP+wsLD/tbW1/7u7u//CwsL/ycnJ/9HR0f/a2tr/4uLi/+vr6//09PT/+vr6//7+ - /v///////v7+//n5+f/09PT/7Ozs/+Xl5f/d3d3/1tbW/8/Pz//Jycn/w8PD/729vf+4uLj/tLS0/7Cw - sP+tra3/qamp/6enp/+lpaX/oaGh/6CgoP+enp7/nJyc/5ubm/+ampr/mZmZ/5aWlv+VlZX/lJSU/5SU - lP+Tk5P/kpKS/5KSkv+ZmZn/m5ub/5ubm/+Pj4//jo6O/46Ojv+MjIz/jIyM/4yMjP+Li4v/i4uL/4uL - i/+Kior/ioqK/4qKiv+JiYn/iYmJ/4mJif+JiYn/iIiI/4iIiP+IiIj/iIiI/4mJif+Li4v/goKC/kBA - QHoAAAAaAAAABAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAFCkpKVd2dnb0h4eH/4WFhf+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4ODg/+EhIT/hISE/4SEhP+EhIT/hYWF/4WFhf+FhYX/hYWF/2Zmev8VF3X/FxqL/xcZ - k/8YGZP/GRqV/xkalv8aGpj/Ghqa/xsanP8bGp3/HBuh/x0bo/8dG6T/Hhun/x4cqv9gYbL/rKys/5OT - k/+UlJT/lpaW/5mZmf+ampr/nJyc/5+fn/+hoaH/paWl/6ioqP+tra3/sLCw/7a2tv+7u7v/wsLC/8jI - yP/Pz8//19fX/9/f3//n5+f/7+/v//X19f/7+/v//v7+///////+/v7/+vr6//X19f/v7+//6Ojo/+Li - 4v/b29v/1dXV/8/Pz//Jycn/w8PD/76+vv+6urr/tbW1/7Kysv+urq7/rKys/6ioqP+mpqb/pKSk/6Gh - of+goKD/oaGh/6ampv+rq6v/ra2t/7S0tP+1tbX/vr6+/76+vv/IyMj/yMjI/8jIyP/Hx8f/uLi4/5GR - kf+QkJD/kJCQ/4+Pj/+Pj4//jo6O/46Ojv+MjIz/jIyM/4yMjP+Li4v/i4uL/4uLi/+Kior/ioqK/4qK - iv+Kior/iYmJ/4mJif+JiYn/i4uL/46Ojv9+fn70KioqWQAAABQAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAOBAQENnJycueIiIj/hoaG/4ODg/+EhIT/hISE/4SEhP+EhIT/hISE/4WFhf+FhYX/hYWF/4WF - hf+Ghob/hoaG/4aGhv+Hh4f/hYWG/xocbf8XGYb/FxqT/xgalP8ZGpX/GRuW/xoamP8aGpr/Gxuc/xsb - nf8cG6H/HRuj/x0bpf8eHKf/Hxyq/yQjq/+5usP/nJyc/5eXl/+ampr/nJyc/56env+goKD/o6Oj/6am - pv+pqan/rq6u/7Kysv+2trb/u7u7/8HBwf/Hx8f/zs7O/9XV1f/b29v/4uLi/+rq6v/x8fH/9vb2//v7 - +//+/v7///////7+/v/7+/v/9vb2//Hx8f/r6+v/5eXl/9/f3//Z2dn/09PT/87Ozv/IyMj/w8PD/76+ - vv+/v7//vb29/8LCwv/BwcH/xcXF/8XFxf/Kysr/zc3N/9DQ0P/Pz8//z8/P/87Ozv/Bwcr/o6TF/6Kj - xP98fbz/e325/2Fjsv9WWa//SEyp/zU5of9VWZr/k5OT/5KSkv+SkpL/kZGR/5CQkP+QkJD/j4+P/4+P - j/+Pj4//jo6O/46Ojv+MjIz/jIyM/4yMjP+Li4v/i4uL/4uLi/+Li4v/ioqK/4qKiv+Ojo7/kJCQ/3h4 - eOcEBAQ2AAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAoaWlpzYmJif+IiIj/hISE/4SE - hP+FhYX/hYWF/4WFhf+FhYX/hoaG/4aGhv+Ghob/h4eH/4eHh/+Hh4f/iIiI/4iIiP+IiIj/NTlw/xcY - gf8YGpD/GBqU/xkalf8ZG5b/GhqY/xobmv8bG5z/Gxuf/xwcof8dG6P/HRyl/x4cp/8fHar/IB2t/2xt - uf+6urr/m5ub/52dnf+fn5//oaGh/6Wlpf+np6f/q6ur/66urv+zs7P/tra2/7u7u//BwcH/x8fH/8vL - y//T09P/2dnZ/+Dg4P/m5ub/7Ozs//Ly8v/39/f//Pz8/////////////v7+//v7+//39/f/8vLy/+3t - 7f/o6Oj/4uLi/9zc3P/X19f/1dXV/9/f3//i4uL/4eHh/9/f3/+5udj/sbHW/5yc0/+Hh87/f3/M/2Fh - xv9gYMT/QUK9/z49uv8sK7X/IB2w/yAdrv8fHaz/Hh2p/x4cpv8dG6T/HRui/xwcoP8cG5z/GxuY/zk8 - kf+VlZX/lJSU/5OTk/+Tk5P/kpKS/5KSkv+RkZH/kZGR/5CQkP+QkJD/j4+P/4+Pj/+Pj4//jo6O/46O - jv+MjIz/jIyM/4yMjP+Li4v/i4uL/4+Pj/+RkZH/bm5uzQAAACgAAAAKAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABgAAAB9VVVWfiYmJ/4qKiv+FhYX/hYWF/4aGhv+Ghob/hoaG/4aGhv+Hh4f/h4eH/4eH - h/+IiIj/iIiI/4iIiP+JiYn/iYmJ/4qKiv9bXHn/FRd0/xgajf8ZGpT/GRqW/xkblv8aGpj/Ghua/xsb - nP8bG5//HByh/x0bo/8dHKX/Hhyp/x8dqv8gHa3/JiWv/7e3yP+srKz/oaGh/6Ojo/+mpqb/qKio/6ys - rP+vr6//s7Oz/7e3t/+7u7v/wcHB/8XFxf/Ly8v/0NDQ/9bW1v/c3Nz/4uLi/+rq6v/v7+//9fX1//n5 - +f/8/Pz////////////+/v7/+/v7//n5+f/19fX/8PDw/+vr6//l5eX/4ODg/9bW2P9WVKD/QD6l/0E9 - u/8pIsb/KiLM/ykhzP8oIcn/JyDG/yYhxP8lIMD/JCC+/yMfvP8jH7r/Ih62/yEes/8hHbD/IB2u/yAd - rP8fHan/Hhym/x0bpP8dG6L/HByg/xwbnP8bG5n/NjmS/5eXl/+Wlpb/lZWV/5WVlf+UlJT/k5OT/5OT - k/+SkpL/kpKS/5GRkf+RkZH/kJCQ/5CQkP+Pj4//j4+P/4+Pj/+Ojo7/jo6O/46Ojv+MjIz/kpKS/5GR - kf9dXV2fAAAAHwAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAFz09PWyJiYn/jIyM/4iI - iP+Ghob/h4eH/4eHh/+Hh4f/iIiI/4iIiP+IiIj/iIiI/4mJif+JiYn/ioqK/4qKiv+Li4v/i4uL/4eI - iv8YGWn/GBqF/xkak/8aGpb/GhqX/xoamP8aG5r/Gxuc/xsbn/8cG6L/HRuj/x0cpf8eHKn/Hx2r/yAd - rf8gHa//VFW5/8vLy/+oqKj/p6en/6mpqf+tra3/sLCw/7S0tP+3t7f/u7u7/7+/v//ExMT/ycnJ/8/P - z//V1dX/2tra/+Dg4P/m5ub/6+vr//Hx8f/29vb/+vr6//z8/P////////////7+/v/8/Pz/+fn5//X1 - 9f/x8fH/7Ozs/+fn5//i4uL/3d3d/6Wkwv8rKIj/Ix6T/ychrf8oIsD/KSLJ/yghyf8nIMb/JiHE/yYg - wP8lIL//JB+8/yMfuv8jH7b/Ih+z/yEesv8gHa7/IB2s/x8dqf8eHKf/HRyk/x0bov8cHKD/HBud/xsb - mv8vMZL/mpqa/5mZmf+Xl5f/lpaW/5aWlv+VlZX/lJSU/5SUlP+Tk5P/k5OT/5KSkv+SkpL/kZGR/5GR - kf+QkJD/kJCQ/5CQkP+Pj4//j4+P/5CQkP+UlJT/kZGR/0FBQW0AAAAXAAAAAwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAQISEhRX5+fu2RkZH/ioqK/4eHh/+IiIj/iIiI/4iIiP+JiYn/iYmJ/4mJ - if+Kior/ioqK/4uLi/+Li4v/jIyM/4yMjP+Ojo7/jo6O/z5Bcf8WGHn/GRmO/xoalv8aGpf/GhqZ/xsb - mv8cG5z/HBuf/x0bov8dG6P/HRyl/x4cqf8fHav/IB2t/yAdr/8hHrL/mJjH/8fHx/+srKz/rq6u/7Cw - sP+0tLT/t7e3/7u7u/+/v7//xMTE/8nJyf/Ozs7/09PT/9fX1//d3d3/4uLi/+jo6P/t7e3/8vLy//b2 - 9v/6+vr//Pz8/////////////v7+//z8/P/6+vr/9vb2//Ly8v/v7+//6urq/+Xl5f/g4OD/3Nzc/7q5 - y/86N47/Ix2N/yUgpP8nIbv/KCLG/ycgxv8mIcT/JiDC/yUgv/8kH7z/Ix+6/yMftv8iH7T/IR6y/yAe - rv8gHaz/Hx6q/x4dp/8dHKT/HRyi/xwdoP8cHJ3/Gxua/yorkP+cnJz/m5ub/5qamv+ZmZn/mZmZ/5eX - l/+Wlpb/lZWV/5WVlf+UlJT/lJSU/5OTk/+Tk5P/kpKS/5KSkv+RkZH/kZGR/5GRkf+QkJD/k5OT/5eX - l/+GhobtISEhRQAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAobW1txpGR - kf+Ojo7/iIiI/4mJif+JiYn/iYmJ/4qKiv+Kior/i4uL/4uLi/+Li4v/jIyM/46Ojv+Ojo7/j4+P/4+P - j/+QkJD/dXaF/xQWav8ZGoj/GhqV/xoal/8aGpn/Gxua/xwbnP8cG5//HRui/x0bpP8eHKX/Hxyp/yAd - q/8gHK7/IR2w/yEes/8uLbb/w8TR/8XFxf+ysrL/tLS0/7e3t/+7u7v/v7+//8PDw//IyMj/zc3N/9HR - 0f/W1tb/29vb/+Dg4P/m5ub/6+vr/+/v7//09PT/9/f3//v7+//+/v7////////////+/v7//Pz8//r6 - +v/39/f/9PT0//Dw8P/s7Oz/5+fn/+Tk5P/f39//2tra/8vL0v9KSZX/IR2I/yMenP8mIbX/JyHC/yYh - xP8mIML/JSC//yQfvP8jH7r/Ix+3/yIftP8hHrL/IB6u/yAdrP8fHqr/Hh2n/x0cpP8dHKL/HB2h/xwc - nf8bHJv/IySP/5+fn/+dnZ3/nJyc/5ubm/+ampr/mpqa/5mZmf+Xl5f/lpaW/5aWlv+VlZX/lZWV/5SU - lP+UlJT/k5OT/5OTk/+SkpL/kpKS/5GRkf+VlZX/mpqa/3d3d8cAAAAoAAAACQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABxcXFyVkZGR/5GRkf+Kior/ioqK/4qKiv+Li4v/i4uL/4uL - i/+MjIz/jIyM/46Ojv+Ojo7/j4+P/4+Pj/+QkJD/kZGR/5KSkv+SkpL/MjRu/xcZe/8aGZD/GhqX/xoa - mf8bG5v/HBuc/xwbn/8dG6L/HRuk/x4cpv8fHKn/IB2r/yAdrv8hHrD/Ih+z/yMftv9MTb7/1dXX/8nJ - yf+4uLj/u7u7/7+/v//Dw8P/x8fH/8vLy//Q0ND/1dXV/9nZ2f/d3d3/4uLi/+fn5//s7Oz/8fHx//X1 - 9f/5+fn/+/v7//7+/v////////////7+/v/8/Pz/+/v7//f39//19fX/8fHx/+3t7f/q6ur/5eXl/+Hh - 4f/d3d3/2dnZ/9PT1P9nZ6H/IB2E/yIelf8lIK//JiG//yYhwv8lIL//JB+8/yMfuv8jH7f/Ih+0/yEe - sv8gHq7/IB2t/x8eqv8eHaf/HRyk/x0cov8cHaH/HByd/xscm/8dHo3/o6Oj/5+fn/+enp7/nZ2d/5yc - nP+bm5v/mpqa/5qamv+ZmZn/mZmZ/5eXl/+Wlpb/lpaW/5WVlf+VlZX/lJSU/5SUlP+Tk5P/lJSU/5mZ - mf+ampr/YmJilgAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAETEx - MVOMjIz6lZWV/4+Pj/+Li4v/i4uL/4yMjP+MjIz/jo6O/46Ojv+Pj4//j4+P/5CQkP+QkJD/kZGR/5KS - kv+Tk5P/k5OT/5SUlP91doj/FRZr/xkaiP8aG5X/GhqZ/xsbm/8cG53/HByf/x0bov8dHKT/Hh2m/x8d - qf8gHqv/IB2u/yEesP8iH7T/Ix+2/yMguP9lZMb/29vb/9DQ0P+/v7//w8PD/8fHx//Kysr/z8/P/9PT - 0//X19f/3Nzc/+Hh4f/l5eX/6urq/+3t7f/y8vL/9vb2//n5+f/7+/v//v7+/////////////v7+//z8 - /P/7+/v/+fn5//b29v/y8vL/7+/v/+vr6//n5+f/5OTk/+Dg4P/b29v/19fX/9TU1P+FhK7/IyCF/yId - nP8mIbr/JiHC/yUhv/8kILz/Ix+7/yMft/8iH7T/IR6y/yAer/8gHa3/Hx6q/x4dp/8dHKT/HRyj/xwd - of8cHJ3/HByb/xsbjP+mpqf/oaGh/6CgoP+fn5//np6e/52dnf+cnJz/m5ub/5ubm/+ampr/mZmZ/5mZ - mf+Xl5f/l5eX/5aWlv+VlZX/lZWV/5WVlf+Wlpb/np6e/5SUlPo0NDRTAAAAEQAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAJ3x8fNGZmZn/k5OT/4yMjP+Ojo7/jo6O/4+P - j/+Pj4//j4+P/5CQkP+RkZH/kZGR/5KSkv+Tk5P/k5OT/5SUlP+VlZX/lpaW/5eXl/8wM27/Fxh4/xob - j/8aG5j/Gxub/xwcnf8cHKD/HRyi/x0cpP8eHab/Hx2q/yAdrP8gHa7/IR6w/yIftP8jH7f/IyC4/yQf - vP9vbsr/39/f/9nZ2f/Hx8f/ycnJ/87Ozv/R0dH/1tbW/9ra2v/f39//4uLi/+fn5//r6+v/8PDw//T0 - 9P/29vb/+vr6//z8/P/+/v7////////////+/v7//v7+//v7+//5+fn/9vb2//T09P/w8PD/7Ozs/+jo - 6P/l5eX/4eHh/93d3f/a2tr/1tbW/9PT0/+hoL//Mi2t/yYhvf8mIcL/JiG//yUgvf8jILv/IyC3/yIf - tP8hHrL/IB6v/yAdrf8gHqr/Hx2n/x4cpf8dHKP/HB2h/xwcnf8cHJv/GxuM/6ChqP+kpKT/oaGh/6Gh - of+goKD/n5+f/56env+dnZ3/nJyc/5ycnP+bm5v/mpqa/5qamv+ZmZn/mZmZ/5eXl/+Wlpb/lpaW/5ub - m/+goKD/g4OD0QAAACcAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAQAAAAZX19fjpmZmf+Wlpb/kJCQ/4+Pj/+Pj4//kJCQ/5CQkP+RkZH/kZGR/5KSkv+Tk5P/k5OT/5SU - lP+VlZX/lpaW/5eXl/+ZmZn/mpqa/31+jv8WF2j/GRqE/xobl/8bHJv/HByd/xwcoP8dHKL/HRyk/x4d - pv8fHar/IB2s/yAdrv8hHrD/Ih+0/yMft/8jH7r/JB+8/yUhvv9hYsv/3d3h/9/f3//Q0ND/0NDQ/9XV - 1f/Z2dn/3Nzc/+Hh4f/l5eX/6urq/+3t7f/x8fH/9fX1//f39//6+vr//Pz8//7+/v////////////// - ///+/v7/+/v7//r6+v/39/f/9fX1//Hx8f/t7e3/6+vr/+fn5//k5OT/4ODg/9zc3P/Z2dn/3d3d/+bm - 5v/ExeH/KSPD/yYhwv8mIcD/JSC9/yQgu/8jILf/IyC1/yIfs/8hH6//IB6t/yAeqv8fHaf/Hhyl/x0c - o/8cHaH/HByd/xwcnP8bG43/mZql/6Wlpf+kpKT/o6Oj/6Ghof+goKD/oKCg/5+fn/+enp7/nZ2d/52d - nf+cnJz/m5ub/5qamv+ampr/mZmZ/5mZmf+ZmZn/oKCg/6Ghof9mZmaOAAAAGQAAAAQAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA8qKipIkZGR8pycnP+Tk5P/kJCQ/5GR - kf+RkZH/kpKS/5KSkv+Tk5P/lJSU/5SUlP+VlZX/lpaW/5eXl/+ZmZn/mZmZ/5qamv+bm5v/nJyc/0dI - d/8WF3L/GhuN/xscmv8cHJ3/HByg/x0cov8dHKT/Hh2m/x8dqv8gHaz/IB2v/yEesP8iH7T/Ix+3/yMf - uv8kIL3/JSG+/yYhwv9NSsr/2trj/+bm5v/c3Nz/19fX/9vb2//f39//4uLi/+fn5//r6+v/7+/v//Ly - 8v/19fX/+fn5//v7+//8/Pz//v7+//////////////////7+/v/8/Pz/+vr6//f39//19fX/8vLy/+/v - 7//s7Oz/6Ojo/+Xl5f/i4uL/5OTk/+rq6v/r6+v/39/o/19d0f8nIcX/JiHD/yYhwP8lIL3/JCC7/yMg - t/8jILX/Ih+z/yEfr/8gHq3/IB+q/x8eqf8eHaX/HR2j/xwdof8cHJ3/HByc/xscjv+Vlqb/p6en/6am - pv+lpaX/pKSk/6Ojo/+hoaH/oKCg/6CgoP+fn5//np6e/52dnf+dnZ3/nJyc/5ubm/+bm5v/mpqa/52d - nf+kpKT/mZmZ8i4uLkgAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABwAAACF6enq9np6e/5mZmf+SkpL/kpKS/5KSkv+Tk5P/lJSU/5SUlP+VlZX/lpaW/5eX - l/+ZmZn/mZmZ/5qamv+bm5v/nJyc/52dnf+enp7/l5ec/yAjaf8YGXv/GxyT/xwcnP8cHKD/HRyj/x0c - pP8eHab/Hx2q/yAdrP8gHa//IR6y/yIftP8jILf/JCC6/yUgvf8mIb//JiHC/ychxP9DQMz/zMvk/+vr - 6//o6Oj/4eHh/+Hh4f/l5eX/6Ojo/+zs7P/w8PD/8vLy//b29v/5+fn/+/v7//z8/P/+/v7///////// - /////////v7+//z8/P/6+vr/+fn5//b29v/09PT/8PDw/+3t7f/q6ur/6urq/+/v7//w8PD/6+vu/5ST - 3v82M8z/KCLH/ychxf8mIcP/JiHA/yUgvf8kILv/IyC4/yMgtf8iH7P/IR+v/yAerf8gH6v/Hx6p/x4d - pf8dHaP/HB2h/xwdn/8cHZz/GxyP/5OUqf+pqan/qKio/6enp/+mpqb/paWl/6SkpP+jo6P/oaGh/6Cg - oP+goKD/n5+f/56env+dnZ3/nZ2d/5ycnP+cnJz/o6Oj/6enp/+Dg4O+AAAAIQAAAAcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAE0xMTGecnJz+n5+f/5aW - lv+Tk5P/lJSU/5WVlf+VlZX/lpaW/5eXl/+Xl5f/mZmZ/5qamv+bm5v/nJyc/52dnf+enp7/n5+f/6Cg - oP+hoaH/bW6K/xYWaf8aG4X/HBuZ/xwcoP8dHKP/Hhyl/x8dpv8gHar/IB2s/yEer/8iH7L/IiC0/yMg - t/8kILr/JSC9/yYhv/8mIcP/JyHE/yghx/8wKsv/j47b/+3t7f/v7+//7e3t/+rq6v/q6ur/7e3t//Hx - 8f/09PT/9vb2//n5+f/7+/v//Pz8//7+/v/////////////////+/v7//Pz8//v7+//5+fn/9vb2//T0 - 9P/x8fH/8fHx//Ly8v/09PT/8vLy/6mp5v9EP9X/KiPN/ykjyv8oIsn/JyHG/yYhw/8mIcD/JSC9/yQg - u/8jILj/IyC1/yIfs/8hH6//IB6t/yAfq/8fHqn/Hh2l/x0do/8cHaH/HB2f/xwdnP8bHJD/jY6n/6ys - rP+rq6v/qamp/6ioqP+np6f/pqam/6Wlpf+kpKT/o6Oj/6Ghof+goKD/oKCg/5+fn/+enp7/nZ2d/6Cg - oP+np6f/pqam/lBQUGgAAAATAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAKBgYGKYmJidOjo6P/nJyc/5WVlf+VlZX/lpaW/5eXl/+Xl5f/mZmZ/5qa - mv+bm5v/nJyc/52dnf+enp7/n5+f/6CgoP+hoaH/o6Oj/6SkpP+mpqb/R0l6/xcYb/8bG4z/HByd/x0c - o/8eHaX/Hx2n/yAeqv8gHqz/IR6v/yIfsv8jILX/IyC3/yQguv8lIL3/JiG//yYhw/8nIcX/KCLH/ykj - yv8qI8z/TEnV/7q66P/y8vL/9PT0//X19f/09PT/9PT0//X19f/39/f/+vr6//v7+//+/v7//v7+//// - //////////////7+/v/8/Pz/+/v7//n5+f/5+fn/9/f3//f39//39/f/9vb2/7u77P9NStr/KyPS/yok - 0P8qI83/KSPL/ygiyf8nIsb/JiHD/yYhwP8lIL3/JCC8/yMguP8jILX/Ih+z/yEfr/8gHq7/IB+r/x8e - qf8eHaX/HR2j/x0dov8cHZ//HB2c/xsckf+Ehqf/rq6u/6ysrP+rq6v/qamp/6ioqP+np6f/pqam/6Wl - pf+lpaX/pKSk/6Ojo/+hoaH/oKCg/6CgoP+fn5//paWl/62trf+RkZHTBgYGKQAAAAoAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAVYWFhfaam - pv+jo6P/mZmZ/5eXl/+Xl5f/mZmZ/5qamv+bm5v/m5ub/5ycnP+dnZ3/np6e/5+fn/+goKD/oaGh/6Oj - o/+lpaX/pqam/6enp/+kpKb/Ky5v/xkZdf8bHJD/HR2g/x4dpf8fHqf/IB6q/yAerP8hHq//Ih+y/yMg - tf8jILj/JCC6/yUgvf8mIb//JiHD/ychxf8oIsf/KSPK/yojzP8qJM7/KyPS/1ZT2/+sq+v/7u31//f3 - 9//5+fn/+vr6//r6+v/7+/v//Pz8//7+/v///////////////////////v7+//7+/v/8/Pz//Pz8//v7 - +//6+vr/+fn5/7W17/9RTd7/LSTX/ywk1P8rI9L/KiTQ/yojzf8pI8v/KCLJ/ycixv8mIcP/JiLA/yUh - vv8kILz/IyC4/yMgtf8iH7P/IR+w/yAerv8gH6v/Hx6p/x4dpf8dHaP/HR2i/xwdn/8cHZz/GxyT/4CC - p/+vr6//rq6u/62trf+srKz/q6ur/6mpqf+oqKj/p6en/6ampv+lpaX/pKSk/6SkpP+jo6P/oaGh/6Oj - o/+srKz/rq6u/2ZmZn0AAAAVAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAoGBgYqk5OT2qioqP+enp7/mZmZ/5qamv+ampr/m5ub/5yc - nP+dnZ3/np6e/5+fn/+goKD/oaGh/6Ojo/+kpKT/paWl/6enp/+oqKj/qamp/6ysrP+SkqD/Hh5p/xkZ - ev8cHJX/Hh2j/x8ep/8gHqv/IB6s/yEer/8iH7L/IyC1/yMguP8kILv/JSC9/yYhv/8mIcP/JyLF/ygi - yf8pI8v/KiPM/yokzv8rI9L/LCTU/y0k1/8zKtn/ZGHi/7Cu8P/z8vr//Pz8//z8/P/+/v7///////// - /////////////////////////v7+//7+/v/8/Pz/xsX1/4J/6v9AOt//Liba/y4l2f8tJNf/LCTU/ysj - 0v8qJND/KiPN/ykjy/8oIsn/JyLG/yYhw/8mIsD/JSG+/yQhvP8jILj/IyC1/yIfs/8hH7D/IB6u/yAf - q/8fHqn/Hh2l/x0dpP8dHaL/HB2f/xwdnP8bG5P/enym/7Kysv+wsLD/r6+v/66urv+srKz/q6ur/6mp - qf+oqKj/qKio/6enp/+mpqb/paWl/6SkpP+jo6P/qamp/7Kysv+ZmZnbBgYGKgAAAAoAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAA - ABVmZmZ8qamp/qenp/+dnZ3/m5ub/5ycnP+dnZ3/np6e/5+fn/+goKD/oaGh/6Ghof+jo6P/paWl/6am - pv+np6f/qKio/6urq/+srKz/rq6u/6+vr/+Dg5v/Ghpq/xoafv8dHZf/Hx6k/yAeq/8gHq3/IR6v/yIf - sv8jILX/IyC4/yQgu/8lIL3/JiG//yYhw/8nIsX/KCLJ/ykjy/8qI83/KiTO/ysj0v8sJNT/LSTX/y4l - 2P8uJtr/Libd/zQs3/9VUOX/dnTr/5yZ8P+ioPP/srD1/8/O+f+sq/T/oqDz/5+d8/93dO3/U03m/zcv - 4v8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0k1/8sJNT/LCPS/ysk0P8qI87/KiPL/ykiyf8oIsb/JyHD/yYi - wP8lIb7/JCG8/yMguP8jILX/IiC0/yIfsP8hHq7/IB+p/x8epf8fHaX/Hh2k/x0dov8dHZ//HB2c/xsb - lP91eKX/tLS0/7Kysv+wsLD/r6+v/66urv+tra3/rKys/6urq/+pqan/qKio/6enp/+mpqb/pqam/6en - p/+wsLD/sbGx/mtra3sAAAAVAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACgAAACeVlZXXra2t/6SkpP+dnZ3/nZ2d/56e - nv+fn5//oKCg/6Ghof+jo6P/pKSk/6Wlpf+mpqb/qKio/6mpqf+rq6v/ra2t/66urv+vr6//srKy/7Oz - s/91dpb/GBlr/xoagP8eHZj/Hx6m/yAerf8hHq//Ih+y/yMgtf8jILj/JCC7/yUhvv8mIr//JiHD/yci - xf8oIsn/KSPL/yojzf8rJND/KyPS/ywk1P8tJNf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm - 4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywk - 1P8sI9L/KyTQ/yojzv8qI8v/KSLJ/ygixv8nIcP/JiLC/yYhvv8lIbz/JCC4/yMhtf8iILT/Ih+v/yEf - qf8fH5r/HR2T/x4dmf8eHaH/HR2i/x0dn/8cHZ3/GxuV/2tupP+1tbX/tLS0/7Ozs/+ysrL/sLCw/6+v - r/+tra3/rKys/6ysrP+rq6v/qamp/6ioqP+oqKj/ra2t/7W1tf+dnZ3XBgYGJwAAAAoAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAADAAAAE2BgYGqtra3+ra2t/6Ojo/+fn5//oKCg/6Ghof+jo6P/o6Oj/6Wlpf+mpqb/p6en/6io - qP+pqan/rKys/62trf+urq7/sLCw/7Kysv+0tLT/tbW1/7e3t/9tb5X/GBlr/xsbgP8eHZn/IB+p/yEe - sP8iH7L/IyC1/yMguP8kIbv/JSG+/yYiwP8mIcP/JyLF/ykiyf8qI8v/KiPN/ysk0P8rI9L/LCTU/y0l - 1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm - 4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdf/LCTU/ywj0v8rI9H/KiPO/yojy/8pIsn/KCLG/ych - xP8mIsL/JiG+/yUhvP8kILj/IyC2/yIgsv8hIKb/Hh2V/xwcfv8aG3X/GxuB/x0dlP8dHZ//HR2f/xwd - nf8bG5X/Zmmi/7e3t/+2trb/tLS0/7Ozs/+ysrL/sLCw/6+vr/+urq7/ra2t/6ysrP+rq6v/qamp/6ys - rP+2trb/tra2/mZmZmsAAAATAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAH5OTk8Czs7P/q6ur/6Oj - o/+hoaH/o6Oj/6SkpP+lpaX/pqam/6enp/+oqKj/q6ur/6ysrP+tra3/r6+v/7CwsP+ysrL/tLS0/7W1 - tf+3t7f/urq6/7u7u/9vcZf/Ghtt/xsbgP8fHpj/IR+q/yIfsv8jILX/IyC4/yUhu/8mIb7/JiLA/ych - w/8oIsX/KSLJ/yojy/8qI83/KyTQ/ysj0v8sJNT/LSXX/y4l2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm - 4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l - 1/8sJNT/LCPS/ysj0f8qI87/KiPL/ykiyf8oIsb/JyHE/yYiwv8mIb7/JSG8/yQguP8jIbL/IR+k/x8d - jv8cG3n/HyBu/01Oh/8aG23/Ght7/xwcj/8dHZr/HB2c/xwclv9fY6H/uLi4/7e3t/+2trb/tbW1/7S0 - tP+zs7P/srKy/7CwsP+vr6//ra2t/62trf+tra3/tbW1/7y8vP+bm5vAAAAAHwAAAAcAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAOR0dHS62trfK0tLT/qamp/6Ojo/+lpaX/pqam/6enp/+oqKj/qamp/6ur - q/+srKz/rq6u/6+vr/+wsLD/s7Oz/7S0tP+2trb/t7e3/7q6uv+7u7v/vb29/7+/v/+CgqH/HR1u/xsb - fP8fHZX/ISCp/yMhtP8kILj/JSG7/yYhvv8mIsD/JyHE/ygixf8pIsn/KiPL/yojzf8rJND/KyPS/ywk - 1P8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm - 4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl1P8sJNP/KyPR/yojzv8qI8v/KSLJ/ygi - xv8nIcT/JiLC/yYhvv8lIbr/IyCy/yEfoP8eHYn/HBt1/zM0e/+qqrr/ycnJ/4WGpP8dHmz/GRp2/xwc - i/8cHZj/HByW/1peoP+7u7v/urq6/7e3t/+2trb/tbW1/7S0tP+zs7P/srKy/7CwsP+vr6//rq6u/7Oz - s/+8vLz/tbW18kpKSksAAAAOAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAWfn5+jbi4 - uP+zs7P/qKio/6ampv+np6f/qKio/6mpqf+rq6v/ra2t/66urv+vr6//sLCw/7Ozs/+0tLT/tra2/7e3 - t/+6urr/u7u7/729vf+/v7//wsLC/8TExP+Tla3/IyVx/xwbef8fHY7/IiCl/yQgtP8lIbr/JiG+/yYi - wP8nIcT/KCLF/ykiyf8qI8v/KiPN/ysk0P8rJNP/LCXU/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m - 4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l - 2f8tJdf/LCXU/ywk0/8rI9H/KiPO/yojy/8pIsn/KCLH/ychxP8mIsL/JiG8/yQhsP8iH5v/Hh2D/x0c - c/9dXpT/yMjL/83Nzf/Kysr/ycnJ/5SVrP8hJG3/GRpz/xsch/8bHJD/UFOc/7y8vP+7u7v/urq6/7i4 - uP+3t7f/tbW1/7S0tP+zs7P/srKy/7CwsP+zs7P/u7u7/8HBwf+FhYWNAAAAFgAAAAUAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAkHBwcjpKSkzry8vP+ysrL/qamp/6ioqP+rq6v/rKys/62t - rf+urq7/r6+v/7Kysv+zs7P/tLS0/7a2tv+3t7f/urq6/7u7u/+9vb3/v7+//8LCwv/Dw8P/xcXF/8jI - yP+ysb7/OzyA/x0bdv8fHon/Ih+g/yQhsP8mIbz/JiLA/ychxP8oIsb/KSLJ/yojy/8qI83/KyTQ/ysk - 0/8sJdT/LSXX/y4l2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm - 5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l1/8sJdT/LCTT/ysk0f8qJM7/KiPL/yki - yf8oIsf/JyHD/yYhvP8kIKz/IR+V/x8cgP8nJ3j/kpSy/9HR0f/Q0ND/zs7O/83Nzf/Kysr/ycnJ/6Ok - s/8nKW7/GBlv/xobgP9JTJb/vr6+/729vf+7u7v/urq6/7i4uP+3t7f/tra2/7W1tf+0tLT/tLS0/7y8 - vP/Dw8P/qqqqzgcHByMAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AA1MTExJtLS07ry8vP+ysrL/rKys/6ysrP+tra3/rq6u/7CwsP+ysrL/s7Oz/7W1tf+2trb/t7e3/7q6 - uv+7u7v/vb29/7+/v//BwcH/w8PD/8XFxf/IyMj/ycnJ/8vLy//Jycv/YWOW/x0cc/8eHYL/ISCV/yQg - q/8lIbj/JyHC/ygixv8pIsn/KiPL/yokzf8rJND/KyTT/ywl1P8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m - 3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m - 2v8uJdn/LSXX/ywl1P8sJNP/KyTR/yokzv8qI8v/KSLJ/ygiw/8mIbb/IyCk/yEejP8fHXv/QkSJ/8DB - y//V1dX/1NTU/9HR0f/Pz8//zs7O/8vLy//Kysr/yMjI/66vuv8vMnP/GBlq/0BDhv+/v7//vr6+/729 - vf+8vLz/urq6/7i4uP+3t7f/tra2/7a2tv+7u7v/xMTE/7u7u+5QUFBJAAAADQAAAAIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABN2dnZ0v7+//by8vP+zs7P/rq6u/6+v - r/+wsLD/srKy/7Ozs/+1tbX/tra2/7i4uP+6urr/u7u7/729vf+/v7//wcHB/8PDw//FxcX/x8fH/8nJ - yf/Ly8v/zs7O/9DQ0P/R0dH/m5u3/zAvfv8fHXv/IR6L/yMgn/8lIrD/JyK+/ykix/8qI8v/KiTN/ysk - 0P8rJNP/LCXW/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm - 5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdf/LCXW/ywk0/8rJNH/KiTO/yok - yf8oI73/JSKt/yMgl/8gH4X/IR94/3N0pv/X19r/2dnZ/9bW1v/V1dX/09PT/9HR0f/Pz8//zs7O/8vL - y//Kysr/yMjI/7e4v/85PHb/NTh1/8LCwv+/v7//vr6+/729vf+8vLz/urq6/7i4uP+3t7f/u7u7/8TE - xP/Gxsb9e3t7dAAAABMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABwAAABmWlpakw8PD/7y8vP+zs7P/sLCw/7Kysv+0tLT/tbW1/7a2tv+4uLj/urq6/7u7 - u/+9vb3/v7+//8HBwf/Dw8P/xMTE/8fHx//Jycn/y8vL/83Nzf/Pz8//0dHR/9TU1P/W1tb/0NHV/2xs - oP8hIXn/IB6B/yEfjv8lIaL/JyK0/ygkwP8qI8r/KyTO/ysk0/8sJdb/LSXX/y4l2P8uJtr/Libd/y8l - 3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m - 3f8uJtr/LiXZ/y0l1/8sJdb/LCTS/yokzP8pI8D/JyKz/yUhn/8iH4v/IB59/0FAi/+ztMn/39/f/9zc - 3P/a2tr/2dnZ/9bW1v/U1NT/09PT/9DQ0P/Pz8//zc3N/8vLy//Kysr/yMjI/8C/w/9kZ4//w8PD/8LC - wv+/v7//vr6+/729vf+8vLz/u7u7/729vf/ExMT/y8vL/52dnaUAAAAZAAAABwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACg0NDSWurq7QxMTE/7y8 - vP+1tbX/tLS0/7W1tf+2trb/uLi4/7q6uv+7u7v/vb29/76+vv/BwcH/w8PD/8TExP/Hx8f/yMjI/8rK - yv/Nzc3/z8/P/9DQ0P/T09P/1dXV/9fX1//a2tr/3Nzc/7q7zP9ZWZj/Hx16/yEfg/8jH5L/JiGh/ycj - sv8pJL7/KiTK/ywl0v8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm - 5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdj/LCTT/ysly/8qJL//KCKy/yYh - oP8kII7/Ih+D/zIyhf+Wlrv/5OTk/+Hh4f/g4OD/3d3d/9vb2//a2tr/19fX/9bW1v/U1NT/0dHR/9DQ - 0P/Pz8//zc3N/8vLy//Jycn/yMjI/8fHx//ExMT/w8PD/8LCwv+/v7//vr6+/729vf++vr7/xMTE/83N - zf+0tLTRDQ0NJgAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAADU5OTkG6urrox8fH/729vf+2trb/tra2/7i4uP+6urr/u7u7/729 - vf++vr7/wcHB/8LCwv/ExMT/x8fH/8jIyP/Kysr/y8vL/87Ozv/Q0ND/09PT/9XV1f/W1tb/2dnZ/9vb - 2//d3d3/4ODg/+Hh4f/AwNL/X2Cf/yMhff8iIIT/JCCO/yUhmv8nIqv/KSO4/ysjw/8sJMr/LSXR/y4l - 2f8uJtv/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybe/y4l - 2P8tJdL/LCXL/ywjxP8qI7f/KCOp/yYhmv8kIY7/IyCF/ywrhf+AgLP/4ODl/+bm5v/l5eX/4uLi/+Dg - 4P/f39//3Nzc/9vb2//Z2dn/19fX/9XV1f/U1NT/0dHR/9DQ0P/Ozs7/zc3N/8vLy//Jycn/yMjI/8fH - x//ExMT/w8PD/8LCwv/BwcH/v7+//8XFxf/Ozs7/wsLC6FJSUkEAAAANAAAAAgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEHBw - cFvDw8P0ycnJ/7+/v/+6urr/urq6/7u7u/+9vb3/vr6+/8HBwf/CwsL/xMTE/8XFxf/IyMj/ycnJ/8vL - y//Ozs7/0NDQ/9HR0f/U1NT/1tbW/9fX1//a2tr/3Nzc/9/f3//h4eH/4uLi/+Xl5f/n5+f/0NDd/3t8 - sP82NIr/IyCD/yQgi/8lIZP/JyKc/ygipv8qJLP/KyW9/ywkxP8tJcr/LSXO/y4l0v8uJdT/LiXU/y4l - 1P8uJdT/LiXU/y4l0v8uJdH/LiXN/y0ly/8sJMT/KyS7/yojsv8oI6X/KCKb/yYhk/8kIYr/JCCE/0JB - kv+Vk8D/5OPo/+vr6//o6Oj/5+fn/+Xl5f/k5OT/4eHh/+Dg4P/d3d3/3Nzc/9ra2v/Z2dn/1tbW/9XV - 1f/T09P/0dHR/8/Pz//Ozs7/zc3N/8rKyv/Jycn/yMjI/8fHx//ExMT/w8PD/8PDw//IyMj/z8/P/8vL - y/RycnJbAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEoSEhG7Jycn6y8vL/8HBwf+8vLz/vb29/76+ - vv/BwcH/wsLC/8TExP/FxcX/yMjI/8nJyf/Ly8v/zc3N/8/Pz//R0dH/09PT/9XV1f/X19f/2tra/9vb - 2//d3d3/4ODg/+Li4v/k5OT/5ubm/+jo6P/q6ur/7Ozs/+/v7/+1tNH/bGyr/zg3j/8kIYb/JSGK/yYh - kf8nIpb/JyKa/ygjoP8pJKb/KiSs/yskr/8rJK//KySw/ysksP8qI67/KiSs/ykjpv8pI6T/KCOf/ygj - m/8nIpX/JiGR/yUiiv8lIIb/RUOX/35+tv/Ozd//8fHx/+/v7//t7e3/6+vr/+rq6v/o6Oj/5ubm/+Xl - 5f/i4uL/4eHh/9/f3//d3d3/29vb/9ra2v/X19f/1tbW/9TU1P/T09P/0NDQ/8/Pz//Ozs7/zc3N/8rK - yv/Jycn/yMjI/8XFxf/FxcX/ycnJ/9PT0//S0tL6h4eHbwAAABMAAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAFAAAAE42NjXnOzs78zs7O/8XFxf+/v7//wcHB/8LCwv/Dw8P/xcXF/8fHx//Jycn/y8vL/83N - zf/Pz8//0NDQ/9PT0//V1dX/1tbW/9nZ2f/a2tr/3Nzc/9/f3//h4eH/4uLi/+Xl5f/n5+f/6urq/+vr - 6//t7e3/7+/v//Hx8f/y8vL/9fX1/9nY6P+bmsj/aWeu/0dFm/8qJ4v/JiKJ/yYii/8mIY//JyKR/yci - kf8nIpL/JyKS/ycikf8nIo//JiGN/yYii/8mIon/MS6P/1NQo/95d7f/rKvS/+bm7v/29vb/9fX1//Ly - 8v/x8fH/8PDw/+3t7f/s7Oz/6+vr/+jo6P/n5+f/5eXl/+Tk5P/h4eH/4ODg/93d3f/c3Nz/29vb/9nZ - 2f/X19f/1dXV/9TU1P/T09P/0NDQ/8/Pz//Ozs7/y8vL/8rKyv/Jycn/ycnJ/83Nzf/U1NT/1NTU/JGR - kXkAAAATAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAFJmZmX3Pz8/50dHR/8jI - yP/ExMT/w8PD/8XFxf/Hx8f/ycnJ/8rKyv/Nzc3/zs7O/9DQ0P/R0dH/1NTU/9bW1v/X19f/2tra/9zc - 3P/d3d3/4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/7Ozs/+3t7f/w8PD/8fHx//T09P/19fX/9vb2//f3 - 9//5+fn/+vr6//v7+//f3u7/zMvl/5+dzv+cm83/nJvN/5ybzv+cm87/nJvO/7u63f/My+X/zMvl//n5 - +//7+/v/+/v7//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Hx8f/w8PD/7+/v/+3t7f/r6+v/6urq/+jo - 6P/m5ub/5eXl/+Li4v/h4eH/39/f/93d3f/c3Nz/2tra/9nZ2f/W1tb/1dXV/9TU1P/R0dH/0NDQ/8/P - z//Nzc3/y8vL/8vLy//Q0ND/19fX/9XV1fmZmZl9AAAAFAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAFAAAAE46OjnHS0tL11dXV/8vLy//Hx8f/x8fH/8jIyP/Kysr/y8vL/87O - zv/Pz8//0dHR/9TU1P/V1dX/19fX/9nZ2f/b29v/3d3d/9/f3//h4eH/4uLi/+Xl5f/n5+f/6Ojo/+vr - 6//s7Oz/7+/v//Dw8P/y8vL/9PT0//X19f/29vb/+fn5//r6+v/7+/v/+/v7//z8/P/+/v7//v7+//// - //////////////////////////////7+/v/+/v7//Pz8//z8/P/7+/v/+vr6//n5+f/39/f/9vb2//X1 - 9f/09PT/8vLy//Hx8f/v7+//7e3t/+zs7P/q6ur/6Ojo/+fn5//l5eX/5OTk/+Li4v/g4OD/39/f/9zc - 3P/b29v/2tra/9fX1//W1tb/1dXV/9PT0//R0dH/0NDQ/8/Pz//Pz8//09PT/9ra2v/Y2Nj1kJCQcQAA - ABMAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAEYKC - gl7Ozs7s19fX/9DQ0P/Kysr/ycnJ/8vLy//Nzc3/z8/P/9DQ0P/T09P/1dXV/9bW1v/Z2dn/2tra/9zc - 3P/d3d3/4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/6+vr/+3t7f/v7+//8fHx//Ly8v/09PT/9vb2//f3 - 9//5+fn/+vr6//v7+//8/Pz//Pz8//7+/v/+/v7//////////////////////////////////v7+//7+ - /v/8/Pz//Pz8//v7+//6+vr/+fn5//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/v7+//7Ozs/+vr - 6//q6ur/5+fn/+bm5v/l5eX/4uLi/+Hh4f/g4OD/3d3d/9zc3P/a2tr/2dnZ/9fX1//W1tb/1NTU/9PT - 0//R0dH/0dHR/9bW1v/d3d3/09PT7IKCgl4AAAARAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAD3d3d1HOzs7k3Nzc/9TU1P/Pz8//zc3N/8/P - z//Q0ND/0dHR/9TU1P/W1tb/19fX/9ra2v/b29v/3d3d/9/f3//h4eH/4uLi/+Xl5f/m5ub/6Ojo/+vr - 6//s7Oz/7e3t//Dw8P/x8fH/8vLy//X19f/29vb/9/f3//n5+f/6+vr/+/v7//z8/P/8/Pz//v7+//7+ - /v/////////////////////////////////+/v7//v7+//z8/P/8/Pz/+/v7//r6+v/6+vr/+fn5//f3 - 9//29vb/9fX1//T09P/x8fH/8PDw/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Dg - 4P/f39//3d3d/9vb2//a2tr/2dnZ/9bW1v/V1dX/1NTU/9bW1v/a2tr/4ODg/9XV1eR6enpRAAAADwAA - AAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAEAAAADV9fXzvHx8fL4ODg/9ra2v/T09P/0dHR/9HR0f/U1NT/1dXV/9bW1v/Z2dn/2tra/9zc - 3P/f39//4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/6+vr/+3t7f/v7+//8PDw//Ly8v/09PT/9fX1//b2 - 9v/39/f/+fn5//r6+v/7+/v//Pz8//z8/P/+/v7//v7+//////////////////////////////////7+ - /v/+/v7//Pz8//z8/P/7+/v/+vr6//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Ly8v/x8fH/7+/v/+3t - 7f/s7Oz/6+vr/+rq6v/n5+f/5ubm/+Xl5f/i4uL/4eHh/+Dg4P/d3d3/3Nzc/9vb2//a2tr/19fX/9fX - 1//a2tr/39/f/+Tk5P/Ly8vLY2NjOwAAAA0AAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACiYmJiG1tbWi5OTk/9/f - 3//Z2dn/1dXV/9XV1f/W1tb/19fX/9ra2v/b29v/3d3d/9/f3//h4eH/4uLi/+Xl5f/m5ub/6Ojo/+rq - 6v/s7Oz/7e3t/+/v7//x8fH/8vLy//T09P/19fX/9vb2//n5+f/5+fn/+vr6//v7+//8/Pz//Pz8//7+ - /v/+/v7//////////////////////////////////v7+//7+/v/8/Pz//Pz8//v7+//7+/v/+vr6//n5 - +f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7+/v/+zs7P/r6+v/6urq/+jo6P/n5+f/5eXl/+Tk - 5P/i4uL/4ODg/9/f3//d3d3/3Nzc/9ra2v/b29v/3d3d/+Tk5P/n5+f/ubm5oiYmJiEAAAAKAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABwAAABOZmZlu2tra7OTk5P/d3d3/2tra/9nZ2f/Z2dn/29vb/9zc - 3P/f39//4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/6+vr/+zs7P/v7+//8PDw//Hx8f/y8vL/9fX1//b2 - 9v/39/f/+fn5//r6+v/7+/v/+/v7//z8/P/+/v7//v7+//7+/v////////////////////////////// - ///+/v7//v7+//7+/v/8/Pz/+/v7//v7+//6+vr/+fn5//f39//29vb/9fX1//X19f/y8vL/8fHx//Dw - 8P/v7+//7e3t/+zs7P/r6+v/6Ojo/+fn5//m5ub/5eXl/+Li4v/h4eH/4ODg/9/f3//f39//39/f/+Li - 4v/n5+f/3d3d7Jubm24AAAATAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAA - AA1vb29Az8/Px+jo6P/k5OT/4ODg/9zc3P/c3Nz/3d3d/+Dg4P/h4eH/4uLi/+Xl5f/m5ub/6Ojo/+rq - 6v/r6+v/7e3t/+/v7//w8PD/8fHx//T09P/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//7+ - /v/+/v7//v7+//////////////////////////////////7+/v/+/v7//v7+//z8/P/7+/v/+/v7//r6 - +v/5+fn/+fn5//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/t7e3/7Ozs/+vr6//q6ur/6Ojo/+bm - 5v/l5eX/5OTk/+Li4v/h4eH/4eHh/+Tk5P/o6Oj/6+vr/9DQ0Mdvb29AAAAADQAAAAQAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAkAAAAZqqqqft7e3unq6ur/5eXl/+Li - 4v/g4OD/4ODg/+Li4v/k5OT/5ubm/+fn5//o6Oj/6+vr/+zs7P/t7e3/7+/v//Hx8f/y8vL/9PT0//X1 - 9f/29vb/9/f3//n5+f/6+vr/+/v7//z8/P/8/Pz//v7+//7+/v////////////////////////////// - /////////v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+vr6//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Ly - 8v/x8fH/8PDw/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+bm5v/l5eX/5eXl/+Xl5f/o6Oj/7Ozs/+Dg - 4OmsrKx+AAAAGQAAAAkAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAANYmJiNMbGxqzp6en86+vr/+fn5//l5eX/5OTk/+Xl5f/m5ub/5+fn/+rq - 6v/r6+v/7Ozs/+/v7//w8PD/8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6+v/7+/v//Pz8//z8 - /P/+/v7//v7+///////////////////////////////////////+/v7//v7+//7+/v/8/Pz//Pz8//v7 - +//6+vr/+vr6//n5+f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7+/v/+3t7f/s7Oz/6+vr/+rq - 6v/o6Oj/5+fn/+fn5//r6+v/7e3t/+vr6/zIyMisYmJiNAAAAA0AAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAAAAEZeX - l1nZ2dnO7+/v/+3t7f/q6ur/5+fn/+jo6P/o6Oj/6urq/+zs7P/t7e3/7+/v//Dw8P/x8fH/9PT0//X1 - 9f/29vb/9/f3//n5+f/6+vr/+vr6//v7+//8/Pz//Pz8//7+/v/+/v7///////////////////////// - //////////////7+/v/+/v7//v7+//z8/P/8/Pz/+/v7//r6+v/6+vr/+fn5//f39//29vb/9vb2//X1 - 9f/09PT/8vLy//Hx8f/w8PD/7+/v/+zs7P/r6+v/6+vr/+vr6//t7e3/8PDw//Hx8f/b29vOl5eXWQAA - ABEAAAAHAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACQAAABWoqKht3t7e0vLy8v/w8PD/7e3t/+3t - 7f/s7Oz/7Ozs/+3t7f/w8PD/8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6+v/6+vr/+/v7//z8 - /P/8/Pz//v7+//7+/v///////////////////////////////////////v7+//7+/v/+/v7//Pz8//z8 - /P/7+/v/+/v7//r6+v/5+fn/9/f3//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/v7+//7+/v/+/v - 7//w8PD/8vLy//T09P/f39/Sra2tbQAAABUAAAAJAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABAAAAAoKCgoZsLCwb9zc3Mn19fX/9PT0//Ly8v/x8fH/8fHx//Hx8f/x8fH/8vLy//T0 - 9P/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//z8/P/+/v7//v7+//////////////////// - ///////////////////+/v7//v7+//7+/v/8/Pz//Pz8//v7+//7+/v/+vr6//n5+f/5+fn/9/f3//b2 - 9v/19fX/9PT0//Ly8v/y8vL/8fHx//Ly8v/09PT/9fX1//b29v/e3t7JsLCwbwoKChkAAAAKAAAABAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAKAAAAFZeX - l1TS0tKr6Ojo5vb29v/29vb/9fX1//T09P/19fX/9fX1//b29v/29vb/9/f3//n5+f/6+vr/+/v7//v7 - +//8/Pz//Pz8//7+/v/+/v7///////////////////////////////////////7+/v/+/v7//v7+//z8 - /P/8/Pz/+/v7//v7+//6+vr/+fn5//n5+f/39/f/9vb2//X19f/29vb/9vb2//b29v/39/f/9/f3/+jo - 6ObS0tKsl5eXVAAAABUAAAAKAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAABwAAAA5MTEwor6+vbdjY2Lry8vL1+fn5//n5 - +f/5+fn/+fn5//n5+f/6+vr/+fn5//r6+v/7+/v/+/v7//z8/P/+/v7//v7+//7+/v////////////// - /////////////////////////v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+/v7//r6+v/6+vr/+vr6//n5 - +f/5+fn/+fn5//r6+v/6+vr/8/Pz9djY2Lqvr69tTExMKAAAAA4AAAAHAAAAAgAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAAIAAAAEHZ2djbBwcGA29vbuu7u7uf7+/v/+/v7//v7+//7+/v/+/v7//z8 - /P/8/Pz//Pz8//7+/v/+/v7//v7+///////////////////////////////////////+/v7//v7+//7+ - /v/8/Pz//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//u7u7n3NzcusHBwYB2dnY2AAAAEAAA - AAgAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAA - AAkAAAAQaWlpLpqamlHFxcWK4eHhwOvr69/z8/Pw/v7+//7+/v/+/v7//v7+//7+/v/+/v7///////// - //////////////////////////////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/z8/Pw6+vr3+Hh - 4cDFxcWKmpqaUWlpaS4AAAAQAAAACQAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAABgAAAAoAAAAOCgoKGIOD - gzqurq5fvb29ecvLy5Xd3d2u5eXlxenp6dHw8PDd8PDw5vn5+fT5+fn0+fn59Pn5+fTw8PDm8PDw3enp - 6dHl5eXF3d3drsvLy5W9vb15rq6uX4ODgzoKCgoYAAAADgAAAAoAAAAGAAAAAwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAwAAAAYAAAAIAAAACgAAAA0AAAAPAAAAEAAA - ABEAAAATAAAAEwAAABQAAAAUAAAAEwAAABMAAAARAAAAEAAAAA8AAAANAAAACgAAAAgAAAAGAAAAAwAA - AAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - AAAAAAAA/////////////////////////////+AAAAf///////////////4AAAAAf//////////////w - AAAAAA//////////////gAAAAAAB/////////////AAAAAAAAD////////////AAAAAAAAAP//////// - ///AAAAAAAAAA///////////AAAAAAAAAAD//////////gAAAAAAAAAAf/////////gAAAAAAAAAAB// - ///////gAAAAAAAAAAAH////////wAAAAAAAAAAAA////////4AAAAAAAAAAAAH///////8AAAAAAAAA - AAAA///////8AAAAAAAAAAAAAD//////+AAAAAAAAAAAAAAf//////AAAAAAAAAAAAAAD//////gAAAA - AAAAAAAAAAf/////wAAAAAAAAAAAAAAD/////4AAAAAAAAAAAAAAAf////8AAAAAAAAAAAAAAAD///// - AAAAAAAAAAAAAAAA/////gAAAAAAAAAAAAAAAH////wAAAAAAAAAAAAAAAA////4AAAAAAAAAAAAAAAA - H///+AAAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAAB///4AAAAAAAAAAA - AAAAAAf//8AAAAAAAAAAAAAAAAAD//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//wAAAAAA - AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/wA - AAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/gAAAAAAAAAAAAAAAAA - AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAA - AAAAAAAP8AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA - AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AA - AAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA - AAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAA - AAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA - AAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AA - AAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA - AAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAA - AAAAAAADwAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA - AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAD/AA - AAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA - AB/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAA - AAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//4AAAAAA - AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAP//+AAAAAAAAAAAAAAAAAH///g - AAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAA - H////AAAAAAAAAAAAAAAAD////4AAAAAAAAAAAAAAAB/////AAAAAAAAAAAAAAAA/////wAAAAAAAAAA - AAAAAP////+AAAAAAAAAAAAAAAH/////wAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAAAB//////wAAAA - AAAAAAAAAA//////+AAAAAAAAAAAAAAf//////wAAAAAAAAAAAAAP///////AAAAAAAAAAAAAP////// - /4AAAAAAAAAAAAH////////AAAAAAAAAAAAD////////8AAAAAAAAAAAD/////////gAAAAAAAAAAB// - ///////+AAAAAAAAAAB//////////wAAAAAAAAAA///////////AAAAAAAAAA///////////8AAAAAAA - AA////////////wAAAAAAAA/////////////gAAAAAAB//////////////AAAAAAD//////////////+ - AAAAAH///////////////+AAAAf///////////////////////////////////////////////////// - //////////////////8oAAAAMAAAAGAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAFAAAACwAAAA8AAAARAAAAEQAAAA8AAAALAAAABQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAUAAAAaAAAAPAoKCmAgICCENDQ0nEFBQatLS0uzS0tLs0FBQasyMjKcICAghAoK - CmAAAAA8AAAAGgAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAQAAAAPx8fH4FMTEy/dnZ255qamvu7u7v/0NDQ/+Dg4P/p6en/6enp/+Dg - 4P/S0tL/vb29/5ycnPt3d3fnTU1Nvx8fH4EAAAA/AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAEk0NDSkcXFx566urv/c3Nz/9PT0//z8/P////////////// - ///////////////////////////////////29vb/4ODg/7Gxsf9zc3PnNjY2pAAAAEkAAAAOAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAwKioqlnR0dOu9vb3/5ubm/+/v7//y8vL/8/Pz//b2 - 9v/5+fn//Pz8//7+/v////////////7+/v/9/f3/+/v7//n5+f/39/f/9fX1//X19f/r6+v/wcHB/3Z2 - duwsLCyWAAAAMAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwoKCl1VVVXSpqam/9vb2//k5OT/5ubm/+np - 6f/t7e3/8fHx//X19f/5+fn/+/v7//7+/v////////////7+/v/9/f3/+/v7//j4+P/29vb/8fHx/+7u - 7v/r6+v/6urq/+Hh4f+rq6v/WFhY0g0NDV0AAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATIiIif3Nzc/HCwsL/2NjY/9nZ - 2f/d3d3/4uLi/+fn5//s7Oz/8PDw//T09P/39/j/+/v7/////f///////////////v/9/fz/+vr6//j4 - +P/09PT/8PDw/+zs7P/o6Oj/5OTk/+Dg4P/g4OD/ycnJ/3h4ePEkJCR/AAAAEwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYqKiqRgoKC+sbG - xv/Ozs7/0dHR/9bW1v/a2tr/39/f/+Xl5f/q6un/8/Pw//z89f////r//f38//Dw/P/r6/z/6+v8//Dw - /P/3+Pz////8////+f/39/T/7+/u/+rq6v/m5ub/4eHh/9zc3P/Y2Nj/19fX/87Ozv+Hh4f6LS0tkQAA - ABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAES8v - L5KGhob+wMDA/8fHxv/Ozsz/zc3N/9LS0v/X19j/3d3c/+rq5f/w8O7/1tXu/6mm6v98d+b/Xlfl/0tE - 5f9DO+b/RDvn/0tC5v9VTeX/cGrm/6Ge6//Y1/H/9fXy/+7u6v/j4+P/39/f/9ra2v/V1dX/0dHR/83N - zf/Jycn/jIyM/jAwMJIAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAGJycnen5+fvu5ubn/vb28/7W2vv+ys8n/0tLO/83Nzf/Y2NX/4+Pi/7Kx4P9jYNT/My3P/yQc - 0/8mHdj/KCDd/ysi4P8tI+L/LSPj/ywi4f8qId7/Jx3a/yUc1f80LdL/bWrZ/8TD5v/s7Of/3t7c/9bW - 1v/R0dH/zc3N/8nJyf/FxcX/wcHB/4aGhvspKSl6AAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAASEhJRbW1t7q+vr/+0tLT/ubm4/6iotf84OqL/p6fL/9zc0//Gxtn/YV/J/yMe - v/8hG8X/KCHM/ywk0/8uJdn/Libe/y8m4f8wJuP/MCbk/zAm4v8vJt//LiXb/y0l1v8pIs//IRvI/ykl - xP95eNH/2Njg/9ra1f/Nzc3/ycnJ/8TExP+/v7//vb29/7e3t/9ycnLuEhISUQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVVVVXPoKCg/62trf+vr6//tbWz/6Slsf8hIpr/Kiqn/42N - yf89PLj/Gxi2/yUgv/8oIsb/KiPN/ywk0/8uJdn/Libf/y8m4/8wJuX/MCbm/zAm5P8vJuH/LiXc/y0l - 1v8rI9D/KSLJ/yUfw/8cGLn/SknA/7291//S0s7/xMTE/7+/v/+7u7v/uLi4/7a2tv+pqan/WFhYzwAA - ACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjY2NoyKior/pqam/6enp/+qqqr/sLCu/52e - rP8iI5v/Ghqi/xoZqP8eG6//IyC3/yUhv/8nIsb/KSPN/ywk1P8tJNj/KCDR/yQcxf8kG77/JBy+/yQb - v/8lHcn/KyLW/y0l1/8rI9H/KSLJ/ychw/8lIbv/HBmx/y8vsv+pqcz/ycnE/7q6uv+2trb/s7Oz/7Cw - sP+vr6//kZGR/zg4OIwAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJN2ZmZumenp7/oKCg/6Ki - ov+lpaX/q6up/5eXp/8fH5r/HByj/x8eqf8hHrD/IyC3/yUgvv8nIsf/KCLL/yIbvP8rJaj/Uk6r/399 - vP+bmsr/n57M/5eVx/9ua7b/OjWm/yIcsv8nIMr/KSLK/yYhwv8kIbv/IiCz/xsaqv8sK6r/qKnE/7y7 - t/+ysrL/rq6u/6urq/+pqan/pqam/2xsbOkJCQk3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPj4+lIqK - iv+ampr/m5ub/52dnf+goKD/pqak/4+Po/8dHZn/HByi/x8dqP8hHq//IyC3/yUgv/8iHLj/JyOe/2dl - qf/AwNP/8fHx/////f/////////////////9/fr/39/m/5KRvf80MKD/IRy6/yYhw/8kILr/Ih+z/yAe - rP8YF6P/PD2p/7W1vP+urqz/qamp/6ampv+jo6P/o6Oj/5KSkv9DQ0OUAAAABQAAAAAAAAAAAAAAAAAA - AAAAAAAoY2Nj4pSUlP+VlZX/lpaW/5mZmf+bm5v/oaGe/4aHnv8cHJn/HBui/x4dqP8gHa//Ih+3/yEd - vv9LSLj/sbHA/+Li3v/s7Or/8fHx//n5+f/+/v7///////z8/P/29vb/8fHv/+7u6f/Dw87/Skif/x4a - sP8kILv/Ih+z/yAerP8eHaX/FRWd/2Firf+xsa7/o6Oj/6Ghof+enp7/nZ2d/5ycnP9nZ2fiAAAAKAAA - AAAAAAAAAAAAAAAAAAAwMDBqfHx8/5GRkf+RkZH/kpKS/5SUlP+Wlpb/nJyZ/3t7lv8ZGZb/Ghqf/xwb - pf8eG6z/IB20/yAbuv9DP8n/vr7V/9zc1//i4uL/7e3t//f39//+/v7///////v7+//z8/P/6urq/+Dg - 4P/b29n/wcHF/0hGm/8dGrD/Ih+z/x8dq/8dHKT/Gxue/xwdmv+Mjqz/oqKe/5ycnP+ampr/mZmZ/5iY - mP+BgYH/MjIyagAAAAAAAAAAAAAAAAAAAAdRUVGtiYmJ/4yMjP+NjY3/jo6O/5CQkP+RkZH/mJiU/29w - jv8UFJD/FhWX/xkWnv8bF6X/HRis/x8as/8bFbn/OzW+/7a1zP/f39z/6enp//X19f/8/Pz///////n5 - +f/w8PD/5eXl/9nZ2f/Ozs7/yMjG/6mqsv8wLpn/Hhux/x8dq/8dHKT/HBye/xQVlv9LTaD/oaGf/5eX - l/+VlZX/lJSU/5OTk/+QkJD/VVVVrgAAAAgAAAAAAAAAAAAAACFjY2PdioqK/4iIiP+JiYn/ioqK/4uL - i/+NjY3/k5KQ/2lqg/8aG27/ISJz/yMjeP8lJH3/JyWB/yooh/8yMIz/MCyQ/1ZTn//IyM7/4+Ti//Hx - 8f/7+/v//v7+//j4+P/s7Oz/3t7e/9DQ0P/ExMT/urq6/7m5tP95eZz/HBqh/x8drP8dG6T/HBud/xkY - mP8gIpb/iYqc/5SUkv+RkZH/kJCQ/4+Pj/+QkJD/ZmZm3QAAACEAAAAAAAAAAB4eHkJvb2/3h4eH/4WF - hf+Ghob/h4eH/4eHh/+IiIj/ioqK/4WGiP9+foX/g4SJ/4aGi/+JiY7/jY2T/5KSmP+cnKD/pKSo/6ys - sv/CwsX/2dnZ/+vr6//7+/v//v7+//T09P/k5OT/09PT/8TExP+4uLj/r6+v/6ioqP+hoaD/OTiT/xsZ - qf8cG6P/Gxud/xoal/8UFZP/ZWaW/5KSjv+NjY3/i4uL/4qKiv+MjIz/c3Nz9yIiIkIAAAAAAAAAADo6 - OmV5eXn/hISE/4ODg/+EhIT/hISE/4WFhf+FhYX/hoaG/4eHh/+Kion/ioqK/4yMi/+Pj47/kpKQ/5WV - lP+ampn/oaGg/6qqqv+3t7f/ysrK/+Li4v/4+Pj//v7+/+7u7v/Y2Nj/xMTE/7W1tf+qqqr/oqKi/5yc - nP+dnZj/ZmaO/xoYof8cG6T/Gxud/xkal/8UFZP/Q0aQ/46Oiv+IiIj/iIiI/4eHh/+IiIj/fX19/zw8 - PGUAAAAAAAAAAEZGRn5+fn7/goKC/4GBgf+CgoL/goKC/4KCgv+CgoL/g4OD/4ODg/+EhIT/hISE/4WF - hf+Ghob/iIiI/4qKiv+NjY3/kpKS/5mZmf+jo6P/tLS0/9DQ0P/z8/P/+/v7/+Li4v/ExMT/sLCw/6Oj - o/+bm5v/lZWV/5KSkv+QkI//gYGJ/yUkmP8bGab/Gxqe/xkamf8UFpX/MTON/4eHh/+FhYX/hYWF/4SE - hP+FhYX/gYGB/0hISH4AAAAAAAAAAFBQUI6AgID/gICA/4CAgP+AgID/gICA/4CAgP9/f3//f39+/39/ - fv9/f3//gIB//4CAgP+CgoL/goKC/4ODg/+EhIT/hoaG/4mJif+Ojo7/mJiY/66urv/h4eH/9vb2/8TE - xP+lpaX/l5eX/5CQkP+MjIz/iYmJ/4iIiP+Ghob/h4eF/zQ0fv8REX3/FBR5/xMTdf8PEXH/IyVx/319 - gf+Dg4L/gYGB/4GBgf+BgYH/goKC/1VVVY0AAAAAAAAAAFdXV5SBgYH/fn5+/35+fv9+fn7/fn5+/4B/ - gP+NjpH/kJGV/5CQlP+QkJT/kZGV/4qKjP9+fn7/f39//39/f/9/f3//f39//39/f/+AgID/gYGB/4SE - hP+jo6P/u7u7/42Njf+FhYX/g4OD/4KCgv+BgYH/gICA/4CAgP+AgID/gICA/25uef9iYnT/Y2Nz/2Nj - c/9iYnL/ZmZz/319fv+AgH//f39//39/f/9/f3//gYGB/1dXV5QAAAAAAAAAAFtbW5SCgoL/fn5+/35+ - fv9+fn7/fn5+/3p6fv9AQ5H/NTec/zc5n/85OaL/Nzeo/1pam/+BgX3/f39//39/f/9/f3//f39//4CA - gP+CgoL/hYWF/46Ojv+7u7v/1tbW/6CgoP+Ojo7/iIiI/4aGhv+EhIT/g4OD/4KCgv+CgoL/gYGB/4OD - gv+FhYL/hISC/4SEgv+EhIL/g4OC/4GBgf+AgID/gICA/4CAgP+AgID/hISE/1tbW5MAAAAAAAAAAFlZ - WYuDg4P/f39//39/f/9/f3//gIB//3t7fv8kJoP/ERKQ/xUVlP8WFpj/FBOf/zw7nv+FhYP/goKC/4OD - g/+FhYX/h4eH/4yMjP+Tk5P/oKCg/7u7u//r6+v/+vr6/9HR0f+xsbH/oKCg/5eXl/+RkZH/jY2N/4uL - i/+JiYn/h4eH/4eHh/+Ghob/hYWF/4WFhf+EhIT/g4OD/4ODg/+Dg4P/goKC/4KCgv+CgoL/hoaG/1tb - W4sAAAAAAAAAAFZWVnmDg4P/gICA/4GBgf+BgYH/gYGB/4KCgP8wMoD/FBWR/xkZlf8aGpn/GRif/y0s - pf+Hh5H/iIiH/4uLi/+Ojo7/lJSU/5ycnP+oqKj/u7u7/9fX1//29vb//Pz8/+bm5v/Ly8v/t7e3/6mp - qf+goKD/mpqa/5WVlf+SkpL/j4+P/4yMjP+Kior/iYmJ/4iIiP+IiIj/h4eH/4aGhv+Ghob/hoaG/4WF - hf+FhYX/h4eH/1hYWHkAAAAAAAAAAE5OTluCgoL/goKC/4KCgv+Dg4P/g4OD/4eHg/9DRX3/EhSP/xkZ - lf8aGpr/Gxqf/xsap/95eaT/lJSP/5SUlP+ampr/oaGh/6ysrP+7u7v/z8/P/+bm5v/6+vr//f39/+/v - 7//c3Nz/ysrJ/7y8uv+xsa7/q6um/6amof+jo53/pKSd/6Kinf+hoZ7/oaKh/5aWlv+MjIz/i4uL/4qK - iv+JiYn/iYmJ/4iIiP+IiIj/iIiI/1NTU1wAAAAAAAAAAD09PTZ+fn71hYWF/4SEhP+FhYX/hYWF/4uL - h/9iYn7/FBaK/xkalv8aGpr/HBug/xkWpv9MTLH/pKSi/56dnf+lpaX/r6+v/7u7u//Kysr/3Nzc/+7u - 7v/8/Pz//v7+//T09P/m5uX/z8/T/7W1yv+trMv/m5rG/4uLwf99fb7/c3G6/2Rjtf9VVLD/REWp/3Jz - mf+VlZH/kZGR/4+Pj/+Ojo7/jIyM/4yMjP+MjIz/h4eH9T09PTYAAAAAAAAAAAwMDBR+fn7Wi4uL/4eH - h/+IiIj/iIiI/4uLiv+Bgof/IiSA/xgYl/8aG5r/HBuh/x0bp/8fHa7/i4u6/7Gxq/+wsLD/u7u7/8fH - x//V1dX/5eXl//Pz8//9/f3//v7+//f39//u7uz/09PY/1lXqf8jHbb/JyHJ/yIdwf8dGbn/Ghax/xgW - qf8XFqP/EhKb/19glv+dnZj/lZWV/5OTk/+SkpL/kZGR/5CQkP+Tk5P/hYWF1gwMDBQAAAAAAAAAAAAA - AAF3d3egkpKS/4qKiv+Li4v/jY2N/4+Pj/+UlZH/TU5//xQUj/8bG5v/HBuh/x4cp/8dGa3/ODW5/7Oz - xv/Cwrz/xMTF/9HR0f/e3t7/6+vr//b29v/+/v7//v7+//n5+f/w8PD/6Ojn/9HR1f9iYKT/IBur/yQf - wf8jH7n/IR6y/x8dq/8dHKT/FRad/19gmf+kpJ7/m5ub/5iYmP+Xl5f/lZWV/5OTk/+cnJz/fX19oAAA - AAEAAAAAAAAAAAAAAABkZGRUkpKS/o+Pj/+Pj4//kZGR/5KSkv+Xl5b/hoaP/yAhgP8ZGpv/HByh/x4d - qP8gHa7/HRm1/0hFxP/AwNT/2NjS/9nZ2P/k5OT/7+/v//j4+P/+/v7//v7+//r6+v/z8/P/6urq/+Tk - 4f/j49r/dnTE/yAcv/8jILr/IR6y/yAdq/8eHKX/FRad/11dm/+oqaT/n5+f/52dnf+bm5v/mZmZ/5iY - mP+ampr+bW1tVAAAAAAAAAAAAAAAAAAAAAAzMzMUj4+P15iYmP+Tk5P/lZWV/5iYmP+ampr/oqKe/2Bh - h/8VFYv/HByj/x4dqP8gHa//Ix+2/x8avP9APMr/tbTf/+vs5v/w8Or/9PTy//r6+v/+/v7///////z8 - +//4+Pb/9/fw/+jo7P+joeL/RkHO/yMewf8kILr/Ih+z/yAerP8eHaX/Fhed/1lanf+tran/paWl/6Ki - ov+fn5//nZ2d/6Kiov+Xl5fYJCQkFQAAAAAAAAAAAAAAAAAAAAAAAAAAgoKCe6Kiov+Xl5f/mpqa/5yc - nP+fn5//o6Oj/6SkpP9BQoL/FhaX/x8eqv8hHq//IyC3/yUgvv8jHcX/LSbM/3Rw3v/Bv+3/7+73//7/ - /P////////////3+/f/o5/f/rqvs/1VP3P8lHs7/JB7I/yYhwv8kILr/Ih+z/yAerf8eHab/Fhee/1VW - n/+ysq7/qqqq/6enp/+lpaX/oqKi/6ysrP+IiIh7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/HJ2d - nd+hoaH/np6e/6Ghof+kpKT/qKio/6+vrv+hoaj/NDSD/xgXnf8hHrH/IyC3/yUgvv8nIsb/KCLM/yQc - 0v8sI9j/TEXi/21n6v9/eu7/enXu/2Nc6f9COuL/KSDa/yge1P8qI8//KSLJ/yYhwv8kIbv/Ih+0/xsa - oP8ZGZr/Fxef/1BRoP+2trP/r6+v/6ysrP+pqan/rKys/6Wlpd8/Pz8cAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAIyMjG2urq7/oqKi/6Wlpf+pqan/ra2t/7Gxsf+6urj/pKSu/zc4h/8ZF5//IyC5/yYh - wP8oIsb/KiPN/ywk0/8tJNn/KiLd/ygf4P8oHeL/KB7j/yog4f8sI9//LiXb/y0k1f8rI9D/KSLJ/ych - xP8jH7r/GRia/0ZGjf9ERYn/ERGN/0tMof+5ubf/tLS0/7CwsP+urq7/t7e3/5GRkW0AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwqlpaW5tLS0/6mpqf+urq7/srKy/7a2tv+6urr/xcXD/7a2 - vP9QUJH/GhiY/yMeuv8oIsj/KiPO/ywk0/8uJdn/Libe/y8m4f8wJuP/MCbk/zAm4v8vJt//LiXb/y0l - 1v8rJNH/KSLL/yEcuv8hHpb/b2+g/8rLy//CwsT/TU6K/z0/jP+9vbz/ubm4/7S0tP++vr7/ra2tuTMz - MwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzc3MqtLS047a2tv+ysrL/t7e3/7u7 - u//AwMD/xcXF/8/Ozf/Pz87/hIWs/y8uk/8dGKr/Jh/G/ywk1f8uJdv/Libf/y8m4v8wJuT/MCbl/zAm - 4/8vJuD/LiXd/ywk1/8mH8j/Hhqp/z49mP+iorz/3d3a/9TU0//Q0M//wsPF/4GCn/+8vL7/vLy8/8DA - wP+8vLzjc3NzKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk5OTUb+/ - v/a7u7v/urq6/7+/v//FxcX/ycnJ/8/Pz//W1tX/4eHe/8nJ0v9+frD/PDqe/yMeqP8iG7v/Jh7N/ykh - 1v8rIdr/KyHa/ykg1v8mHs3/Ihu8/yUfqf9CP6H/jIu4/9na3f/n5+P/29vb/9bW1v/R0dH/zs7N/8zM - yv/ExMT/xcXF/8fHx/aamppRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAKmpqWjHx8f6xMTE/8PDw//Jycn/zs7O/9PT0//Y2Nj/3t7e/+fn5v/w8O3/4eHm/7W0 - 0P+Egrz/YF2w/01Jrf9HQq7/SUSv/1NPr/9kYbL/iojA/7u61P/m5ur/8/Pw/+rq6f/j4+P/3t7e/9nZ - 2f/V1dX/0NDQ/8vLy//MzMz/z8/P+q6urmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvr69kzs7O88/Pz//MzMz/0dHR/9bW1v/b29v/4ODg/+bm - 5v/r6+v/8vLx//v7+P////z////9//b2+f/y8vf/9PT4//v7+/////3////9//z8+f/09PP/7e3u/+rq - 6v/l5eX/4ODg/9zc3P/X19f/09PT/9fX1//V1dXzsrKyZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr6+vTdPT0+Hd3d3/1dXV/9nZ - 2f/e3t7/4+Pj/+jo6P/t7e3/8vLy//X19f/5+fn//Pz8/////////////////////v/7+/v/+vr6//f3 - 9//z8/P/7+/v/+vr6//n5+f/4+Pj/97e3v/b29v/4+Pj/9jY2OGysrJNAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyc - nCfS0tKz4uLi/+Pj4//g4OD/5ubm/+rq6v/u7u7/8vLy//f39//6+vr//Pz8//7+/v////////////7+ - /v/8/Pz/+vr6//f39//09PT/8fHx/+3t7f/o6Oj/5eXl/+jo6P/m5ub/1dXVs5ycnCcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAExcXFYuLi4tjv7+//7+/v/+3t7f/w8PD/9PT0//f39//6+vr//Pz8//7+ - /v////////////7+/v/8/Pz/+vr6//j4+P/19fX/8fHx/+/v7//y8vL/8vLy/+Xl5djIyMhiAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJGRkRXW1tZx5+fnzu7u7v38/Pz//Pz8//v7 - +//7+/v//Pz8//7+/v////////////7+/v/8/Pz//Pz8//v7+//9/f3//v7+/+/v7/3p6enO1tbWcZGR - kRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzCsnJ - yUPh4eGT7Ozsz/Pz8/H7+/v//////////////////////////////////Pz8//T09PHs7OzP4+Pjk8nJ - yUMzMzMKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAHBwcCbW1tSbOzs5K3NzcZuPj43jt7e2B7e3tgePj43jh4eFmzs7OSrW1 - tSYcHBwJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///wD///AAD//wAA//8AAP/8AAA//wAA//AAAA// - AAD/wAAAA/8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAfAAD4AAAAAB8AAPAA - AAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAAB - AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA - AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAADAAAAAAAMAAMAAAAAAAwAA4AAAAAAH - AADgAAAAAAcAAPAAAAAADwAA8AAAAAAPAAD4AAAAAB8AAPwAAAAAPwAA/gAAAAB/AAD/AAAAAP8AAP+A - AAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/4AAAf/wAA//4AAH//AAD//8AD//8AAP///////wAAKAAAACAA - AABAAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAoAAAAKAAAABgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAA2MjIyb1lZWZ1xcXG4goKCxIKCgsRxcXG4WVlZnTIy - Mm8AAAA2AAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsiIiJaaWlpu6Ojo/LU1NT/8fHx//39/f////////////// - ///z8/P/19fX/6ampvJqamq7IiIiWgAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4X19fuLCwsP/n5+f/9PT0//f39//6+vr//f39//// - //////////////z8/P/6+vr/+fn5/+zs7P+0tLT/YmJiuAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkYoWFhezS0tL/4uLi/+Tk5P/q6ur/8vLx//v7 - +P////3///////////////7//v/6//b29f/v7+//6urq/+jo6P/Z2dn/ioqK7CcnJ2IAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMXGQkJD80dHP/9LS0f/X19f/4eHf//Dw - 6v/u7vH/19fz/7278/+qp/P/qqf0/7e19P/U0vT/8fH1//X17v/n5+X/3t7e/9nZ2f/X19f/lpaW/DMz - M3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKytdi4uL/MPDwf+xssL/y8vO/9nZ - 0//U1N//kY/b/1BL1v8yK9j/KSDd/yge4v8oHuP/KB/f/zAn2v9RS9n/nJrg/+Dg5f/f39v/0dHS/8zM - zP/Ly8v/kpKS/C4uLl0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFMHd3d+m0tLT/vLy3/2pr - qP9qarn/qqnP/0A9wP8eGcL/JR7N/ywk1/8vJuD/LyXl/y8l5v8vJuL/LSTb/yYf0P8gGsX/TEnG/7m5 - 1v/U1M7/xMTE/76+vv++vr7/fX196QUFBTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVaWlqxpKSk/6mp - qf+0tK//ZGWk/xUVof8jIa7/Hxy3/yciw/8pItD/Jh7R/ycfyP8vJ8P/MSrD/yoixf8lHc//KiLS/ygi - x/8fG7r/LCq0/5ycxv/ExMD/tra2/7Kysv+tra3/YGBgsQAAAAUAAAAAAAAAAAAAAAAAAAAAKysrTIKC - gv6goKD/oaGh/6ysp/9cXZ//Fxeh/x8drP8jILj/JB/A/ygis/9iX7b/razS/9XV5v/c3Or/wsHc/3t5 - v/8wK7T/Ix3E/yUhvP8dG6//JiWp/56euv+zs6//qqqq/6mpqf+JiYn+Li4uTAAAAAAAAAAAAAAAAAAA - AABcXFyulpaW/5aWlv+ampr/o6Oe/1RUm/8XF6H/IB2s/yEduP80ML3/qqrC/+jp4//6+/b///////// - ///+/vv/9PTu/7q6y/8/Par/Hxu4/yEfsP8YGKP/PD2l/6enrP+jo6L/n5+f/5+fn/9gYGCuAAAAAAAA - AAAAAAAADQ0NJXNzc+2RkZH/kJCQ/5KSkv+ampb/RkaR/xAPmv8ZFqT/Gxev/yEbvP9+fMn/29va/+7u - 7f/8/Pz//v7+//T09P/k5OT/2dnW/6+wuv8yMKT/Hhuw/x0dpP8VFZr/a2yi/6Cgm/+Xl5f/mJiY/3h4 - eO0NDQ0lAAAAAAAAAAA/Pz9ZgYGB/4mJif+Kior/jIyM/5GRj/9RUn7/NDR7/zs6g/8+PYr/RUOT/01K - nP+rqsD/6Ojm//n5+f/9/f3/7u7u/9jY2P/ExMT/vL23/3x7oP8cGqb/HRyk/xcXmv8zNZj/k5SW/5GR - kP+QkJD/hoaG/0RERFoAAAAAAAAAAFRUVIiGhob/hYWF/4WFhf+Ghob/h4eH/4qKiP+Njov/kZGO/5WV - kv+dnZr/qaml/7e3t//U1NT/9fX1//z8/P/i4uL/xMTE/7CwsP+lpaT/m5ua/zY1mf8aGaX/Ghqb/xwd - lf96e4//jIyJ/4mJif+Kior/WlpaiAAAAAAAAAAAX19fpYWFhf+BgYH/goKC/4KCgf+CgoH/g4OC/4OD - gv+FhYX/iIiI/4qKiv+QkJD/m5ub/7Ozs//n5+f/9vb2/8TExP+np6f/mZmZ/5KSkv+Sko3/VlWM/xIR - mv8UFZL/DxGL/2Jkhv+JiIX/hISE/4iIiP9hYWGlAAAAAAAAAABkZGSxg4OD/39/f/9/f37/goKE/4iI - jf+IiI3/iIiO/4KCg/+AgID/gICA/4GBgf+CgoL/h4eH/62trf/AwMD/j4+P/4aGhv+EhIT/goKC/4OE - gv9xcX3/R0h0/0hIcv9FRm//a2t5/4KCgf+AgID/hYWF/2ZmZrAAAAAAAAAAAGlpabCDg4P/fn5+/4GB - fv9hYoT/LC6Y/zAxnf8yMqX/bW2M/4KCfv+AgID/goKC/4SEhP+NjY3/vLy8/9DQ0P+ampr/jY2N/4iI - iP+FhYX/hISE/4SEg/+Hh4P/h4eD/4eHg/+Dg4L/gYGB/4GBgf+Ghob/a2trrwAAAAAAAAAAampqoYWF - hf+AgID/hISB/2Bhf/8SE43/FheX/xUToP9eXZr/jIyG/4uLi/+SkpL/n5+f/7u7u//t7e3/+Pj4/83N - zf+urq7/np6e/5aWlf+RkY//jo6M/42Nif+Li4j/h4eH/4aGhv+Ghob/hYWF/4qKiv9tbW2hAAAAAAAA - AABpaWmAiIiI/4ODg/+GhoX/dXWB/xsdiv8ZGZj/GBeg/0FAqf+Zmpn/m5ua/6ioqP+7u7v/2dnZ//f3 - 9//8/Pz/4+Pj/8fHyf+3t7v/qKiw/52dq/+UlKn/iIin/4aGn/+Pj47/jY2M/4uLi/+Kior/j4+P/25u - boEAAAAAAAAAAGBgYE+JiYn/h4eH/4mJif+Li4n/MzSE/xYXmP8cG6D/Hhys/4aGtP+zs6z/u7u7/9DQ - 0P/n5+f/+/v7//39/f/x8u//tbTL/0pGuP87Nsb/Mi+9/yglsf8cG6f/PT2a/5mal/+UlJT/kZGR/5CQ - kP+RkZH/Z2dnTwAAAAAAAAAAMTExGoeHh+eOjo7/jo6O/5aWkv9oaIj/FhaR/x0cov8cGav/NjS6/7Cv - x//T08z/3d3c/+/v7//9/f3//f39//Pz8//n5+T/o6LA/zItuf8gHLv/Hx2v/xkYpP86Opv/oaGf/5yc - nP+ZmZn/mJiY/5CQkOc6OjoaAAAAAAAAAAAAAAAAh4eHoJqamv+UlJT/mZmZ/5ycmv87PIj/Fxeg/yAe - rP8eG7b/PDjG/7Cu3P/t7en//f31/////v/////////4/+zs7v+qqOH/OzbI/yIeuv8hH6//Ghql/zg5 - nf+np6f/pKSj/5+fn/+lpaX/j4+PoAAAAAAAAAAAAAAAAAAAAAB2dnY4mpqa+52dnf+goKD/qKim/5WV - oP8pKY7/Gxms/yMguP8iHcL/LCXO/2Zg4P+no+//xsT3/8PA9/+em+//WFLg/ycf0P8lH8b/JSG8/x4c - rv8WFaH/NTaf/6usr/+sq6v/p6en/6Ojo/t6eno4AAAAAAAAAAAAAAAAAAAAAAAAAACbm5udrKys/6am - pv+tra3/ubm2/5eYqf8tLZX/HBmz/ycixf8pIs7/Jx7W/yce3f8tI+P/LCLj/ycd3/8pINj/KyPR/ygh - yf8dGbP/PTya/0pKlP8rLJT/r6+1/7Ozsv+4uLj/pKSknQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZm - ZhmsrKzctLS0/7S0tP+7u7v/ycnG/7Ozvf9RT6H/IBuu/yMdyv8sI9n/Lybg/zAm5f8wJub/Lybi/ywj - 2/8kHcz/Ix6v/2Niqf/Gxsr/y8vJ/3FynP+vsLf/wMC//7S0tNxwcHAZAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJmZmT+5ubn1wMDA/8LCwv/Kysr/19fV/9ra2f+iosP/WVey/zMtuP8oIMT/Jx7N/yce - zf8pIcX/Ni+5/19btf+vrsr/5OTh/9zc2//T09P/zc3L/8jIyP/BwcH1nZ2dPwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKurq0/FxcXzz8/P/9DQ0P/Y2Nj/4eHh/+/w7P/y8u//3Nzn/8HA - 3P+wrtj/tLLZ/8TD3v/f3+n/9fXy//Ly7//l5eX/3d3e/9bW1v/X19f/zMzM87GxsU8AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6urjzQ0NDa4eHh/97e3v/k5OT/7Ozs//Pz - 8v/8/Pr///////////////////////z8+//09PT/7u7u/+jo6P/j4+P/5+fn/9TU1Nq7u7s8AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIuLixbU1NSW4ODg+fPz - 8//y8vL/9fX1//n5+f/9/f3////////////9/f3/+vr6//b29v/09PT/9vb2/+Tk5PnW1taWi4uLFgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADMzMwy4ODglurq6uL4+Pj/////////////////////////////////+fn5/+zs7OLi4uKWzMzMMgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAqqqqEtLS0kXk5OR17e3tlfLy8qTy8vKk7e3tleTk5HXS0tJFqqqqEgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//D///8AD//8A - AP/+AAB//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADwAAAA4AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA - AAGAAAABgAAAAYAAAAHAAAADwAAAA+AAAAfgAAAH8AAAD/gAAB/8AAA//gAAf/+AAf//4Af//////ygA - AAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAbS0tLM0tLSzMAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVV - VUiioqK1zMzM7OPj4Pvj5OH7z8/O7KamprVVVVVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnp6 - eY3GxcP/9vbx//r6+//v7v//7+7///z8/v/8/Pb/ycnJ/35+fo0AAAACAAAAAAAAAAAAAAAAAAAAAHR0 - coqwsLr/t7jN/5eW1P9UTtr/OC/j/zct5P9TTd3/n53a/9ra2f/GxsX/eHh4igAAAAAAAAAAAAAAAFVV - VUKbm5j/lpar/ysrqP8gHLv/MCnG/2Ne0/9qZdX/My3I/xoWvv9oaLr/vLy7/6CgoP9VVVVCAAAAAAAA - AAB0dHStnp6b/4GCmf8WFZ//Hhm0/5+dzP/+//b////7/8fH1f9CP7L/FROn/3N0pP+oqKT/enp6rQAA - AAAaGhoTeXl55oyMi/+AgIf/W1uG/2Fgk/+Uk7D/7u7s//T09P/Ly8b/jo2k/xkYov8wMJj/kZGS/39/ - fuYaGhoTVVVVJ3h4ePeBgYL/gYKI/4iIiP+KioT/jY2K/7W1tv/CwsL/kZGR/4mJiP9DQ4f/NTaB/319 - g/97e3r3VVVVJ1BQUCZ6enn3eXqA/ywtk/8/P5v/hoaF/4yMi/+8vLz/ycnJ/5qal/+Skov/j4+G/4eH - g/+EhIT/fHx891BQUCY/Pz8QgIB/5ImJiP8vMIz/HBuk/42NqP/Cwrv/7+/v//f39P+hoMP/Yl+1/1FQ - p/+BgZb/lJSR/4eHh+Q/Pz8QAAAAAIiIiKaenpr/bW6R/xQToP9CP77/v77b//z8+f////v/p6bb/yIe - vv8REKf/fX2h/6mppf+RkZGmAAAAAAAAAACLi4s3oaGh/LCwrf9lZaT/Gha0/y4n1P9fWOn/XVXq/y0l - 1v8lILj/Pj2g/4aGqv+xsa38mZmZNwAAAAAAAAAAAAAAAKysrHvFxcX/z9DM/56dxf9XUsf/OTHS/zsy - 0/9aVcn/qKjM/9HR0P/Bwcf/tra0ewAAAAAAAAAAAAAAAAAAAAAAAAAAw8PDedXV1fz39/P/+vr2/+/v - 9v/w8Pb/+/v4//r69v/b29r8zMzMeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOzs415eXlofPz - 8+D///v0///79PPz8+Dn5+ehzs7ONQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACwsLAN2NjYIdjY2CGwsLANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/D81e/APAADAAwAAwAPmE4AB - //+AAf//AAD//wAArQAAAP//AAD//4AB//+AAUIAwAOK/+AH///wD////D8AAA== - - - - - iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAP1VJREFUeF7tnQeU - VUX27t+b4Lz/rKWjo5JzDmNAERMGVMxZUdExowgIqICCCKMgQaKERglKE5WMLYqCKKMIIsEhqKgjgtkx - B0zjUO/7VZ/dFodz7r3dBBn/3LVqdfftG86p79vf3rVrV9X/+T+7H7t7YHcP7O6B3T2wuwd+FT3wf3UX - tN+q7aH2/9T+qLan2p/U9lbbR23fqO2nnzT7m//xGl7Le3gvn8Fn8Zn2+b+Kzvo13EQINmDt9cc//rFM - z549j5o5c+aVCxYs6LJs2bK8N998c+Z77733/EcffbTqiy++eFPt/R9++OGbsPEc/+M1vJb38F4+g8/i - M/lsviMiRkiKX0Nf/tfcA6D/Tu1/sNZWrVodOGrUqPOef/75fhs3blz48ccfv/X1119/sXnzZpfUXIZH - 2nt4ns/ks/kOvovv5LsjxeBauCaubfdjB/SAgY4c733rrbc2+vvf/37nG2+8Me+zzz774N///reLt59+ - +slZC4HNlQDh+/k96Tv47n/+85/zuBauKSID17ibDNuBBID+G7U/ILtnnnlmnVmzZrVdt27dvK+++mqT - 5NvF248//uif46cBBnjbQgD7HD7TWvi99pwUYhPXxjVyrZGr4Nq5h93KUAxCmLXj0/e/7777Lly9evW0 - Dz/88P1vv/3W0TZt2uS++eYb/5Nmz3/33XeJBAhJUFwFCAlgwPM9dh323fzkeRrXqmuezrVzD1HMsFsV - spCgCHgFW2Vnz57dXvK61MCW1bsvv/xyi8ZzRgQDIEkBdiQB+H6uw64vfk3r169fyr1wT7uJkMwAi+QJ - pPZ/+OGH26rTVtORisrdp59+6tsnn3ziG7/zPGTIRABzA/E4YFsVwKw8VCIDn+v6/PPPixp/2zW+9dZb - q2fMmNE2UgTu1YaVxRDHX99LzcfvI7ls/tprr62kAwH5X//6l/vggw+QU9/42wjAa4wEaQqwPQkQ+n6T - /0wE4Do1YihqIWkVuK7kXgUlOQeLEX59yOYo93tec801DRcvXjxd4++f6DRA1zjcvfvuu/7n+++/75+D - APyfzg0JkM0NbA8FSCJA3DWZ9Ztaca1cM+Tl+mk8x//186cXXnhhOveufiLh9L8qPsDqkcCyU6dO7S65 - /4iOAuy3337bbdiwwTd+hwRGADrSCEAnQoJsboAA7pciQAg+98D9WeNeILLu86Pp06d3py+iPqFvfrUP - C/L2bN++/fEvvfTSEjoCkAFcAZ9vysD5v5Vw8SQwFTA3YFaUixso7lAwHC6GY38bXhJghiMACwAhosUr - Jv9GAAOf++R+uC8afxup//GPfyyhT37NagD4+Lt9R44c2e7111//hA4AbP3u5Pt9k3/0JFDAlKgCmdyA - DQfThoK55AKyESAEn++LB3+h/Jv0GwEMfMjN/VnjedyD+uKT0aNHt6OPor761eQOkLU/1qpVq+pjjz02 - HuC5eQB/+eWXfXvllVfcq6++6skACSAGr0lTgTAYTHIDNl4vbiBoBDC3Ec8BZLJ+FClu/WE8Y+6N++L+ - IHp4v/QLr3/yySfH01fRkPG/2iUUSf6VV1559JIlS5bBfm56zZo1btWqVb6tXbu2iASQgv/nogIWB4RD - rTQVyDUOSCJALgGgjVxCAgBmkvUb+BCde4X4Rn7IARE0CbXs2muvPfq/2SUY+H+67bbbzlu5cuW7gArY - 8v1uxYoV/qd8XxEJiqMCYTAY5gR2NgHM94cECIM/G83Erd/Ah/DcNypI3/A7pMBQ9Ny7t99++3kiAVPT - /1WjBMD/PePcHj16XCHwP4HhgP3iiy+6pUuXwvAtSIAimCsIVcACwviIwGKBpNFAUkZwWxUgW/AXl/9s - 1m9xD/0C6IAfqiLPce967hP6MMoZ0Ke7fFxg4O87aNCgm5UP3wSwAC4X4JvGv54IPCdyeCUIXQGdYgFh - UixgyaF4TiCeD8g0KZSWDUxzAZkIUBzrRwVD6TfrN/AxEvqDxnMQRRNMm+69996bo+BwlyYB4FMksZ8i - /W66iR8AFsAXLVrknnvuOad5dE8CVAAS4AogQZorCIeFSSoQTw1nmhf4bP1b7r1ly93KB8a6FaPH+LYy - aG/Om+//T/u3hnvZAsC4/IeJn7jvjwd+cemnnwx8+gTjoPEcBiEj+oE+pW+jPt7llKDI8gcOHNhFoP4E - sAD+zDPPOM2Xu2effXYrEuTqCuIjgjAzGHcDxAEfrnvNvTBqtJvZspUb3fQU1792PXdPtVquv9rgqrXc - kGq1fRsaNX4frDZQ/+M1vHbwgQ3chHMvcHNv6+JWT5vuPlMyx9K/4fAvaehnvp9RDP48DPwAPwK1SPoN - fPqMPjFXiaFACFyE2k9DhgzpsisqgQV8f7777rvb6aJ/5CYA/amnnnIqqXJPP/10EQlQA4iBMsTjASzB - 4oH4sDCeHQznB5DhVXMec9NuvNENPvwI17tqDdevak03RICOELCj1PKr13GTa9R102vUc7Nq1PdtdtRm - Vq/nn59cva6bqDZWrx2tlgdR9Bn9qtV0vavUdPed2NQ93r27e2vFSp+FNPnPxfrj0m9+PwQfsA18+od+ - otFP9Itc6o99+vRpH5FglwkMuZC9b7rppssk899wsVj9vHnzfJs/f35OJMjmCpJU4E1J5Ow7urp+DRu5 - nlWqu/5VarhhAn6MgJtcrY57VKAuqFnfLarxF/dizQPcSrXVNQ90axMaz69SW6G2TK/jPfNFkAKRYxKE - 0OcNgwwi1936nqFNTnALh+W5D99516eoLfGTZv0W+MX9Pv6ee4+Dj6s014n7hBC8Vsb1zS233HIZfR6N - Dn7R1DGJij3PPvvsJgL7Qy4ai3/88cd9e+KJJzKSICkoxCLiowJLDlmKePXChW7sVVe6blWrC4xqbpAA - GSXgpwn4J2TBz1Wv714UgKsE5GsC9I1aB7q3ah3kNqhtrHWweydq7+pn2Hie/2/U69arrdN7V+szltX8 - i1tU/S9ursgwRWQYJSIMEhF6iXS96v/FPXrnne49SX3o+y3jZ4FfXPrN7xv4qCbGA9Ah+LhO1BSjQg14 - vZ778Pzzz28S5Ql+sWQR0v/HPffcs6aqZv8BW5F8ZfvcnDlz/M9MJIDVvCckQZgfiLsCOnL5/Hnu/ubN - 3e0VK7uelau6oZWru3ECo6B6bfe05P1FWfxqgfWqQAO81wX8m2rrax5UbAJAFt7H+/kcPm+NSLVMivKM - vqdAipAPEUS+npWruV6HHOLmjxjhEzmh70+S/qSgLw18gMeFmiulz+gn9fEq9X2tKGO404NCy+2XHTFi - xETABPxHH33UqfrFFRQUZCSBBYYhCZLiAUuOvLzqHy5f/r1L1arurkpV3CCBP14WP0cWv7BGHfeiLHOl - 5HqN2is7iAAoCcTi81eLCMtFgoVSm0d1DWN1Lf1Fgm66tv7HN3FL5zzqU9mW7rWoP+73LeLH72P5zz2z - 0A1u2cIHy1h+CD79a+4UEqAYDzzwwCQRgJlE5ll2Kgnw+/uqErajLvI/Br6UwKkosogEECJNCUIShMND - yw/Y0HDu6NGu+0EHu66y+v6Vqrqxkt3ZCsqeVscvqVbXLRP4KwTGP3YiAVCCVfq+lfrepcQZcgszdE33 - 4RIqV3GdRdDJHTu416OcRprft4gf8J95Yq67tfGRrtMRhyWCTzyFS507d64nAiRQHcV/unbt2jEICndK - POD9vipfT5MMfQb4WLzmtX1T2ZODCKYEIQm4+DAwjJMgHBkskz8cce3VrkOFiq5HxUour0pVN01y+4Ss - 7dmqtd1iSfDSBAKs3cEKwOeHBICAXMdzup7H5RImigQDRFQIe89JJ7hlf19YlOpF+i3oC8GfN2um63DI - Qa512TKu94nHb2X5IfgWXxkJ9POzc88997SdFQ8gM//zhz/8ofrEiRNXGvhTpkxxquVz06ZN24IEqAHk - gATEBVx8EgnCHAEkePqRAndn46PdreUrunsqVXb5ktfZCrqeUgcv1Bh9UZwAAsEU4JciwBIR4DldF9c4 - XUTNkwrcWaGy61y7tisYPtRnO1G1eMT/6MQJrl3d2q69wL+zfDk34szTinw+IMfBtxiL/qT/cRcqrFkJ - JmCzo10BqchS3bt3H4gcASzAT5482T300EP+d8gAEUwJzCXkQgJkbUbeMHdzzequS/kKbpCsaJKi/Dnq - 0Hmy/KcDAjwfKsAvQQCNNFbqe00BIADEfFYEhQQQdrSI21PqhYoNv+Jyt0zkDod70/OGu7Y1qroO5cq6 - PhXKu3vVxlxwrgc2Dr4BTz9iVCgsv/M6Rgm9evUaCDZqYLRDHkj/XqeccsoZAvcrGAjYEyZMcJMmTUok - AS4hjAuykWBcjx6uXcWK7o7y5V2ewJ8i2Z+jod4TIsD8HAiwWqCslX/eEaMACwKLXECMALgkIwBEhbAF - cgf5UoJ7RIJOInTXhoe6eVOn+uHexN693I2VKrpbBX7/ChXc/RUruBH6mX/FpUXgo5aoZhL4GBZ9S59G - o6+vTj/99DPASG27Dw0t6q88bNiwhXwpVg7448aN8z/lErYiQugSwuDQhomhO7jv5vaurSTwToF/v2R/ - qjquQBb0mDrxCbWQAEhtkgLsFAKIYKuVE1iVhQBPiQAQt0AEnqh7Qc1QtXZVKrs+Z5/l77Wr2mCBPkqk - HxMRYNy1VxYFe5nAR2GtQRBIoIqihQK/8o4YFVDDvu9VV13VWl+6mS8G9LFjx7r8/PwiEqSpQVJwGJIg - r31b18b7wPJupKxliiLp2QqktiRADbmAmj4GeE4W9rxGAUVBYOQCdkUCPC7yFsiNTZaa5eneugvwTgL+ - Lt3rcAE/NmoPiAB5em58q+t9nAT49FEo+Wb19D99ioGhwvweBYebr7/++jbRqADMtsvDJ3zUaufl5b3K - l2PtGoP69uCDD25FhFAN0uICCw5H3NqpEPxy5SSDldxkWf8MjadnxQkga4IAz2xBgDrywXXdijgBamz/ - RFCRC4gUgKAzjAFwASgTMQAuwBTgMSnAHBFgltRsipRgVOXKbphAh+jj1MbHCDCxXZtUyTfgQ/DpXxr/ - QwmEyat77LFH7Qiz7ZIbYMy/v5h1h9i2mWAP4CU3bsyYMYkkMLcQjw3MJVhcMLpnT9dawHdXu08dMVHg - TxP4aQRYoAmZZ9S5PyvAzwRgTF6kADECvPWXhu69c5u5jzve6r4YOcZ9nT/ebZpd4H5Y+ZL7RjN9/P21 - pok/7Xibe/+sC9zbBx3u08ZhJtATQJ9LjIELSCMACgVRn1IQiOvChUGA2SLATJEadZuk+5wklzAxIAAu - YLgUYFLnTt7yLdBLs3pABwsCcAvCCQwfeeSRzW3atOkKZmpgt00Pb/1iVD35/tf5Uixec9NO6+N9y0SE - MDYIRwkwOH/oUNeqUiV3e9myLk+yOEGd8VBEgOkpCpBGgOU+E7glAV6rd6h7++oW7ouZs92PX329xfqA - XApCNj2/2P3rbz3cW0cd71PBWxKgvgigBJQfBdSVK6qjvERtT8wkAjzKMFbWP1P3NU0EmOIJUEkEqBgp - QAUfAwwTASbfcftW4CdZvIGPkaG49DXuAOIInzfAbHuogLf+q6++uhss40sAX0ubfDMiQIJsRAjVYLIu - uP2B9V0ngc/QJ18dQYdAgKnqpCQCzJML2IIAkluGXi8KgJAAb1xwkftYVr3p0898Db9VBoUVwlT+xB+Z - qoE+l7SuP+u8QAFyIABJq0gB0ggwIU4A9cVDPe702VRUMu7rQ6s34A18U10beUmxKSDZJhUw6697zz33 - rAF8JF9xgG+aA0gkQppbMDWASLefdoprX6a0GyDGP4D1a5zsCSBZTCLAXHVkNgK8fNqZ7kOlS8PSMCqE - rEoIMhgJDOyQBDxni0HCZeDhYtBPNOZ+/fSzvKtJVQCpAER9KkaAWQkKECfAEAjQ+24PftzqQ4sPrR7g - CcRpBOX8D+KoeGSNVKDutqiAj/yV8m0pUDfz4YAuV+CGDx9eYiL0a9fWtSpVyvVSJDxSw6J8I0AFBYAQ - oKIUQM2CQPxnEgEYcy+pqhig3sHujUGD/Zq7cGEphaM8R+EGJKCaB2BtuVhcBeIE4PW8z5akG7H4+b6k - 9uXjTvIuAAXyLkDX411ARID5CQQgtgldAAQYJ+kfq4YLQA0fGjQwI/ihxYfA45qJzXguIstmpYhv2JYR - ATNMVVWavMD8/lD5bWtGBCODKQJuIXQNoSKMkdtoVb2K66qofxhZLxIfEQEmSgUmSwWmigSeAGoFCprm - yH/GCfCsOhkCLD/+RPeuavisIMOWXVGUYevvbN1ArgSwZWBGAFvyBaFotiTtMxWBrB823C0/tJF3Rc9v - BwIMVp9MGT7M+/Ikube8SxLwgE9f03gdJNDGVk+DYZQXKFYwiPz/qV69eqdKSr7iQwFc1alIi28lIcJt - p57ibildyg2U9Y/SzSL/EGC8wE8iALkATwDN+89TWxANBSHAi5Lid1Q1SxEG066UkDH3zjSsLbeCGACG - 1VIrmIsCQABk35Z+Wck3hLIFrMz5W2n6h/q+VZdfmUgAiMsogBgAF4ACTA2CQFMA+gFjGKQ+mTwiryi6 - zyT1ZvEGvMVhBOY8h1LIEL868MADTwVLtWINCQn+ympFzyCsGesG/MGDB/vG73EyQJDQPYSKwEUN6t7N - 3SDw71bq8z4RYHQWAsyUAsQJ8FTlwlzAsmuudhuj5WNMsNAoP2feHTKgBIAVugEAtTjAdgyJxwC4h5AA - yH+0nNsv2woXsvJdFHtCwI3Pq+pZrgBihi4gkQAiAbHOJLk8Yh9cgBFgIMPAUSO9H88m9SHwNiIz9eWn - JegUDA4Cy+IOCX3i54477ljFhwHsgAEDnGr9fTMiGBlCVUgjQrtDD3adFfgNFvj3Q4AoAExTgDgBiKgh - wIvt2hetLbQSc2bYmG2zlTVxFUDGLQ4A4DgBLCiEAKhEKP+Unpv1Qyxb0Mp3UbX0TP44N+OAQ9wCgQ8B - yFMQBM7X9UIAFAxXNov8hkhNkJtEgNFSAILih8fle/AJ7izAI/4yizeZx+LjwDMyw/Bo/B8SyA2sAsso - GMzJDSAV+zRo0OACgf4jET9A9+/f3zeIkESGUBVwDyER+pLtK7W/6yvrzyP4U+LHE0BB4FhcgKZ9zQVM - kXWQDAoJ8LjkHwIsbnGdl3ksnloCpkIhARU1tpgCV5CkAriBMA4Ig8CkAJDXI/+2aYVZP9/Pd1DdM/Pu - Xr4ucEzFapr8MQIUjgDm65pxXVsToLIIoByArD9UACPAQxolpQEfyrxZuw3JAd1GaDZKgzSK0X5s2LDh - BWCaqxtA/iv89a9/zTPL7tevn7NmRMhGhjBOaNfwEAV+pd29ZZXxE/hGgDEQQM0TQG2yZHGK5tCnyVKM - APhPCPD0WWe6VyXzzKQxFc00aEgCW0hhrgBLtVgAK0bOwzggjQDm/03+bfMKs36kf60sf1zLlu5uXWde - Jfn3KEPpFYAhoJSKmCUkAEmgQgX4mQDEPuYCcIkDNTtocyyhxWezdgOegJxmrtiCce1EMgJMc3UDFBXU - adu27WJARPL79u3rlAsoamlkiLsIVKGXrL91qf0KrZ+Ub0SAUVKAOAHwi0UEqKAYoGJV96jk8/EDVLK9 - qHBlkdUbWmmUkYBCEubazRVgqVTm4qMtGMQNADBSn0QA8/+8DrcBccz341Yo7V6tWry80053fXVtYyop - yPOWX1ujEv2skpkAjG4yEWBwjep+LJ/m30OJTwId4C04Bzteg5vQAt0lYKoGthkfyP/eVatWbaqij0/5 - EMDWYgRPAmuZyBB3ETc3OdZ1KVPKDVLWb0QGAkyQAkySRUwRCabJDWAtNhRccv/9Xuoty0XOm3x5SAKK - SVAH4gF8MzJtKoAPJ5gzN2BxgAWB5gJ4Hjdh8m/WbzuYLHtynht0+FFuYEVN8eLno8qkxVWSCYBymQtA - AZIIkB8FgRjEvfXr+WGcWXwo86HEh5YeB91UG+Pjf5Cmd+/en4Ip2GZzAyR/Sh9zzDE3AjJgAro+wJPA - WkiGUB3iytCvbx/XSmP+XuU07pcCGAHuFxFGKRYYo5seyxSo3EAaAZ5sdqGvgLVxMWNkMl2ZSEA8gCuw - pdamAsg6AKcRgAAQN8HrzPpxIxDp2YmTXN869d0wWf0MAb8wqkhaqmSUEWBhTAEgAC6MIBCXBgGIcR4S - yYkBcH0EwcRCEGBog4O8xVq63QI6LDkb6BaDxUdrvA9SNGnShC3qSqtlnCZmcWflZs2ajYUAAKpSI98g - QdjSCGHqwHu7/PUy17H0/m6gCDDcE0CtfFkXJ8A4kkGBApAM8gpQs5Z7QXPjWL7lukklQwaeI2fOfLkp - AaVRuAmLB4jUCQgB0ZI4FgcwEggVwEYA/B/5x20wlMT61+lz8i+8yE069ng3/5gmmvjR/EO1em55VWUB - tyCAytYUAD4V5S0eV3yAC8OVhQQg1iHmMQLgCkdCgCMbeYuNW7sF1KG8A6qBHo7KzA3zEwPmPbz28ssv - Hwu2amCc+mD4V0e7YK8ASKxb6/18MyIkESKNDDcdeZi7S0O/ez0ByigGyE4ArMMI8GTbG31RJJKIX8Q/ - QgTGyWS6mF62sigKIqw+DncBCXAFBG0WC2DVyDtxQBIBeJ7/4y5wGxDHkkwoig0vCQj5fd2TT7pXHnnE - rZFsr5RCLv/b39ziq692i666yi04oYmbd8yx7jGtHJodBbXTKXOj5iGBAPeLAENUFm7WXhLQzf3y04J1 - yAEB2rVrtyKKA8A48YH/3+t3v/tdI609+8CkX+PIIhIYGXIhRG+pRtsK5VxvRf/DypXemgByA7iAB9TG - mQuQVXgCMBKoXsM9N+9J7xOxCqSR34mOGd8SLaMGuARIQHAYJwHxAMAREJoKmBsIA0FiAP7GPfB/s37b - ywgi8Vl+8YaGnqzUIfhktY4t3bKFnLbsPVzrz3tfRJ1UAbxownj3VLc73JPduroClb3Pan6Rm3LmqW6c - jGVU82beb4eWnsnKkwA34M0dowR8RufOnT8AW2GcmhWEAPvVrVv3Yi34+AarxtohQFILyZBEiNuvv951 - kvz3F/jDIIFiAa8Aat4FQIByIoCaEQBZfKg8BKjkCq6+ysu8DWmQRRvWQIRQDawihrjASAAwtqCSgBAw - iegZ2yPzcQIQF/A8/zfrhzgQiJiCANPAR5WovoF0NnNn1dGWxLFMHCS1Kmkrg4NANK7PGqrF8DZJ2k3W - 0wAPh+n8HgbpEIL3K6j/Rql9dihlj4HEtDDBQdnGjRvfrgzgZvw9wGuLkq1aLoS45fSTXXeif7mAIUYA - PxL4mQCjEwlQqALzJ030lmAp5zgRzC2YGuASIAwkABzcASQAOIaGBISoANbNMA/AbSjITwJAnsdN4PsJ - /IghQvCxeEACSL6HYBQF4rtxS5bAQaXi0bz59TCYM0uH2JbkQbKLA3gItrnt+IgNEgjHzccff/ztwric - WmKlkA8AVfY9TGzxsn/XXXcVtSQihM/FSXFLw4Pd3SR/ciJA4UigUAEquoePPtJ3rCWbLP1sySU60RSB - jqPDLTbgfQSHRgKslngASwZUVACZB3AjAPEA/p/nCRbx8cQOEAdJ5zMAn2CToJPPx6qxeoDHHUFEAz4e - yYd+3YKyuLTHQY9Ledyyk8AOYzH7HUO2WO7UU08dJoyrpAWCnHRRU8uOp0EAAA0JkPZ7GjE6VK3k+hIA - phDAZwMjBciPhoI+G6g288bWXgptJBInAp1HR4ZEMLcAGACDNGOptoQKP4wrQAUI8vD3Fgjyk7+Rf6yf - wA+/b+BTco1rQfLN6q1CCuAtcWPAh9ZuPt2k3SL24gIeH3rHwY6P0uIjNvDU6G4aGKuB9VYPosN6zZs3 - fxYCAOydWvcetlwIwWu6d+lc6P8zKEAaARgOztCKmTD3YLkGrCAkQ+ge6HSbCkUNAAiXYKtnCNIIzAAX - K8ffGwGIB/gb9xBt0eZVw1Y9oyZm9XHgUSAbt6dZepKsxy08lPIQ7FyBjo/Swr/NnSu9/6wwrq+WOBJg - 1+oDNQW8Ko0AcUKkEaTLDTe4rvL/A0WAwcVUgPxatXyAFwaWxmbLSMaVwYY6WJsRATkOCyVRAgItXAEq - gNwDPA9+8jfWj/SjFoBPsAeBsHpUhQDPLD60dsu/W8wSWnk4JLNgzcAuLtBpIMcD8vjf9B8GrXUdzAxy - 0BVYb/VgeHCoCkDXd+vWzct/NsDT/n/bZc39+H9QCgHuUyCYpgDjjj/OJzC4YIsr4rkIUwfrQFMGG/IY - EWxKlCCNoA0SEBQSEGLtBII8iAcI/ogRCPoAn2CP9xBT4OcBHjcD8JDMQA+l3ZIvoXVnAzsu3UkgZwI4 - bZQWPs9n0p8tWrR4UxgfEg0FtyLA3nqmkQoI/gUBABclyLWFZOh60YWuJ3P/UYuPAtIIQGZsfPNLMgaf - SaQICQEZIBBWiEUClpVJERdAAiwcFcDv8+An1o/fB3z8PVaP3BvwyDwSD7kA3WTdLDy0biNmGIiFQMdB - TgM4F3DTRmrxAB2DVoLvIzBWA+utHn/WM0e2bNnyi5IQYAuinH+u65WoAGU0DCyjGcFkBWBq+MFWLROV - Jx5/JI1AzG1Y5GtkADCIgFvAoiEBrgDZ58FPpB/wbcUzwJu1WzkcoIeAWySeBHQIchzgbMBmG3HF/58t - NrN4TgT4AozVwHqrB9uUH6UXbVIeIGfLT1KIu7TEuXeOBCAZZKMAcuIjbmq/1Xdnc0VJw1XLYAIEAEEG - AIQIxAaQABXggfUDPlYP8FYFZYDbEAzL5rPMmg3kEOAkcLMBmg3AXP6frY8w6tatW28CYzWwTiRA4xtu - uOH7bSVA/zat3ajzz3b5URt/wdmONuGCc9zEC89xk3w71z10wXnuYbVpF57npl94vpvc7Hw3jFFEMVxP - 0muTglOLKQANQCECJOAB+ABvpW9YtgHN6wE4BLa4FpgNnJ3xfzAVAb4X6o0zEeAYuYDvte+MgzElBYLg - i7FzSRp+u6Tfu/t9yTEbWKq83ym++1bgH5ORAHrRpi5dumwTAbYHENtiFWkuwdwBfhz/TnaPB8Ukv2YF - AA8IoFHA19kI0FjDwC81c5RKgG0BpqTvzeQDswWDSLkVt6AuAE90D/gWA5AehgSMEsIYgESTBX1hwFfS - GOC2y/7qrtx/P3eF2l/3289dtt++7lK15vvu6y5Ru3jfP7uL1JqpXbjvPu4CtfOj1uqUphkzs5n6FgJg - 1KoNJAjM6AKOUuHAx6oh8zJcUsCyvS+XoIbXZJuICvMDYbLIEkWAZ6VRAE+GkEAP8BkFUPjBgxoAZv4g - Aeljkj4QAVdmy+Fs6Jc0CrDgMClAtBiCa+3YtKm7Ucvi2u6/v2uj1lqtlcjQUmS4Xu06keBagX/Nfn92 - V6tdRdPfl4sE7c4+I7E/6KNs/QkeGLWSfB9nCgL9MPCSSy7ZoOlgrwDZgLT/Z7uA4s4jxCPppDqEpFSx - pYktB2BFkWQWsXoSO4BPsifMAzARhApACkjApA9qkCkPYKVX8UxfmPgJ07hc752qjh6kkQ77AAzR6Ode - zYcMUuuv1k/tHs2W9mGrOLW7fSvtemg01bVsKdfv+hapU/PZRhlGAKX5NwjjI9KGgSQHGmky6OWOHTt6 - BSgpsGnWm2n2MKnwJF59FNYkZkoHG/BM0lg6mPE94DPBY5lAMoA8yAgyEcQ8ADOAkIA0MJM/zPpZJpDP - Q0koULGkUJj+tUxgYnKIsjrVAY5lJbQvB6ugOojCmkgmxaiPoE6C6fI8EYH6CRJoTKb10c8BN7ZKLMyJ - j1CShqHggVFrMmgtGKuB9VYPnwo+44wzlqgiyCtArr43jYG5FpMk5f2TLDwJdJsZDOcBAMomhJB8ZB3w - Kb6wuQDkP5wLwA2gArgCFML2Pua9qIFN/dpcgE0C2cxf0qxfSIgeLVq4wQLa1z4WEYB1EekEoJDmXjWq - qoZoaV2mCZ9M6WJw7NSpk9NKb8rDD1UD660efjLoxBNPLLj55pu9AmSTljBfnyvYudQWhuXnludPmgUM - p4StZAy5Z9LGpoSZyQN8JoKwbmYDqfih+MMIYNPBzAdQC8C0MeliSGC7n+M+mF1kXsEmhcL5fyvmDCeG - wnmC7scdpyVxLH4pJABEoBIKApAM20IBpALUUFJKBwF6qY0YOqSoKjtt6jeNIODUoUMHd9JJJxWAsVri - ZBBThPWPOOKIB3SKpSNxEEp5tvRlEgNzATtccxBWFIdL0awgJLR2W/4UAm91gsi2lYcBIFPBWDXp3qR6 - AApDiANQhegQR68ULDQxElgxCGpAOpn4IE6EtKnhISrJ6qHNofLZBEPVTlsRQCQoIoCqpimdCwnQr7bO - QdAcRKbZwzAAjc87gCOqrmqvB8BYLXE62BeEHHDAAX2UDdxMMijJwtOkJhPYaesKQsDDuX5bexguPrX1 - hgAfLxJF7s3qkXx8N4ABvm2vblW9AAzQYWWwlYThBpglhCS4AiaHqAvgM6jhC8vBUAOrAwwrgmwDLYsV - cBF9r2vhBpRTxZOKXSEAKuAVQOXwY9knAQKwaJYYQAQgDigkQBk3WLHA8KbH++FoSaqCfPCpUYCygJvB - FozVEgtCKAmrUq5cuVYaLnzLsAEC5GLZJV03kCvotgmFAR+vBwyrg22dgIFP0GcncFlNIECHJWEQICwK - hSQEhGFZmJEgXhCaVBoWLu+CCH9rcLDfAo9FIYVl4T8TID9GAJbOsYCGdRQQYJDagzdcW5SPKG6pGARA - zZUD+LZixYqtwFgtcW0ARaHlfvvb355+8cUXf0zQgHQk+ZVMi0TSlpHFVw2FS8jCfQes7i8sAo0Dn7Q+ - wBaJYKWAT36fuX87eYuqYFYIUQ5G9U+8KDQsC6diiNXAxAsUhtqZh5CAcnDmEJgytvrAeHGoKQLXOVSx - VK+yqnkU8Cx5CwnASCAbAQaIAJP79y1WoWioFGBFEuiyyy77GGzBWC2xKNSXhas1Puuss14mEEQ6kgKO - eJlSSdYNpoEO8OEmVLYVXbgwBLk3qw+XiYXgW0k40h+uDkL+mf9PWhcQLgxBBQgI46XhRgLmOXAzViFM - bGBqwLVZsehdjRtrSbzWPPqtb+IEKFwaxiwoS8MokokrwIDKihtUkBIu+cqlchilsJVdGDPDe7CNME4s - C/fbwqgdcvTRR8/W6mA/ErD8ebalYDZEy2TpBHNdLrvUXVu3lmuhLdJbH3aou6nJce7mE45zt2if/A4n - NnGdTjzB3Xriia7zSSe5LsqcdT35ZNftlFNcd+0sdtfpp7oeZ5zuBl1zrRvaurXLa9PG3afrHHXTTW6M - gpxxnW51E8X2qd3/5l7UkC/TyqA4ARgJWGk4OQFTgfjiEFQlJAGkszUCqBCENCKM0obQPeT7x2llEEvd - CglQOXFlEPslJBFg9Nmn+zqGcNFnWkVxOOy0mAEXjjEfe+yxs8E2wjh1uxiiw7o6vfpuBYKOQBACpC0G - DUHPtm+AXXRnFYtcrfRnCy0Zb6FNI65TOvR6pUdbqrF7WJtSpZUuLe3alS7j2qvdXKaM61CmnOtUpry7 - jaYhU2d1audyFd3tanfIurqVr6y9+au4Hmq9tB7vkXv6+SGfbRaB72foB7BpS8QhgK0ODheHogK2PMxW - CBkJWIuIuyEuMJfA6MMWi/RsdJiyflroElscmrQ0LIkAQyT/s/v1KUo6Ja0EzrRyCExQ8Rt13A6Ygm3a - CMCSAn5twN57732F0oZfIB0wKGk5eDg+z2WzCPPtdza/2HUW8N0FdreodS9d2t0lsHuo9VLrXbqsu0eg - 95PvHCDAB5XVFmoCe7hanjp0eLnK6tgq2l69irtfbWSFam60gB+rZdtPKHC1PYPiq4OR/3BxaLhHQEiA - pOXhuALiAYjF8DCJBOYSGIXc36mDVkUr8mdxKASIlof71cHRDiHh6uAkAgzVWQKPFcwu2vmjuCuEwQgj - VjXwl2CaKQA0Avjl4WpNtPf8aqSD8X9Jdgixku34bmK9r7rc9RXwQwQ6bZhankC/T6CPFOhjSis9Kksf - L9AnCPBJalPKKYCSlc8U6LMEeIEAf1TbsjyupdpzK2k3joo13YLK2jrurh5+vM/2LbaJk1m/7RkYLg+P - bxKBWyAOsA0ibHsYWyLOZxJTQDBIYMfimhIQHEKCWYpR/lajpjaE1k4nbHodECC+QYTtD8AOISM1FGQD - rRFqeRoOTtbW8SSekraByUYGW1dBClgx3RowjbDNuDzcbxChduiRRx45VZsOewmJZ+Oy7REURvLxncP6 - tbjG9RMB8gT8fQJ+pNqYMmXdAyJAvoCfoDZJ4E8pW9FNE/gzZfEFsvg5An9uhaoCu5pbUKG6e0bW/pzA - f17AL6msTSO7dffZu/gOIbZbmG0Xl7ZTmC0QDfcIsFXCtkzcXAEEiw5x3IIE5AogQd9jj3MDNea3Mw8y - ESDcIiYkwDAtrF34yCy/6MRK0JP2DUjbOwAMCOB1oCcJoKnCtGGEbdbt4thGpHapUqVuUh35vxlCEANk - 2iUsydrTtowbcGObiABYfUQAgT9W1j9Okj9BbZKkcwsCCPw5svwiAgj8Z2T9z1Wq6QmwuHMXb5Gh9Ic7 - hZHitZ3CbIuYcHk4E0IhAcJdQkIV4DPNFRAPJJFg1A0ttQuqtoCT1bM5RO6bRBUqADuoMRIYf+6ZPq7I - tF1Mpi1jGCkQxKsI5N9ly5a9CUyz+X9zA36TKLXTNHnwJm4AJlmpddo+gZapM2kKh3Lh7uKDbm4nAii3 - LfDvhwAK8sZo9ssIMFEEmCwCTJUCTJf0z5QlFYQEkK9f4Amg5eOVRQDVLpCtM+lP2yUs0yZRRgCLA0I3 - kLZNHK4AtbEDn3EHDytgvkvgj2Fvo9Rt4gpjgPg+gewSxiYRngD6/e9TCxecMgKIbxiVtIVMuLEEGBCX - If/aLpa1AJwqlvMmUUgEtQGHH3rooQ+rStgnhGzRRdJOoWn7ByduK6+Ygr0CS7xRpPbmKdwqtpZb2/UO - X9FLsIdFpu0TaPKftk1cEgFsq5ikreJwBRYPGAlmke8X6PexJ6DfJ7hG4T6B2uvY7xSq57PtE0guAAJM - uaSZTziF28XlslegxQoQgGG7NoVwjRo1ehgsI0yzyr+pgN8oct99921z6aWXfkuFEIyKbxEbl/n47qCJ - 5wn0U1YrRgD2y8tlq1j232OnUAiwvPmlRUu5ACFpp9Bwv+Bwo8j4LmEhAcLNIhkN2G5h8c0iw/0CZ7CS - WlF+XgT+fL9RZCEBttoqVq+z8wLiO4X6ZJD2Ul6qI3LtZJZwf2BIkAsRwIXpfFL6YFgc+Q/dACnDppoe - fgkm4QbSZD4n4KPzhfIHDhQBNAfO5kjF2iyavYILTwxhO9a5tXSGrzp+peSfoCy+VzBp3+JuFRtuFx/u - Fk4wyGfFt4tFeaYxaaZof4TfL7DwbMPCnUJTCJCwV7DfLZzDo9Qvc3t09/saJB0IkaYI8TgBtaaoR8vB - XwJDtdT0rwEe/2lZwQbaXqy/Agk/oUCwF+4OXhzgi46R0ZZv7IkbJwA+Mdft4iEBhzMOlq/tc0hDVyB1 - AgzW9tk+wWb94WbR2fYKNgLE9wtO2jD6dZEuX3sB9fLnAGk3MDvWbhu2i59yzhnelZFRLOmO4bgBcje4 - 7mrVqvUXsA3Uir1ZNITw28VrAuH80047bQPBIMPBtOAu24khdpDUww+M8QSA8aECFOfACBTgMW3J9qA6 - vr8sr4ekd1DjY9zCceP9VG5o/eE+wdl2C7eRQHzH8HDLeFTgmftHunsObqBTTZV8krXP5RwjOzKmhATI - r1/HrVq8xGcWLZ0cJ4HNMaRtJI0SoNK4bI39N4AdGEZYphl76vP+wAi1I7Vv0IPXXXedDwZRgLQzg7Kd - IoasTdEmSQOjswI8ASR/bJte3CNj2J3zKXX6TB3SNEajgYEiQy+1ESc1dUv1PQzfintgRLhhZLhpNCMI - VOANTS2PPvts11vfM0wKNIXTwfx5QVueGVTcE0M4Mm7xuLF+NEMq2eYUMp0aAgniRKD/Cf409+809/8g - 2EUYlugIOTsuruZvfvObSzQkfJ+qEvyL7WljO1dnAz48WnaGCikGRATA98UJwEbROR0aFZ0ZxAGST6vN - io5xHyxg+gigvBNOcgvlsj58c71P/4ZHxqRtF5+0afRnsvglY3QSh/YJ7COy8fnjUSBOCtV+gUvTDo3K - 4cwgOzTqsRuu9yMY24XESFCcc4NwsagzdRwa+r0PZgKf4g8C+pyj/7gc+EOj1BrXqVNnLCpAkQh+JtuR - cSb58TOFYffASoVHpEAAMmGhApTk2DgOjVqq9qwAmSNgAGi4Wn/55T6S6PxzznMLet7t1s6a7T4VIZII - EI4EPtQYf80MFYJeernrX7ue/5yh+ryxIkCBjop/Vt+1XOcGFZ4aVnh6eOG5gbmeGlbFxzscGzfz1JP8 - RpSkk9MOi0w6PCp+ogijAxJ2ZG/r16+fD2YRdtt0dJypQC0YpYrh94gFSAbZ/Hz89NBcjpAdXJ0t1otP - gEwHR3JsnD/LT+15tScEzDSB9aCUYYTaEIE3QK0fP2vVcw82PdWNPfm0LRrP3VOjjuuv1wyCRHrfGAH7 - sD7nMX3ecwJ9ec36OjY2+ejYTAdH2rmBhWcGFRJgxlFHuNdWFZ4ozoxieFZwLieGGglIGGGU+P5zzjnn - vcj6a22r9YdDQlTgKEWVeRpbbibFiBuwypzwfEDbxTM8MdSOjrXzg4fWrbMFAZBCiwFMAbY6OjbLyaHh - uYGv6IDHNWor1RbroMenRIgCATi1Rl03XpL9oAAdldLG6PkJatNFqLl63yK9f3lNHRbJoZE1fz44Mtez - gzk61h8cqTZTIwYjwIxGDd1ry1700m9zCHZUfNqZwXGXYHUHyD/DdI3WNlevXj0PrLaH9RsBTAVq6Inz - tdfcyxSLEAvYPjxJVp/pGPmhB9R3o4sUQEmgFAKQQfv58OhinB0cnBzKoY/rdOrnGv1cJQCXqy1Vey6h - LYr+t0I/ee0reh/vLzo4EgKIDGtEihIToIpmM488wr2+fJmfV7DNJ4n+qTIyEqAGmU4NN7eAiyUwJz5T - 2TdVP0T+YLVNvj8eC9iI4LD99tuvm1aYfMckEbJj5VlxXx8eGI3l21nBlFDlHX5opAAcmAABCnMAdnLo - DObQBf6jshrO3o0fH7+tp4dvqHWwW0+rWXg8bFHTc2+pbdSxsYlHx24HAjyuyqf1mk4mZ8FaBQiA/7et - ZyEBM4pUGsWPj48fJ+tPYNUaRmZsVfP3HdgIOFb+MHorUeSfNiYsOj5eLzhNQ4wCkkPIjq27yyT5Bj6M - Rt7yjmgUKcCWBJhx0EFugQpGZkgqjQBIaJwAHBn3ix0fHyqA3IQFgRwdx3WFh0dz2GXoAp699hr3joCn - 4phqZQhAeVlxSGCxAUaF0aHEDPsOPvhgFn0w6bNDjo+HGL9R20vtLwoyrmjatOlGXAHZQfx+muTHwYfZ - 9x/f2I3yLuBnAkw7+CD3uk7felud8/Sll+yyBHjFCOADztwI8HgtJXmG3utTyWQq/ebRIgAziEkkICYw - JUiLC4gHUGCkX4m6jWACNhFGYLVDHr/Xp5YiyNAkQ4/zzjtvE5Enkz62IbKdDM5Y1o53McsHfG5o5Mkn - egJwZjAuYJqKQ1+XNWAZpHTfUSc937aNdwFpCsCwi+EXFmjHx68RKPjoVyXV+H1895tqSPxbkaxvlMS/ - E7V39TNsPM//M7mAJAJwemiaAjzVqJFbr5k95hKoJ6BmwaaQi0sCcwmoAIE36Xm54037779/jyjwAxsw - 2mEPXAEFI1WQm5o1a05UvdlmcgO29j7u7+Pgw+xR2kh6ZESAqUcc5gMiOoeiDjrF9vRdJ2WZJ7eAlM63 - XLuGaEjtLkMAqUASARboel+4tLnjYEnA557I8zNzSe1CriQgOCQmCJUAtWXMr808NqvYc2Ik/WACNiVO - +uTKGnMFHE/e7PDDD1+ifYW8LyIOwPJhqG2NDmvN8gGfGxqrDaJGKhk0RQck/HPlCg8+aVDba58OosOY - 0HlX4+QXtHdgRgJEOYBfRAGMABo6LlLegBhgUaMj3PopDxcdOmkLTJiyhgR2lgCE574pMM3kDsIRAv3L - dC+VvlrHyWrfZmpggXveYdIfJwfZJSLNhr///e+vO/nkk99hQSmzgwxPIACWnwQ+0W6+DkaYcNTh7p8C - F6ABnkZnYBl0kC3nslm9jTqd44WTT9VZPQkKEBAAid6ZLmB5QIDF9Q5yr+owiM/ef8/XEXDtdtAk09WM - +Zm6LgkJbMNqht5Ua8vvv0Pfg0GExTZl/HK1fnudjQo4kvSYffbZ507NFXzFhZEhtPV5ccsHfIY8U25p - 79YtfcHX2wM8FmDgY/3IJB1lFT62pMtv4jB1invp3PO9C0B6lwmAFb8wAZbVPdC9dksH9/mGt4pOHOOa - UTYIwHif2AYSoALcG/do8UAuSoAbINimzFux11eKwe6k79XAgJnbHS79cZJYggjfc4oKD/MUkHzPblQE - KCgAfstk38Cn2OHltWu2Ap9OMPCxEDqKDqP0ig4kerbiTn+sy/Ll7o2OndyKBg13GgHW+eRQlAhSwLm6 - 4ZFuY7/+7iuVpdlh03bgBNPSBLWQAKJzD9wLpDZXECeBGUPcHTAqwO8zG6stfL7XIk+yfadEsdh2TfgU - VwnwOWw2QMXpOUoVT7rooot+ohyJGUBbqxeCz7jX9uLH8kO/b9Jv1k+HYTl0IB0JCezYF0q8aHT8vxRn - bOjS1b165HEeoB3lAiDAqwc0dBtatnYfPzrHzzCGJ41a1RB1iiwu5XohASrAPXAvSSSwoNCC4DAmQDFx - qxR5qDzvJ6V6J9HXUZ/T9zvN76eRA9+ztxobDzTTBc4QS//DfAEksJO8sHwSHmzWYIc+G/jm90Ppx/rp - MCyHDqQj6VA61go+bKUP5VsA4df2vfa6+2Tyw+4DEWLjWedt8zBwfd1D3NvnXug+6tnbfTFvvvshWlls - 9QJ2yhj1B0YAro/rTFIBcwVJ8UA4MrCVRwyrAV+jrf8o4p9BH0d9TZ/vVL+fRgBcgQWFbD9ysYaHj2g1 - 6k+MUyEBbgACGPhIXBj0ZZL+0PrpUKyLDibAotPtXGBb80c1D43iTppf9Llxg/tOAeYXY8e5z/oPdJ92 - vM23z2LtC/3vq/zxvm2a+6T7ft1rfr0AnxEvF+P7cEVWLcR1QACuC5VKUwFzBWE8EAaFliRCKbF8Vmah - qgL/EfpWjT4mAKfPd7rfz0QCEhBc2MFql6iWcKqClR+JCQhe8GMQIAl8k358I5YRSn+S9dPBdLZV/RAc - AgbWiEuw5V9GADsePlwK5rcHy/Cw9xj4kMqsnu8ICWA1g3EVgASQ1s4ZTHMF8aCQfiLPj4pecMEFP9ao - UYOVPRR40Lf0MX29y4BvpOCCWFzKHgMHIVUKDB/UGsNNLFBg0siOSiPit6AP8DNJv/n+uPVDAKyOsi+s - ME4AcwmmBgakAZuGfRx4SGTg85mQywgA4axcjOtIU4FsriDMDwA+AR/Rvub2N5UvX57SLmSfPqVv6eNd - DvyQBKYEB+jJ88uUKTNceYIvWaNGFRHuAPkP/b5F/XHrB/y47w+tnw7H+owAFhSGMcHOIADfn4sKhAFh - 6Aps1TGyzwiKkm4Zzpf0HX2oRl/uspYfdwuwExLso8Z69LOUJ+ijDQre00bUvmqV0YGd7xuCHw/8crH+ - UP53JAHSVMDiAK4jVxWI5wZwAYyUmNxhZu+44457jz6j76I+pC93SdmPgx8qAUEK9egUJp6yxx57dDzk - kENWKZr1gQ3RrR3qGB/zW+CHxSCfRNT4U6w/DP7i8m8ECOU/VIBcYoEkF5CLGwiDwUyxQJgbINbBBZI2 - p5pX1VauYcOGq+gr+izqO/pwlwr40kBPUgIunLEqtenHqbXQMHGO0pjfUVtI1pBxru3mYWN+LCST9YfB - Xy7yX5xgMCSJRf65EsBUwAgQHxFYQMj9AT7DYZN81Vt+p2BvDn0U9RV9Rt/9V4IfkoFEBdmq8mqHqV0i - eRusNetvX3HFFX4LGiY4CArplGzWHwZ/ucr/9iZAPBhMcgNJKoCSQWwIT2EMC220BJ/9e96mT+ibqI/o - K/rsF0/y5Grt2V5ncwdEsSSMqFxpq7HtE1q/9g0zWxSZ4gdtQ0eGTmHkHw/+0uQ/KQDcFgKE43+GgbS0 - 0UBSMGgqAPi2JT3KR1AsJfxG5fZP0BdRn9A39NEvktvPBuK2/t8SRkxbVlGjcrX5n/70p77ye2uVONpM - nSGJI6TRjnwPfX987B8O/0L/n20ImCkfEHcBIQGyDQeNABYM2uYS+H0UjuFdVMSxWdPoa7l3+iDqC/qE - vvmvl/xMRIEEyBqFC1SvwPiT1a7TDqXjmjRp8oGKG32RI53FSME2eIwHf7nIf9oQsCQEyBQHQD5bSh7G - ASgYQR4BL4GvDuNwWm39QYUKFSZwz9G90wf0BX1C3+yyY/xtVYDw/aYGBDnsXMGc9rlq7RQIzVYnfcRo - wSaVyB4SG+AGLABMsv64/Bc3B2Crg3IZCSS5AdtLAPdlFs8MHsArF/IR98Y9RvfKPXPvv4pAr6TkgPH4 - O3Ykqa6GW2imAscOGi0UnHDCCe9p21q/1TljZDvwEbdgCz+xvEzjf/P/thwsl3RwNgLE4wCCQBSKIJbq - HVZKUxuhrfaw+Pc0N1LAPXFv0T1yr9wz9/6rCfRKSgLUgBp2ol5WILGkiXVtdFZ7pZPHa+fSdWefffa3 - 2vDYz4kzdGL4SOIIVbD9fzIFgNuLALZ0HNIRkzB0ZZaT2IVZO8rltTjzW41y1smtjeceonvhnrg37pF7 - 5Z7/V8h9rsQwt2BEIIHE8mbmvq/fa6+9+tWrV2++VOEdFZ78REczWUJETekZkmt1hBAivhq4JAQI9wsA - cNwPMQmzl2QzKc+CkCyaZcZO1v6O1kzM51q55ujauQfuxYD/VQd5uYKd6XUhEch/kxBpoHaSGuPkdhoz - D1FHP6OgcT2l6cQL7IhB8IirYCaNiSeCSIaVEIMpZJs6ts2ibOo4Prdv5VwoDMRieGp1+FRAk67Fr/Pd - XAPXwjVxbdE1cq1cM9fOPUDq3cAXkx3mGvCTpEOpfaPyiKVPpEkZPrVmKCWpnaCVMYtkgRu0M8bnssbv - STKhEnb6CWXUbHJFvoESdlbVsJaBxu88x/oG5ip4LcM1xup8BilaxSLfyw19rvV3Gxo0aLCISD4axrWO - roVr4tq4Rq6Va+bad0t9MYFPenmoCkyMED3T0UTSTdRwE5dDCLXOKpgcyhw6cnzYYYctPeaYY16lclnp - 1o/knz+/8MILv1GA9mPYeI7/8Rpey3u0xdpSPoPP4jP57Og7+C6+k+/mGrgWrolr223t2wHwTB8RkmFv - vZC9jVkPV0cN2T1ajdwCAOEyrlLDH9+odpMaEy0AebvaHVHjd57jf7yG1/Ie3stn8Fl8Jp/Nd/BdfCff - vbfabtDVCb/Ew9wERRKAQCYNn4sEV1Ej+CLRQhkVx6Uh0RycyHCTqJyyahq/8xz/4zW8lvfwXj6Dz+Iz - +Wy+g+/iO3fLuzphV3pAiJAUHI4EWCRb8Ml7qyHTAEkj706zv/kfr+G1vIf38hkh2LuHbrsS4ruvZdt6 - 4P8D1FQWc8pO1OcAAAAASUVORK5CYII= - - - - - AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAcAAAAUAAAAIwAAAC0AAAAwAAAAMAAAADAAAAAwAAAALQAAACMAAAAUAAAABwAA - AAEAAAAAAAAAAAAAAAwAAAAuAAAAVwAAAHYAAACJAAAAjwAAAI8AAACPAAAAjwAAAIkAAAB2AAAAVgAA - AC0AAAALAAAAAAAAAABDBQAvgQcCrKMJBefGQwD/y3EA/9B/AP/bjgD/954A//+iLP/QgkHuejsn1BMB - AKUAAABpAAAAIAAAAAAAAAAAwQoG5cwdAP/CWQD/wmEA/79sAP+/eAD/yoUA/9mVAP//vhX//9Ri///t - u//gqGvyAAAAiAAAACwAAAAAAAAAAMUJCf/44OD//IgT/8JjAP+8cAD/wXsA/86JAP/bmAD//85M///r - qf//8cH//89S/wAAAHcAAAAkAAAAAAAAAADFEATD//Xr///MlP//lgL/9acA/92eAP/bmwD/2pgA///P - Wf//5Jb//+F9//B1CfIAAABOAAAAEAAAAAAAAAAAvgkJQuWKgP///fj//9dw///LK//1vQD/46gA/9iU - AP//3p7//9GH/9ZqAP9UBASUAAAAJwAAAAMAAAAAAAAAAAAAAADGHh7D+vHx///jmP//yiX/8rsA/+Gm - AP/onwD//9uc///Lh//ATCzfAAAAQgAAAA8AAAAAAAAAAAAAAAAAAAAAvgkJQt14eO/69uz0vat0z+zL - VtP5zFPQ68qG0fTkv+y/fnnbZBwchQAAAB8AAAADAAAAAAAAAAAAAAAAAAAAAAAAAADDERG6+e3r+Kie - ib+UhWS8o49hru/FZs3ovn7bszojzQAAADoAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvgkJQuF5 - a+/u37HgxKI82L+SBc7/vwnV3GMA6TsDA2sAAAAiAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADHMAC0///////////awnHpgmUAvaosAMYAAABGAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACwhoAuf//////////7OK79X1gAMWRLAC8AAAATwAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAB7cJCc3//////////+/kvfJ8YADGhykAyQAAAGkAAAAiAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP/EFDfSZADl+4oA/8BgAP/AYAD/vWIA9KtRANwAAABZAAAAHgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD/ngNCzWwA5/OFErzvoT+c9KQ8me9+AMy8dADkAAAAHgAAAAoAAAAAAAAAAAAA - AAAAAAAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAMADAADAAwAA4AcAAOAHAADwDwAA4A8AAOAP - AADgDwAA4A8AAA== - - - - - AAABAAEAGBgAAAEAIACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAACAAAABQAAAAgAAAAKQAAAC4AAAAwAAAAMAAAADAAAAAwAAAAMAAA - AC4AAAAnAAAAHQAAABIAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAoAAAAiAAAAPQAA - AFgAAABwAAAAggAAAIwAAACPAAAAjwAAAI8AAACPAAAAjwAAAIsAAAB9AAAAagAAAFQAAAA6AAAAHwAA - AAkAAAABAAAAAAAAAAAAAAAAAAAACwAAADQyAwB+cwgAwZoJA+K2JgD1yF0A/89tAP/PfAD/3JEA/+ae - AP/tjgD//38D/95xFPOoSBnkXgYAyyUDAK0AAACOAAAAZQAAADAAAAAKAAAAAAAAAAAAAAAARQUALq4K - AtrGCgb/zBQA/8VJAP/AYAD/xGcA/7xvAP+9dgD/w30A/8qGAP/alQD/9q0A///AHf//0Vv//+Wt//us - fv+dSz3lEwEAqgAAAGgAAAAfAAAAAAAAAAAAAAAAwhoA2MUJCf/KLAD/wV0A/8BgAP/CYQD/w2kA/7tw - AP+/eAD/xYAA/82JAP/YkwD/25sA/+CjAP/ztAD//9t6///nnf//+/L/zGgZ7gAAAIkAAAAtAAAAAAAA - AAAAAAAAxQkJ/8woKP/607X//JIn/8BgAP/DYwD/wGsA/7pyAP/AegD/xoIA/9CMAP/alQD/3JwA///G - Kf//3nX//+eZ///ebv//1lP//8Yx/wAAAIYAAAArAAAAAAAAAAAAAAAAwwkJ8emQfP///////syd/8Bg - AP/EZgD/vW0A/7x0AP/CfAD/yYQA/9OOAP/bmAD/3Z8A///IKv//77v//9RG////////7rr//7I6/wAA - AGgAAAAcAAAAAAAAAAAAAAAAvwkJg+doLv///////////9RrAP/thwD/7pkA/+2kAP/enwD/3J0A/9ub - AP/bmQD/2pkA///TXf//55n//+SJ///gev//yyr/sTsC1QAAAD8AAAAKAAAAAAAAAAAAAAAAvAkJEcoU - APH+17H////////quf//1Gr//89E///JG//3vwD/67IA/+GlAP/cmgD/0o0A///fnv/5mQD//+TE//uw - AP/8gAD/NQMDdQAAABwAAAABAAAAAAAAAAAAAAAAAAAAAL8JCYPznX/////////67///1Gf//85A///I - GP/1vgD/6rEA/+CjAP/bmQD/0IwA///y1///tDf//6M7/8NaAP+NGgLCAAAANwAAAAcAAAAAAAAAAAAA - AAAAAAAAAAAAALwJCRHOKBzx//nu////////3H7//808///IE//zvAD/6a8A/9+iAP/bmAD//7os///F - Xf//26L/6YEA/9hQIvghAgJgAAAAGQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/CQmD1oGB0f// - ////7sL7/9FD8f/PLvr/yA7//8EF//+9Ev//thb//9R7+v7IZfLgxp/lxopx2ZgzM7EAAAAsAAAABgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8CQkRxRgY3+jo6Nn5+fn7jo6OyZOTk7GoqKibsLCvlLGx - rpStrKmX9tuk3ODXxtyjlpC8xFVQ4wAAAEYAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAvwkJg85bWdH/////u7q02pCKfLqmnoqitKiPl7aoi5bIsYCn6cd+zdvGmdHLbU3cew8OnQAA - ACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAkJEcUQDujs2czg6ubd75h9 - QMOpiD6xs443qrmQLKj9xEDL9MhZzNaNEMDDKA3lAAAAQwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCYPbWCXT/////7yRCc/HnxnQxZ0T0oFkAMPhqQDJyJkArspW - AOlbBASKAAAAKAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwJ - CRHHDwf39uvC6+/lvfL//////////9zDcuiHaAC2uHEAxbIPBNkAAABSAAAAGwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBCQnk9+zE6vjy3/j//////////9zD - cuiHaAC2tXYAvpAHB64AAABFAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAC8CQnI+O3E6f///////////////93EcueHaAC2sHcAuJMHB6sAAAA4AAAADwAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7CQnJ78+Q4P// - /////////////93EcueBZAC+p3EAwlkEBI0AAAA+AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy1CQnQ5KZ+7v/////z6s329/He+d7Fc+Z7XwDHmmgA0kkD - A6wAAABiAAAAIgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJt4 - ADTJSADq1HYA+8FhAP/AYAD/wGAA/8BgAP/AYAD/uWIA9IM4ANUAAAB8AAAANAAAAAcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPytAMPMeQD/024A6dx0AdPgdwDP4ncAzeF4 - AMzXbwDax20A9MBuAP9hNQCBAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAALpdAFLHYwDJ8oEOxOmUPqznp2aa6adlmOqoZJjyiBm73YAAwrV0AKxWOQAnAAAACQAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAA8AgAADAIAAAwCAAAMAgAADAIAAAwCAAAMAgAADAIAA - AwDAAAcAwAAHAOAADwDgAB8A8AAfAPAAPwD4AD8A+AB/APwAfwD8AH8A+AB/APgAPwD4AD8A+AA/APgA - PwA= - - - - - AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAADgAAABkAAAAiAAAAKgAAAC4AAAAwAAAAMAAA - ADAAAAAwAAAAMAAAADAAAAAwAAAALgAAACgAAAAgAAAAFwAAAAwAAAADAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAATAAAAJQAAADgAAABMAAAAYQAAAHQAAACDAAAAjAAA - AI8AAACPAAAAjwAAAI8AAACPAAAAjwAAAI8AAACLAAAAfwAAAHAAAABeAAAASAAAADIAAAAfAAAADgAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAALAAAAKQAAAFMZAgCBWQYAs3sJAM6iHADptCMA9chE - AP/JVwD/zmMA/9RuAP/XdAD/23oA/+B9AP/oewD/41QA/8pHBfOfGQPodggA10MFAL0AAACbAAAAiwAA - AG4AAABIAAAAIQAAAAcAAAAAAAAAAAAAAAAAAAAAAAAACgAAADRyCACmrwsA7ccLA//GCgb/yiwA/8VJ - AP/EZgD/x3EA/8R3AP/DfAD/x4MA/8yJAP/RkAD/4KAA//izAP//uQv//8g7///Ua///0n3//7Vq/+xv - Q/+gKBjqQQUAwwAAAJQAAABjAAAAKAAAAAcAAAAAAAAAAAAAAABHBQAttgsC48YKBv/FCQn/zB0A/8RR - AP/AYAD/wGAA/8RjAP/DaQD/u28A/7t0AP+/eQD/xH4A/8mEAP/QiwD/2JIA/9yZAP/cnQD/4KMA//++ - Bv//3IX//+m8///w0P/0sZf/kyoi5QAAAKAAAABeAAAAGQAAAAAAAAAAAAAAALwLA8rFCQn/xQkJ/8ky - AP/AYAD/wGAA/8BgAP/AYAD/xWYA/8FrAP+6bwD/vHUA/8F6AP/FgAD/yoYA/9ONAP/alAD/25kA/92f - AP/hpQD/5qwA///MN///11v//9xo///57f//7c//lToA4QAAAIUAAAArAAAAAAAAAAAAAAAAxQkJ/8UJ - Cf/TKQv//rBi//ymT//AYAD/wGAA/8JhAP/EZwD/v20A/7pxAP++dwD/wnwA/8aCAP/NiQD/1ZAA/9uW - AP/cmwD/3qEA///MPf//01H//993///ZV///yQ7//9I7///RQ///vyz/AAAAjgAAAC8AAAAAAAAAAAAA - AADFCQn/xQkJ//e4kv///////+vX/8BgAP/AYAD/w2IA/8NpAP+9bgD/u3MA/794AP/DfgD/yIMA/8+K - AP/WkQD/3JgA/9ucAP/fowD//9Zg///ml///xAH///fd////////66j//886///OQf8AAAB9AAAAJwAA - AAAAAAAAAAAAAMEJCcPMHQD//tex/////////////JIn/8BgAP/FZAD/wWoA/7twAP+8dAD/wHoA/8R/ - AP/KhQD/0YwA/9mTAP/cmgD/3J4A/+GkAP//yiz///////C5AP//7Kv///zw///XV///3HP//4EB+QAA - AFYAAAAUAAAAAAAAAAAAAAAAvgkJQswUAP/+sGL////////////+zJ3/wGEA/8VmAP/miQD/24sA/++m - AP/joQD/250A/9ydAP/bnAD/3JoA/9uZAP/bmwD/3J4A///jk///66r/8boA///87v//1kz//8oj//++ - Kv96GgSrAAAAKwAAAAQAAAAAAAAAAAAAAAAAAAAAwgkJwsVJAP//69f/////////////y27//9Zx///S - Wf//zTz//8kf///GBP/xugD/67IA/+OoAP/dnwD/3JkA/9WQAP/KhQD///jr//+zKf//w0L//+2+///J - FP//yyn/0UcA7AAAAEwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAC9CQkhzBQA//+7eP/////////////s - v///1W///9JX///NOv//yRz//8UB//C6AP/qsQD/46cA/92eAP/bmAD/1I8A//+xGf//8Nf/vXUA///n - wv//jhT/130A//uEAP9UBASVAAAAJQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADACQmj731T///9 - 9f////////rv///Vbf//0VP//8w3///IGf/+xQD/8LkA/+mwAP/ipgD/3J0A/9yXAP/TjQD//9F5///M - dP//pA7//9yw/8RmAP/CXQD/qg0D4wAAAEIAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL0J - CSHKGBL//+Ky/////////////+CX///RUf//zTT//8kW//rCAP/wuAD/6a8A/+GlAP/cnQD/25YA/9KM - AP//6b//6ZMA///Zm//mhAD/3HEA/95PIf83AwNzAAAAHQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAMAJCaPTYFPb8vDq8P//////8tH//9BN///MMP//yRP/+MEA/++3AP/orgD/4aUA/9yc - AP/alQD/+qgA///jrf//qxj/+d2z9uWjSuHUjGnhoUBAvwAAADQAAAAIAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAvQkJIcYPD/fIqanC///////////DtIzfyrZ2z//TQdH/0znN/9A1zv/L - Mc7/xy3O+shLzvLCWs7/2YXp3caY2OPax+Krqqm1oZaWrsxRUfEjAgJYAAAAFwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwQkJo8M2NtLn5+fl/////8jIyOSHh4fBnp6epa6u - rpWwsLCUsLCvlLGvrpSxr66Ur62rlvjboNysp5q44NnG256ak6fIcGnghQ8PqAAAACwAAAAFAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8CQkRwwkJ8b+cmbP/////8/Pz+IWD - fMaXk4qwraibmbSun5S1rpuUtqyYlLeslJS9rouf/daE3dTEoMq2poK0uIRkwcMoIe4AAABGAAAAEAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/CQmDxiwm2ePf - 1+D/////t66b15eFYrqwm22gwKdwlMKna5TEpmWUxaZflOq/XrrSqlC2782G0rmLOa7aSiL1WwQEigAA - ACQAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwJ - CRHDCQnxzH1UwPv59fvl3cntoHwowrKKJLDBkx2lw5MTpciVCaTQmwCf/8g4zu65JbfiqgCt0GkA264P - CN0AAAA/AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAL8JCYPNJAXh6dKE1/////+9kgLQgmQAx4FjAMV9YQDHfmEAxIhpALT8uwDDo34Al6p2 - ALPSIwD/NgMDdAAAAB8AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAvAkJEcMJCfLLXwDO/////+vbq/D////////////////t4rv0gWMAv5l2 - AKGmgACUzEkA7o8HB8UAAABFAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvQkJx7lIAND//////////////////////////+3i - u/SBYwC/mXYAoaaAAJTSIwD/QgMDjgAAADQAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+CQnGvEkAzf/////38d75//////// - ////////7eK79IFjAL+ZdgChpoAAlNIjAP8AAABtAAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALQJCYu9SgDM/////+/k - vfL////////////////t4rv0gWMAv5l2AKGmgACUziYA+QAAAGIAAAAoAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAkJi8BB - ANP/////8OW+8f///////////////+3iu/SCZAC9mncAoKaAAJTJRQDmAAAAVQAAACEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACzCQmMxicA5vLnv+/v5b3y////////////////7eK79H9iAMKObgCtlnQApLJIAM0AAABaAAAAIwAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAACqQICJnCJgDq8OW+8erbq/Du47zz+9qz/P7Xsf/jzobpel4AyntfAMd9YQDEnEMA1gAA - AIEAAABGAAAAEgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAfoUIAvcg+APu0bgD1wGAA/8BgAP/AYAD/wGAA/8BgAP/AYAD/wGAA/7Ji - APGyUwDwIhEAsgAAAH4AAAAxAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/GCtbgoAD/y3oA/7BfAPHAYQD/rVcA5ataAMSuXQDAq1cA0cBg - AP+6XQD2u2AA975oAP/AYgD/KhUAkgAAADcAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1nYA/8BgAP/WfSDJwI1Os6+edp+1oXebu6V4lsGp - eJPDqnSSv6ZvlcGbW6DWiyi7xnsA88V/AP9vRgB2AAAAGwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5XQBCul0ApM5nALXzegHN7oUdve2M - K7Tmp2aa6alnme2XP6rwhh278YEOxdZ4AL2ybwC6qG0AcgAAABEAAAAEAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA+AAAf+AAAA+AAAAHgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA8AA - AAfAAAAH4AAAD+AAAA/wAAAf8AAAH/gAAD/4AAB//AAAf/wAAP/+AAD//gAB//8AAf//AAP//wAD//8A - A///AAH//gAA//4AAP/+AAD//gAA//4AAf8= - - - - - AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAADwAA - ABgAAAAfAAAAJQAAACsAAAAvAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAALgAA - ACgAAAAjAAAAHgAAABYAAAANAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAATAAAAIAAA - AC4AAAA8AAAATgAAAGAAAABuAAAAegAAAIYAAACOAAAAjwAAAI8AAACPAAAAjwAAAI8AAACPAAAAjwAA - AI8AAACPAAAAiwAAAIAAAAB2AAAAawAAAF0AAABJAAAANgAAACgAAAAbAAAADgAAAAQAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAOAAAAIgAA - ADsAAABVAAAAcCoDAJVXBgC2ewgAz5kLAOSiCwDrvg0A+scOAP/HDgD/xS0A/8Q3AP/FOAD/xjkA/8c7 - AP/HPAD/xykA/8cOAP/HDgD/qgwA86ELAO2MCgDidwgA1kMFALwUAQCiAAAAjwAAAH0AAABlAAAASwAA - ADEAAAAaAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACgAA - ACUAAABJMQMAgmcHALmaCwDivg0A+sgMAP/IGgD/yR4A/8VXAP/FYwD/yXoA/8t+AP/SigD/05AA/9WV - AP/ZmwD/3qEA/+y0AP/xugD/+cEA///HDf//ySD//8ov//+uKv//rDD//n0d//FgEP/aNhL/qgwA84AJ - AN9RBgDFAAAAnAAAAIYAAABjAAAAOwAAABkAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAANAAAANVcGAJKdCwDfyAwA/8cLA//GCgb/xQkJ/8sjAP/FTgD/wGAA/8BhAP/FZAD/w2kA/8Bs - AP+6bwD/unIA/712AP/AegD/w30A/8aBAP/KhQD/z4oA/9eSAP/spQD/86sA//+8Fv//xDL//9Jh///a - g///3ZL//+Ge//+3c//rcEb/yCoV+38JAOAjAgCzAAAAiQAAAFgAAAAlAAAABwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAkzAwA/rAwA3ckUAP/GCgb/xQkJ/8UJCf/LIwD/w1YA/8BgAP/AYAD/wGAA/8Jh - AP/FZgD/w2kA/75tAP+6cAD/u3MA/753AP/BegD/xH4A/8aCAP/LhgD/0IsA/9WQAP/ZlAD/3ZgA/9ua - AP/dngD/4KMA//e1AP//yTT//92O///msf//6r7//+7L//evi//OSTj7aAcA1gAAAJwAAABiAAAAIgAA - AAQAAAAAAAAAAAAAAAAAAAAAAAAAAEwFACq3CwDiyhAC/8UJCf/FCQn/xQkJ/8dEAP/AYAD/wGAA/8Bg - AP/AYAD/wGAA/8NiAP/FZwD/wmsA/7xuAP+5cQD/vHUA/794AP/CfAD/xH8A/8eDAP/MiAD/0YwA/9aR - AP/alQD/3ZkA/9ucAP/doAD/4KQA/+OoAP/nrQD//9NY///ouP//7MX//91w///13v//+ez/6JWL/48a - EeUAAACXAAAATgAAABEAAAAAAAAAAAAAAAAAAAAAAAAAALULALDFCgj/xQkJ/8UJCf/FCQn/xUkA/8Bg - AP/AYAD/wGAA/8BgAP/AYAD/wGAA/8RjAP/FaAD/wGwA/7tvAP+6cgD/vXYA/8B5AP/CfQD/xYAA/8iE - AP/NiQD/040A/9iSAP/clwD/25oA/9udAP/eoQD/4aUA/+SqAP/orgD//8UR///VVv//1U///84h///0 - 1v//+/L////+//+7NP9OBQDKAAAAdgAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAMYLBf/FCQn/xQkJ/8UJ - Cf/FSQD/6HQA//ySJ//AYAD/wGAA/8BgAP/AYAD/wmEA/8VkAP/EaQD/v20A/7pvAP+7cwD/vncA/8B6 - AP/DfgD/xoEA/8qFAP/PigD/044A/9mTAP/cmAD/25sA/9yeAP/xrwD//8s8///OPv//z0H//8oh//C5 - AP/xuwD/+cEA///JFv//33j//9po///MMP/ngwDzAAAAiwAAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAMUJ - Cf/FCQn/xQkJ/8kyAP/+uHX////////16//UagD/wGAA/8BgAP/AYAD/wmIA/8ZmAP/CagD/vm4A/7pw - AP+8dAD/vngA/8F7AP/EfwD/x4IA/8uGAP/QiwD/1ZAA/9qUAP/dmQD/25sA/92fAP/gowD/9LUA///B - C//7vgD//993///33f//7Kz//9pf///KG///yRj//8om///NNP//xzr/AAAAjwAAADAAAAAAAAAAAAAA - AAAAAAAAAAAAAMUJCf/FCQn/xQkJ//WSRP/////////////////8nDv/wGAA/8BgAP/AYAD/xGMA/8Ro - AP/BawD/u28A/7pxAP+8dQD/v3kA/8J8AP/FgAD/yIQA/82JAP/SjQD/15IA/9uWAP/cmgD/25wA/96g - AP/hpQD//8AI////////1VT/7rcA///VRv//////////////////6Jz//884///MOf//z0X/AAAAgwAA - ACoAAAAAAAAAAAAAAAAAAAAAAAAAAMEJCcPFCQn/zB0A//6wYv/////////////////+4cX/wGAA/8Bg - AP/AYQD/xWQA/8RpAP/AbAD/u3AA/7pyAP+9dgD/wHoA/8N9AP/GgQD/yoUA/86KAP/TjgD/2JMA/9yX - AP/cmgD/3J0A/9+hAP/ipgD/5aoA////////+u7/77gA//G7AP/////////////11P//3nT//+ux///N - PP//rir/AAAAYAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAL4JCULFCQn/yTIA//ymT/////////////// - ////////+34A/8BgAP/CYQD/xWYA/8NpAP++bQD/unAA/7tzAP++dwD/wXoA/8R+AP/GggD/y4YA/9CL - AP/VkAD/2ZQA/92YAP/bmgD/3Z4A/+CjAP/ipwD//8EK////////66r/8LkA///HA/////////jh///M - Jf//yiT//9A////IOP+WLAXDAAAANwAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCCQnCyyMA/9Rq - AP//9ev//////////////////sKJ/8BgAP/DYgD/xWcA/8JqAP+9bgD/2osA/9eMAP/ZkgD/46EA/9yd - AP/bngD/3J0A/9ycAP/cmwD/3JoA/9yaAP/bmwD/25sA/9+iAP/jqAD//+GE////////00X/8boA///d - aP///////9I7///IGv//yyj//8w3//hyAfkfAQFlAAAAFwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAC9CQkhxQkJ/8RRAP/+sGL///////////////////Xr//+NBv//pCH//79F///OVv//0E7//807///L - KP//yRT//8YD//O9AP/vuAD/67IA/+asAP/hpQD/3Z8A/9ybAP/blgD/1ZAA/86KAP/IgwD//+3G///4 - 6//cngD/6rEA///43f//6qL//8gQ///JHv//yyz//64e/3kGBrYAAAAuAAAABQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAwAkJo8sjAP/UagD///Xr///////////////////ptP//2Hz//9Vu///S - Xv//0Ez//805///KJf//yBP//8UC//K8AP/vuAD/6rEA/+WrAP/hpQD/3Z8A/9yaAP/blQD/1ZAA/82J - AP/unQD////////Lc/+8dAD//6Yg////////sw///8kU///KIv//zDD/zzcE8gAAAE4AAAAQAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvQkJIcUJCf/FTgD//8mG///////////////////3 - 6P//2Hv//9Vs///TXf//z0r//8w3///KJP//yBH//8UA//K8AP/vtwD/6rEA/+WqAP/hpAD/3Z4A/9ya - AP/alQD/044A/82JAP//wlH///////udAP+7cwD//9+t///Iif/FZAD/zG8A//+9E///fwD/VAQElgAA - ACYAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAJCaPPJh7//+i5///9 - 9f//////////////////3Ir//9Vr///RW///z0j//8w2///KIv//yA///cQA//G7AP/utgD/6bAA/+Sq - AP/gowD/3J4A/9yaAP/ZlAD/044A/82IAP//3Z7//+nD/794AP/jjQD//////+p/AP/FZAD/wGAA/9Bo - AP+lCAjkAAAARgAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL0J - CSHFCQn/+Zll///uzP//////////////////7sL//9Rq///SWf//z0f//80z///JIP//yA3/+sIA//G7 - AP/utgD/6bAA/+SpAP/gowD/3J0A/92ZAP/ZkwD/040A/8uHAP///////7Y5/753AP//0Yb//8yI/8Np - AP/EYwD/wGAA/8sjAP9HAwOFAAAAIAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAADACQmjzycb///kqv//+e7//////////////Pb//9Ro///SV///z0T//8wx///J - Hv//xwz/+MEA//G6AP/ttQD/6K8A/+OpAP/fogD/250A/9yZAP/ZkwD/0o0A//+4Kv///vv/1YcA/9KD - AP//9+v/5YUA/8NpAP/EYwD/3VAA/5kWFtEAAAA6AAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9CQkhxQkJ/9pzWej/6Lb3/////////////////+Se///R - Vf//zkL//8wv///JHP//xwr/98AA//G6AP/ttQD/6K4A/+OoAP/fogD/25wA/92YAP/YkgD/0YwA///V - gP//0n//wXsA//+7S///1ZX/9o4A//6UG/rklFDs019a9yACAmMAAAAZAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAkJo8UPD/iYiIi16enp7f// - //////////TY///UYf//zkD//8wt///IGv//xgj/9sAA//C6AP/stAD/564A/+OnAP/foQD/3JsA/9yY - AP/YkgD/7qAA///pvP//vUT//64h///y2v/esm/fyqVzwaKioqDMdnblkSEhtQAAADIAAAAHAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvQkJIcMJ - CfG5RUXOsrKyyf///////////////5yYj9q+rn/L7cxlxP/US83/1ELN/9M72v/SPOf/0Djn/8015//K - Muf/xjDn/8Q24fLEWs/xwVvO98hs3f/tw/W0oHm/w8K9xOLg2OGdnZ2mqKiom7aJicLEPj7uIwICWgAA - ABUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAL8JCYPFDw/3mYmJtOPj4+n//////////8vLy+yFhYXEnZ2dpq6urpWwsLCUsLCwlLCw - sJSwsLCUsLCwlLCwsJSwsLCUsLCwlLCwsJSwsLCU4c+oyt/NpteZmZmq8urb6ayrp7WkpKKfqZ2bptRb - Wfp1BgahAAAAKQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAALwJCRHDCQnxuzw81KCgoML///////////j4+Px/f3/NkpKSsqmp - qZqwsLCUsLCwlLCwr5SwsK+UsLCvlLGvrpSxr66UsbCtlLGwrJSvrKiW/+Gm7q2lkrivqZ+06N/J36Ge - lKSoo5eexXFp26wWFt8AAABHAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/CQmDxQkJ/5x7e7rc3Nzl//////// - //+0srLjioiFvqOhnKGyrqiUsq+nlLKuppSzr6SUs66jlLStoZS1rp+Uta2dlLWtmpS6rZGg/92S6aGX - gKnt37retqmNsqyfgKC6h2290jIq/1kEBI0AAAAkAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8CQkRwwkJ8b00 - MNuhnpXC///////////k4+HzhoBxyJ6Wg6q0qZGXuKySlLisj5S5q4yUuquJlLuqh5S7qoSUvKmBlL2o - fpTqxnbC475xyLSeb6zu1aHYsZhioreSXajXUTX2oAgI1wAAAD8AAAALAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAvwkJg8UJCf+ieGC708y/3P//////////mo5y1JuIYba0nm6cwKZxlMGmbpTDpmmUw6VmlMSl - YZTGpV2Ux6NZlMajVJX/zmPVtZJDpuvIfczLplCuvpY3odNuKNbKFA7/NwMDcgAAABwAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAvAkJEcMJCfHBKB3hpYxZv/v59fv/////zsOp5pp9O8K3kkGly6JDlc6k - PpTQozmU0qMzlNOjLZTWoyaU2KMflNWhF5f/yknVzZgHoP/QXs7NmQCdy4QAt90yBP+EBga+AAAANgAA - AAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCYPFCQn/uF4cxNvJnN3/////9vLp+KN6 - CMm6iQKzyJUAo8SSAKK7jQCktIkApa+GAKSvhgCfsokAmfO2ALLdqACv1qQAptilAKSdegCezlkA8b4J - CfggAgJhAAAAFgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwJCRHECQnwySQC5rCH - AMD9+e/7/////9CuO9qBZADDhWcAu4FkAL99YADFe18Ax31gAMWFZwC5lnQApPO3ALijfgCXpX8AlaJ9 - AJi4bgDPzhYC/28FBaoAAAAtAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAC/CQlixQkJ/6hSANHcvE7X/////+3drO7r3Kzv7+W98v///////////////+zhu/XHnAvTj24ArKJ9 - AJimgACUpoAAlKl5AKnPLAD6tgkJ8QAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAxQkJ/8ImAOrUrCPO//////DlvvHv5L3y//////////////////////// - ///KoyHZjm0ArqJ9AJimgACUpoAAlMlYAOHFCQn/TAQEpAAAADYAAAADAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAkJyMMmAOrVrCPO//////DlvvHv5L3y//////// - ///////////////////KoyHZjm0ArqJ9AJimgACUpoAAlMJaANTFCQn/AAAAfQAAAC4AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAkJyMImAOrSqiLQ//////Dl - vvHv5L3y///////////////////////////KoyHZjm0ArqJ9AJimgACUpoAAlMBiAM7FCQn/AAAAcgAA - ACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAkJyMYW - AvXRqSLR//////DlvvHu5L3z///////////////////////////KoyHZjm0ArqJ9AJimgACUpoAAlMBi - AM2xCAjmAAAAaQAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAvQkJx8UJCf/UqyPP//////DlvvHu47z0///////////////////////////KoyHZjGwAr6F8 - AJmmgACUpoAAlMFiAMyrCAjbAAAAYwAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAugkJqcUJCf/ClQDD//////z47/zt4rv0//////////////////////// - ///IoiHbiWoAs597AJumgACUpoAAlLVmALitCAjZAAAAWQAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAkJi8UJCf+EZgC6///////////t4rv0//////// - ///////////////////XvF7kh2gAtp15AJymgACUpoAAlLZ7ALKnCAjOAAAATwAAABoAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAkJi8UJCf+DZQC8//////// - ///u47zz///////////////////////////fxnTkiGkAtZt4AJ+lfwCVpoAAlLd8ALGQBweuAAAASQAA - ABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQkJi8UJ - Cf+TXADL///////////v5L3y///////////////////////////hyHXigmQAvYxsALCTcQCnlnQApK52 - ALqNBwexAAAASAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAJqAgIlcUJCf+UVgDV7+W98vDlvvHdpTLl3psd5N6bHeTemx3k3psd5N6bHeTemx3kkGEA1n1h - AMV/YgDBgGMAv4pnAMGBBgbDAAAAZQAAADIAAAAOAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAoAAAAtfhwAn8UJCf+5ZwD2uGwA+cJhAP/AYAD/wGAA/8BgAP/AYAD/wGAA/8Bg - AP/AYAD/wGAA/8BgAP/AYAD/sWEA8qVgAOltHgDNAAAAlgAAAG8AAAA3AAAADQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1UACfHmADB4JwA/9eFAP/AfQD6nF8A55lPAN6iUQDjo1EA4qNS - AOGkUgDgpVMA3qVTAN6kUgDgo1IA4aNRAOKiUQDjuVwA+cBgAP/AYAD/plMA7zUbAKwAAABcAAAAGQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/HGbjpqwD1vngA9LJhAPWxWADywGAA/8Jj - APTGZwDoxWcA6MhsANvKcgDPynMAzsdqAODFaADnxWcA58JjAPPAYAD/uWAA7aliAOenYADsr1wA9ZVL - AOEAAABdAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM5yAKbAYAD/wGAA/81q - AOrDeCDMrpNWp7aZWaC4mVifuZpWn7ubVZ28m1OcvZtRnL6bT5y9nE6cvZpLnbyYSZ/Dkzyl2IUUvst6 - AOS/eAD/xYEA/4lXALwAAAA9AAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALtd - AGK/YADwwGAA/+R+Fse+nXqjrKihmqmnn5ynpJuep6OanqqnnJutqZ2araedmq2onJqtp5uarKWYm6mi - k56qopOex5dUrtSCAODAegD/w4AA85VkAG4AAAATAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAuV0AQrdcAIW4XAC3wmEAv+BwANDodADW7YQdvu6FHb3vhR2974Udve+F - Hb3vhR296XQA1t9wANHCYQDAtmQAuqdmAI+YYABRAAAADAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4AAAD/8AAP4AAAAB/wAA+AAAAAA/ - AADgAAAAAB8AAMAAAAAADwAAwAAAAAAHAADAAAAAAAcAAMAAAAAABwAAwAAAAAAHAADAAAAAAAcAAMAA - AAAABwAAwAAAAAAHAADAAAAAAAcAAOAAAAAABwAA4AAAAAAPAADwAAAAAB8AAPAAAAAAHwAA+AAAAAA/ - AAD4AAAAAD8AAPwAAAAAfwAA/AAAAAB/AAD+AAAAAP8AAP4AAAAA/wAA/wAAAAH/AAD/AAAAA/8AAP+A - AAAD/wAA/4AAAAf/AAD/wAAAB/8AAP/AAAAP/wAA/+AAAA//AAD/4AAAH/8AAP/wAAA//wAA//gAAD// - AAD/+AAAf/8AAP/4AAB//wAA//gAAH//AAD/+AAAf/8AAP/4AAB//wAA//gAAH//AAD/+AAAf/8AAP/4 - AAB//wAA/+AAAB//AAD/4AAAH/8AAP/gAAAf/wAA/+AAAB//AAD/4AAAH/8AAP/gAAAf/wAA//gAAH// - AAA= - - - - - AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAGAAAADQAAABYAAAAcAAAAIgAAACYAAAArAAAALwAAADAAAAAwAAAAMAAA - ADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAALgAAACgAAAAkAAAAHwAAABkAAAASAAAACgAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAMAAAAMAAAAGAAAACQAAAAwAAAAPAAAAEsAAABbAAAAaAAAAHMAAAB8AAAAhgAA - AI4AAACPAAAAjwAAAI8AAACPAAAAjwAAAI8AAACPAAAAjwAAAI8AAACPAAAAjwAAAIsAAACAAAAAdwAA - AG4AAABhAAAAVAAAAEUAAAA0AAAAJwAAAB0AAAASAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAGAAAAEgAAACEAAAAyAAAASAAAAGAAAAB3KQMAmUgFALB7CQDOhAkA2KML - AOqiCwDrvg0A+scOAP/HDgD/xw4A/8cOAP/HDgD/xw4A/8cOAP/HDgD/xw4A/8cOAP/HDgD/xw4A/8cO - AP+qDADzoQsA7ZcKAOd2CADXXwcAyUUFALkAAACaAAAAjgAAAH0AAABqAAAAVAAAAD0AAAArAAAAGgAA - AAsAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAoAAAAeAAAANwAAAFQAAABxTAUAqHwJAM2jCwDpxw4A/8cO - AP/HDgD/xSsA/8YxAP/GRgD/yVMA/8hfAP/McQD/znYA/855AP/TggD/2YsA/9qZAP/enQD/4pcA/+Sb - AP/mnwD/6qIA//WmAP/4pAD/9YgA//1/AP/1bwD/50UD/9s2AP/HDgD/xw4A/6oMAPOLCgDkXgYAyyUD - AK0AAACUAAAAgAAAAGQAAABFAAAAKgAAABMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACAAAAB0AAAA/HAIAc2gHALebCwDixw4A/8cO - AP/HDAL/xgsF/8oXAP/KJQD/xz4A/8RfAP/EcwD/x3cA/8p6AP/KfgD/y4EA/8uEAP/KhwD/zYoA/8+O - AP/SkgD/1ZUA/9iZAP/bnQD/4KMA//C0AP/7vAD//8EM///LKP//zDj//89H///RVv//02T//9Zv//+6 - T///mT//+Hw0/+BEHP/OGgb/tAwA94AJAN8zBAC5AAAAlwAAAH0AAABVAAAALQAAABAAAAADAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAADQAAADA1BAB3lQoA1ccO - AP/IDAD/xwsD/8UKCP/FCQn/xQkJ/8osAP/FTgD/wGAA/8BgAP/AYAD/w2IA/8ZmAP/DaQD/wGwA/7xu - AP+6cAD/u3MA/712AP+/eAD/wXsA/8N9AP/FgAD/x4MA/8uGAP/PigD/0o0A/9aRAP/ZlAD/3ZgA//ev - AP//ugv//8Ms///MTv//2X///9yK///elf//4Z7//+Oo//+3eP/rcUf/0ikV/7QMAPdbBgDQAAAAoAAA - AHwAAABJAAAAGwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACy8D - AEOSCgDDxw4A/8cLA//GCgb/xQkJ/8UJCf/FCQn/yyMA/8JZAP/AYAD/wGAA/8BgAP/AYAD/wGEA/8Rj - AP/FZwD/w2oA/79sAP+7bwD/uXEA/7tzAP+9dgD/v3kA/8F7AP/DfgD/xoEA/8iEAP/MiAD/0IsA/9OO - AP/YkgD/2pUA/9yYAP/cmgD/25wA/92fAP/fogD/4aYA///CGv//0Fb//+Gj///krf//57f//+vA///v - yv/4r4f/2Ug0/7QMAPdABADGAAAAkQAAAFUAAAAeAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABjcEADm0DADlyRQA/8kQBP/FCQn/xQkJ/8UJCf/JDwX/xU4A/8BgAP/AYAD/wGAA/8Bg - AP/AYAD/wGAA/8JhAP/FZAD/xWgA/8FqAP++bQD/um8A/7pxAP+8dAD/vncA/8B5AP/CfAD/xH8A/8aC - AP/KhQD/zYkA/9CMAP/VkAD/2JMA/9uWAP/dmQD/2poA/9ydAP/eoAD/4KMA/+KmAP/kqgD/564A///L - Mv//5bH//+m6///sxf//6rL///PY///24f/3v6v/zyoe/1oGANIAAACVAAAAVAAAABgAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABa4DQDgyhEB/8UJCf/FCQn/xQkJ/8UJCf/JDwX/w1YA/8Bg - AP/AYAD/wGAA/8BgAP/AYAD/wGAA/8BgAP/CYgD/xWYA/8RpAP/BawD/vW4A/7lvAP+6cgD/vHUA/754 - AP/AegD/w30A/8WAAP/HgwD/yoUA/86KAP/SjAD/1ZEA/9mTAP/cmAD/3ZoA/9ubAP/cngD/3qEA/+Gk - AP/jpwD/5asA/+iuAP//zkH//+e2///qv///7cn//9RH///jiP//+Ob///rw//3v6f/caV//WgYA0gAA - AIsAAAA9AAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACtDACTyhEB/8UJCf/FCQn/xQkJ/8UJ - Cf/JDwX/w1YA/8BgAP/AYAD/wGAA/8BgAP/AYAD/wGAA/8BgAP/AYAD/xGMA/8ZnAP/DaQD/v2wA/7xv - AP+5cAD/u3MA/712AP+/eAD/wXsA/8N+AP/FgQD/x4MA/8uGAP/PigD/040A/9aRAP/alAD/3ZkA/9ya - AP/bnAD/3Z8A/9+iAP/hpQD/46gA/+asAP/psAD/7LMA///JIf//zCX//8ob//W+AP//44z///nq///9 - 9P////7//996/+5lAP8jAgC1AAAAZQAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwgwC5cUJ - Cf/FCQn/xQkJ/8UJCf/JDwX/w1YA/8BgAP/AYAD/wGAA/8BgAP/AYAD/wGAA/8BgAP/AYAD/wmEA/8Rl - AP/FZwD/wmoA/79tAP+7bwD/uXEA/7t0AP++dwD/wHkA/8J8AP/EfgD/xoEA/8iEAP/NiAD/0IsA/9OO - AP/YkgD/2pUA/92YAP/bmgD/25wA/92gAP/xsAD//8s8///JLP/4ugD/6rAA/+y0AP/vtwD/8boA//G7 - AP/4wQD//8YD///bYf//7bL//+us///LK///xi//mysA5AAAAIAAAAAoAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAMYKBv/FCQn/xQkJ/8UJCf/FCQn/w1YA//yIE//+zJ3//////+h0AP/AYAD/wGAA/8Bg - AP/AYAD/wGAA/8JiAP/FZAD/xGgA/8FrAP+9bQD/um8A/7pyAP+8dQD/vncA/8B6AP/CfAD/xH8A/8aC - AP/KhQD/zYkA/9GMAP/VkAD/2ZMA/9uWAP/cmQD/25oA/9ydAP/eoAD/4KQA/+KnAP/2uAD//89A///d - dv//66n//+SI///VRv//xwT/+sMA///GBv//yA///8kY///KI///yy7//8w4//+eA/cAAACMAAAALgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFCQn/xQkJ/8UJCf/FCQn/yTIA//ycO/////////////// - ///+sGL/wGAA/8BgAP/AYAD/wGAA/8BgAP/DYgD/xWYA/8NpAP/AawD/vG4A/7pwAP+7cwD/vXUA/794 - AP/BewD/w30A/8WAAP/HgwD/y4YA/8+KAP/SjQD/1pEA/9mUAP/dmAD/3JoA/9qbAP/cngD/36EA/+Gl - AP//vgf//9di//q8AP/rsgD/7bYA///omf/////////////xv///22X//8sh///JHP//yib//8wx///N - O///yD3/AAAAjwAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxQkJ/8UJCf/FCQn/xQkJ/+lr - AP///////////////////////+vX/8BgAP/AYAD/wGAA/8BgAP/AYAD/xGMA/8ZnAP/DagD/v2wA/7tv - AP+5cQD/u3MA/712AP+/eQD/wXsA/8N+AP/GgQD/yIQA/8yIAP/QiwD/044A/9eSAP/alAD/3ZkA/9ya - AP/bnAD/3Z8A/9+iAP/hpQD/5KkA///33P//+u7//8oh/+63AP/xugD///C8///////////////////8 - 8P//4YH//8sp///MM///zj7//89J/wAAAIkAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEK - CMPFCQn/xQkJ/8wdAP/8iBP////////////////////////////8kif/wGAA/8BgAP/AYAD/wmEA/8Vk - AP/FaAD/wWoA/75tAP+6bwD/unEA/7x0AP++dwD/wHkA/8J8AP/EfwD/xoIA/8mEAP/NiQD/0IsA/9WQ - AP/YkgD/25YA/92ZAP/bmwD/3J0A/96gAP/gowD/4qYA/+SqAP//7bn////////rqf/vuAD/8boA///X - Rv//////////////////9dX//+ie///vvf//zDf//85B///AO/8AAABuAAAAHwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAC+CQlCxQkJ/8UJCf/IOQD//IgT/////////////////////////////syd/8Bg - AP/AYAD/wGAA/8JiAP/FZgD/xGgA/8FrAP+9bgD/uW8A/7pyAP+8dQD/vngA/8B6AP/DfQD/xYAA/8eC - AP/KhQD/zYkA/9KMAP/VkAD/2ZMA/9yXAP/dmgD/25sA/9yeAP/eoQD/4KQA/+OnAP/lqwD//+65//// - ////66r/8LkA//G7AP//10b/////////////8sT//8wo///KJP//0kn//914///OQ//JSAfjAAAAQgAA - AAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEJCcPFCQn/xz4A/9RqAP////////////// - ///////////////////UagD/wGAA/8BgAP/EYwD/xmYA/8NpAP+/bAD/vG4A/7pwAP+7cwD/vXYA/794 - AP/BewD/w34A/8WAAP/HgwD/y4YA/8+KAP/TjQD/1pEA/9qUAP/dmAD/25kA/9ucAP/dnwD/36IA/+Gl - AP/jqAD//8EK/////////////9dW//C5AP/xuwD//+WK////////9NL//8si///JHf//yyf//8wy///N - PP//jBH/NAICeAAAAB0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9CQkyxQkJ/8ky - AP/AYAD//sKJ/////////////////////////////KZP/8BgAP/CYQD/xGMA/8VnAP/CagD/v20A/7pv - AP+5cQD/yYAA/9WNAP/TjQD/1pIA/9yeAP/bngD/254A/9ydAP/bnAD/25wA/9ybAP/bmgD/3ZoA/9ya - AP/bmwD/3Z8A/+CjAP/ipgD/5KkA///XYv////////ru/++3AP/xugD/8bsA///43v///////9I6///J - Ff//ySD//8sr///NNf//yDf/lBkGywAAADkAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAMAJCaPFCQn/wlkA/+h0AP//9ev////////////////////////r1//AYAD/wmEA//KF - AP//ng///7Mn//++MP//yj///806///LLP//yR3//8gP///GAv/0vgD/8boA/++3AP/rsgD/560A/+So - AP/gpAD/3aAA/9ucAP/cmQD/2pUA/9WRAP/QjAD/0I0A/86MAP//5aP////////jh//vuAD/8boA///a - V////////+qi///ID///yRj//8oi///LLf//zDj/5lMD+R4BAWcAAAAZAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9CQkhxQkJ/8kyAP/AYAD//rBi//////////////////// - /////////8l1///Zgv//13j//9Vt///TY///0VX//89I///NOf//yyr//8kc///ID///xQL/9L4A//G6 - AP/utgD/67IA/+etAP/jqAD/4KMA/92fAP/bmwD/3ZkA/9qUAP/VkAD/0IsA/8qGAP/GggD///////// - ///6nAD/wnwA/8+LAP//7Ln////////OKP//yBH//8kb///KJv//zDD//6MZ/4MGBsAAAAAxAAAABgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAJCaPFCQn/wlkA/9Rq - AP//9ev////////////////////////y0///2YH//9d2///VbP//0mH//9FU///PRv//zDj//8sp///J - Gv//xw3//8UA//O9AP/xugD/7rYA/+uxAP/nrAD/46gA/+CjAP/dnwD/25oA/92YAP/alAD/1ZAA/9CL - AP/KhgD//7Up////////6cP/vXcA/7pzAP/2lAD////////Pjf/nmQD//8UP///JHv//yyn//8Us/8Yo - BfMAAABUAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAC9CQkhxQkJ/8sjAP/QaQD//9Of/////////////////////////////9uJ///Xdv//1Wz//9Jg///R - Uv//z0P//8w2///KJ///yBr//8cM//7FAP/yvQD/8LoA/+21AP/qsQD/5qwA/+KnAP/fogD/3J4A/9ub - AP/cmAD/2ZQA/9WPAP/PigD/yoUA///Wiv///////7xM/712AP+6cgD//86G///////rfQD/xGUA/8dn - AP//sQP//8ss//pwAP9vBQWpAAAAKgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAJCaPFCQn//Z1V///qvf///fv////////////////////////p - tv//13T//9Rq///SX///0VH//85D///NNf//yib//8kX///HC//9xAD/8r0A//C5AP/ttQD/6rAA/+as - AP/ipwD/36IA/9yeAP/bmwD/3ZgA/9mTAP/TjgD/z4oA/8qFAP//8dj//////9OFAP+9dgD/zn0A//// - ////yoj/xWgA/8RjAP/AYAD/wGAA//uQAP+lCAjlAAAASQAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9CQkhxQkJ/9lEMP//6Lf//+7N//// - ////////////////////9+f//9d0///Uaf//013//9BP///OQf//zDP//8ol///JFv//xwn/+sIA//G7 - AP/wuQD/7bQA/+mwAP/lqwD/4qYA/9+iAP/cnQD/25oA/9yXAP/YkwD/044A/86JAP//qgT////////b - nP+/eQD/vXYA///BXv//////6YAA/8VoAP/EYwD/wGAA/8BgAP/MHQD/VwQEkAAAACIAAAADAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAJ - CaPFCQn//7d8///krf//+/T////////////////////////ejP//1Gn//9Fc///QT///zkD//8wx///K - I///yRX//8YI//rCAP/xuwD/8LkA/+y0AP/prwD/5aoA/+GmAP/eoQD/250A/9yaAP/blgD/2JIA/9ON - AP/NiQD//8RR////////sSb/v3gA/7x1AP//79b//8yH/8FrAP/FZwD/w2IA/8BgAP/HPgD/kwcH1QAA - AD8AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAC9CQkhxQkJ/9U0JP//5Kz//+7G////////////////////////78n//9Nn///R - Wv//0E3//84+///MMP//yiH//8gT///GBv/4wQD/8bsA//C4AP/stAD/6a8A/+WqAP/hpQD/3qEA/9ud - AP/cmgD/3JcA/9iSAP/SjQD/zYkA///lr///8Nf/wnwA/794AP//tDX//////+aFAP/CagD/xmcA/8Ji - AP/CWQD/xxYW/zUDA3UAAAAcAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAJCaPFCQn/7I5i9v/jpv//+ez///////// - //////////31///Wb///0ln//9BL///NPP//zC7//8kg///IE///xgX/9sAA//G7AP/vuAD/67MA/+iu - AP/kqQD/4aUA/96gAP/bnAD/3JoA/9uWAP/XkgD/0owA/96TAP//+/L//81v/8F7AP+/eAD//+Ct///O - hf++bgD/0nIA//R/AP/ziiH243Nb/44wML0AAAA2AAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9CQkhwwkJ8cIW - FvOfmo/H2M602v//////////////////////5J7//9JY///PSv//zTz//8wu///JHv//yBH//8YE//bA - AP/xuwD/77cA/+uyAP/orgD/5KkA/+GlAP/eoAD/25wA/92aAP/alQD/1pEA/9CMAP//vTb///jo/+mX - AP/BewD/9poA///+/f//rjT//6cv/+ynU+POonLGun9/0stCQvciAgJdAAAAFgAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAL8JCYPFCQn/qFNT0ImJib7s7Ozq//////////////////fh///VZ///0E3//806///L - LP//yR3//8gP///GAv/0vgD/8boA/++3AP/rsgD/560A/+OoAP/gpAD/3aAA/9ubAP/cmQD/2pUA/+Wa - AP/uoAD//9V+///rwv//sST//7pA+v/js/rm2MHpwKJ2v6mpqZmtra2WrJiYrdViYvp0Dw+mAAAALAAA - AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8CQkRwwkJ8cIWFvOMfn7EsrKyyf////////////////// - //+ZmZnasqWDx9LAibj+1VnF/9VNzf/VR9T/zyrn/84g5//MHuf/yRzn/8gZ5//FFuf/whPn/8Uq5//F - L+f/wi/n/8dI5//GTufvv1rP7rxZ0P/vyv/Yw5fdpp6Qrq2srKX49Ov1oaGfsqampp2vr6+UqKiom8t1 - dea9IyPwAAAASwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCYPFCQn/r0FB2oeH - h8Ds7Ozq////////////////0tLS8ISEhMWdnZ2mrq6ulbCwsJSwsLCUsLCwlLCwsJSwsLCUsLCwlLCw - sJSwsLCUsLCwlLCwsJSwsLCUsLCwlLCwsJSwsLCUsLCwlMS7qq//7MP6nZyXt6KioqDX1MrL1tPL1p6e - nqStra2XrKysl7WJh8PSQUH/VgQEkgAAACYAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAC8CQkRwwkJ8cQPD/mMfX3EoaGhv/////////////////j4+P1/f3/NkpKSsqmpqZqwsLCUsLCwlLCw - sJSwsLCUsLCwlLCwsJSwsLCUsLCwlLCwsJSwsLCUsLCwlLCwsJSwsLCUsLCwlK+vr5To06XQ7tWj4pmZ - mKqlpKKe+O/c76Shnq+npqKcsK2qlaqdmaXWYV/6qQ8P4QAAAEYAAAANAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCYPFCQn/r0FB2oeHh8Hh4eHg////////////////srKy5ImJ - ib6hoaGhr6+vlLCwsJSwsLCUsLCwlLCwr5SwsK+UsLCvlLGvrpSxr66UsbCtlLGwrZSxsKyUsq+rlLKv - qpSvrKaX/+Gl7r+wkcWhn5ak0Mi1vdzUvtSjnpSjsauel62nmprGeG7cyyEf/0gDA4IAAAAgAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8CQkRwwkJ8cQPD/mMfXzFoKCgwf// - /////////////+Li4vWCgYDJmZiVq62sqJeyr6uUsq+rlLKvqpSysKmUsq+olLKwppSyrqaUs6+klLOu - o5S0rqKUtK6glLWun5S1rZ2Uw7STp//goPSdloOsqaCKoPPlwuKtooqsr6OJnLWpjZa6iXG81T81/5cH - B9AAAAA6AAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8J - CYPFCQn/sjk334eFgMPb2tjb////////////////ko+J15GMgrippJedta6flLWunpS1rpyUta2blLat - mZS2rZeUt6yVlLeslJS4rJKUuKuQlLisjpS5q4yUuquKlOfGfsLuyXvVqZl1pcCvhqvm0qbSr5xyobqk - d5eznW+e2l5D9sAPDfgeAQFoAAAAGQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAC8CQkRwwkJ8cUJCf+TcGXKmZSFvvv7+fr//////////8zJwu2Lgm3EpZl/preq - ipW6q4qUu6uIlLurhpS8qoSUvKqClL2pf5S9qX2Uvqh7lL+oeJS/p3aUwKdzlL+lb5X/13vhv6BhtLOY - X6Hz153Vup9iqb2dWpu/nlmZ0HRB1s4gFv+DBga/AAAANAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCYPFCQn/uDEo446BZcPY0sTX//////// - ///4+Pb8iXlXzZ+LY7K3oG+awKZxlMGmb5TCpWuUw6VolMOlZpTEpGSUxaRflMajXZTHo1qUyKRWlMij - U5TDn06Z/9Bl3beSQqTHoUul7cp6ysKYOZ7KnjeYyoYttNk2GP+2CQnyIQICXwAAABUAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8CQkRxAkJ8MUJ - Cf+dbEfIo41fv/z6+Pr//////////7uukeSbgES+uJZNocijUZTKpE2Uy6NKlM2jRpTOo0KUzqM/lNCk - OpTRojaU0qIylNOjLpTVoymU9r43u/W9NsfLmRef9cdYwNejGqTWngia05wBneFaBuzFCQn/cAUFqAAA - ACoAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAL8JCWLFCQn/vicX55t7MsTez6vY///////////n4ND0nHgiybiNJarRnyWX16MglNmk - GpTapBWU3KUPlN6lCpTgpQSU3qUAlNqiAJTVoACU0JwAlP/HMs60iQCjuY0Am//JM720iwCXrYYAmcB1 - AM/QGwP/pQgI5AAAAEoAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwwkJ4sUJCf+wWg7QrIAJvvn26PT//////////7CL - H9WqfwC3vpAAn7+RAJu2iwCfr4YAoKuDAKGngAChpH4AoKR+AJ6mgACaqIIAlaeBAJX/xB/MnXkAnKJ9 - AJimgACUpX8AlaV2AK3RQAD7xQkJ/1YEBJIAAAAkAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCWLFCQn/xRwE8Ilp - AMbiwlfQ///////////ZwnXpgGMAw49uAK6LbACwhGYAu4JkAL6BYwC/gWMAv4JkAL6FZwC4kG8Aqp97 - AJrJmgCi2aQAqaR+AJalgACVpoAAlJ56AJvGYADnxQkJ/50HB9wAAABBAAAACwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAwwkJ4sUJCf+hTgDagGMAwPv14vX/////9vHe+ph1AM3nzXfd6dib6e3jvPTt4rv07eK79O3i - u/Tj05jv0rNL4YNlALyZdgCgpoAAlKaAAJSmgACUpoAAlKR/AJWzdQDB0RwA/8UJCf80AgJ5AAAAHQAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCWLFCQn/xBUC93xgAMb268Pr///////////KoyHZ//////// - /////////////////////////////+zhu/V9YADFlnQApKaAAJSmgACUpoAAlKaAAJSofQCe0kAA+sUJ - Cf+IBgbPAAAAPQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxQkJ/8UJCf97XwDI7dJ71/// - ////////yqMh2f//////////////////////////////////////////e18Ax5VzAKWmgACUpoAAlKaA - AJSmgACUtnsAssUJCf/FCQn/FwEBhgAAACgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMUJ - Cf/FCQn/e18AyevRetj//////////8qjIdn//////////////////////////////////////////3tf - AMeVcwClpoAAlKaAAJSmgACUpoAAlLd8ALHFCQn/owgI5gAAAHcAAAAkAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAADFCQn/xQkJ/4hcAM7pz3na///////////JoiHa//////////////////////// - //////////////////97XwDHlXMApaaAAJSmgACUpoAAlKaAAJS5fQCvxQkJ/6QICOUAAAB0AAAAIgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwQkJ5MUJCf+VVwDU6c952///////////0rNL4f// - ////////////////////////////////////////e18Ax5VzAKWmgACUpoAAlKaAAJSmgACUpoAAlNEc - AP+lCAjjAAAAawAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwJCcjFCQn/lVcA0+nP - edr//////////9zDcuj//////////////////////////////////////////3tfAMeVcwClpoAAlKaA - AJSmgACUpoAAlKaAAJTSIwD/lAcH1AAAAGMAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAC8CQnIxQkJ/5VXANTpz3na///////////cxHLn//////////////////////////////////////// - //97XwDHlXMApaaAAJSmgACUpoAAlKaAAJSmgACU0iMA/4EGBsMAAABeAAAAGAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAvAkJyMUJCf+UVwDV2a8jyv//////////3cRz5v////////////////// - ////////////////////////e18Ax5VzAKWmgACUpoAAlKaAAJSmgACUpoAAlNIjAP+EBga+AAAAVgAA - ABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL4JCcbFCQn/q0MA4teuI8z//////////86s - N9z//////////////////////////////////////////3tfAMeVcwClpoAAlKaAAJSmgACUpoAAlKaA - AJTFJwDnhwYGugAAAEoAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3CQmaxQkJ/6xD - AOHXriPM///////////IoiHb//////////////////////////////////////////97XwDHlXMApaaA - AJSmgACUpoAAlKaAAJSmgACUyEUA52QFBZ0AAABCAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAtAkJi8UJCf+sQwDh1q0jzf//////////17xe5P////////////////////////////////// - ////////e18Ax5VzAKWmgACUpoAAlKaAAJSmgACUpoAAlMlFAOdXBASPAAAAPAAAAAsAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAALQJCYvFCQn/q0MA4dSsI87//////////9/Gc+X///////////// - /////////////////////////////39iAMKUcgCmon0AmKN+AJelfwCVpoAAlKaAAJTGRgDgXAQEiAAA - ADIAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2CQmKxQkJ/7U1AOnQqSLS//////// - ///hyHTi//////////////////////////////////////////9/YgDBiWkAtI5tAK6PbwCrk3IAp5Z0 - AKOZdgCguEgA0kwEBHwAAAAnAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsAgIj8UJ - Cf+9JQDxeFwAze3dre3fxnPl1psc5I1fANuTYADbomIA46JiAOShYgDkoWIA5KFiAOShYgDkj2EA1o9h - ANeOYADYeV4Ay3tfAMh9YQDEgWQAvq9KAN0AAAB6AAAAQgAAABYAAAAGAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAALAAAAKWIFBYDFCQn/xC8A+KxwAO+4awD4wmEA/8BgAP/AYAD/wGAA/8BgAP/AYAD/wGAA/8Bg - AP/AYAD/wGAA/8BgAP/AYAD/wGAA/8BgAP+9YAD8sWEA8qFiAOSyWgDrAAAAoAAAAIUAAABaAAAAKgAA - AAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAHAAAALopoAKLCfQDr1F0A/816AP/BewD/u3AA/8NlAP/AYAD/wGAA/6JR - AOKiUQDiolEA4qJRAOKjUQDio1EA4qJRAOKyWQDxwGAA/8BgAP/AYAD/wGAA/8BgAP/AYAD/wGAA/7BY - APR0OgDUAAAAmAAAAGMAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlXEAH+24AN3ttQD/4qYA/7R+AOmWYwDcjlUA2oxN - ANiGRADNf0AAwJVLAM2mUwDdplMA3aZTAN6mUwDdp1MA3KZTAN2mUwDdplMA3oNBALuDQgC7nU8A1n4/ - AMKaTQDcjUcA2bBYAPPAYAD/wGAA/51OAOoAAACCAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/HHIj/wQT0s3cA5p5U - AO2vWAD1wGAA/8BgAP/AYAD/xmcA6chpAOLNcwDPznMAzs50AM7OcgDO0X4Au893AMfNcwDNy3MAzstz - AM7JcADUxWgA58RlAO3AYAD/xWcA/75tAP+kZQDqnl4A6aZaAPHAYAD/AAAAhgAAACwAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAC+bQBKxmcA/8BgAP/AYAD/wmIA+ctwCdvAhC26u5pQnsOfU5jIo1SVyaNSlMmkUZTKo0+UyqNOlMuk - TJTLo0uUzKRJlMyjSJTNo0aUzaJFlM6jQ5TOo0KUzKE/ld6IDbrOfADcu3QA/8B6AP/FgAD/uXcA9AAA - AG8AAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAu14Ac8BgAP/AYAD/wGAA/7V/QMiVjXy1nJSBraOZhKannYWjqp+GoKuf - hqCpnoShqp2CoaqegqCsoIGfrqCBnq6ff56tnXygrJx7oa2ceaGtnHihrp14n62cd6CqmXKkpZNtqsp+ - AOzBewD/xoEA/8iFAPUAAAA2AAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5XQBCu14AtMBgAP/AYAD/4nEA3NWI - Ob3Bl2urp6ennKSkpJ6ioqKgoaGhoqCgoKKhoaGipKSkn6enp5ympqadoqKioaGhn6KgoJ+joaGfoq2e - jKXGjlW16oME08Z3APK9dgD/vHcA5rBzAKJ5UAA2AAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAuV0AQrZbAHayWQCJul0AxrhcAMfEYgDc4HAA3+BwAN/gcADf6HQA1+2EHb7wgA7F4HAA3uBw - AN/gcADf12sA57ZbAMm3XADJtVwArK1gAI6bXQBghVMALQAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA//+AAAAH////+AAAAAA///+AAAAAAAf//gAAAAAAAf/4AAAAAAAAf/AAAAAAAAA/8AAAAAAA - AB/gAAAAAAAAD+AAAAAAAAAP4AAAAAAAAA/gAAAAAAAAD+AAAAAAAAAP4AAAAAAAAA/gAAAAAAAAD+AA - AAAAAAAP4AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAf+AAAAAAAAB/4AAAAAAAAP/wAAAAAAAB//AAAAAAA - AH/+AAAAAAAA//4AAAAAAAD//wAAAAAAAf//AAAAAAAB//+AAAAAAAP//4AAAAAAA///wAAAAAAH///A - AAAAAA///+AAAAAAD///4AAAAAAf///wAAAAAB////AAAAAAP///+AAAAAA////4AAAAAH////wAAAAA - f////AAAAAD////+AAAAAf////8AAAAB/////wAAAAP/////gAAAA/////+AAAAH/////8AAAAf///// - wAAAD//////AAAAP/////8AAAA//////wAAAD//////AAAAP/////8AAAA//////wAAAD//////AAAAP - /////8AAAA//////wAAAD//////AAAAP/////4AAAAf////+AAAAA/////4AAAAD/////gAAAAP////+ - AAAAA/////4AAAAD/////gAAAAP/////AAAAA//////gAAAf//8= - - - \ No newline at end of file diff --git a/PROMS/Sync/Sync/Properties/Settings.Designer.cs b/PROMS/Sync/Sync/Properties/Settings.Designer.cs deleted file mode 100644 index 06191e8a..00000000 --- a/PROMS/Sync/Sync/Properties/Settings.Designer.cs +++ /dev/null @@ -1,107 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.18408 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Sync.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.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; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string DevelopmentFolder { - get { - return ((string)(this["DevelopmentFolder"])); - } - set { - this["DevelopmentFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string SourceSafeFolder { - get { - return ((string)(this["SourceSafeFolder"])); - } - set { - this["SourceSafeFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string MailBoxDevelopmentFolder { - get { - return ((string)(this["MailBoxDevelopmentFolder"])); - } - set { - this["MailBoxDevelopmentFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string MailBoxSourceSafeFolder { - get { - return ((string)(this["MailBoxSourceSafeFolder"])); - } - set { - this["MailBoxSourceSafeFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public global::System.Drawing.Point Location { - get { - return ((global::System.Drawing.Point)(this["Location"])); - } - set { - this["Location"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public global::System.Drawing.Size Size { - get { - return ((global::System.Drawing.Size)(this["Size"])); - } - set { - this["Size"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public global::System.Collections.Specialized.StringCollection Widths { - get { - return ((global::System.Collections.Specialized.StringCollection)(this["Widths"])); - } - set { - this["Widths"] = value; - } - } - } -} diff --git a/PROMS/Sync/Sync/Properties/Settings.settings b/PROMS/Sync/Sync/Properties/Settings.settings deleted file mode 100644 index 258fd349..00000000 --- a/PROMS/Sync/Sync/Properties/Settings.settings +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/Sync/Sync/Resources/iSync-128x128.png b/PROMS/Sync/Sync/Resources/iSync-128x128.png deleted file mode 100644 index b6293d16..00000000 Binary files a/PROMS/Sync/Sync/Resources/iSync-128x128.png and /dev/null differ diff --git a/PROMS/Sync/Sync/Resources/iSync.ico b/PROMS/Sync/Sync/Resources/iSync.ico deleted file mode 100644 index af4a5cb4..00000000 Binary files a/PROMS/Sync/Sync/Resources/iSync.ico and /dev/null differ diff --git a/PROMS/Sync/Sync/Resources/wi0124-16.ico b/PROMS/Sync/Sync/Resources/wi0124-16.ico deleted file mode 100644 index bdc5fedf..00000000 Binary files a/PROMS/Sync/Sync/Resources/wi0124-16.ico and /dev/null differ diff --git a/PROMS/Sync/Sync/Resources/wi0124-24.ico b/PROMS/Sync/Sync/Resources/wi0124-24.ico deleted file mode 100644 index d2d7b27c..00000000 Binary files a/PROMS/Sync/Sync/Resources/wi0124-24.ico and /dev/null differ diff --git a/PROMS/Sync/Sync/Resources/wi0124-32.ico b/PROMS/Sync/Sync/Resources/wi0124-32.ico deleted file mode 100644 index ef130ac0..00000000 Binary files a/PROMS/Sync/Sync/Resources/wi0124-32.ico and /dev/null differ diff --git a/PROMS/Sync/Sync/Resources/wi0124-48.ico b/PROMS/Sync/Sync/Resources/wi0124-48.ico deleted file mode 100644 index 9a475063..00000000 Binary files a/PROMS/Sync/Sync/Resources/wi0124-48.ico and /dev/null differ diff --git a/PROMS/Sync/Sync/Resources/wi0124-64.ico b/PROMS/Sync/Sync/Resources/wi0124-64.ico deleted file mode 100644 index 3cb97438..00000000 Binary files a/PROMS/Sync/Sync/Resources/wi0124-64.ico and /dev/null differ diff --git a/PROMS/Sync/Sync/SevenZipSharp.dll b/PROMS/Sync/Sync/SevenZipSharp.dll deleted file mode 100644 index f588f8a2..00000000 Binary files a/PROMS/Sync/Sync/SevenZipSharp.dll and /dev/null differ diff --git a/PROMS/Sync/Sync/Sync.csproj b/PROMS/Sync/Sync/Sync.csproj deleted file mode 100644 index 3deece84..00000000 --- a/PROMS/Sync/Sync/Sync.csproj +++ /dev/null @@ -1,121 +0,0 @@ - - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {400F2DAC-E405-4C1B-A388-5120FCF59DF0} - WinExe - Properties - Sync - Sync - Resources\iSync.ico - "%24/PROMS/Sync/Sync", KEEAAAAA - . - - - MSSCCI:Microsoft Visual SourceSafe - v2.0 - - - - - 2.0 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - - - - - - - - - - - - Form - - - frmSync.cs - - - - - Designer - frmSync.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/Sync/Sync/Sync.sln b/PROMS/Sync/Sync/Sync.sln deleted file mode 100644 index aa4d02a8..00000000 --- a/PROMS/Sync/Sync/Sync.sln +++ /dev/null @@ -1,26 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sync", "Sync\Sync.csproj", "{400F2DAC-E405-4C1B-A388-5120FCF59DF0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SyncMany", "SyncMany\SyncMany.csproj", "{256A41AF-440F-42FE-A9B1-2CE36F1261A2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Release|Any CPU.Build.0 = Release|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/PROMS/Sync/Sync/Upgrade Sync.sln b/PROMS/Sync/Sync/Upgrade Sync.sln deleted file mode 100644 index 7446513b..00000000 --- a/PROMS/Sync/Sync/Upgrade Sync.sln +++ /dev/null @@ -1,37 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.30723.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sync", "Sync\Sync.csproj", "{400F2DAC-E405-4C1B-A388-5120FCF59DF0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SyncMany", "SyncMany\SyncMany.csproj", "{256A41AF-440F-42FE-A9B1-2CE36F1261A2}" -EndProject -Global - GlobalSection(SourceCodeControl) = preSolution - SccNumberOfProjects = 3 - SccProjectUniqueName0 = Sync\\Sync.csproj - SccLocalPath0 = Sync - SccProjectUniqueName1 = SyncMany\\SyncMany.csproj - SccProjectName1 = \u0022$/PROMS/Sync/SyncMany\u0022,\u0020LEEAAAAA - SccLocalPath1 = SyncMany - SccLocalPath2 = . - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Release|Any CPU.Build.0 = Release|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/PROMS/Sync/Sync/app.config b/PROMS/Sync/Sync/app.config deleted file mode 100644 index 6787e77e..00000000 --- a/PROMS/Sync/Sync/app.config +++ /dev/null @@ -1,24 +0,0 @@ - - - - -
- - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/Sync/Sync/frmSync.Designer.cs b/PROMS/Sync/Sync/frmSync.Designer.cs deleted file mode 100644 index c564aa3d..00000000 --- a/PROMS/Sync/Sync/frmSync.Designer.cs +++ /dev/null @@ -1,511 +0,0 @@ -namespace Sync -{ - partial class frmSync - { - /// - /// 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(frmSync)); - this.panel1 = new System.Windows.Forms.Panel(); - this.btnBrwsSSMail = new System.Windows.Forms.Button(); - this.tbSSMailBox = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.btnBrwsMail = new System.Windows.Forms.Button(); - this.tbMailBox = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.btnBrwsSS = new System.Windows.Forms.Button(); - this.tbSourceSafe = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.btnBrwsDev = new System.Windows.Forms.Button(); - this.tbDevelopment = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.fbd = new System.Windows.Forms.FolderBrowserDialog(); - this.dgv = new System.Windows.Forms.DataGridView(); - this.cms = new System.Windows.Forms.ContextMenuStrip(this.components); - this.compareToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.compareSourceSafeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.compareMailboxToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.selectNoneToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.mailboxToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.clearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.buildToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.findToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.checkedOutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.differentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.contentDifferentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.differentAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.sourceSafeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreUnchangedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreSelectedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreReadOnlyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.listToClipboardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.panel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv)).BeginInit(); - this.cms.SuspendLayout(); - this.menuStrip1.SuspendLayout(); - this.SuspendLayout(); - // - // panel1 - // - this.panel1.Controls.Add(this.btnBrwsSSMail); - this.panel1.Controls.Add(this.tbSSMailBox); - this.panel1.Controls.Add(this.label4); - this.panel1.Controls.Add(this.btnBrwsMail); - this.panel1.Controls.Add(this.tbMailBox); - this.panel1.Controls.Add(this.label3); - this.panel1.Controls.Add(this.btnBrwsSS); - this.panel1.Controls.Add(this.tbSourceSafe); - this.panel1.Controls.Add(this.label2); - this.panel1.Controls.Add(this.btnBrwsDev); - this.panel1.Controls.Add(this.tbDevelopment); - this.panel1.Controls.Add(this.label1); - 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(759, 117); - this.panel1.TabIndex = 1; - // - // btnBrwsSSMail - // - this.btnBrwsSSMail.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsSSMail.Location = new System.Drawing.Point(672, 86); - this.btnBrwsSSMail.Name = "btnBrwsSSMail"; - this.btnBrwsSSMail.Size = new System.Drawing.Size(75, 23); - this.btnBrwsSSMail.TabIndex = 14; - this.btnBrwsSSMail.Text = "Browse..."; - this.btnBrwsSSMail.UseVisualStyleBackColor = true; - this.btnBrwsSSMail.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbSSMailBox - // - this.tbSSMailBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbSSMailBox.Location = new System.Drawing.Point(120, 88); - this.tbSSMailBox.Name = "tbSSMailBox"; - this.tbSSMailBox.Size = new System.Drawing.Size(546, 20); - this.tbSSMailBox.TabIndex = 13; - this.tbSSMailBox.Text = "E:\\Mailbox\\SourceSafe\\Proms"; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(12, 91); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(92, 13); - this.label4.TabIndex = 12; - this.label4.Text = "SS Mailbox Folder"; - // - // btnBrwsMail - // - this.btnBrwsMail.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsMail.Location = new System.Drawing.Point(672, 60); - this.btnBrwsMail.Name = "btnBrwsMail"; - this.btnBrwsMail.Size = new System.Drawing.Size(75, 23); - this.btnBrwsMail.TabIndex = 8; - this.btnBrwsMail.Text = "Browse..."; - this.btnBrwsMail.UseVisualStyleBackColor = true; - this.btnBrwsMail.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbMailBox - // - this.tbMailBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMailBox.Location = new System.Drawing.Point(120, 62); - this.tbMailBox.Name = "tbMailBox"; - this.tbMailBox.Size = new System.Drawing.Size(546, 20); - this.tbMailBox.TabIndex = 7; - this.tbMailBox.Text = "E:\\Mailbox\\Proms"; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(12, 65); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(75, 13); - this.label3.TabIndex = 6; - this.label3.Text = "Mailbox Folder"; - // - // btnBrwsSS - // - this.btnBrwsSS.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsSS.Location = new System.Drawing.Point(672, 34); - this.btnBrwsSS.Name = "btnBrwsSS"; - this.btnBrwsSS.Size = new System.Drawing.Size(75, 23); - this.btnBrwsSS.TabIndex = 5; - this.btnBrwsSS.Text = "Browse..."; - this.btnBrwsSS.UseVisualStyleBackColor = true; - this.btnBrwsSS.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbSourceSafe - // - this.tbSourceSafe.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbSourceSafe.Location = new System.Drawing.Point(120, 36); - this.tbSourceSafe.Name = "tbSourceSafe"; - this.tbSourceSafe.Size = new System.Drawing.Size(546, 20); - this.tbSourceSafe.TabIndex = 4; - this.tbSourceSafe.Text = "E:\\SourceSafe\\Proms"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(12, 39); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(98, 13); - this.label2.TabIndex = 3; - this.label2.Text = "Source Safe Folder"; - // - // btnBrwsDev - // - this.btnBrwsDev.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsDev.Location = new System.Drawing.Point(672, 8); - this.btnBrwsDev.Name = "btnBrwsDev"; - this.btnBrwsDev.Size = new System.Drawing.Size(75, 23); - this.btnBrwsDev.TabIndex = 2; - this.btnBrwsDev.Text = "Browse..."; - this.btnBrwsDev.UseVisualStyleBackColor = true; - this.btnBrwsDev.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbDevelopment - // - this.tbDevelopment.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbDevelopment.Location = new System.Drawing.Point(120, 10); - this.tbDevelopment.Name = "tbDevelopment"; - this.tbDevelopment.Size = new System.Drawing.Size(546, 20); - this.tbDevelopment.TabIndex = 1; - this.tbDevelopment.Text = "E:\\Proms"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 13); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(102, 13); - this.label1.TabIndex = 0; - this.label1.Text = "Development Folder"; - // - // dgv - // - this.dgv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dgv.ContextMenuStrip = this.cms; - this.dgv.Dock = System.Windows.Forms.DockStyle.Fill; - this.dgv.Location = new System.Drawing.Point(0, 141); - this.dgv.Name = "dgv"; - this.dgv.Size = new System.Drawing.Size(759, 283); - this.dgv.TabIndex = 2; - this.dgv.ColumnHeaderMouseClick += dgv_ColumnHeaderMouseClick; - this.dgv.ColumnWidthChanged += new System.Windows.Forms.DataGridViewColumnEventHandler(this.dgv_ColumnWidthChanged); - this.dgv.MouseDown += new System.Windows.Forms.MouseEventHandler(this.dgv_MouseDown); - // - // cms - // - this.cms.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.compareToolStripMenuItem, - this.compareSourceSafeToolStripMenuItem, - this.compareMailboxToolStripMenuItem, - this.restoreToolStripMenuItem}); - this.cms.Name = "cms"; - this.cms.Size = new System.Drawing.Size(188, 92); - // - // compareToolStripMenuItem - // - this.compareToolStripMenuItem.Name = "compareToolStripMenuItem"; - this.compareToolStripMenuItem.Size = new System.Drawing.Size(187, 22); - this.compareToolStripMenuItem.Text = "Compare"; - this.compareToolStripMenuItem.Click += new System.EventHandler(this.compareToolStripMenuItem_Click); - // - // compareSourceSafeToolStripMenuItem - // - this.compareSourceSafeToolStripMenuItem.Name = "compareSourceSafeToolStripMenuItem"; - this.compareSourceSafeToolStripMenuItem.Size = new System.Drawing.Size(187, 22); - this.compareSourceSafeToolStripMenuItem.Text = "Compare Source Safe"; - this.compareSourceSafeToolStripMenuItem.Click += new System.EventHandler(this.compareSourceSafeToolStripMenuItem_Click); - // - // compareMailboxToolStripMenuItem - // - this.compareMailboxToolStripMenuItem.Name = "compareMailboxToolStripMenuItem"; - this.compareMailboxToolStripMenuItem.Size = new System.Drawing.Size(187, 22); - this.compareMailboxToolStripMenuItem.Text = "Compare Mailbox"; - this.compareMailboxToolStripMenuItem.Click += new System.EventHandler(this.compareMailboxToolStripMenuItem_Click); - // - // restoreToolStripMenuItem - // - this.restoreToolStripMenuItem.Name = "restoreToolStripMenuItem"; - this.restoreToolStripMenuItem.Size = new System.Drawing.Size(187, 22); - this.restoreToolStripMenuItem.Text = "Restore"; - this.restoreToolStripMenuItem.Click += new System.EventHandler(this.restoreToolStripMenuItem_Click); - // - // statusStrip1 - // - this.statusStrip1.Location = new System.Drawing.Point(0, 424); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(759, 22); - this.statusStrip1.TabIndex = 3; - this.statusStrip1.Text = "statusStrip1"; - // - // menuStrip1 - // - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileToolStripMenuItem, - this.editToolStripMenuItem, - this.mailboxToolStripMenuItem, - this.findToolStripMenuItem, - this.sourceSafeToolStripMenuItem, - this.listToClipboardToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(759, 24); - this.menuStrip1.TabIndex = 4; - this.menuStrip1.Text = "menuStrip1"; - // - // fileToolStripMenuItem - // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.exitToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "&File"; - // - // exitToolStripMenuItem - // - this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.Size = new System.Drawing.Size(92, 22); - this.exitToolStripMenuItem.Text = "E&xit"; - this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); - // - // editToolStripMenuItem - // - this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.selectAllToolStripMenuItem, - this.selectNoneToolStripMenuItem}); - this.editToolStripMenuItem.Name = "editToolStripMenuItem"; - this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); - this.editToolStripMenuItem.Text = "&Edit"; - // - // selectAllToolStripMenuItem - // - this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem"; - this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(137, 22); - this.selectAllToolStripMenuItem.Text = "Select All"; - this.selectAllToolStripMenuItem.Click += new System.EventHandler(this.selectAllToolStripMenuItem_Click); - // - // selectNoneToolStripMenuItem - // - this.selectNoneToolStripMenuItem.Name = "selectNoneToolStripMenuItem"; - this.selectNoneToolStripMenuItem.Size = new System.Drawing.Size(137, 22); - this.selectNoneToolStripMenuItem.Text = "Select None"; - this.selectNoneToolStripMenuItem.Click += new System.EventHandler(this.selectNoneToolStripMenuItem_Click); - // - // mailboxToolStripMenuItem - // - this.mailboxToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.clearToolStripMenuItem, - this.buildToolStripMenuItem}); - this.mailboxToolStripMenuItem.Name = "mailboxToolStripMenuItem"; - this.mailboxToolStripMenuItem.Size = new System.Drawing.Size(61, 20); - this.mailboxToolStripMenuItem.Text = "Mailbox"; - // - // clearToolStripMenuItem - // - this.clearToolStripMenuItem.Name = "clearToolStripMenuItem"; - this.clearToolStripMenuItem.Size = new System.Drawing.Size(101, 22); - this.clearToolStripMenuItem.Text = "Clear"; - this.clearToolStripMenuItem.Click += new System.EventHandler(this.clearToolStripMenuItem_Click); - // - // buildToolStripMenuItem - // - this.buildToolStripMenuItem.Name = "buildToolStripMenuItem"; - this.buildToolStripMenuItem.Size = new System.Drawing.Size(101, 22); - this.buildToolStripMenuItem.Text = "Build"; - this.buildToolStripMenuItem.Click += new System.EventHandler(this.buildToolStripMenuItem_Click); - // - // findToolStripMenuItem - // - this.findToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.checkedOutToolStripMenuItem, - this.differentToolStripMenuItem, - this.contentDifferentToolStripMenuItem, - this.differentAllToolStripMenuItem}); - this.findToolStripMenuItem.Name = "findToolStripMenuItem"; - this.findToolStripMenuItem.Size = new System.Drawing.Size(42, 20); - this.findToolStripMenuItem.Text = "Find"; - // - // checkedOutToolStripMenuItem - // - this.checkedOutToolStripMenuItem.Name = "checkedOutToolStripMenuItem"; - this.checkedOutToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.checkedOutToolStripMenuItem.Text = "Checked-Out"; - this.checkedOutToolStripMenuItem.Click += new System.EventHandler(this.checkedOutToolStripMenuItem_Click); - // - // differentToolStripMenuItem - // - this.differentToolStripMenuItem.Name = "differentToolStripMenuItem"; - this.differentToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.differentToolStripMenuItem.Text = "Different"; - this.differentToolStripMenuItem.Click += new System.EventHandler(this.differentToolStripMenuItem_Click); - // - // contentDifferentToolStripMenuItem - // - this.contentDifferentToolStripMenuItem.Name = "contentDifferentToolStripMenuItem"; - this.contentDifferentToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.contentDifferentToolStripMenuItem.Text = "Content Different"; - this.contentDifferentToolStripMenuItem.Click += new System.EventHandler(this.contentDifferentToolStripMenuItem_Click); - // - // differentAllToolStripMenuItem - // - this.differentAllToolStripMenuItem.Name = "differentAllToolStripMenuItem"; - this.differentAllToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.differentAllToolStripMenuItem.Text = "DifferentAll"; - this.differentAllToolStripMenuItem.Click += new System.EventHandler(this.differentAllToolStripMenuItem_Click); - // - // sourceSafeToolStripMenuItem - // - this.sourceSafeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.restoreUnchangedToolStripMenuItem, - this.restoreSelectedToolStripMenuItem, - this.restoreAllToolStripMenuItem, - this.restoreReadOnlyToolStripMenuItem}); - this.sourceSafeToolStripMenuItem.Name = "sourceSafeToolStripMenuItem"; - this.sourceSafeToolStripMenuItem.Size = new System.Drawing.Size(80, 20); - this.sourceSafeToolStripMenuItem.Text = "Source Safe"; - // - // restoreUnchangedToolStripMenuItem - // - this.restoreUnchangedToolStripMenuItem.Name = "restoreUnchangedToolStripMenuItem"; - this.restoreUnchangedToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreUnchangedToolStripMenuItem.Text = "Restore Unchanged"; - this.restoreUnchangedToolStripMenuItem.Click += new System.EventHandler(this.restoreUnchangedToolStripMenuItem_Click); - // - // restoreSelectedToolStripMenuItem - // - this.restoreSelectedToolStripMenuItem.Name = "restoreSelectedToolStripMenuItem"; - this.restoreSelectedToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreSelectedToolStripMenuItem.Text = "Restore Selected (To Process)"; - this.restoreSelectedToolStripMenuItem.Click += new System.EventHandler(this.restoreSelectedToolStripMenuItem_Click); - // - // restoreAllToolStripMenuItem - // - this.restoreAllToolStripMenuItem.Name = "restoreAllToolStripMenuItem"; - this.restoreAllToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreAllToolStripMenuItem.Text = "Restore All"; - this.restoreAllToolStripMenuItem.Click += new System.EventHandler(this.restoreAllToolStripMenuItem_Click); - // - // restoreReadOnlyToolStripMenuItem - // - this.restoreReadOnlyToolStripMenuItem.Name = "restoreReadOnlyToolStripMenuItem"; - this.restoreReadOnlyToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreReadOnlyToolStripMenuItem.Text = "Restore Read Only"; - this.restoreReadOnlyToolStripMenuItem.Click += new System.EventHandler(this.restoreReadOnlyToolStripMenuItem_Click); - // - // listToClipboardToolStripMenuItem - // - this.listToClipboardToolStripMenuItem.Name = "listToClipboardToolStripMenuItem"; - this.listToClipboardToolStripMenuItem.Size = new System.Drawing.Size(103, 20); - this.listToClipboardToolStripMenuItem.Text = "List toClipboard"; - this.listToClipboardToolStripMenuItem.Click += new System.EventHandler(this.listToClipboardToolStripMenuItem_Click); - // - // frmSync - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(759, 446); - this.Controls.Add(this.dgv); - this.Controls.Add(this.panel1); - this.Controls.Add(this.statusStrip1); - this.Controls.Add(this.menuStrip1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MainMenuStrip = this.menuStrip1; - this.Name = "frmSync"; - this.Text = "Volian Sync"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmSync_FormClosing); - this.Load += new System.EventHandler(this.frmSync_Load); - this.LocationChanged += new System.EventHandler(this.frmSync_LocationChanged); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv)).EndInit(); - this.cms.ResumeLayout(false); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - #endregion - - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Button btnBrwsDev; - private System.Windows.Forms.TextBox tbDevelopment; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button btnBrwsMail; - private System.Windows.Forms.TextBox tbMailBox; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Button btnBrwsSS; - private System.Windows.Forms.TextBox tbSourceSafe; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.FolderBrowserDialog fbd; - private System.Windows.Forms.DataGridView dgv; - private System.Windows.Forms.Button btnBrwsSSMail; - private System.Windows.Forms.TextBox tbSSMailBox; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.MenuStrip menuStrip1; - private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem mailboxToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem buildToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem findToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem checkedOutToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem differentToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem sourceSafeToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreUnchangedToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreSelectedToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreAllToolStripMenuItem; - private System.Windows.Forms.ContextMenuStrip cms; - private System.Windows.Forms.ToolStripMenuItem compareToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem contentDifferentToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreReadOnlyToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem listToClipboardToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem selectNoneToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem compareSourceSafeToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem compareMailboxToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem differentAllToolStripMenuItem; - } -} - diff --git a/PROMS/Sync/Sync/frmSync.Designer.cs.bak b/PROMS/Sync/Sync/frmSync.Designer.cs.bak deleted file mode 100644 index 11723591..00000000 --- a/PROMS/Sync/Sync/frmSync.Designer.cs.bak +++ /dev/null @@ -1,430 +0,0 @@ -namespace Sync -{ - partial class frmSync - { - /// - /// 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(frmSync)); - this.panel1 = new System.Windows.Forms.Panel(); - this.btnBrwsSSMail = new System.Windows.Forms.Button(); - this.tbSSMailBox = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.btnBrwsMail = new System.Windows.Forms.Button(); - this.tbMailBox = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.btnBrwsSS = new System.Windows.Forms.Button(); - this.tbSourceSafe = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.btnBrwsDev = new System.Windows.Forms.Button(); - this.tbDevelopment = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.fbd = new System.Windows.Forms.FolderBrowserDialog(); - this.dgv = new System.Windows.Forms.DataGridView(); - this.cms = new System.Windows.Forms.ContextMenuStrip(this.components); - this.compareToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.mailboxToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.clearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.buildToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.findToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.checkedOutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.differentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.contentDifferentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.sourceSafeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreUnchangedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreSelectedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.panel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv)).BeginInit(); - this.cms.SuspendLayout(); - this.menuStrip1.SuspendLayout(); - this.SuspendLayout(); - // - // panel1 - // - this.panel1.Controls.Add(this.btnBrwsSSMail); - this.panel1.Controls.Add(this.tbSSMailBox); - this.panel1.Controls.Add(this.label4); - this.panel1.Controls.Add(this.btnBrwsMail); - this.panel1.Controls.Add(this.tbMailBox); - this.panel1.Controls.Add(this.label3); - this.panel1.Controls.Add(this.btnBrwsSS); - this.panel1.Controls.Add(this.tbSourceSafe); - this.panel1.Controls.Add(this.label2); - this.panel1.Controls.Add(this.btnBrwsDev); - this.panel1.Controls.Add(this.tbDevelopment); - this.panel1.Controls.Add(this.label1); - 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(759, 117); - this.panel1.TabIndex = 1; - // - // btnBrwsSSMail - // - this.btnBrwsSSMail.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsSSMail.Location = new System.Drawing.Point(672, 86); - this.btnBrwsSSMail.Name = "btnBrwsSSMail"; - this.btnBrwsSSMail.Size = new System.Drawing.Size(75, 23); - this.btnBrwsSSMail.TabIndex = 14; - this.btnBrwsSSMail.Text = "Browse..."; - this.btnBrwsSSMail.UseVisualStyleBackColor = true; - this.btnBrwsSSMail.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbSSMailBox - // - this.tbSSMailBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbSSMailBox.Location = new System.Drawing.Point(120, 88); - this.tbSSMailBox.Name = "tbSSMailBox"; - this.tbSSMailBox.Size = new System.Drawing.Size(546, 20); - this.tbSSMailBox.TabIndex = 13; - this.tbSSMailBox.Text = "E:\\Mailbox\\SourceSafe\\Proms"; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(12, 91); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(92, 13); - this.label4.TabIndex = 12; - this.label4.Text = "SS Mailbox Folder"; - // - // btnBrwsMail - // - this.btnBrwsMail.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsMail.Location = new System.Drawing.Point(672, 60); - this.btnBrwsMail.Name = "btnBrwsMail"; - this.btnBrwsMail.Size = new System.Drawing.Size(75, 23); - this.btnBrwsMail.TabIndex = 8; - this.btnBrwsMail.Text = "Browse..."; - this.btnBrwsMail.UseVisualStyleBackColor = true; - this.btnBrwsMail.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbMailBox - // - this.tbMailBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMailBox.Location = new System.Drawing.Point(120, 62); - this.tbMailBox.Name = "tbMailBox"; - this.tbMailBox.Size = new System.Drawing.Size(546, 20); - this.tbMailBox.TabIndex = 7; - this.tbMailBox.Text = "E:\\Mailbox\\Proms"; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(12, 65); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(75, 13); - this.label3.TabIndex = 6; - this.label3.Text = "Mailbox Folder"; - // - // btnBrwsSS - // - this.btnBrwsSS.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsSS.Location = new System.Drawing.Point(672, 34); - this.btnBrwsSS.Name = "btnBrwsSS"; - this.btnBrwsSS.Size = new System.Drawing.Size(75, 23); - this.btnBrwsSS.TabIndex = 5; - this.btnBrwsSS.Text = "Browse..."; - this.btnBrwsSS.UseVisualStyleBackColor = true; - this.btnBrwsSS.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbSourceSafe - // - this.tbSourceSafe.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbSourceSafe.Location = new System.Drawing.Point(120, 36); - this.tbSourceSafe.Name = "tbSourceSafe"; - this.tbSourceSafe.Size = new System.Drawing.Size(546, 20); - this.tbSourceSafe.TabIndex = 4; - this.tbSourceSafe.Text = "E:\\SourceSafe\\Proms"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(12, 39); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(98, 13); - this.label2.TabIndex = 3; - this.label2.Text = "Source Safe Folder"; - // - // btnBrwsDev - // - this.btnBrwsDev.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsDev.Location = new System.Drawing.Point(672, 8); - this.btnBrwsDev.Name = "btnBrwsDev"; - this.btnBrwsDev.Size = new System.Drawing.Size(75, 23); - this.btnBrwsDev.TabIndex = 2; - this.btnBrwsDev.Text = "Browse..."; - this.btnBrwsDev.UseVisualStyleBackColor = true; - this.btnBrwsDev.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbDevelopment - // - this.tbDevelopment.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbDevelopment.Location = new System.Drawing.Point(120, 10); - this.tbDevelopment.Name = "tbDevelopment"; - this.tbDevelopment.Size = new System.Drawing.Size(546, 20); - this.tbDevelopment.TabIndex = 1; - this.tbDevelopment.Text = "E:\\Proms"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 13); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(102, 13); - this.label1.TabIndex = 0; - this.label1.Text = "Development Folder"; - // - // dgv - // - this.dgv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dgv.ContextMenuStrip = this.cms; - this.dgv.Dock = System.Windows.Forms.DockStyle.Fill; - this.dgv.Location = new System.Drawing.Point(0, 141); - this.dgv.Name = "dgv"; - this.dgv.Size = new System.Drawing.Size(759, 283); - this.dgv.TabIndex = 2; - this.dgv.ColumnWidthChanged += new System.Windows.Forms.DataGridViewColumnEventHandler(this.dgv_ColumnWidthChanged); - // - // cms - // - this.cms.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.compareToolStripMenuItem, - this.restoreToolStripMenuItem}); - this.cms.Name = "cms"; - this.cms.Size = new System.Drawing.Size(124, 48); - // - // compareToolStripMenuItem - // - this.compareToolStripMenuItem.Name = "compareToolStripMenuItem"; - this.compareToolStripMenuItem.Size = new System.Drawing.Size(123, 22); - this.compareToolStripMenuItem.Text = "Compare"; - this.compareToolStripMenuItem.Click += new System.EventHandler(this.compareToolStripMenuItem_Click); - // - // restoreToolStripMenuItem - // - this.restoreToolStripMenuItem.Name = "restoreToolStripMenuItem"; - this.restoreToolStripMenuItem.Size = new System.Drawing.Size(123, 22); - this.restoreToolStripMenuItem.Text = "Restore"; - this.restoreToolStripMenuItem.Click += new System.EventHandler(this.restoreToolStripMenuItem_Click); - // - // statusStrip1 - // - this.statusStrip1.Location = new System.Drawing.Point(0, 424); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(759, 22); - this.statusStrip1.TabIndex = 3; - this.statusStrip1.Text = "statusStrip1"; - // - // menuStrip1 - // - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileToolStripMenuItem, - this.mailboxToolStripMenuItem, - this.findToolStripMenuItem, - this.sourceSafeToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(759, 24); - this.menuStrip1.TabIndex = 4; - this.menuStrip1.Text = "menuStrip1"; - // - // fileToolStripMenuItem - // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.exitToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "&File"; - // - // exitToolStripMenuItem - // - this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.Size = new System.Drawing.Size(92, 22); - this.exitToolStripMenuItem.Text = "E&xit"; - this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); - // - // mailboxToolStripMenuItem - // - this.mailboxToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.clearToolStripMenuItem, - this.buildToolStripMenuItem}); - this.mailboxToolStripMenuItem.Name = "mailboxToolStripMenuItem"; - this.mailboxToolStripMenuItem.Size = new System.Drawing.Size(61, 20); - this.mailboxToolStripMenuItem.Text = "Mailbox"; - // - // clearToolStripMenuItem - // - this.clearToolStripMenuItem.Name = "clearToolStripMenuItem"; - this.clearToolStripMenuItem.Size = new System.Drawing.Size(101, 22); - this.clearToolStripMenuItem.Text = "Clear"; - this.clearToolStripMenuItem.Click += new System.EventHandler(this.clearToolStripMenuItem_Click); - // - // buildToolStripMenuItem - // - this.buildToolStripMenuItem.Name = "buildToolStripMenuItem"; - this.buildToolStripMenuItem.Size = new System.Drawing.Size(101, 22); - this.buildToolStripMenuItem.Text = "Build"; - this.buildToolStripMenuItem.Click += new System.EventHandler(this.buildToolStripMenuItem_Click); - // - // findToolStripMenuItem - // - this.findToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.checkedOutToolStripMenuItem, - this.differentToolStripMenuItem, - this.contentDifferentToolStripMenuItem}); - this.findToolStripMenuItem.Name = "findToolStripMenuItem"; - this.findToolStripMenuItem.Size = new System.Drawing.Size(42, 20); - this.findToolStripMenuItem.Text = "Find"; - // - // checkedOutToolStripMenuItem - // - this.checkedOutToolStripMenuItem.Name = "checkedOutToolStripMenuItem"; - this.checkedOutToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.checkedOutToolStripMenuItem.Text = "Checked-Out"; - this.checkedOutToolStripMenuItem.Click += new System.EventHandler(this.checkedOutToolStripMenuItem_Click); - // - // differentToolStripMenuItem - // - this.differentToolStripMenuItem.Name = "differentToolStripMenuItem"; - this.differentToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.differentToolStripMenuItem.Text = "Different"; - this.differentToolStripMenuItem.Click += new System.EventHandler(this.differentToolStripMenuItem_Click); - // - // contentDifferentToolStripMenuItem - // - this.contentDifferentToolStripMenuItem.Name = "contentDifferentToolStripMenuItem"; - this.contentDifferentToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.contentDifferentToolStripMenuItem.Text = "Content Different"; - this.contentDifferentToolStripMenuItem.Click += new System.EventHandler(this.contentDifferentToolStripMenuItem_Click); - // - // sourceSafeToolStripMenuItem - // - this.sourceSafeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.restoreUnchangedToolStripMenuItem, - this.restoreSelectedToolStripMenuItem, - this.restoreAllToolStripMenuItem}); - this.sourceSafeToolStripMenuItem.Name = "sourceSafeToolStripMenuItem"; - this.sourceSafeToolStripMenuItem.Size = new System.Drawing.Size(80, 20); - this.sourceSafeToolStripMenuItem.Text = "Source Safe"; - // - // restoreUnchangedToolStripMenuItem - // - this.restoreUnchangedToolStripMenuItem.Name = "restoreUnchangedToolStripMenuItem"; - this.restoreUnchangedToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreUnchangedToolStripMenuItem.Text = "Restore Unchanged"; - this.restoreUnchangedToolStripMenuItem.Click += new System.EventHandler(this.restoreUnchangedToolStripMenuItem_Click); - // - // restoreSelectedToolStripMenuItem - // - this.restoreSelectedToolStripMenuItem.Name = "restoreSelectedToolStripMenuItem"; - this.restoreSelectedToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreSelectedToolStripMenuItem.Text = "Restore Selected (To Process)"; - this.restoreSelectedToolStripMenuItem.Click += new System.EventHandler(this.restoreSelectedToolStripMenuItem_Click); - // - // restoreAllToolStripMenuItem - // - this.restoreAllToolStripMenuItem.Name = "restoreAllToolStripMenuItem"; - this.restoreAllToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreAllToolStripMenuItem.Text = "Restore All"; - this.restoreAllToolStripMenuItem.Click += new System.EventHandler(this.restoreAllToolStripMenuItem_Click); - // - // frmSync - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(759, 446); - this.Controls.Add(this.dgv); - this.Controls.Add(this.panel1); - this.Controls.Add(this.statusStrip1); - this.Controls.Add(this.menuStrip1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MainMenuStrip = this.menuStrip1; - this.Name = "frmSync"; - this.Text = "Volian Sync"; - this.Load += new System.EventHandler(this.frmSync_Load); - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmSync_FormClosing); - this.LocationChanged += new System.EventHandler(this.frmSync_LocationChanged); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv)).EndInit(); - this.cms.ResumeLayout(false); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Button btnBrwsDev; - private System.Windows.Forms.TextBox tbDevelopment; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button btnBrwsMail; - private System.Windows.Forms.TextBox tbMailBox; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Button btnBrwsSS; - private System.Windows.Forms.TextBox tbSourceSafe; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.FolderBrowserDialog fbd; - private System.Windows.Forms.DataGridView dgv; - private System.Windows.Forms.Button btnBrwsSSMail; - private System.Windows.Forms.TextBox tbSSMailBox; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.MenuStrip menuStrip1; - private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem mailboxToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem buildToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem findToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem checkedOutToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem differentToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem sourceSafeToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreUnchangedToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreSelectedToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreAllToolStripMenuItem; - private System.Windows.Forms.ContextMenuStrip cms; - private System.Windows.Forms.ToolStripMenuItem compareToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem contentDifferentToolStripMenuItem; - } -} - diff --git a/PROMS/Sync/Sync/frmSync.cs b/PROMS/Sync/Sync/frmSync.cs deleted file mode 100644 index 995fc7bf..00000000 --- a/PROMS/Sync/Sync/frmSync.cs +++ /dev/null @@ -1,774 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; -using System.Xml; -using SevenZip; - -namespace Sync -{ - public partial class frmSync : Form - { - private List _CheckedOut; - private bool IsLoading = false; - private float _DPI=100; - public frmSync() - { - InitializeComponent(); - using (Graphics gr = CreateGraphics()) - _DPI = gr.DpiX; - } - private void LoadSettings() - { - if (Properties.Settings.Default["Location"] != null) - Location = Properties.Settings.Default.Location; - if (Properties.Settings.Default["Size"] != null) - Size = Properties.Settings.Default.Size; - if (Properties.Settings.Default.DevelopmentFolder != "") - tbDevelopment.Text = Properties.Settings.Default.DevelopmentFolder; - if (Properties.Settings.Default.SourceSafeFolder != "") - tbSourceSafe.Text = Properties.Settings.Default.SourceSafeFolder; - if(Properties.Settings.Default.MailBoxDevelopmentFolder != "") - tbMailBox.Text = Properties.Settings.Default.MailBoxDevelopmentFolder; - if (Properties.Settings.Default.MailBoxSourceSafeFolder != "") - tbSSMailBox.Text = Properties.Settings.Default.MailBoxSourceSafeFolder; - } - private void frmSync_Load(object sender, EventArgs e) - { - LoadSettings(); - Setup(); - } - private void Setup() - { - // Setup Browse Buttons - btnBrwsDev.Tag = this.tbDevelopment; - btnBrwsSS.Tag = this.tbSourceSafe; - btnBrwsMail.Tag = this.tbMailBox; - btnBrwsSSMail.Tag = this.tbSSMailBox; - - } - private void btnBrowse_Click(object sender, EventArgs e) - { - TextBox tb = (TextBox)((Button)sender).Tag; - fbd.SelectedPath = tb.Text; - if (fbd.ShowDialog() == DialogResult.OK) - tb.Text = fbd.SelectedPath; - } - private void ClearResults() - { - _CheckedOut = new List(); - dgv.DataSource = null; - Application.DoEvents(); - } - private void FindCheckedOut(DirectoryInfo di) - { - FindCheckedOut(di.GetFiles()); - FindCheckedOut(di.GetDirectories()); - } - private void FindCheckedOut(DirectoryInfo[] directoryInfoList) - { - foreach (DirectoryInfo di in directoryInfoList) - FindCheckedOut(di); - } - private void FindCheckedOut(FileInfo[] fileInfoList) - { - foreach (FileInfo fi in fileInfoList) - FindCheckedOut(fi); - } - private void FindCheckedOut(FileInfo fi) - { - if (fi.Name.ToLower().EndsWith("scc")) return; - if (fi.Name.ToLower().EndsWith("sln")) return; - if (fi.Name.ToLower().EndsWith("config")) return; // exclude app.config - if (fi.Name.ToLower().EndsWith("dll")) return; // exclude dll's - if (fi.Name.ToLower().EndsWith("7z")) return; // exclude 7-zips - - if (fi.Name.ToLower().EndsWith("csproj")) - { - // Find files that have been added to the new Project - List compileList = GetCompileList(fi.FullName); - FileInfo fi1csproj = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if (fi1csproj.Exists) - { - List compileList1 = GetCompileList(fi1csproj.FullName); - CompareLists(compileList, compileList1, fi, fi1csproj); - } - return; - } - if (fi.Name.ToLower().EndsWith("licx")) return; - FileInfo fi1 = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if ((fi1.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly) - AddToResults(fi, fi1); - } - - private void CompareLists(List compileList, List compileList1, FileInfo fi, FileInfo fi1) - { - // If anything is in compileList1 and not in CompileList add it to the results - foreach (string filename in compileList1) - if (!compileList.Contains(filename)) - AddToResults(fi, fi1, filename); - } - private void AddToResults(FileInfo fi, FileInfo fi1, string filename) - { - FileInfo newfi = new FileInfo(fi.DirectoryName + "/" + filename); - FileInfo newfi1 = new FileInfo(fi1.DirectoryName + "/" + filename); - if(!newfi.Exists)AddToResults(newfi, newfi1); // Only add if the file does not exist - } - private List GetCompileList(string fileName) - { - List retval = new List(); - XmlDocument doc = new XmlDocument(); - doc.Load(fileName); - XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); - foreach (XmlAttribute attrib in doc.DocumentElement.Attributes) - if (attrib.Name == "xmlns") - nsmgr.AddNamespace("ns", attrib.Value); - XmlNodeList xl = doc.DocumentElement.SelectNodes(@"//ns:Compile/@Include",nsmgr); - foreach (XmlAttribute xa in xl) - retval.Add(xa.Value); - xl = doc.DocumentElement.SelectNodes(@"//ns:Content/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - { - if (xa.Value.ToUpper().EndsWith("DLL")) - retval.Add(xa.Value); - if (xa.Value.ToUpper().EndsWith("XML")) - retval.Add(xa.Value); - if (xa.Value.ToUpper().EndsWith("SVG")) - retval.Add(xa.Value); - if (xa.Value.ToUpper().EndsWith("BAS")) - retval.Add(xa.Value); - if (xa.Value.ToUpper().EndsWith("XSL")) - retval.Add(xa.Value); - if (xa.Value.ToUpper().Contains("EULA")) - retval.Add(xa.Value); - } - xl = doc.DocumentElement.SelectNodes(@"//ns:EmbeddedResource/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - if (!xa.Value.ToUpper().EndsWith("LICX")) - retval.Add(xa.Value); - xl = doc.DocumentElement.SelectNodes(@"//ns:None/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - { - if(xa.Value.ToUpper().EndsWith("SQL")) - retval.Add(xa.Value); - if (xa.Value.ToUpper().EndsWith("FRM")) - retval.Add(xa.Value); - if (xa.Value.ToUpper().EndsWith("FRX")) - retval.Add(xa.Value); - } - return retval; - } - private void AddToResults(FileInfo fiSS,FileInfo fiDev) - { - FileCompare fc = new FileCompare(fiDev, fiSS); - FileInfo fiMB = new FileInfo(fc.FileName.Replace(tbDevelopment.Text, tbSSMailBox.Text)); - if (fiMB.Exists && fiSS.LastWriteTimeUtc != fiMB.LastWriteTimeUtc) - fc.Merge = true; - //if(!_OnlyContentDifferent || (fc.Different && (fc.DevModified != null))) - if (!_OnlyContentDifferent || (fc.Different)) - _CheckedOut.Add(fc); - //if (tbResults.Text == "") tbResults.Text = "Found:"; - //tbResults.Text += "\r\n" + fiDev.FullName + " - " + ((fiDev.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly ? "" : "ReadOnly"); - } - private void ClearMailBox() - { - DeleteFolder(new DirectoryInfo(tbMailBox.Text)); - DeleteFolder(new DirectoryInfo(tbSSMailBox.Text)); - } - private void DeleteFolder(DirectoryInfo directoryInfo) - { - if (directoryInfo.Exists) - { - AdjustAttributes(directoryInfo); - directoryInfo.Delete(true); - } - } - private void AdjustAttributes(DirectoryInfo directoryInfo) - { - foreach (DirectoryInfo di in directoryInfo.GetDirectories()) - AdjustAttributes(di); - foreach (FileInfo fi in directoryInfo.GetFiles()) - AdjustAttribute(fi); - } - private void AdjustAttribute(FileInfo fi) - { - fi.Attributes &= (fi.Attributes ^ FileAttributes.ReadOnly);// Turn-Off ReadOnly Attribute - fi.Attributes &= (fi.Attributes ^ FileAttributes.Hidden);// Turn-Off Hidden Attribute - } - private void frmSync_FormClosing(object sender, FormClosingEventArgs e) - { - Properties.Settings.Default.Location = Location; - WindowState = FormWindowState.Normal; - Properties.Settings.Default.Size = Size; - Properties.Settings.Default.DevelopmentFolder = tbDevelopment.Text; - Properties.Settings.Default.SourceSafeFolder = tbSourceSafe.Text; - Properties.Settings.Default.MailBoxDevelopmentFolder = tbMailBox.Text; - Properties.Settings.Default.MailBoxSourceSafeFolder = tbSSMailBox.Text; - Properties.Settings.Default.Save(); - } - private void exitToolStripMenuItem_Click(object sender, EventArgs e) - { - this.Close(); - } - private void clearToolStripMenuItem_Click(object sender, EventArgs e) - { - ClearMailBox(); - } - // Build mailbox - private void buildToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearMailBox(); - if (_CheckedOut == null) - checkedOutToolStripMenuItem_Click(sender, e); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) - { - fc.MoveDevToMailBox(tbDevelopment.Text, tbMailBox.Text); - fc.MoveSSToMailBox(tbSourceSafe.Text, tbSSMailBox.Text); - } - } - BuildZipOfMailBox(tbMailBox.Text); - } - private string _RTFFile = null; - public string RTFFile - { - get { return _RTFFile; } - set { _RTFFile = value; } - } - private void BuildZipOfMailBox(string mailbox) - { - SevenZipCompressor.SetLibraryPath(Application.StartupPath + @"\7z.dll"); - SevenZipCompressor cmpr = new SevenZipCompressor(); - cmpr.PreserveDirectoryRoot = true; - string fileDate = DateTime.Now.ToString("yyyyMMdd HHmm"); - RTFFile = string.Format("{0} To SS {1}.Rtf", mailbox, fileDate); - string zipName = string.Format("{0} To SS {1}.7z", mailbox, fileDate); - cmpr.CompressDirectory(mailbox, zipName, "*.*", true); - MessageBox.Show(string.Format("{0} created!", zipName), "Mailbox Zip Created", MessageBoxButtons.OK, MessageBoxIcon.Information); - - //if (System.IO.File.Exists(@"c:\program files\7-zip\7z.exe")) - //{ - // string args = string.Format(@"a -t7z ""{0} To SS {1}.7z"" ""{0}\*.*"" -r", mailbox, DateTime.Now.ToString("yyyyMMdd HHmm")); - // System.Diagnostics.Process p = System.Diagnostics.Process.Start(@"c:\program files\7-zip\7z", args); - // p.WaitForExit(); - //} - //"c:\program files\7-zip\7z" a -t7z "C:\Development\MailBox\Proms To SS 20120424 1850.7z" "C:\Development\MailBox\Proms\*.*" -r - } - private void checkedOutToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindCheckedOut(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - WasSorted = false; - SetColumnWidth(); - } - private void syncAllToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - fc.MoveToDevelopment(); - } - } - private void restoreUnchangedToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if(!fc.Different || fc.DevModified == null) - fc.MoveToDevelopment(); - } - } - private void restoreSelectedToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - DialogResult dr = System.Windows.Forms.DialogResult.No; - dr = MessageBox.Show("This will WIPE OUT ALL changes you had made to the Selected (To Process) Files\r\n\n Are you sure?", "Restore Selected", MessageBoxButtons.YesNo, MessageBoxIcon.Question); - if (dr == DialogResult.Yes) - { - MessageBox.Show("A Zip of your checked out files will be place in your mailbox folder prior to restoring all of your source code", "Restoring All Your Source Code", MessageBoxButtons.OK, MessageBoxIcon.Information); - buildToolStripMenuItem_Click(sender, e); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) fc.MoveToDevelopment(); - } - } - } - private void restoreAllToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - DialogResult dr = System.Windows.Forms.DialogResult.No; - dr = MessageBox.Show("This will WIPE OUT ALL changes you had made to your local code!!!\r\n\n Are you sure?", "Restore All Source Code", MessageBoxButtons.YesNo, MessageBoxIcon.Question); - if (dr == DialogResult.Yes) - { - MessageBox.Show("A Zip of your checked out files will be place in your mailbox folder prior to restoring all of your source code", "Restoring All Your Source Code", MessageBoxButtons.OK, MessageBoxIcon.Information); - buildToolStripMenuItem_Click(sender, e); - foreach (FileCompare fc in _CheckedOut) - { - fc.MoveToDevelopment(); - } - } - } - private List SelectedList - { - get - { - dgv.EndEdit(); - List fcList = new List(); - foreach (DataGridViewCell dgc in dgv.SelectedCells) - { - FileCompare fc = dgv.Rows[dgc.RowIndex].DataBoundItem as FileCompare; - if (fc != null && fcList.Contains(fc) == false) - fcList.Add(fc); - } - return fcList; - } - } - private void compareToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - CompareOneFile(fc.FileName, fc.SSFileName); - } - } - private static void CompareOneFile(string fileDev, string fileSS) - { - Console.WriteLine("Compare {0} and {1}", fileDev, fileSS); - string progname = string.Empty; - if (System.IO.File.Exists(@"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe")) - progname = @"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe"; - if (System.IO.File.Exists(@"C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\UC.exe")) - progname = @"C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\UC.exe"; - // string cmd = string.Format("\"{0}\" -t \"{1}\" \"{2}\"", progname, fc.FileName, fc.SSFileName); - System.Diagnostics.ProcessStartInfo psi = - new System.Diagnostics.ProcessStartInfo(progname, string.Format(@" -t ""{0}"" ""{1}""", fileDev, fileSS)); - System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi); - } - private void restoreToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - fc.MoveToDevelopment(); - } - } - private bool _ExcludeSolutions = true; - private void differentAllToolStripMenuItem_Click(object sender, EventArgs e) - { - _ExcludeSolutions = false; - dgv.EndEdit(); - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - WasSorted = false; - SetColumnWidth(); - _ExcludeSolutions = true; - } - private void differentToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void SetColumnWidth() - { - IsLoading = true; - if (Properties.Settings.Default["Widths"] == null) - { - dgv.Columns[0].Width = 60; - dgv.Columns[1].Visible = false; - dgv.Columns[2].Width = 125; - dgv.Columns[3].Width = 125; - dgv.Columns[4].Width = 50; - dgv.Columns[5].Width = 500; - } - else - { - for (int i = 0; i < Properties.Settings.Default.Widths.Count; i++) - { - string sWidth = Properties.Settings.Default.Widths[i]; - if (sWidth == "Invisible") - dgv.Columns[i].Visible = false; - else - dgv.Columns[i].Width = int.Parse(sWidth); - } - } - dgv.Columns[1].Visible = false; - IsLoading = false; - } - private void FindDifferent(DirectoryInfo di) - { - FindDifferent(di.GetFiles()); - FindDifferent(di.GetDirectories()); - } - private void FindDifferent(DirectoryInfo[] directoryInfoList) - { - foreach (DirectoryInfo di in directoryInfoList) - FindDifferent(di); - } - private void FindDifferent(FileInfo[] fileInfoList) - { - foreach (FileInfo fi in fileInfoList) - FindDifferent(fi); - } - private void FindDifferent(FileInfo fi) - { - if (fi.Name.ToLower().EndsWith("scc")) return; - if (_ExcludeSolutions && fi.Name.ToLower().EndsWith("sln")) return; - if (_ExcludeSolutions && fi.Name.ToLower().EndsWith("csproj")) - { - // Find files that have been added to the new Project - List compileList = GetCompileList(fi.FullName); - FileInfo fi1csproj = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if (fi1csproj.Exists) - { - List compileList1 = GetCompileList(fi1csproj.FullName); - CompareLists(compileList, compileList1, fi, fi1csproj); - } - if(_ExcludeSolutions ) return; - } - if (fi.Name.ToLower().EndsWith("licx")) return; - if (fi.Name.ToLower().EndsWith("config")) return; // exclude app.config - if (fi.Name.ToLower().EndsWith("dll")) return; // exclude dll's - if (fi.Name.ToLower().EndsWith("7z")) return; // exclude 7-zips - FileInfo fiD = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - FileInfo fiS = fi; - // Only check Read-Only flag, other attributes are unimportant - if (fiS.LastWriteTimeUtc != fiD.LastWriteTimeUtc || (fiS.Attributes & FileAttributes.ReadOnly ) != (fiD.Attributes & FileAttributes.ReadOnly )) - AddToResults(fi, fiD); - } - private void dgv_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) - { - if (!IsLoading) - { - System.Collections.Specialized.StringCollection widths = new System.Collections.Specialized.StringCollection(); - foreach (DataGridViewColumn col in dgv.Columns) - widths.Add(col.Visible ? col.Width.ToString() : "Invisible"); - Properties.Settings.Default.Widths = widths; - Properties.Settings.Default.Save(); - } - } - private bool _OnlyContentDifferent = false; - private void contentDifferentToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearResults(); - _OnlyContentDifferent = true; - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - _OnlyContentDifferent = false; - dgv.DataSource = _CheckedOut; - WasSorted = false; - SetColumnWidth(); - } - private void frmSync_LocationChanged(object sender, EventArgs e) - { - Rectangle rec = Screen.GetWorkingArea(this); - int newLeft = Left; - int newTop = Top; - if (Math.Abs(Left - rec.X) < 10) newLeft = rec.X; - if (Math.Abs(Top - rec.Y) < 10) newTop = rec.Y; - if (Math.Abs(rec.X + rec.Width - Right) < 10) newLeft = rec.X + rec.Width - Width; - if (Math.Abs(rec.Y + rec.Height - Bottom) < 10) newTop = rec.Y + rec.Height - Height; - if (newTop != Top || newLeft != Left) - Location = new Point(newLeft, newTop); - } - private void restoreReadOnlyToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ReadOnly) fc.MoveToDevelopment(); - } - differentToolStripMenuItem_Click(sender, e); // do a find different again to reset the list - } - private void listToClipboardToolStripMenuItem_Click(object sender, EventArgs e) - { - RichTextBox rtb = new RichTextBox(); - Font fntNormal = new Font("Arial", 10, FontStyle.Regular); - rtb.Font = fntNormal; - Font fntBold = new Font("Arial", 12, FontStyle.Bold); - Font fntWing = new Font("Wingdings 2", 11, FontStyle.Regular); - Font fntItalic = new Font("Arial", 11, FontStyle.Italic); - Font fntBoldItalic = new Font("Arial", 14, FontStyle.Bold | FontStyle.Italic); - StringBuilder sb = new StringBuilder(); - dgv.EndEdit(); - sb.Append("Applicability:\r\n\r\n"); - AddText(rtb, fntBold, "Applicability:"); - AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n"); - if (HasFmtXML(_CheckedOut)) - { - sb.Append("* This change includes format changes which must be loaded into the databases.\r\n\r\n"); - AddText(rtb, fntBoldItalic, "*\tThis change includes format changes\r\n\twhich must be loaded into the databases.",Color.Orange); - AddText(rtb, fntNormal, "\r\n\r\n",Color.Black); - } - if (HasFormats(_CheckedOut)) - { - sb.Append("* This change includes format changes which must be loaded into the databases.\r\n\r\n"); - AddText(rtb, fntBoldItalic, "*\tThis change includes format changes\r\n\twhich must be loaded into the databases.", Color.Orange); - AddText(rtb, fntNormal, "\r\n\r\n", Color.Black); - } - if (HasPromsFixes(_CheckedOut)) - { - sb.Append("* This change includes changes to PROMSFixes.SQL which must be loaded into the databases.\r\n\r\n"); - AddText(rtb, fntBoldItalic, "*\tThis change includes changes to PROMSFixes.SQL\r\n\twhich must be loaded into the databases.\r\n\r\n", Color.Red); - AddText(rtb, fntNormal, "\r\n\r\n", Color.Black); - } - sb.Append("\r\nInternal Data Fixes:\r\n\r\n"); - AddText(rtb, fntBold, "Internal Data Fixes:"); - AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n",Color.Magenta); - sb.Append("Code Changes:\r\n\r\n"); - AddText(rtb, fntBold, "Code Changes:"); - AddText(rtb, fntNormal, "\r\n\r\n"); - int lenFolder = tbDevelopment.Text.Length; - string lastFolder = ""; - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) - { - FileInfo fi = new FileInfo(fc.FileName); - FileInfo fis = new FileInfo(fc.SSFileName); - string folder = fi.Directory.FullName.Substring(lenFolder + 1); - if (folder != lastFolder) - { - sb.Append(folder + ":\r\n"); - AddText(rtb, fntItalic, folder + ":\r\n"); - lastFolder = folder; - } - sb.Append((fis.Exists ? "" : " =>NEW") + "\t" + fi.Name + "\r\n"); - AddText(rtb, fntNormal, (fis.Exists ? "" : " =>NEW") + "\t" + fi.Name + "\r\n"); - AddIndent(rtb); - } - } - sb.Append("\r\nInternal Release:\r\n\r\n"); - sb.Append("\r\nGeneric External Release:\r\n\r\n"); - sb.Append("\r\nPlant Specific Information for Release Letter:\r\n\r\n"); - sb.Append("\r\nTesting Performed:\r\n\r\n"); - sb.Append("\r\nTesting Requirements:\r\n\r\n"); - sb.Append("\r\nChanges/Additions to User Documentation:\r\n\r\n"); - - AddText(rtb, fntNormal, "\r\n"); - AddText(rtb, fntBold, "Internal Release:"); - AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n"); - AddText(rtb, fntBold, "Generic External Release:"); - AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n"); - AddText(rtb, fntBold, "Plant Specific Information for Release Letter:"); - AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n"); - AddText(rtb, fntBold, "Testing Performed:"); - AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n"); - AddText(rtb, fntBold, "Testing Requirements:"); - AddText(rtb, fntNormal, "\r\n\r\n"); - AddText(rtb, fntWing, "\x51\x52\xA3"); - AddText(rtb, fntNormal, " Sample Checkboxes"); - AddText(rtb, fntNormal, "\r\n\r\n"); - AddText(rtb, fntBold, "Changes/Additions to User Documentation:"); - AddText(rtb, fntNormal, "\r\n\r\n"); - try - { - Clipboard.Clear(); - DataObject dao = new DataObject(); - dao.SetData(DataFormats.Text,sb.ToString()); - dao.SetData(DataFormats.Rtf, rtb.Rtf); - Clipboard.SetDataObject(dao, true, 10, 500); - if (RTFFile != null) - { - rtb.SaveFile(RTFFile); - System.Diagnostics.Process.Start(RTFFile); - } - else - MessageBox.Show(sb.ToString(), "Copied to Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - catch (Exception ex) - { - StringBuilder sb2 = new StringBuilder(); - string prefix = ""; - while (ex != null) - { - sb2.AppendLine(string.Format("{0}{1} - {2}",prefix, ex.GetType().Name, ex.Message)); - prefix += " "; - } - MessageBox.Show(sb2.ToString(), "Error saving Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private bool HasPromsFixes(List _CheckedOut) - { - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess && fc.FileName.ToLower().Contains("promsfixes.sql")) - return true; - } - return false; - } - - private bool HasFmtXML(List _CheckedOut) - { - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess && fc.FileName.ToLower().Contains("\\fmtxml\\")) - return true; - } - return false; - } - private bool HasFormats(List _CheckedOut) - { - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess && fc.FileName.ToLower().Contains("\\formats\\")) - return true; - } - return false; - } - private void AddIndent(RichTextBox rtb) - { - rtb.Select(rtb.TextLength, 0); - rtb.SelectionIndent = (int) _DPI; - rtb.SelectedText = "\r\n"; - rtb.Select(rtb.TextLength, 0); - rtb.SelectionIndent = 0; - } - private static void AddText(RichTextBox rtb, Font font, string txt) - { - rtb.Select(rtb.TextLength, 0); - rtb.SelectionFont = font; - rtb.SelectedText = txt; - } - private static void AddText(RichTextBox rtb, Font font, string txt, Color myColor) - { - rtb.Select(rtb.TextLength, 0); - rtb.SelectionFont = font; - rtb.SelectionColor = myColor; - rtb.SelectedText = txt; - rtb.Select(rtb.TextLength, 0); - rtb.SelectionColor = Color.Black; - } - private void dgv_MouseDown(object sender, MouseEventArgs e) - { - dgv.ClearSelection(); - DataGridView.HitTestInfo info = dgv.HitTest(e.X, e.Y); - if (info.RowIndex < 0) return; - dgv.CurrentCell = dgv[0, info.RowIndex]; - dgv.Rows[info.RowIndex].Selected = true; - } - - private void selectAllToolStripMenuItem_Click(object sender, EventArgs e) - { - if (_CheckedOut == null || _CheckedOut.Count == 0) - { - MessageBox.Show("Don't you really think you should get a list first!", "Hey Moron!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop); - return; - } - foreach (FileCompare fc in _CheckedOut) fc.ToProcess = true; - dgv.Refresh(); - } - - private void selectNoneToolStripMenuItem_Click(object sender, EventArgs e) - { - if (_CheckedOut == null || _CheckedOut.Count == 0) - { - MessageBox.Show("Don't you really think you should get a list first!", "Hey Moron!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop); - return; - } - foreach (FileCompare fc in _CheckedOut) fc.ToProcess = false; - dgv.Refresh(); - } - - private void compareSourceSafeToolStripMenuItem_Click(object sender, EventArgs e) - { - // Compare SS version with SS version from Mailbox - dgv.EndEdit(); - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - CompareOneFile(fc.SSFileName, fc.SSFileName.Replace(tbSourceSafe.Text, tbSSMailBox.Text)); - } - } - - private void compareMailboxToolStripMenuItem_Click(object sender, EventArgs e) - { - // Compare MailBox version with Mailbox Source Safe version - dgv.EndEdit(); - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - CompareOneFile(fc.FileName, fc.FileName.Replace(tbDevelopment.Text, tbSSMailBox.Text)); - } - } - class DescComparer : IComparer - { - public int Compare(T x, T y) - { - return Comparer.Default.Compare(y, x); - } - } - class FwdComparer : IComparer - { - public int Compare(T x, T y) - { - return Comparer.Default.Compare(x, y); - } - } - bool WasSorted = false; - void dgv_ColumnHeaderMouseClick(object sender, System.Windows.Forms.DataGridViewCellMouseEventArgs e) - { - IComparer iCmp= null; - if(WasSorted) - iCmp = new DescComparer(); - else - iCmp = new FwdComparer(); - WasSorted = !WasSorted; - SortedList sorted = new SortedList(iCmp); - List fcnew = new List(); - //ComparerDevModified myComparer = new ComparerDevModified(); - switch (e.ColumnIndex) - { - case 1: - dgv.DataSource = _CheckedOut; - break; - case 2: - foreach (FileCompare fc in _CheckedOut) - sorted.Add(GetUniqueDateTime(sorted,fc.DevModified), fc); - foreach (FileCompare fc in sorted.Values) - fcnew.Add(fc); - dgv.DataSource = fcnew; - break; - case 3: - foreach (FileCompare fc in _CheckedOut) - sorted.Add(GetUniqueDateTime(sorted,fc.SSModified), fc); - foreach (FileCompare fc in sorted.Values) - fcnew.Add(fc); - dgv.DataSource = fcnew; - break; - } - SetColumnWidth(); - } - - private DateTime GetUniqueDateTime(SortedList sorted, DateTime? dt) - { - DateTime dtUnique = dt ?? DateTime.Now; - while (sorted.Keys.Contains(dtUnique)) - dtUnique += TimeSpan.FromTicks(1); - return dtUnique; - } - } -} diff --git a/PROMS/Sync/Sync/frmSync.cs.bak b/PROMS/Sync/Sync/frmSync.cs.bak deleted file mode 100644 index 36cfb160..00000000 --- a/PROMS/Sync/Sync/frmSync.cs.bak +++ /dev/null @@ -1,321 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; - - -namespace Sync -{ - public partial class frmSync : Form - { - private List _CheckedOut; - private bool IsLoading = false; - public frmSync() - { - InitializeComponent(); - } - private void LoadSettings() - { - if (Properties.Settings.Default["Location"] != null) - Location = Properties.Settings.Default.Location; - if (Properties.Settings.Default["Size"] != null) - Size = Properties.Settings.Default.Size; - if (Properties.Settings.Default.DevelopmentFolder != "") - tbDevelopment.Text = Properties.Settings.Default.DevelopmentFolder; - if (Properties.Settings.Default.SourceSafeFolder != "") - tbSourceSafe.Text = Properties.Settings.Default.SourceSafeFolder; - if(Properties.Settings.Default.MailBoxDevelopmentFolder != "") - tbMailBox.Text = Properties.Settings.Default.MailBoxDevelopmentFolder; - if (Properties.Settings.Default.MailBoxSourceSafeFolder != "") - tbSSMailBox.Text = Properties.Settings.Default.MailBoxSourceSafeFolder; - } - private void frmSync_Load(object sender, EventArgs e) - { - LoadSettings(); - Setup(); - } - private void Setup() - { - // Setup Browse Buttons - btnBrwsDev.Tag = this.tbDevelopment; - btnBrwsSS.Tag = this.tbSourceSafe; - btnBrwsMail.Tag = this.tbMailBox; - btnBrwsSSMail.Tag = this.tbSSMailBox; - } - private void btnBrowse_Click(object sender, EventArgs e) - { - TextBox tb = (TextBox)((Button)sender).Tag; - fbd.SelectedPath = tb.Text; - if (fbd.ShowDialog() == DialogResult.OK) - tb.Text = fbd.SelectedPath; - } - private void ClearResults() - { - _CheckedOut = new List(); - } - private void FindCheckedOut(DirectoryInfo di) - { - FindCheckedOut(di.GetFiles()); - FindCheckedOut(di.GetDirectories()); - } - private void FindCheckedOut(DirectoryInfo[] directoryInfoList) - { - foreach (DirectoryInfo di in directoryInfoList) - FindCheckedOut(di); - } - private void FindCheckedOut(FileInfo[] fileInfoList) - { - foreach (FileInfo fi in fileInfoList) - FindCheckedOut(fi); - } - private void FindCheckedOut(FileInfo fi) - { - if (fi.Name.ToLower().EndsWith("scc")) return; - if (fi.Name.ToLower().EndsWith("sln")) return; - if (fi.Name.ToLower().EndsWith("csproj")) return; - if (fi.Name.ToLower().EndsWith("licx")) return; - FileInfo fi1 = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if ((fi1.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly) - AddToResults(fi, fi1); - } - private void AddToResults(FileInfo fiSS,FileInfo fiDev) - { - FileCompare fc = new FileCompare(fiDev, fiSS); - if(!_OnlyContentDifferent || (fc.Different && (fc.DevModified != null))) - _CheckedOut.Add(fc); - //if (tbResults.Text == "") tbResults.Text = "Found:"; - //tbResults.Text += "\r\n" + fiDev.FullName + " - " + ((fiDev.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly ? "" : "ReadOnly"); - } - private void ClearMailBox() - { - DeleteFolder(new DirectoryInfo(tbMailBox.Text)); - DeleteFolder(new DirectoryInfo(tbSSMailBox.Text)); - } - private void DeleteFolder(DirectoryInfo directoryInfo) - { - if (directoryInfo.Exists) - { - AdjustAttributes(directoryInfo); - directoryInfo.Delete(true); - } - } - private void AdjustAttributes(DirectoryInfo directoryInfo) - { - foreach (DirectoryInfo di in directoryInfo.GetDirectories()) - AdjustAttributes(di); - foreach (FileInfo fi in directoryInfo.GetFiles()) - AdjustAttribute(fi); - } - private void AdjustAttribute(FileInfo fi) - { - if ((fi.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) - fi.Attributes = fi.Attributes ^ FileAttributes.ReadOnly; - } - private void frmSync_FormClosing(object sender, FormClosingEventArgs e) - { - Properties.Settings.Default.Location = Location; - Properties.Settings.Default.Size = Size; - Properties.Settings.Default.DevelopmentFolder = tbDevelopment.Text; - Properties.Settings.Default.SourceSafeFolder = tbSourceSafe.Text; - Properties.Settings.Default.MailBoxDevelopmentFolder = tbMailBox.Text; - Properties.Settings.Default.MailBoxSourceSafeFolder = tbSSMailBox.Text; - Properties.Settings.Default.Save(); - } - private void exitToolStripMenuItem_Click(object sender, EventArgs e) - { - this.Close(); - } - private void clearToolStripMenuItem_Click(object sender, EventArgs e) - { - ClearMailBox(); - } - private void buildToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearMailBox(); - if (_CheckedOut == null) - checkedOutToolStripMenuItem_Click(sender, e); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) - { - fc.MoveDevToMailBox(tbDevelopment.Text, tbMailBox.Text); - fc.MoveSSToMailBox(tbSourceSafe.Text, tbSSMailBox.Text); - } - } - } - private void checkedOutToolStripMenuItem_Click(object sender, EventArgs e) - { - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindCheckedOut(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void syncAllToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - fc.MoveToDevelopment(); - } - } - private void restoreUnchangedToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if(!fc.Different || fc.DevModified == null) - fc.MoveToDevelopment(); - } - } - private void restoreSelectedToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) fc.MoveToDevelopment(); - } - } - private void restoreAllToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - fc.MoveToDevelopment(); - } - } - private List SelectedList - { - get - { - dgv.EndEdit(); - List fcList = new List(); - foreach (DataGridViewCell dgc in dgv.SelectedCells) - { - FileCompare fc = dgv.Rows[dgc.RowIndex].DataBoundItem as FileCompare; - if (fc != null && fcList.Contains(fc) == false) - fcList.Add(fc); - } - return fcList; - } - } - private void compareToolStripMenuItem_Click(object sender, EventArgs e) - { - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - Console.WriteLine("Compare {0} and {1}", fc.FileName, fc.SSFileName); - string cmd = string.Format("\"C:\\Program Files\\IDM Computer Solutions\\UltraCompare\\UC.exe\" -t \"{0}\" \"{1}\"", fc.FileName, fc.SSFileName); - System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(@"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe", - string.Format(@" -t ""{0}"" ""{1}""", fc.FileName, fc.SSFileName)); - System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi); - } - } - private void restoreToolStripMenuItem_Click(object sender, EventArgs e) - { - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - fc.MoveToDevelopment(); - } - } - private void differentToolStripMenuItem_Click(object sender, EventArgs e) - { - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void SetColumnWidth() - { - IsLoading = true; - if (Properties.Settings.Default["Widths"] == null) - { - dgv.Columns[0].Width = 60; - dgv.Columns[1].Visible = false; - dgv.Columns[2].Width = 125; - dgv.Columns[3].Width = 125; - dgv.Columns[4].Width = 50; - dgv.Columns[5].Width = 500; - } - else - { - for (int i = 0; i < Properties.Settings.Default.Widths.Count; i++) - { - string sWidth = Properties.Settings.Default.Widths[i]; - if (sWidth == "Invisible") - dgv.Columns[i].Visible = false; - else - dgv.Columns[i].Width = int.Parse(sWidth); - } - } - dgv.Columns[1].Visible = false; - IsLoading = false; - } - private void FindDifferent(DirectoryInfo di) - { - FindDifferent(di.GetFiles()); - FindDifferent(di.GetDirectories()); - } - private void FindDifferent(DirectoryInfo[] directoryInfoList) - { - foreach (DirectoryInfo di in directoryInfoList) - FindDifferent(di); - } - private void FindDifferent(FileInfo[] fileInfoList) - { - foreach (FileInfo fi in fileInfoList) - FindDifferent(fi); - } - private void FindDifferent(FileInfo fi) - { - if (fi.Name.ToLower().EndsWith("scc")) return; - if (fi.Name.ToLower().EndsWith("sln")) return; - if (fi.Name.ToLower().EndsWith("csproj")) return; - if (fi.Name.ToLower().EndsWith("licx")) return; - FileInfo fiD = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - FileInfo fiS = fi; - // Only check Read-Only flag, other attributes are unimportant - if (fiS.LastWriteTimeUtc != fiD.LastWriteTimeUtc || (fiS.Attributes & FileAttributes.ReadOnly ) != (fiD.Attributes & FileAttributes.ReadOnly )) - AddToResults(fi, fiD); - } - private void dgv_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) - { - if (!IsLoading) - { - System.Collections.Specialized.StringCollection widths = new System.Collections.Specialized.StringCollection(); - foreach (DataGridViewColumn col in dgv.Columns) - widths.Add(col.Visible ? col.Width.ToString() : "Invisible"); - Properties.Settings.Default.Widths = widths; - Properties.Settings.Default.Save(); - } - } - private bool _OnlyContentDifferent = false; - private void contentDifferentToolStripMenuItem_Click(object sender, EventArgs e) - { - ClearResults(); - _OnlyContentDifferent = true; - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - _OnlyContentDifferent = false; - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void frmSync_LocationChanged(object sender, EventArgs e) - { - Rectangle rec = Screen.GetWorkingArea(this); - if (Math.Abs(Left - rec.X) < 10) Left = rec.X; - if (Math.Abs(Top - rec.Y) < 10) Top = rec.Y; - if (Math.Abs(rec.X + rec.Width - Right) < 10) Left = rec.X + rec.Width - Width; - if (Math.Abs(rec.Y + rec.Height - Bottom) < 10) Top = rec.Y + rec.Height - Height; - } - } -} \ No newline at end of file diff --git a/PROMS/Sync/Sync/frmSync.resx b/PROMS/Sync/Sync/frmSync.resx deleted file mode 100644 index 88d339a7..00000000 --- a/PROMS/Sync/Sync/frmSync.resx +++ /dev/null @@ -1,1519 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - 17, 17 - - - 303, 17 - - - 84, 17 - - - 194, 17 - - - 33 - - - - - AAABAAQAgIAAAAEAIAAoCAEARgAAADAwAAABACAAqCUAAG4IAQAgIAAAAQAgAKgQAAAWLgEAEBAAAAEA - IABoBAAAvj4BACgAAACAAAAAAAEAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAwAA - AAYAAAAIAAAACgAAAA0AAAAPAAAAEAAAABEAAAATAAAAEwAAABQAAAAUAAAAEwAAABMAAAARAAAAEAAA - AA8AAAANAAAACgAAAAgAAAAGAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAAwAAAAYAAAAKAAAADgAAABMAAAAZAAAAIAAAACUAAAArAAAALgAAADMAAAA2AAAAOAAA - ADoAAAA8AAAAPQAAAD0AAAA8AAAAOgAAADgAAAA2AAAAMwAAAC4AAAArAAAAJQAAACAAAAAZAAAAEwAA - AA4AAAAKAAAABgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAACgAAABAAAAAXAAAAHwAAACgAAAAxAAAAOwAA - AEYAAABPAAAAWAAAAGAAAABmAAAAbAAAAHAAAAB0AAAAeAAAAHoAAAB8AAAAfAAAAHoAAAB4AAAAdAAA - AHAAAABsAAAAZgAAAGAAAABYAAAATwAAAEYAAAA7AAAAMQAAACgAAAAfAAAAFwAAABAAAAAKAAAABAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAKAAAAEQAA - ABwAAAAnAAAANAAAAEEAAABPAAAAXQAAAGoAAAB4ExMTkiQkJKotLS27NTU1yT09PddGRkbjS0tL6VBQ - UO9UVFT0WVlZ+llZWfpZWVn6WVlZ+lRUVPRQUFDvS0tL6UZGRuM9PT3XNjY2yS0tLbskJCSqExMTkgAA - AHgAAABqAAAAXQAAAE8AAABBAAAANAAAACcAAAAcAAAAEQAAAAoAAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAAwAAAAcAAAAPAAAAGQAAACcAAAA2AAAARwAAAFkAAABqDw8PiBoaGqMwMDDEQ0ND4E1N - Te9WVlb4Xl5e/2RkZP9vb2//fHx8/4iIiP+RkZH/mZmZ/6Ghof+np6f/q6ur/6urq/+np6f/oaGh/5qa - mv+SkpL/iIiI/3x8fP9wcHD/ZGRk/19fX/9XV1f4Tk5O70REROAxMTHEHBwcow8PD4gAAABqAAAAWQAA - AEcAAAA2AAAAJwAAABkAAAAPAAAABwAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAAoAAAATAAAAIQAAADEAAABEAAAAWAAA - AG4RERGRLS0tv0FBQd5RUVH1XFxc/2lpaf+AgID/l5eX/6ysrP++vr7/y8vL/9XV1f/d3d3/5ubm/+zs - 7P/x8fH/9vb2//n5+f/6+vr/+vr6//n5+f/29vb/8vLy/+3t7f/m5ub/39/f/9fX1//Nzc3/v7+//66u - rv+Xl5f/goKC/2pqav9dXV3/UVFR9UFBQd4tLS2/ERERkQAAAG4AAABYAAAARAAAADEAAAAhAAAAEwAA - AAoAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAA - AAoAAAAVAAAAJQAAADkAAABPAAAAZg4ODooqKiq7QkJC41VVVfxkZGT/fn5+/52dnf+3t7f/zc3N/93d - 3f/o6Oj/8fHx//f39//6+vr/+/v7//z8/P/8/Pz//v7+//7+/v////////////////////////////// - //////////////7+/v/+/v7//v7+//v7+//6+vr/9PT0/+vr6//f39//z8/P/7i4uP+enp7/gYGB/2Vl - Zf9WVlb8Q0ND4y0tLbsODg6KAAAAZgAAAE8AAAA5AAAAJQAAABUAAAAKAAAABAAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAoAAAAVAAAAJgAAADwAAABVAAAAbxkZGaI7OzvYTk5O9mJi - Yv+BgYH/o6Oj/8HBwf/X19f/5+fn//Hx8f/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//z8 - /P/+/v7//v7+/////////////////////////////////////////////v7+//7+/v/8/Pz//Pz8//v7 - +//7+/v/+vr6//r6+v/39/f/9PT0/+rq6v/a2tr/w8PD/6ampv+EhIT/ZGRk/1BQUPY8PDzYGhoaogAA - AG8AAABVAAAAPAAAACYAAAAVAAAACgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAASAAAAIwAA - ADoAAABVAgICcyMjI7JCQkLlV1dX/3Nzc/+Xl5f/u7u7/9XV1f/l5eX/7e3t//Hx8f/y8vL/9PT0//X1 - 9f/29vb/9/f3//n5+f/6+vr/+/v7//v7+//8/Pz//Pz8//7+/v/+/v7///////////////////////// - ///////////////////+/v7//v7+//z8/P/8/Pz/+/v7//v7+//6+vr/+fn5//n5+f/39/f/9vb2//X1 - 9f/x8fH/6Ojo/9nZ2f+9vb3/m5ub/3V1df9ZWVn/Q0ND5SUlJbICAgJzAAAAVQAAADoAAAAjAAAAEgAA - AAcAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAANAAAAHAAAADQAAABQAAAAbiQkJLBDQ0PpXFxc/319ff+mpqb/yMjI/9zc - 3P/n5+f/6+vr/+3t7f/w8PD/8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6+v/6+vr/+/v7//z8 - /P/8/Pz//v7+//7+/v///////////////////////////////////////v7+//7+/v/+/v7//Pz8//z8 - /P/7+/v/+/v7//r6+v/5+fn/9/f3//f39//29vb/9fX1//T09P/y8vL/8PDw/+zs7P/h4eH/zc3N/6mp - qf+BgYH/XV1d/0ZGRukkJCSwAAAAbgAAAFAAAAA0AAAAHAAAAA0AAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAJAAAAFgAAACsAAABGAAAAZRoa - GqFBQUHnW1tb/4CAgP+pqan/y8vL/9/f3//m5ub/6Ojo/+vr6//s7Oz/7e3t/+/v7//x8fH/8vLy//T0 - 9P/19fX/9vb2//f39//5+fn/+vr6//r6+v/7+/v//Pz8//z8/P/+/v7//v7+//7+/v////////////// - ///////////////////+/v7//v7+//7+/v/8/Pz//Pz8//v7+//7+/v/+vr6//n5+f/39/f/9vb2//X1 - 9f/09PT/9PT0//Ly8v/w8PD/7+/v/+3t7f/r6+v/4uLi/9DQ0P+urq7/g4OD/11dXf9DQ0PnHBwcowAA - AGUAAABGAAAAKwAAABYAAAAJAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAEAAAADgAAACAAAAA6AAAAWQ8PD4g0NDTUUlJS/nl5ef+mpqb/x8fH/9vb2//i4uL/5eXl/+fn - 5//o6Oj/6urq/+vr6//t7e3/7+/v//Dw8P/x8fH/8vLy//T09P/19fX/9/f3//f39//5+fn/+vr6//v7 - +//8/Pz//Pz8//7+/v/+/v7//v7+//////////////////////////////////7+/v/+/v7//v7+//z8 - /P/8/Pz/+/v7//r6+v/6+vr/+fn5//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/v7+//7e3t/+zs - 7P/r6+v/5+fn/+Dg4P/Nzc3/qamp/3x8fP9VVVX+Nzc31A8PD4gAAABZAAAAOgAAACAAAAAOAAAABAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABwAAABQAAAArAAAASQAAAG0mJia4SEhI9Gxs - bP+ZmZn/v7+//9XV1f/f39//4eHh/+Li4v/l5eX/5ubm/+fn5//q6ur/6+vr/+zs7P/t7e3/8PDw//Hx - 8f/y8vL/9PT0//X19f/29vb/9/f3//n5+f/6+vr/+/v7//v7+//8/Pz//v7+//7+/v/+/v7///////// - /////////////////////////v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+vr6//n5+f/5+fn/9/f3//b2 - 9v/19fX/9PT0//Ly8v/x8fH/8PDw/+/v7//s7Oz/6+vr/+rq6v/o6Oj/5+fn/+Tk5P/b29v/xMTE/52d - nf9wcHD/SUlJ9CgoKLgAAABtAAAASQAAACsAAAAUAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAoAAAAbAAAANQAAAFgRERGPPDw84l5eXv+FhYX/sLCw/83Nzf/Z2dn/3Nzc/9/f3//g4OD/4uLi/+Tk - 5P/l5eX/5+fn/+jo6P/q6ur/7Ozs/+3t7f/v7+//8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6 - +v/7+/v/+/v7//z8/P/+/v7//v7+//7+/v/////////////////////////////////+/v7//v7+//7+ - /v/8/Pz/+/v7//v7+//6+vr/+fn5//f39//39/f/9vb2//X19f/09PT/8fHx//Dw8P/v7+//7e3t/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Tk5P/f39//0dHR/7a2tv+Kior/YGBg/z4+PuIRERGPAAAAWAAA - ADUAAAAbAAAACgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAANAAAAIQAAAD8AAABkIyMjtElJSfdxcXH/nZ2d/8HB - wf/R0dH/19fX/9ra2v/c3Nz/3d3d/9/f3//h4eH/4uLi/+Xl5f/m5ub/6Ojo/+rq6v/r6+v/7e3t/+/v - 7//w8PD/8fHx//T09P/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//7+/v/+/v7//v7+//// - //////////////////////////////7+/v/+/v7//v7+//z8/P/7+/v/+/v7//r6+v/5+fn/9/f3//b2 - 9v/19fX/9PT0//Ly8v/x8fH/8PDw/+/v7//t7e3/6+vr/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Hh - 4f/d3d3/2dnZ/8fHx/+jo6P/dHR0/0tLS/ckJCS0AAAAZAAAAD8AAAAhAAAADQAAAAQAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAADwAA - ACUAAABHBgYGdDIyMtFcXFz/g4OD/66urv/Jycn/0dHR/9XV1f/X19f/2dnZ/9vb2//c3Nz/39/f/+Dg - 4P/i4uL/5OTk/+Xl5f/n5+f/6Ojo/+vr6//s7Oz/7e3t//Dw8P/x8fH/8vLy//T09P/19fX/9/f3//n5 - +f/6+vr/+vr6//v7+//8/Pz//v7+//7+/v/+/v7//////////////////////////////////v7+//7+ - /v/8/Pz//Pz8//v7+//7+/v/+vr6//n5+f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7e3t/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Li4v/h4eH/4ODg/9/f3//c3Nz/2dnZ/9DQ0P+0tLT/h4eH/19f - X/80NDTRBgYGdAAAAEcAAAAlAAAADwAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABQAAABEAAAApAAAATREREYc+Pj7lZmZm/5KSkv+4uLj/y8vL/9DQ - 0P/T09P/1dXV/9bW1v/X19f/2tra/9vb2//d3d3/39/f/+Hh4f/i4uL/5eXl/+bm5v/o6Oj/6urq/+zs - 7P/t7e3/7+/v//Hx8f/y8vL/9PT0//X19f/29vb/9/f3//n5+f/6+vr/+/v7//z8/P/8/Pz//v7+//7+ - /v/////////////////////////////////+/v7//v7+//z8/P/8/Pz/+/v7//r6+v/6+vr/+fn5//f3 - 9//29vb/9fX1//T09P/x8fH/8PDw/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Dg - 4P/f39//3d3d/9vb2//a2tr/19fX/9TU1P+/v7//l5eX/2pqav8/Pz/lERERhwAAAE0AAAApAAAAEQAA - AAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAATAAAALQAA - AFIYGBiURkZG8XBwcP+cnJz/vLy8/8rKyv/Ozs7/0NDQ/9HR0f/T09P/1dXV/9bW1v/Z2dn/2tra/9zc - 3P/f39//4ODg/+Hh4f/k5OT/5ubm/+fn5//q6ur/6+vr/+zs7P/v7+//8PDw//Hx8f/09PT/9fX1//b2 - 9v/39/f/+fn5//r6+v/7+/v//Pz8//z8/P/+/v7//v7+//////////////////////////////////7+ - /v/+/v7//Pz8//z8/P/7+/v/+vr6//n5+f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7+/v/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Li4v/h4eH/4ODg/93d3f/c3Nz/29vb/9nZ2f/X19f/1tbW/9HR - 0f/ExMT/o6Oj/3R0dP9KSkrxGBgYlAAAAFIAAAAtAAAAEwAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAGAAAAFAAAAC8AAABVGRkZnkpKSvV2dnb/pKSk/76+vv/IyMj/y8vL/83N - zf/Pz8//0NDQ/9HR0f/U1NT/1tbW/9fX1//a2tr/29vb/93d3f/f39//4eHh/+Li4v/l5eX/5ubm/+jo - 6P/q6ur/7Ozs/+3t7f/w8PD/8fHx//Ly8v/19fX/9vb2//f39//5+fn/+vr6//v7+//8/Pz//Pz8//7+ - /v/+/v7//////////////////////////////////v7+//7+/v/8/Pz//Pz8//v7+//6+vr/+fn5//f3 - 9//29vb/9fX1//T09P/y8vL/8fHx/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Dg - 4P/f39//3Nzc/9vb2//a2tr/19fX/9bW1v/V1dX/09PT/9DQ0P/FxcX/qamp/3t7e/9PT0/1GxsbngAA - AFUAAAAvAAAAFAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQAAABMAAAAwAAAAWCEh - IapRUVH6enp6/6Wlpf++vr7/xcXF/8jIyP/Kysr/y8vL/87Ozv/Pz8//0NDQ/9PT0//V1dX/1tbW/9nZ - 2f/a2tr/3Nzc/93d3f/g4OD/4eHh/+Tk5P/m5ub/5+fn/+rq6v/r6+v/7e3t/+/v7//x8fH/8vLy//X1 - 9f/29vb/+vr6//v7+//8/Pz//v7+//7+/v/+/v7///////////////////////////////////////// - //////////////7+/v/+/v7//Pz8//z8/P/6+vr/+fn5//b29v/19fX/9PT0//Hx8f/w8PD/7+/v/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Li4v/h4eH/39/f/93d3f/c3Nz/2tra/9nZ2f/W1tb/1dXV/9TU - 1P/R0dH/0NDQ/87Ozv/FxcX/rKys/35+fv9TU1P6JCQkqgAAAFgAAAAwAAAAEwAAAAUAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAATAAAALgAAAFclJSWxUlJS/Hx8fP+mpqb/vLy8/8LCwv/FxcX/x8fH/8jI - yP/Kysr/y8vL/87Ozv/Pz8//0dHR/9PT0//V1dX/19fX/9nZ2f/b29v/3Nzc/9/f3//h4eH/4uLi/+Xl - 5f/m5ub/6Ojo/+vr6//s7Oz/8fHx//T09P/39/f/+vr6//r6+v/7+/v/+/v7//z8/P/g4fn/y8v3/6Gf - 8P+Ni+7/d3Tt/3d07f93dO7/d3Tu/3d07v93dO7/jYvw/6Kg8v+ioPL/ubf1/9nY+P/+/v7//Pz8//z8 - /P/7+/v/+vr6//f39//09PT/8fHx//Dw8P/t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4eHh/+Dg - 4P/d3d3/3Nzc/9vb2//Z2dn/19fX/9XV1f/U1NT/09PT/9DQ0P/Pz8//zs7O/8rKyv/ExMT/ra2t/4OD - g/9WVlb8JiYmsQAAAFcAAAAuAAAAEwAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAACsAAABVIyMjrVhY - WP1+fn7/pqam/7u7u//BwcH/wsLC/8PDw//FxcX/x8fH/8nJyf/Kysr/zc3N/87Ozv/Q0ND/0dHR/9TU - 1P/W1tb/19fX/9ra2v/b29v/3d3d/+Dg4P/h4eH/5OTk/+bm5v/q6ur/8PDw//X19f/29vb/9/f3//n5 - +f/a2fT/qKbs/3t55/9RTeH/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm - 5P8wJuP/MCbh/y8m4f8vJuD/LyXe/zIp3v9UUOL/hoPp/7u68P/19fn/+vr6//n5+f/29vb/8vLy/+3t - 7f/r6+v/6urq/+fn5//m5ub/5OTk/+Li4v/g4OD/39/f/9zc3P/b29v/2tra/9fX1//W1tb/1NTU/9PT - 0//Q0ND/z8/P/87Ozv/Ly8v/ysrK/8nJyf/ExMT/rq6u/4SEhP9cXFz9JiYmrQAAAFUAAAArAAAAEAAA - AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAA0AAAAnAAAATyIiIqVWVlb8fX19/6ampv+4uLj/vb29/7+/v//BwcH/wsLC/8TE - xP/T09P/ysrK/8nJyf/Kysr/zc3N/8/Pz//Q0ND/09PT/9TU1P/W1tb/2dnZ/9ra2v/c3Nz/39/f/+Hh - 4f/n5+f/7+/v//T09P/09PT/9fX1/7e36v97eeD/PznX/ywl1v8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m - 3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m - 2v8uJdn/LSXY/zQt1/9qZ+D/tLPr//f39//39/f/9fX1//Hx8f/q6ur/5+fn/+Xl5f/k5OT/4eHh/+Dg - 4P/d3d3/3Nzc/9ra2v/Z2dn/1tbW/9XV1f/T09P/0dHR/8/Pz//Ozs7/zc3N/8rKyv/Jycn/yMjI/8fH - x//BwcH/ra2t/4SEhP9aWlr8IyMjpQAAAE8AAAAnAAAADQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKAAAAIAAAAEcZGRmVVVVV+Hp6 - ev+jo6P/tbW1/7q6uv+8vLz/vb29/7+/v//BwcH/wsLC/9PU1f/c3Nz/ysrK/8nJyf/Ly8v/zc3N/8/P - z//R0dH/09PT/9XV1f/X19f/2dnZ/9vb2//h4eH/7Ozs//Dw8P/x8fH/zMzr/3V02/80Mc3/KiTN/ysk - 0P8rJNP/LCXW/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm - 5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdj/LCXW/ywk0/8rJNH/OTTS/4uK - 4f/l5fL/9fX1//Ly8v/s7Oz/5eXl/+Li4v/g4OD/39/f/9zc3P/b29v/2dnZ/9bW1v/V1dX/09PT/9HR - 0f/Q0ND/zs7O/83Nzf/Kysr/ycnJ/8jIyP/Hx8f/xMTE/8PDw/++vr7/qamp/4GBgf9YWFj4HR0dlQAA - AEcAAAAgAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABwAAABkAAAA9ERERgExMTPJ1dXX/nZ2d/7Ozs/+3t7f/uLi4/7q6uv+8vLz/vb29/7+/ - v//BwcH/b3Kp/8jJ2P/c3Nz/ysrK/8nJyf/Ly8v/zs7O/8/Pz//R0dH/1NTU/9bW1v/a2tr/5ubm/+3t - 7f/v7+//qarg/1JQz/8oIsb/KSPK/yoky/8qJM3/KyTQ/ysk0/8sJdb/LSXX/y4l2P8uJtr/Libd/y8l - 3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m - 3f8uJtr/LiXZ/y0l1/8sJdb/LCTT/ysk0f8qJM7/KiTM/y4py/9zctn/3+Dv//Ly8v/v7+//5ubm/9/f - 3//d3d3/29vb/9ra2v/X19f/1dXV/9TU1P/R0dH/0NDQ/87Ozv/Nzc3/y8vL/8nJyf/IyMj/x8fH/8TE - xP/Dw8P/wcHB/7+/v/+7u7v/paWl/3t7e/9RUVHyExMTgAAAAD0AAAAZAAAABwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAATAAAANAUFBWVGRkbjb29v/5aW - lv+tra3/s7Oz/7W1tf+3t7f/uLi4/7q6uv+8vLz/vb29/7+/v/9VWaD/Nzqj/9DR3P/d3d3/ysrK/8rK - yv/Ly8v/zs7O/9DQ0P/T09P/2tra/+jo6P/s7Oz/ubnh/0hGyP8mIsD/JyHE/ygixv8pIsn/KiPL/yok - zf8rJND/KyTT/ywl1v8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm - 5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl1v8sJNP/KyTR/yok - zv8qJMz/KSPK/ygjx/8vKsb/fH3X/+Xm7v/w8PD/6Ojo/93d3f/a2tr/19fX/9bW1v/U1NT/09PT/9DQ - 0P/Pz8//zc3N/8vLy//Jycn/yMjI/8fHx//ExMT/w8PD/8HBwf+/v7//vr6+/7y8vP+2trb/np6e/3V1 - df9JSUnjBQUFZQAAADQAAAATAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACAAAADgAAACoAAABVNzc3x2dnZ/+Ojo7/qKio/7CwsP+zs7P/tLS0/7W1tf+3t7f/uLi4/7q6 - uv+8vLz/vb29/1BUn/8cHpn/OTyp/83O3P/f39//y8vL/8rKyv/Nzc3/z8/P/93d3f/o6Oj/0NHk/1hZ - yP8lIbv/JiG+/yYiwP8nIcT/KCLG/ykiyf8qI8v/KiTN/ysk0P8rJNP/LCXU/y0l1/8uJdj/Liba/y4m - 3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l - 3v8uJt3/Liba/y4l2f8tJdf/LCXW/ywk0/8rJNH/KiTO/yoky/8pI8r/KCPH/ycixP8mIsL/ODbE/6ip - 3v/t7e3/6+vr/9zc3P/W1tb/1dXV/9PT0//Q0ND/z8/P/83Nzf/Ly8v/ycnJ/8jIyP/Hx8f/xMTE/8PD - w//BwcH/v7+//76+vv+9vb3/vLy8/7q6uv+wsLD/k5OT/2xsbP84ODjHAAAAVQAAACoAAAAOAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAkAAAAgAAAASSUlJaRcXFz+goKC/6Gh - of+tra3/r6+v/7Kysv+zs7P/tLS0/7W1tf+2trb/uLi4/7q6uv+8vLz/Rkqa/xwdmf8dHaD/NTiq/8vM - 2v/f39//zc3N/8rKyv/d3d3/5+fn/6Wl2P8vL7r/JCC6/yUhu/8mIb7/JiLA/ychxP8oIsb/KSLJ/yoj - y/8qI83/KyTQ/ysk0/8sJdT/LSXX/y4l2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm - 5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l1/8sJdb/LCTT/ysk - 0f8qJM7/KiTL/ykjyv8oIsf/JyHE/yYiwv8mIb7/JSG9/1layP/f3+j/6urq/93d3f/T09P/0dHR/8/P - z//Ozs7/y8vL/8rKyv/IyMj/x8fH/8TExP/Dw8P/wcHB/7+/v/++vr7/vb29/7u7u/+6urr/uLi4/7a2 - tv+pqan/iIiI/2FhYf4mJiakAAAASQAAACAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAFAAAAFgAAADoTExOCUVFR9Xd3d/+ampr/q6ur/62trf+urq7/r6+v/7CwsP+ysrL/tLS0/7W1 - tf+2trb/uLi4/7q6uv9DRpn/HB2a/x0doP8dHaH/MzWr/8fH2v/g4OD/2tra/+Hh4/9rbcX/IiCz/yMg - tv8kILj/JSG7/yYhvv8mIsD/JyHE/ygixv8pIsn/KiPL/yojzf8rJND/KyTT/ywl1P8tJdf/LiXY/y4m - 2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m - 4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl1v8sJNP/KyTR/yokzv8qI8v/KSPK/ygix/8nIcT/JiLC/yYh - vv8lIbz/JCC6/zY2vP+/v97/6urq/9/f3//Q0ND/zs7O/8vLy//Kysr/yMjI/8fHx//ExMT/w8PD/8HB - wf+/v7//vr6+/7y8vP+7u7v/urq6/7i4uP+3t7f/tra2/7Ozs/+jo6P/fHx8/1VVVfUVFRWCAAAAOgAA - ABYAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA4AAAAsAgICXkVFReFtbW3/kJCQ/6Wl - pf+pqan/q6ur/62trf+urq7/r6+v/7CwsP+ysrL/s7Oz/7W1tf+2trb/uLi4/zxAmP8cHZr/HR2f/x0d - of8eHaT/LzCr/8TF2v/g4OL/WFq+/yIfsP8iILP/IyC2/yQguP8lIbv/JiG+/yYiwP8nIcT/KCLF/yki - yf8qI8v/KiPN/ysk0P8rI9L/LCTU/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm - 4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdf/LCXW/ywk - 0/8rJNH/KiTO/yojy/8pIsn/KCLH/ychxP8mIsL/JiG+/yUhvP8kILr/IyC2/ygmtv+QktH/5+fn/+Hh - 4f/Ozs7/ysrK/8jIyP/Hx8f/xMTE/8PDw//BwcH/v7+//76+vv+8vLz/u7u7/7q6uv+4uLj/tra2/7W1 - tf+0tLT/s7Oz/66urv+Xl5f/cnJy/0lJSeECAgJeAAAALAAAAA4AAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAHAAAAHwAAAEktLS2yZGRk/4aGhv+fn5//pqam/6ioqP+pqan/q6ur/6ysrP+tra3/r6+v/7Cw - sP+ysrL/s7Oz/7W1tf+2trb/NjiV/xwdm/8dHZ//HR2h/x4dpP8fHab/Ly+t/1dZvf8hH63/Ih+w/yIg - s/8jILb/JCC4/yUhu/8mIb7/JiLA/ychxP8oIsX/KSLJ/yojy/8qI83/KyTQ/ysj0v8sJNT/LSXX/y4l - 2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m - 4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l1/8sJdT/LCTT/ysj0f8qJM7/KiPL/ykiyf8oIsf/JyHE/yYi - wv8mIb7/JSG8/yQguv8jILb/IiC0/yIgsP9iY8L/3d3j/+Dg4P/Kysr/x8fH/8TExP/Dw8P/wcHB/7+/ - v/+9vb3/vLy8/7u7u/+4uLj/t7e3/7a2tv+1tbX/tLS0/7Ozs/+ysrL/r6+v/6enp/+Ojo7/ampq/zAw - MLIAAABJAAAAHwAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABMAAAA1FBQUfVVVVfd5eXn/l5eX/6Sk - pP+mpqb/p6en/6ioqP+pqan/q6ur/6ysrP+tra3/rq6u/6+vr/+ysrL/s7Oz/7S0tP8zN5X/HB2c/x0d - n/8dHaH/Hh2k/x8dpv8fHqf/IB6r/yEerf8iH7D/IiCz/yMhtf8kILj/JSG7/yYhvv8mIsD/JyHD/ygi - xf8pIsn/KiPL/yojzf8rJND/KyPS/ywk1P8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm - 4P8wJt7/LyXe/y8l3v8vJd7/LyXe/zAm3v8wJt//Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl - 1P8sJNP/KyPR/yojzv8qI8v/KSLJ/ygixv8nIcT/JiLC/yYhvv8lIbz/JCC4/yMgtv8iILT/IiCw/yEf - rv9AQ7b/0NDe/93d3f/Hx8f/w8PD/8HBwf+/v7//vb29/7y8vP+7u7v/uLi4/7e3t/+2trb/tbW1/7S0 - tP+ysrL/sLCw/6+vr/+urq7/rKys/6CgoP+AgID/W1tb9xQUFH0AAAA2AAAAEwAAAAMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAKAAAAJAAAAFJAQEDVbW1t/46Ojv+enp7/o6Oj/6SkpP+lpaX/pqam/6enp/+oqKj/qamp/6ur - q/+tra3/rq6u/6+vr/+wsLD/s7Oz/ystkv8cHZv/HB2f/x0dof8dHaT/Hh2l/x8ep/8gHqv/IB6t/yEe - sP8iH7P/IyC1/yMguP8kIbv/JSG+/yYiwP8mIcP/JyLF/ykiyf8qI8v/KiPN/ysk0P8rI9L/LCTU/y0k - 1/8uJdj/Liba/y4m2v8uJdj/LibT/y0l0f8tJcz/LSXJ/y0lw/8tJcP/LSXD/y0lw/8tJcP/LSXE/y0l - yf8tJc3/LSXR/y4l1v8uJtr/Liba/y4l2f8tJdf/LCXU/ywk0/8rI9H/KiPO/yojy/8pIsn/KCLG/ych - xP8mIsL/JiG+/yUhvP8kILj/IyC2/yIgtP8iILD/IR+u/yAgq/84ObL/y8za/9vb2//Dw8P/vr6+/729 - vf+8vLz/urq6/7i4uP+3t7f/tbW1/7S0tP+zs7P/srKy/7CwsP+vr6//rq6u/62trf+srKz/p6en/5SU - lP9ycnL/RERE1QAAAFIAAAAkAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABUAAAA6IiIilV9fX/5+fn7/mZmZ/5+f - n/+hoaH/o6Oj/6SkpP+lpaX/paWl/6enp/+oqKj/qamp/6urq/+srKz/ra2t/6+vr/+wsLD/KCmS/xwd - nP8cHZ//HB2h/x0dpP8eHaX/Hx6n/yAeq/8gHq3/IR6w/yIfsv8jILX/IyC4/yQgu/8lIb7/JiK//yYh - w/8nIsX/KCLJ/ykjy/8qI83/KiTO/ysj0v8sJNT/LSTW/y0k0/8tJM7/LCTG/yskvP8qI7L/KSSq/ykj - ov8oI57/KCOa/ygjmv8oI5r/KCOa/ygjmv8oI5r/KCOc/ygjo/8qJKz/KyS3/ywkxP8sJcz/LSTS/y0l - 1P8sJNT/LCPS/ysj0f8qI87/KiPL/ykiyf8oIsb/JyHE/yYiwv8mIb7/JSG8/yQguP8jILb/IiC0/yIg - sP8hH67/IB+r/yAeqf80Nq3/ysvZ/9bW1v++vr7/u7u7/7q6uv+4uLj/tra2/7W1tf+0tLT/s7Oz/7Ky - sv+wsLD/rq6u/62trf+srKz/q6ur/6urq/+oqKj/oaGh/4aGhv9kZGT+IyMjlQAAADoAAAAVAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAKAAAAJgICAlhLS0vlcXFx/4+Pj/+dnZ3/n5+f/5+fn/+goKD/oaGh/6Ojo/+kpKT/paWl/6am - pv+np6f/qKio/6urq/+srKz/ra2t/6+vr/8jI4//HB2c/xwdn/8cHaH/HR2j/x4dpf8fHqf/IB6r/yAe - rf8hHq//Ih+y/yMgtf8jILj/JCC7/yUhvv8mIr//JiHD/ycixf8oIsn/KSPL/yojzf8qJM7/KyTQ/ysk - zv8rJMX/KiO4/ygjq/8nIp7/JyKW/yYikf8mIoz/JiKK/yomjP9IRZ7/SUaf/0lGn/9JRp//SUaf/0hF - nv8oJIn/JiKL/yYhjv8nIpT/KCKc/ygjqP8qI7X/KyPD/yslzP8sI9H/KyPR/yojzv8qI8v/KSLJ/ygi - xv8nIcP/JiLC/yYhvv8lIbz/JCC4/yMhtf8iILT/Ih+w/yEerv8gH6v/IB6p/x8dpv84Oq3/0NHZ/87O - zv+6urr/t7e3/7a2tv+1tbX/s7Oz/7Kysv+wsLD/r6+v/66urv+tra3/rKys/6urq/+pqan/qKio/6en - p/+lpaX/l5eX/3d3d/9PT0/lAgICWAAAACYAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABUAAAA8KCgon2VlZf+CgoL/l5eX/5yc - nP+dnZ3/np6e/5+fn/+goKD/oaGh/6Ghof+jo6P/pKSk/6Wlpf+np6f/qKio/6mpqf+rq6v/r6+v/xwe - jf8cHZz/HB2f/xwdof8dHaP/Hh2l/x8ep/8gHqv/IB6t/yEer/8iH7L/IyC1/yMguP8kILv/JSC9/yYh - v/8mIcP/JyLF/ygiyf8pI8v/KiPM/yojyf8pIsL/KCK0/yYhov8mIZT/JSGL/yUgh/9RT6D/hIO9/7Cv - 1P/e3e3//Pz8//7+/v///////////////////////v7+//z8/P/V1ej/rq3T/11aqP8qJ4v/JSGL/yYh - kv8mIp//KCOy/yojwv8rI8z/KiPN/yojy/8pIsn/KCLG/yYhw/8mIsD/JSG+/yQhvP8jILj/IyC1/yIf - s/8hH7D/IB6u/yAfq/8gHqn/Hx2m/x4dpP9ESK7/1tbY/8HBwf+2trb/tLS0/7Ozs/+ysrL/sLCw/6+v - r/+tra3/rKys/6urq/+pqan/qKio/6ioqP+np6f/pqam/6Wlpf+fn5//iIiI/2tra/8rKyugAAAAPAAA - ABUAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAKAAAAJQICAlhMTEzmcnJy/46Ojv+ZmZn/m5ub/5ycnP+cnJz/nZ2d/56env+fn5//oKCg/6Gh - of+jo6P/pKSk/6Wlpf+mpqb/p6en/6ioqP+srK3/GxyM/xwcnP8cHZ//HB2g/x0do/8eHaX/Hx6n/yAe - q/8gHqz/IR6v/yIfsv8jILX/IyC4/yQgu/8lIL3/JiG//yYhw/8nIcX/KCLH/ygixf8oIr7/JyKv/yUh - n/8kII//Ix+H/0RClf+QkMD/3t3o//X19f/39/f/+vr6//v7+//8/Pz//v7+//////////////////7+ - /v/+/v7//Pz8//v7+//5+fn/9vb2/+fn7v+dnMf/VlSg/yYih/8kII//JiGi/ygitf8pIsT/KSPJ/ygi - yf8nIsb/JiHD/yYiwP8lIb7/JCC8/yMguP8jILX/Ih+z/yEfsP8gHq7/IB+r/x8eqf8eHaX/HR2k/x0d - ov9maLX/1tbW/7a2tv+ysrL/sLCw/6+vr/+urq7/ra2t/6ysrP+rq6v/qamp/6ioqP+np6f/pqam/6Wl - pf+kpKT/pKSk/6Ghof+VlZX/eHh4/1BQUOYCAgJYAAAAJQAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABMAAAA5KSkpnmVlZf+BgYH/lJSU/5mZ - mf+ampr/mpqa/5ubm/+cnJz/nZ2d/52dnf+enp7/n5+f/6CgoP+hoaH/o6Oj/6SkpP+lpaX/p6en/6Kj - qf8bHI3/HByc/xwcnf8cHaD/HR2j/x4dpf8fHqf/IB6q/yAerP8hHq//Ih+y/yMgtf8jILj/JCC6/yUg - vf8mIb//JiHD/ychwv8nIrz/JiKu/yUfnP8jH43/Ix+F/0VElv+np8n/6+vr/+3t7f/x8fH/9PT0//b2 - 9v/5+fn/+/v7//z8/P/+/v7//////////////////v7+//7+/v/8/Pz/+vr6//n5+f/29vb/9PT0//Hx - 8f/v7+//ysrb/05Om/8jH4b/JCCT/yYhqf8oIrz/KCLG/ycixv8mIcP/JiLA/yUgvf8kILz/IyC4/yMg - tf8iH7P/IR+v/yAerv8gH6v/Hx6p/x4dpf8dHaP/HR2i/xwdnf+focb/y8vL/7CwsP+vr6//ra2t/6ys - rP+rq6v/qamp/6ioqP+np6f/pqam/6Wlpf+kpKT/pKSk/6Ojo/+hoaH/oKCg/52dnf+Hh4f/ampq/y0t - LZ4AAAA5AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAHAAAAIQMDA1JJSUngcXFx/4qKiv+VlZX/lpaW/5eXl/+ZmZn/mpqa/5qamv+bm5v/nJyc/52d - nf+enp7/n5+f/6CgoP+hoaH/o6Oj/6SkpP+lpaX/nJ2o/xsbjf8cHJz/HByd/xwcoP8dHKP/Hh2l/x8d - p/8gHqr/IB6s/yEer/8iH7L/IyC1/yMgt/8kILr/JSC9/yYhv/8mIcD/JiC1/yMfnv8iHov/IR6C/z08 - jv+iocD/4uLi/+bm5v/q6ur/7e3t//Dw8P/09PT/9vb2//n5+f/7+/v//Pz8//7+/v////////////// - ///+/v7//v7+//v7+//6+vr/9/f3//X19f/y8vL/8PDw/+3t7f/q6ur/5+fn/5mYv/8xMIn/Ih6J/yUg - n/8mIbf/JyLD/yYhw/8mIcD/JSC9/yQgu/8jILj/IyC1/yIfs/8hH6//IB6t/yAfq/8fHqn/Hh2l/x0d - o/8cHaH/HB2f/ygroP/HxtH/vb29/62trf+rq6v/qamp/6ioqP+np6f/pqam/6ampv+lpaX/pKSk/6Oj - o/+hoaH/oKCg/6CgoP+fn5//nZ2d/5KSkv93d3f/TU1N4AMDA1IAAAAhAAAABwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA8AAAAxISEhi2RkZP98fHz/kJCQ/5SU - lP+VlZX/lpaW/5aWlv+Xl5f/mZmZ/5qamv+ampr/m5ub/5ycnP+dnZ3/np6e/5+fn/+goKD/oaGh/6Oj - o/+YmKX/GxuN/xwcm/8cHJ3/HByg/x0co/8eHKX/Hx2m/yAdqv8gHaz/IR6v/yIfsv8iILT/IyC3/yQg - uv8lIL3/JiG//yYhv/8kIKz/IR2P/zQyh/+Li7L/2tra/93d3f/h4eH/5eXl/+jo6P/s7Oz/7+/v//Ly - 8v/19fX/9/f3//r6+v/8/Pz//v7+//////////////////7+/v/8/Pz/+/v7//r6+v/39/f/9fX1//Hx - 8f/v7+//7Ozs/+jo6P/l5eX/4uLi/9TU2v9gYKD/IR+F/yMfmv8lIbP/JiG+/yYhwP8lIL3/JCC7/yMg - uP8jILX/Ih+z/yEfr/8gHq3/IB+r/x8eqf8eHaX/HR2j/xwdof8cHZ//HB2c/0tPqf/T09P/r6+v/6mp - qf+oqKj/p6en/6ampv+lpaX/pKSk/6Ojo/+hoaH/oKCg/6CgoP+fn5//np6e/52dnf+dnZ3/l5eX/4SE - hP9paWn/IiIiiwAAADEAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAEAAAAGgAAAEVDQ0PPbm5u/4aGhv+SkpL/k5OT/5SUlP+UlJT/lZWV/5aWlv+Wlpb/l5eX/5mZ - mf+ampr/mpqa/5ubm/+cnJz/nZ2d/56env+fn5//oKCg/42NoP8bG47/HByb/xwcnf8cHKD/HRyj/x0c - pP8eHab/Hx2q/yAdrP8gHa//IR6y/yIftP8jILf/IyC6/yUgvf8mIb//JiHA/ysmt/+EhL//y8vO/9TU - 1P/X19f/29vb/9/f3//i4uL/5ubm/+rq6v/t7e3/8fHx//X19f/39/f/+vr6//z8/P/+/v7///////// - /////////v7+//z8/P/7+/v/+fn5//b29v/09PT/8fHx/+3t7f/q6ur/5+fn/+Tk5P/g4OD/3Nzc/9ra - 2v97e6v/IB2C/yIelv8kIK//JiG8/yUgvf8kILv/IyC3/yMgtf8iH7P/IR+v/yAerf8gH6r/Hx6p/x4d - pf8dHaP/HB2h/xwdn/8cHJz/Gxua/36Ct//CwsL/p6en/6ampv+lpaX/pKSk/6Ojo/+hoaH/oKCg/5+f - n/+fn5//np6e/52dnf+dnZ3/nJyc/5ubm/+ampr/jo6O/3R0dP9ISEjPAAAARQAAABoAAAAEAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAnExMTa1paWvZ3d3f/i4uL/5GR - kf+SkpL/kpKS/5OTk/+Tk5P/lJSU/5WVlf+Wlpb/lpaW/5eXl/+ZmZn/mpqa/5qamv+bm5v/nJyc/52d - nf+enp7/iIqf/xobjv8bHJv/HByd/xwcoP8dHKP/HRyk/x4dpv8fHar/IB2s/yAdr/8hHrD/Ih+0/yMf - t/8jH7r/JCC8/yUhvv8mIcL/WlnM/+Xl5f/Z2dn/0dHR/9XV1f/Z2dn/3Nzc/+Hh4f/l5eX/6Ojo/+zs - 7P/w8PD/9PT0//b29v/6+vr/+/v7//7+/v/////////////////+/v7//Pz8//v7+//5+fn/9vb2//Ly - 8v/w8PD/7Ozs/+jo6P/l5eX/4eHh/93d3f/b29v/19fX/9TU1P+EhK3/IB6B/yEelf8kIK//JSC7/yQg - u/8jILf/IyC1/yIfs/8hH6//IB6t/yAeqv8fHqn/Hh2l/x0co/8cHaH/HByd/xwcnP8bG5r/ICOZ/7q7 - yf+tra3/pKSk/6Ojo/+hoaH/oKCg/5+fn/+fn5//np6e/52dnf+cnJz/nJyc/5ubm/+ampr/mpqa/5mZ - mf+Tk5P/fX19/19fX/YTExNrAAAAJwAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAEgAAADczMzOoaWlp/4GBgf+Ojo7/kJCQ/5GRkf+RkZH/kpKS/5KSkv+Tk5P/k5OT/5SU - lP+VlZX/lZWV/5aWlv+Xl5f/mZmZ/5qamv+ampr/m5ub/5ycnP+Dg53/GhuP/xscm/8cHJ3/HByg/x0c - ov8dHKT/Hh2m/x8dqv8gHaz/IB2u/yEesP8iH7T/Ix+3/yMfuv8kH7z/JSC+/yYhwv8mIcT/fHvU/+Xl - 5f/a2tr/09PT/9bW1v/a2tr/39/f/+Li4v/n5+f/6+vr/+/v7//y8vL/9vb2//n5+f/7+/v//v7+//// - //////////////7+/v/8/Pz/+vr6//f39//19fX/8fHx/+/v7//r6+v/5+fn/+Tk5P/g4OD/3Nzc/9nZ - 2f/V1dX/0dHR/87Ozv+Ojq//IyCC/yEel/8kIK//JCC4/yMgt/8iILT/Ih+z/yEer/8gHa3/IB6q/x8d - p/8eHKX/HRyj/xwdof8cHJ3/HByb/xsbmv8aG5j/VVip/7+/v/+hoaH/oKCg/5+fn/+fn5//np6e/52d - nf+cnJz/nJyc/5ubm/+ampr/mpqa/5mZmf+Xl5f/l5eX/5SUlP+Hh4f/bm5u/zY2NqgAAAA3AAAAEgAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAASUxMTN1xcXH/hoaG/4yM - jP+Pj4//j4+P/5CQkP+QkJD/kZGR/5GRkf+SkpL/kpKS/5OTk/+UlJT/lJSU/5WVlf+Wlpb/l5eX/5mZ - mf+ampr/mpqa/25xjv8XFor/GBeW/xgXmP8YGJn/GRmc/xoYn/8bGaH/Gxmk/xwapv8dGar/Hhqs/x8c - rv8gG7L/IBy0/yEct/8iHrr/Ix29/yQev/8lH8P/d3fF/8vLy//Pz8//1NTU/9fX1//c3Nz/4eHh/+Xl - 5f/q6ur/7e3t//Hx8f/19fX/+fn5//v7+//+/v7//////////////////v7+//z8/P/6+vr/9/f3//T0 - 9P/w8PD/7Ozs/+jo6P/l5eX/4eHh/93d3f/a2tr/1dXV/9HR0f/Ozs7/y8vL/8jIyP+Fhaj/HhuB/yEd - nP8jILP/IyC3/yIftP8hHrL/IB6v/yAdrf8fHqr/Hh2n/x4cpf8dHKP/HB2h/xwcnf8cHJv/GxuZ/xob - mP8cHJf/p6rB/6Wlpf+enp7/np6e/52dnf+cnJz/m5ub/5ubm/+ampr/mZmZ/5mZmf+Xl5f/l5eX/5aW - lv+VlZX/lJSU/4uLi/92dnb/UFBQ3QAAAEkAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAACQAAACcWFhZwYGBg+3l5ef+IiIj/jIyM/46Ojv+Ojo7/j4+P/4+Pj/+Pj4//kJCQ/5CQ - kP+RkZH/kpKS/5KSkv+Tk5P/k5OT/5SUlP+VlZX/lpaW/5eXl/+ZmZn/a2yM/xYWiv8YF5X/GBeX/xgX - mf8ZF5z/Ghif/xsZof8bGaP/HBql/x0Zqf8dGqv/Hhuu/yAbsv8gHLT/IRy3/yIduv8jHb3/Ix6//yUe - w/8mH8X/eXjG/83Nzf/Q0ND/1dXV/9ra2v/f39//4uLi/+fn5//s7Oz/8PDw//T09P/39/f/+/v7//z8 - /P/////////////////+/v7/+/v7//n5+f/29vb/8vLy/+/v7//r6+v/5+fn/+Li4v/f39//29vb/9bW - 1v/T09P/z8/P/8vLy//IyMj/xMTE/8HBwf9naJr/HhuF/yEeo/8iH7P/Ih+0/yEesv8gHq//IB2t/x8e - qv8eHaf/HRyk/x0co/8cHaH/HByd/xscm/8aG5n/GhuY/xoal/9MUKL/tra2/52dnf+cnJz/m5ub/5qa - mv+ampr/mZmZ/5eXl/+Xl5f/lpaW/5aWlv+VlZX/lZWV/5SUlP+UlJT/j4+P/35+fv9kZGT7GRkZcAAA - ACcAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAQAAAAMzk5Oapra2v/gICA/4qK - iv+Li4v/i4uL/4yMjP+MjIz/jo6O/46Ojv+Pj4//j4+P/5CQkP+QkJD/kZGR/5GRkf+SkpL/k5OT/5OT - k/+UlJT/lZWV/5aWlv9iZIr/FhaK/xcXlf8YF5f/GBeZ/xkYnP8ZF53/Gxig/xsYo/8cGaX/HRmp/x0a - q/8eG67/Hxqy/yAbtP8hHLf/Ih26/yMcvf8jHb//JB7D/yYfxf8nH8f/fn3H/87Ozv/R0dH/1tbW/9vb - 2//g4OD/5eXl/+rq6v/v7+//8vLy//f39//6+vr//Pz8//7+/v////////////7+/v/7+/v/+fn5//X1 - 9f/x8fH/7e3t/+jo6P/l5eX/4ODg/9zc3P/X19f/1NTU/8/Pz//Ly8v/yMjI/8TExP/BwcH/vr6+/7u7 - u/8/Poj/HxyN/yEfqv8iH7L/IR6y/yAerv8gHaz/Hx6q/x4dp/8dHKT/HRyi/xwdof8cHJ3/Gxyb/xob - mf8aG5f/GhuW/xock/+vscD/nZ2d/5qamv+ZmZn/mZmZ/5eXl/+Wlpb/lpaW/5WVlf+VlZX/lJSU/5SU - lP+Tk5P/k5OT/5KSkv+RkZH/hoaG/3BwcP88PDyqAAAANAAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAABcAAABBSkpK0nFxcf+Dg4P/ioqK/4qKiv+Kior/i4uL/4uLi/+Li4v/jIyM/4yM - jP+Ojo7/jo6O/4+Pj/+Pj4//kJCQ/5CQkP+RkZH/kpKS/5KSkv+Tk5P/lJSU/11ghv8WFoj/FxeR/xcX - kf8XF5P/GBeV/xkXl/8aGJn/Gxec/xsYn/8cGaL/HRqj/x0apf8eGqn/Hxur/yAbrv8gHK//Ihyy/yId - s/8jHrb/JB63/yUduv8mH73/goHE/8/Pz//U1NT/2dnZ/93d3f/i4uL/6Ojo/+3t7f/x8fH/9vb2//r6 - +v/8/Pz//v7+/////////////v7+//v7+//39/f/9PT0//Dw8P/r6+v/5+fn/+Li4v/d3d3/2dnZ/9XV - 1f/Q0ND/zc3N/8jIyP/ExMT/wcHB/729vf+7u7v/t7e3/6Skr/8lJH//IB2Z/yEerv8hHrL/IB6u/yAd - rP8fHqr/Hh2n/x0cpP8dHKL/HB2g/xwcnf8bHJv/GhuZ/xobl/8aG5b/GRuV/19jpv+np6f/l5eX/5eX - l/+Wlpb/lZWV/5WVlf+UlJT/lJSU/5OTk/+Tk5P/kpKS/5KSkv+RkZH/kZGR/5GRkf+JiYn/dnZ2/01N - TdMAAABBAAAAFwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAHxAQEF5ZWVnwdXV1/4SE - hP+JiYn/iYmJ/4mJif+Kior/ioqK/4qKiv+Li4v/i4uL/4uLi/+MjIz/jIyM/46Ojv+Ojo7/j4+P/4+P - j/+QkJD/kZGR/5GRkf+SkpL/V1mA/xUWeP8WFn7/FhZ9/xYWff8XF37/GBeB/xgXgv8YF4X/GReG/xoY - if8bGYr/GxqM/xwZjv8dGpD/HRqU/x4blf8fGpT/IBuU/yAclv8gHJj/IhyZ/yIem/8jHZ//goK4/9DQ - 0P/V1dX/2tra/+Dg4P/m5ub/6+vr//Dw8P/19fX/+fn5//z8/P/+/v7////////////8/Pz/+vr6//b2 - 9v/y8vL/7+/v/+rq6v/l5eX/4ODg/9vb2//W1tb/0dHR/83Nzf/Jycn/xMTE/8HBwf+9vb3/urq6/7e3 - t/+0tLT/srKy/3N1mP8cGoX/IR6k/yEesP8gHq7/IB2s/x8dqf8eHaf/HRyk/x0bov8cHKD/HBud/xsb - m/8aGpn/GhqX/xoalv8ZGpT/ISSS/7Cytf+VlZX/lZWV/5SUlP+UlJT/k5OT/5OTk/+SkpL/kpKS/5GR - kf+RkZH/kJCQ/5CQkP+QkJD/j4+P/4qKiv97e3v/XFxc8RAQEF4AAAAgAAAABgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAoAAAApJiYmhGhoaP97e3v/hYWF/4iIiP+IiIj/iIiI/4iIiP+JiYn/iYmJ/4mJ - if+Kior/ioqK/4uLi/+Li4v/i4uL/4yMjP+MjIz/jo6O/46Ojv+Pj4//kJCQ/5CQkP9QUnj/FBVh/xQW - ZP8VFmT/FRVl/xYWZv8WFmf/FhZp/xcWa/8XFmz/GBdu/xgXb/8YGHH/Ghhz/xsYdf8bGHf/Gxp3/xwa - eP8dGnj/HRp6/x0bfP8fG33/IByA/yAcgv8iHoX/iomx/9HR0f/X19f/3Nzc/+Li4v/o6Oj/7+/v//T0 - 9P/39/f/+/v7//7+/v////////////z8/P/6+vr/9vb2//Hx8f/s7Oz/5+fn/+Hh4f/c3Nz/19fX/9PT - 0//Ozs7/ycnJ/8TExP/BwcH/vb29/7q6uv+2trb/s7Oz/7CwsP+urq7/rKys/zU2g/8eG5T/IR6q/yAd - rv8gHaz/Hx2p/x4cpv8dG6T/HRui/xwcoP8cG5z/Gxub/xoamf8aGpf/GhqW/xkalP8YGpH/h4qw/5WV - lf+Tk5P/k5OT/5KSkv+SkpL/kZGR/5GRkf+QkJD/kJCQ/4+Pj/+Pj4//j4+P/46Ojv+Ojo7/i4uL/4CA - gP9sbGz/JiYmhAAAACkAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAADwAAADI7OzuwbW1t/35+ - fv+FhYX/h4eH/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iIiI/4mJif+JiYn/iYmJ/4qKiv+Kior/ioqK/4uL - i/+Li4v/jIyM/4yMjP+Ojo7/jo6O/1pbef8mKWP/Jylk/zM1av8/QXD/P0Jx/0BDcv9BQ3P/QkN1/0ND - dv9ERHj/RUV5/0ZGe/9HR33/R0l+/0hKgf9KS4L/Y2KO/2pqkv9ra5X/bW2X/3Bwmv9ycpz/dnWh/3l5 - pP9/fqr/yMjK/9PT0//Z2dn/4ODg/+bm5v/s7Oz/8vLy//f39//7+/v//v7+///////+/v7//Pz8//n5 - +f/09PT/7+/v/+rq6v/k5OT/39/f/9nZ2f/T09P/zs7O/8nJyf/ExMT/v7+//7y8vP+4uLj/tbW1/7Ky - sv+vr6//ra2t/6urq/+oqKj/hYaa/xwagv8gHaH/IB2t/x8drP8fHan/Hhym/x0bpP8dG6L/HByg/xwb - nP8bG5v/GhqZ/xoal/8aGpb/GRqU/xgak/9KTpv/np6e/5GRkf+RkZH/kJCQ/5CQkP+QkJD/j4+P/4+P - j/+Ojo7/jo6O/46Ojv+MjIz/jIyM/4yMjP+Kior/hISE/3Fxcf8+Pj6wAAAAMgAAAA8AAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAUAAAAPE1NTdVxcXH/gICA/4aGhv+Ghob/hoaG/4aGhv+Ghob/h4eH/4eH - h/+Hh4f/h4eH/4iIiP+IiIj/iIiI/4mJif+JiYn/iYmJ/4qKiv+Kior/i4uL/4uLi/+MjIz/jIyM/46O - jv+Pj4//j4+P/5CQkP+RkZH/kpKS/5OTk/+Tk5P/lZWV/5aWlv+Xl5f/mpqa/5ubm/+dnZ3/n5+f/6Gh - of+kpKT/pqam/6mpqf+tra3/sLCw/7S0tP+4uLj/vb29/8PDw//IyMj/z8/P/9XV1f/c3Nz/4uLi/+rq - 6v/w8PD/9vb2//v7+//+/v7///////7+/v/7+/v/9/f3//Ly8v/t7e3/5+fn/+Hh4f/b29v/1dXV/8/P - z//Jycn/xMTE/7+/v/+8vLz/t7e3/7S0tP+wsLD/rq6u/6urq/+oqKj/pqam/6Wlpf+jo6P/PDyB/x0b - lf8fHan/Hx2s/x4dqf8dHKb/HRuj/x0bov8cHKD/HBuc/xsbmv8aGpn/GhqX/xoalv8ZGpT/GBqT/x4f - jP+lpaf/kJCQ/4+Pj/+Pj4//j4+P/46Ojv+Ojo7/jIyM/4yMjP+MjIz/i4uL/4uLi/+Li4v/i4uL/4qK - iv+FhYX/dXV1/1JSUtUAAAA8AAAAFAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABoDAwNKV1dX63V1 - df+BgYH/hYWF/4WFhf+FhYX/hYWF/4WFhf+Ghob/hoaG/4aGhv+Ghob/h4eH/4eHh/+Hh4f/h4eH/4iI - iP+IiIj/iIiI/4mJif+JiYn/ioqK/4qKiv+Li4v/i4uL/4yMjP+MjIz/jo6O/4+Pj/+Pj4//kJCQ/5GR - kf+SkpL/k5OT/5SUlP+Wlpb/l5eX/5qamv+bm5v/nZ2d/5+fn/+hoaH/paWl/6enp/+rq6v/r6+v/7Oz - s/+4uLj/vb29/8PDw//Jycn/0NDQ/9fX1//f39//5ubm/+3t7f/19fX/+vr6//7+/v///////v7+//v7 - +//29vb/8fHx/+rq6v/k5OT/3Nzc/9bW1v/Q0ND/ysrK/8TExP+/v7//u7u7/7a2tv+zs7P/r6+v/62t - rf+pqan/p6en/6Wlpf+jo6P/oKCg/5+fn/9+fpL/GxmF/x4dov8fHav/Hh2p/x0cpv8dG6P/HBui/xsc - oP8bG5z/Ghua/xoamP8aGpf/GhqW/xkalP8YGpP/GBqM/4iLpv+Ojo7/jo6O/4yMjP+MjIz/jIyM/4uL - i/+Li4v/i4uL/4qKiv+Kior/ioqK/4qKiv+JiYn/iYmJ/4aGhv95eXn/W1tb6wMDA0oAAAAaAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAGAAAAIBoaGmlfX1/2eHh4/4KCgv+EhIT/hISE/4SEhP+EhIT/hISE/4WF - hf+FhYX/hYWF/4WFhf+FhYX/hoaG/4aGhv+Ghob/hoaG/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iIiI/4mJ - if+JiYn/ioqK/4qKiv+Li4v/jIyM/4yMjP+Ojo7/j4+P/5CQkP+RkZH/kpKS/5OTk/+UlJT/lZWV/5eX - l/+ampr/m5ub/52dnf+goKD/o6Oj/6ampv+pqan/rq6u/7Ozs/+3t7f/vb29/8TExP/Kysr/09PT/9ra - 2v/i4uL/6+vr//Ly8v/5+fn//v7+///////+/v7/+vr6//X19f/v7+//5+fn/+Dg4P/Z2dn/0dHR/8rK - yv/ExMT/vr6+/7q6uv+1tbX/srKy/66urv+rq6v/qKio/6Wlpf+jo6P/oKCg/5+fn/+dnZ3/nJyc/5qa - mv8wMX//Hh2Y/x8dqf8eHan/HRym/x0bo/8cHKH/Gxyg/xsbnP8aG5r/GhqY/xoal/8aGpb/GRqU/xga - k/8YGo7/Y2ie/4yMjP+Li4v/i4uL/4uLi/+Kior/ioqK/4qKiv+JiYn/iYmJ/4mJif+JiYn/iIiI/4iI - iP+IiIj/hoaG/3x8fP9iYmL2HR0daQAAACAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAlLS0th2ho - aP57e3v/goKC/4ODg/+Dg4P/g4OD/4ODg/+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+FhYX/hYWF/4WF - hf+FhYX/hoaG/4aGhv+Ghob/hoaG/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iYmJ/4mJif+Kior/ioqK/4uL - i/+MjIz/jIyM/46Ojv+Pj4//kJCQ/5GRkf+SkpL/k5OT/5WVlf+Xl5f/mpqa/5ycnP+enp7/oaGh/6Sk - pP+oqKj/ra2t/7Kysv+3t7f/vb29/8TExP/Nzc3/1dXV/9/f3//n5+f/8PDw//f39//8/Pz///////7+ - /v/5+fn/8vLy/+vr6//i4uL/29vb/9PT0//Ly8v/xMTE/76+vv+4uLj/tLS0/7CwsP+srKz/qKio/6am - pv+jo6P/oKCg/56env+dnZ3/m5ub/5qamv+Xl5f/lpaW/2RliP8cGoz/Hxyk/x4cp/8dHKb/HRuj/xwc - of8bHJ//Gxuc/xobmv8aGpj/GRuW/xkalv8YGpT/GBqT/xgZj/9ARZT/jIyM/4qKiv+JiYn/iYmJ/4mJ - if+JiYn/iIiI/4iIiP+IiIj/iIiI/4eHh/+Hh4f/h4eH/4eHh/+Ghob/gICA/2pqav4tLS2HAAAAJQAA - AAgAAAAAAAAAAAAAAAAAAAAAAAAACgAAACs4ODidb29v/3x8fP+BgYH/goKC/4KCgv+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4SEhP+EhIT/hISE/4SEhP+EhIT/hYWF/4WFhf+FhYX/hYWF/4aG - hv+Ghob/hoaG/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iYmJ/4mJif+Kior/i4uL/4uLi/+MjIz/jo6O/4+P - j/+QkJD/kpKS/5OTk/+VlZX/lpaW/5qamv+cnJz/n5+f/6Ojo/+mpqb/q6ur/7CwsP+2trb/vb29/8XF - xf/Pz8//2dnZ/+Li4v/t7e3/9vb2//z8/P///////v7+//f39//w8PD/5+fn/93d3f/V1dX/zc3N/8TE - xP+9vb3/t7e3/7Ozs/+urq7/qamp/6ampv+kpKT/oKCg/56env+cnJz/m5ub/5mZmf+Xl5f/lZWV/5SU - lP+Tk5P/jo6R/x8fgv8eHaD/Hhyn/x0bpf8dG6P/HBuh/xsbn/8bG5z/Ghqa/xoamP8ZG5b/GRqV/xga - lP8XGpP/FxmQ/yQniv+Tk5P/iIiI/4iIiP+IiIj/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Ghob/hoaG/4aG - hv+Ghob/hoaG/4WFhf+BgYH/cnJy/zw8PJ0AAAArAAAACgAAAAAAAAAAAAAAAAAAAAAAAAANAAAALkND - Q7JxcXH/fn5+/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4ODg/+Dg4P/hISE/4SEhP+EhIT/hISE/4WFhf+FhYX/hYWF/4WFhf+Ghob/hoaG/4aG - hv+Hh4f/h4eH/4iIiP+IiIj/iYmJ/4qKiv+Li4v/i4uL/4yMjP+Ojo7/kJCQ/5GRkf+SkpL/lJSU/5aW - lv+ampr/nJyc/5+fn/+kpKT/qKio/66urv+1tbX/vb29/8fHx//R0dH/3Nzc/+jo6P/09PT/+/v7//// - ///8/Pz/9vb2/+zs7P/h4eH/19fX/87Ozv/ExMT/vb29/7a2tv+wsLD/rKys/6enp/+kpKT/oKCg/56e - nv+cnJz/mpqa/5eXl/+Wlpb/lJSU/5OTk/+SkpL/kZGR/5CQkP+Pj4//Pz9+/x0bmP8dHKb/HRul/x0b - o/8cG6H/Gxuf/xsanP8aGpr/GhqY/xkalv8ZGpX/GBqU/xcak/8XGZD/FxmF/5GSlv+Hh4f/h4eH/4aG - hv+Ghob/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WFhf+FhYX/hYWF/4KCgv9zc3P/REREsgAA - AC4AAAANAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAzS0tLx3Jycv99fX3/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4SEhP+EhIT/hISE/4SEhP+EhIT/hYWF/4WFhf+Ghob/hoaG/4aGhv+Hh4f/h4eH/4iI - iP+JiYn/iYmJ/4qKiv+Li4v/jIyM/4+Pj/+QkJD/kpKS/5OTk/+Wlpb/mpqa/52dnf+hoaH/pqam/62t - rf+0tLT/vb29/8jIyP/V1dX/4uLi//Dw8P/7+/v///////v7+//y8vL/5+fn/9vb2//Pz8//xMTE/7y8 - vP+0tLT/rq6u/6ioqP+lpaX/oKCg/52dnf+bm5v/mZmZ/5aWlv+VlZX/k5OT/5KSkv+RkZH/kJCQ/4+P - j/+Ojo7/jIyM/4yMjP9kZIL/GxqP/x0bo/8dG6X/HBui/xwbof8bG5//Gxqb/xoamv8aGpj/GRqW/xkZ - lf8YGZP/FxmT/xcZkP8XGYb/fX6R/4WFhf+FhYX/hYWF/4WFhf+FhYX/hYWF/4WFhf+EhIT/hISE/4SE - hP+EhIT/hISE/4SEhP+EhIT/gYGB/3V1df9MTEzHAAAAMwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAEAAA - ADZSUlLVdHR0/35+fv+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4GBgf+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/hISE/4SEhP+EhIT/hISE/4WFhf+FhYX/hoaG/4aGhv+Hh4f/h4eH/4iIiP+JiYn/ioqK/4uL - i/+MjIz/j4+P/5GRkf+Tk5P/lZWV/5qamv+dnZ3/o6Oj/6mpqf+zs7P/vb29/8rKyv/a2tr/6+vr//n5 - +f//////+vr6/+/v7//g4OD/0dHR/8TExP+6urr/srKy/6urq/+lpaX/oKCg/52dnf+ampr/l5eX/5WV - lf+Tk5P/kpKS/5CQkP+Pj4//jo6O/4yMjP+MjIz/i4uL/4qKiv+Kior/iYmJ/4WFiP8dHIb/HRyf/x0b - pf8cG6L/Gxuh/xsbn/8bGpv/Ghqa/xoamP8ZGpb/GRmV/xgZk/8XGZH/FxiQ/xcZh/9pbIz/hISE/4SE - hP+EhIT/hISE/4SEhP+EhIT/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+BgYH/dnZ2/1VV - VdQAAAA2AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAOVhYWOB2dnb/fX19/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+EhIT/hISE/4SEhP+FhYX/hYWF/4aGhv+Hh4f/h4eH/4iIiP+JiYn/i4uL/4yMjP+Pj4//kpKS/5WV - lf+ampr/n5+f/6ampv+wsLD/vb29/8/Pz//i4uL/9vb2///////39/f/5+fn/9XV1f/ExMT/t7e3/66u - rv+mpqb/oKCg/5ycnP+ZmZn/lZWV/5OTk/+RkZH/kJCQ/4+Pj/+MjIz/i4uL/4uLi/+Kior/iYmJ/4mJ - if+IiIj/h4eH/4eHh/+Hh4f/hoaG/zI0gP8cG47/GxuU/xsakf8aGpD/GhqO/xoai/8aGor/GRmJ/xgZ - h/8YGYb/GBmE/xcZhP8XGIL/Fhl7/2Rmiv+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+CgoL/goKC/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4CAgP94eHj/WVlZ4AAAADgAAAASAAAAAAAAAAAAAAAAAAAAAAAA - ABMAAAA6XV1d63d3d/9+fn7/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4SE - hP+EhIT/hYWF/4aGhv+Ghob/h4eH/4mJif+Kior/jIyM/5CQkP+Tk5P/mpqa/6Ghof+tra3/vb29/9XV - 1f/w8PD///////Ly8v/b29v/xMTE/7S0tP+oqKj/oKCg/5ubm/+Wlpb/k5OT/5GRkf+Pj4//jIyM/4uL - i/+Kior/iYmJ/4iIiP+IiIj/h4eH/4eHh/+Ghob/hoaG/4WFhf+FhYX/hYWF/4SEhP+EhIT/RUV0/xYW - bP8VFW3/FRVr/xUVav8UFWn/FBRn/xQUZv8TE2X/EhNj/xIUYv8SFGH/EhRg/xITYP8RE13/S05u/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gICA/3h4 - eP9fX1/rAAAAOgAAABMAAAAAAAAAAAAAAAAAAAAAAAAAEwAAADxhYWHxeHh4/319ff9+fn7/fn5+/35+ - fv9+fn7/fn5+/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4KCgv+CgoL/goKC/4ODg/+Dg4P/hISE/4WF - hf+Ghob/h4eH/4mJif+MjIz/kpKS/5qamv+mpqb/vb29/+Li4v//////5+fn/8TExP+urq7/oKCg/5mZ - mf+Tk5P/kJCQ/4yMjP+Li4v/iYmJ/4iIiP+Hh4f/hoaG/4aGhv+FhYX/hYWF/4SEhP+EhIT/hISE/4OD - g/+Dg4P/g4OD/4ODg/+Dg4P/goKC/4KCgv9cW3f/FBVf/xQVXv8UFFz/ExRb/xMUWv8TE1n/ExNY/xIT - V/8SE1b/EhNV/xETVP8RE1P/ERNS/xETUv9FR2n/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP9+fn7/eXl5/2JiYvAAAAA8AAAAEwAAAAAAAAAAAAAAAAAA - AAAAAAATAAAAPWZmZvV5eXn/fX19/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+BgYH/gYGB/4GBgf+CgoL/goKC/4ODg/+FhYX/h4eH/4yM - jP+ampr/vb29///////ExMT/oKCg/5OTk/+MjIz/iYmJ/4eHh/+Ghob/hYWF/4SEhP+Dg4P/g4OD/4OD - g/+CgoL/goKC/4KCgv+CgoL/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/35+ - fv96enr/ZGRk8wAAAD0AAAATAAAAAAAAAAAAAAAAAAAAAAAAABMAAAA9Z2dn+Ht7e/99fX3/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv+bm5v/vLy8/7y8 - vP+8vLz/vLy8/7y8vP+8vLz/vLy8/7y8vP+8vLz/vLy8/7y8vP+8vLz/vLy8/7y8vP+SkpL/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fX19/3p6ev9mZmb2AAAAPQAAABMAAAAAAAAAAAAA - AAAAAAAAAAAAEwAAADxoaGj4fHx8/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/2pri/9OUpr/TlKg/05SoP9OU6L/TlOi/09To/9PVKT/T1Sl/1BU - pf9RU6f/UVOo/1FUq/9SVKz/UlWm/4GBk/9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/gICA/4CAgP+AgID/gICA/4GBgf+CgoL/g4OD/4WF - hf+Kior/lpaW/7u7u///////w8PD/6CgoP+Tk5P/jIyM/4mJif+Hh4f/hoaG/4WFhf+EhIT/g4OD/4OD - g/+Dg4P/goKC/4KCgv+CgoL/goKC/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/fHx8/2pqavgAAAA8AAAAEwAAAAAAAAAAAAAAAAAAAAAAAAATAAAAOmlpafV8fHz/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/UFOB/xcY - hv8XGY7/FxiP/xcZkf8YGZP/GBmV/xgalv8ZGpf/GhqZ/xsam/8bGpz/Gxug/xwbov8cG5z/b3CW/35+ - fv9+fn7/fn5+/35+fv+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4GBgf+BgYH/gYGB/4KC - gv+CgoL/g4OD/4SEhP+FhYX/h4eH/4qKiv+Pj4//lpaW/6Ojo/+7u7v/4uLi///////l5eX/w8PD/62t - rf+goKD/mZmZ/5OTk/+Pj4//jIyM/4qKiv+JiYn/iIiI/4eHh/+Ghob/hoaG/4WFhf+FhYX/hISE/4SE - hP+EhIT/g4OD/4ODg/+Dg4P/g4OD/4ODg/+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP99fX3/ampq9QAAADoAAAATAAAAAAAA - AAAAAAAAAAAAAAAAABIAAAA5Z2dn8H19ff+AgID/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9QUn7/FxiF/xcZjv8XGI//FxmR/xgZk/8YGZX/GBqW/xka - l/8aGpn/Gxqb/xsanf8bG6D/HBui/xwbn/9naZ7/gICA/4CAgP+AgID/gICA/4CAgP+BgYH/gYGB/4GB - gf+BgYH/goKC/4KCgv+CgoL/g4OD/4ODg/+EhIT/hYWF/4aGhv+IiIj/ioqK/4yMjP+RkZH/lpaW/56e - nv+pqan/u7u7/9XV1f/x8fH///////Hx8f/Z2dn/w8PD/7Ozs/+oqKj/oKCg/5qamv+Wlpb/k5OT/5CQ - kP+Pj4//jIyM/4uLi/+Kior/iYmJ/4iIiP+Hh4f/h4eH/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4SE - hP+EhIT/hISE/4SEhP+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4KCgv+CgoL/goKC/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/goKC/4CAgP9paWnwAAAAOQAAABIAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADZmZmbqfX19/4CA - gP9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/4CAgP+AgID/gICA/1RW - e/8XGIP/FxiP/xcYj/8XGZH/GBmT/xkZlf8ZGpb/GRqX/xoamf8bGpv/Gxqd/xsboP8cG6L/HRui/1hZ - ov+BgYH/gYGB/4GBgf+CgoL/goKC/4KCgv+CgoL/g4OD/4ODg/+EhIT/hISE/4WFhf+Ghob/h4eH/4iI - iP+Kior/jIyM/4+Pj/+SkpL/lpaW/5ycnP+jo6P/rq6u/7u7u//Ozs7/4uLi//b29v//////9vb2/+Xl - 5f/T09P/w8PD/7a2tv+tra3/pqam/6CgoP+cnJz/mZmZ/5WVlf+Tk5P/kZGR/4+Pj/+Ojo7/jIyM/4uL - i/+Kior/ioqK/4mJif+IiIj/iIiI/4eHh/+Hh4f/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+Dg4P/gYGB/2lpaekAAAA2AAAAEAAA - AAAAAAAAAAAAAAAAAAAAAAAPAAAAM2FhYd59fX3/gYGB/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/WVt3/xcYgf8XGY7/FxiP/xcZkf8YGZP/GRmV/xka - lv8ZGpf/GhqZ/xsam/8bGp3/Gxug/xwbov8dG6T/P0Ch/4yMjP+CgoL/g4OD/4ODg/+EhIT/hISE/4WF - hf+FhYX/hoaG/4eHh/+IiIj/iIiI/4qKiv+Li4v/jo6O/5CQkP+Tk5P/lpaW/5ubm/+goKD/p6en/7Cw - sP+7u7v/ycnJ/9ra2v/r6+v/+vr6///////5+fn/7Ozs/93d3f/Pz8//w8PD/7i4uP+wsLD/qamp/6Wl - pf+goKD/nJyc/5qamv+Wlpb/lJSU/5OTk/+RkZH/kJCQ/4+Pj/+Ojo7/jIyM/4uLi/+Li4v/ioqK/4mJ - if+JiYn/iIiI/4iIiP+IiIj/h4eH/4eHh/+Hh4f/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+FhYX/hISE/4SEhP+EhIT/hISE/4SEhP+EhIT/hISE/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4WFhf+CgoL/ZGRk3QAAADIAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAuX19f0X5+ - fv+CgoL/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gYGB/4GB - gf9oaHn/Fhh7/xcZjf8XGI//FxmR/xgZk/8ZGZX/GRqW/xoamP8aGpn/Gxqb/xsanf8bG6D/HBui/x0b - pP8mJqD/n5+f/4SEhP+FhYX/hYWF/4aGhv+Ghob/h4eH/4iIiP+JiYn/ioqK/4uLi/+MjIz/j4+P/5GR - kf+Tk5P/lpaW/5qamv+enp7/o6Oj/6mpqf+ysrL/u7u7/8fHx//V1dX/4uLi//Hx8f/7+/v///////v7 - +//x8fH/5eXl/9nZ2f/Ozs7/w8PD/7q6uv+zs7P/ra2t/6ioqP+kpKT/oKCg/52dnf+ampr/mZmZ/5aW - lv+UlJT/k5OT/5KSkv+QkJD/j4+P/4+Pj/+Ojo7/jIyM/4uLi/+Li4v/ioqK/4qKiv+JiYn/iYmJ/4iI - iP+IiIj/iIiI/4eHh/+Hh4f/h4eH/4eHh/+Ghob/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+FhYX/hYWF/4SEhP+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+EhIT/hoaG/4KCgv9gYGDRAAAALgAA - AA0AAAAAAAAAAAAAAAAAAAAAAAAACgAAACpZWVnCfn5+/4KCgv+AgID/gICA/4CAgP+AgID/gYGB/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/3h5fv8VF3X/FxmL/xcYkP8XGZH/GBmT/xkZ - lf8ZGpb/GhqY/xoamf8bGpv/Gxqd/xsboP8cG6L/HRuk/x0bo/+Ula3/hoaG/4eHh/+Hh4f/iIiI/4mJ - if+Kior/i4uL/4yMjP+Ojo7/kJCQ/5GRkf+Tk5P/lpaW/5qamv+dnZ3/oaGh/6ampv+srKz/s7Oz/7u7 - u//FxcX/0NDQ/9zc3P/q6ur/9fX1//z8/P//////+/v7//X19f/r6+v/4ODg/9XV1f/Ly8v/w8PD/7y8 - vP+1tbX/r6+v/6urq/+mpqb/o6Oj/6CgoP+dnZ3/m5ub/5mZmf+Xl5f/lZWV/5SUlP+Tk5P/kpKS/5GR - kf+QkJD/j4+P/46Ojv+Ojo7/jIyM/4yMjP+Li4v/i4uL/4qKiv+Kior/iYmJ/4mJif+JiYn/iIiI/4iI - iP+IiIj/h4eH/4eHh/+Hh4f/h4eH/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+FhYX/hYWF/4WFhf+Ghob/g4OD/1xcXMIAAAArAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAJVJS - Uqt+fn7/g4OD/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4KCgv+CgoL/goKC/4KC - gv+CgoL/goKC/x4hc/8XGIj/FxiQ/xcZkf8YGZP/GRmV/xkalv8aGpj/GhqZ/xsam/8bGp3/Gxug/xwb - ov8dG6T/HRum/2psrv+RkZH/iYmJ/4qKiv+Li4v/jIyM/46Ojv+Pj4//kJCQ/5KSkv+UlJT/lpaW/5mZ - mf+cnJz/n5+f/6Ojo/+oqKj/rq6u/7S0tP+7u7v/xMTE/87Ozv/X19f/4uLi/+3t7f/29vb//Pz8//// - ///8/Pz/9vb2/+/v7//l5eX/3Nzc/9PT0//Kysr/w8PD/7y8vP+2trb/srKy/62trf+pqan/pqam/6Oj - o/+goKD/nZ2d/5ycnP+ampr/mZmZ/5aWlv+VlZX/lJSU/5OTk/+SkpL/kZGR/5CQkP+Pj4//j4+P/46O - jv+Ojo7/jIyM/4yMjP+Li4v/i4uL/4qKiv+Kior/ioqK/4mJif+JiYn/iYmJ/4iIiP+IiIj/iIiI/4iI - iP+Hh4f/h4eH/4eHh/+Hh4f/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4eHh/+Dg4P/VVVVqwAA - ACUAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAfR0dHk35+fv+EhIT/gYGB/4GBgf+BgYH/goKC/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+Dg4P/g4OD/4ODg/+Dg4P/MDRy/xcZhP8XGJD/FxmR/xgZ - k/8ZGZX/GRqW/xoamP8aGpr/Gxqb/xsanf8bG6H/HBui/x0bpP8dG6f/OTuo/6mpqf+Li4v/jIyM/46O - jv+Pj4//kZGR/5KSkv+UlJT/lpaW/5mZmf+bm5v/np6e/6Ghof+lpaX/qamp/6+vr/+1tbX/u7u7/8PD - w//Ly8v/1dXV/93d3f/n5+f/8fHx//n5+f/+/v7///////z8/P/39/f/8fHx/+rq6v/h4eH/2dnZ/9HR - 0f/Kysr/w8PD/729vf+3t7f/s7Oz/6+vr/+rq6v/qKio/6Wlpf+jo6P/oKCg/56env+cnJz/mpqa/5mZ - mf+Xl5f/lpaW/5WVlf+UlJT/k5OT/5KSkv+RkZH/kJCQ/5CQkP+Pj4//j4+P/46Ojv+Ojo7/jIyM/4yM - jP+Li4v/i4uL/4qKiv+Kior/ioqK/4mJif+JiYn/iYmJ/4mJif+IiIj/iIiI/4iIiP+IiIj/h4eH/4eH - h/+Hh4f/h4eH/4eHh/+Ghob/iIiI/4SEhP9ISEiTAAAAIAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAwAA - ABk8PDx6fHx8/oaGhv+Dg4P/goKC/4KCgv+CgoL/goKC/4KCgv+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4SE - hP+EhIT/hISE/4SEhP9GSnL/Fhh+/xcYjv8XGZH/GBmT/xkZlf8ZGpb/GhqY/xoamv8bGpv/Gxqd/xwb - of8dG6P/HRuk/x0bp/8eHKf/pKW7/5KSkv+QkJD/kZGR/5OTk/+UlJT/lpaW/5mZmf+bm5v/nZ2d/6Cg - oP+jo6P/p6en/6ysrP+wsLD/tbW1/7u7u//CwsL/ycnJ/9HR0f/a2tr/4uLi/+vr6//09PT/+vr6//7+ - /v///////v7+//n5+f/09PT/7Ozs/+Xl5f/d3d3/1tbW/8/Pz//Jycn/w8PD/729vf+4uLj/tLS0/7Cw - sP+tra3/qamp/6enp/+lpaX/oaGh/6CgoP+enp7/nJyc/5ubm/+ampr/mZmZ/5aWlv+VlZX/lJSU/5SU - lP+Tk5P/kpKS/5KSkv+ZmZn/m5ub/5ubm/+Pj4//jo6O/46Ojv+MjIz/jIyM/4yMjP+Li4v/i4uL/4uL - i/+Kior/ioqK/4qKiv+JiYn/iYmJ/4mJif+JiYn/iIiI/4iIiP+IiIj/iIiI/4mJif+Li4v/goKC/kBA - QHoAAAAaAAAABAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAFCkpKVd2dnb0h4eH/4WFhf+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4ODg/+EhIT/hISE/4SEhP+EhIT/hYWF/4WFhf+FhYX/hYWF/2Zmev8VF3X/FxqL/xcZ - k/8YGZP/GRqV/xkalv8aGpj/Ghqa/xsanP8bGp3/HBuh/x0bo/8dG6T/Hhun/x4cqv9gYbL/rKys/5OT - k/+UlJT/lpaW/5mZmf+ampr/nJyc/5+fn/+hoaH/paWl/6ioqP+tra3/sLCw/7a2tv+7u7v/wsLC/8jI - yP/Pz8//19fX/9/f3//n5+f/7+/v//X19f/7+/v//v7+///////+/v7/+vr6//X19f/v7+//6Ojo/+Li - 4v/b29v/1dXV/8/Pz//Jycn/w8PD/76+vv+6urr/tbW1/7Kysv+urq7/rKys/6ioqP+mpqb/pKSk/6Gh - of+goKD/oaGh/6ampv+rq6v/ra2t/7S0tP+1tbX/vr6+/76+vv/IyMj/yMjI/8jIyP/Hx8f/uLi4/5GR - kf+QkJD/kJCQ/4+Pj/+Pj4//jo6O/46Ojv+MjIz/jIyM/4yMjP+Li4v/i4uL/4uLi/+Kior/ioqK/4qK - iv+Kior/iYmJ/4mJif+JiYn/i4uL/46Ojv9+fn70KioqWQAAABQAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAOBAQENnJycueIiIj/hoaG/4ODg/+EhIT/hISE/4SEhP+EhIT/hISE/4WFhf+FhYX/hYWF/4WF - hf+Ghob/hoaG/4aGhv+Hh4f/hYWG/xocbf8XGYb/FxqT/xgalP8ZGpX/GRuW/xoamP8aGpr/Gxuc/xsb - nf8cG6H/HRuj/x0bpf8eHKf/Hxyq/yQjq/+5usP/nJyc/5eXl/+ampr/nJyc/56env+goKD/o6Oj/6am - pv+pqan/rq6u/7Kysv+2trb/u7u7/8HBwf/Hx8f/zs7O/9XV1f/b29v/4uLi/+rq6v/x8fH/9vb2//v7 - +//+/v7///////7+/v/7+/v/9vb2//Hx8f/r6+v/5eXl/9/f3//Z2dn/09PT/87Ozv/IyMj/w8PD/76+ - vv+/v7//vb29/8LCwv/BwcH/xcXF/8XFxf/Kysr/zc3N/9DQ0P/Pz8//z8/P/87Ozv/Bwcr/o6TF/6Kj - xP98fbz/e325/2Fjsv9WWa//SEyp/zU5of9VWZr/k5OT/5KSkv+SkpL/kZGR/5CQkP+QkJD/j4+P/4+P - j/+Pj4//jo6O/46Ojv+MjIz/jIyM/4yMjP+Li4v/i4uL/4uLi/+Li4v/ioqK/4qKiv+Ojo7/kJCQ/3h4 - eOcEBAQ2AAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAoaWlpzYmJif+IiIj/hISE/4SE - hP+FhYX/hYWF/4WFhf+FhYX/hoaG/4aGhv+Ghob/h4eH/4eHh/+Hh4f/iIiI/4iIiP+IiIj/NTlw/xcY - gf8YGpD/GBqU/xkalf8ZG5b/GhqY/xobmv8bG5z/Gxuf/xwcof8dG6P/HRyl/x4cp/8fHar/IB2t/2xt - uf+6urr/m5ub/52dnf+fn5//oaGh/6Wlpf+np6f/q6ur/66urv+zs7P/tra2/7u7u//BwcH/x8fH/8vL - y//T09P/2dnZ/+Dg4P/m5ub/7Ozs//Ly8v/39/f//Pz8/////////////v7+//v7+//39/f/8vLy/+3t - 7f/o6Oj/4uLi/9zc3P/X19f/1dXV/9/f3//i4uL/4eHh/9/f3/+5udj/sbHW/5yc0/+Hh87/f3/M/2Fh - xv9gYMT/QUK9/z49uv8sK7X/IB2w/yAdrv8fHaz/Hh2p/x4cpv8dG6T/HRui/xwcoP8cG5z/GxuY/zk8 - kf+VlZX/lJSU/5OTk/+Tk5P/kpKS/5KSkv+RkZH/kZGR/5CQkP+QkJD/j4+P/4+Pj/+Pj4//jo6O/46O - jv+MjIz/jIyM/4yMjP+Li4v/i4uL/4+Pj/+RkZH/bm5uzQAAACgAAAAKAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABgAAAB9VVVWfiYmJ/4qKiv+FhYX/hYWF/4aGhv+Ghob/hoaG/4aGhv+Hh4f/h4eH/4eH - h/+IiIj/iIiI/4iIiP+JiYn/iYmJ/4qKiv9bXHn/FRd0/xgajf8ZGpT/GRqW/xkblv8aGpj/Ghua/xsb - nP8bG5//HByh/x0bo/8dHKX/Hhyp/x8dqv8gHa3/JiWv/7e3yP+srKz/oaGh/6Ojo/+mpqb/qKio/6ys - rP+vr6//s7Oz/7e3t/+7u7v/wcHB/8XFxf/Ly8v/0NDQ/9bW1v/c3Nz/4uLi/+rq6v/v7+//9fX1//n5 - +f/8/Pz////////////+/v7/+/v7//n5+f/19fX/8PDw/+vr6//l5eX/4ODg/9bW2P9WVKD/QD6l/0E9 - u/8pIsb/KiLM/ykhzP8oIcn/JyDG/yYhxP8lIMD/JCC+/yMfvP8jH7r/Ih62/yEes/8hHbD/IB2u/yAd - rP8fHan/Hhym/x0bpP8dG6L/HByg/xwbnP8bG5n/NjmS/5eXl/+Wlpb/lZWV/5WVlf+UlJT/k5OT/5OT - k/+SkpL/kpKS/5GRkf+RkZH/kJCQ/5CQkP+Pj4//j4+P/4+Pj/+Ojo7/jo6O/46Ojv+MjIz/kpKS/5GR - kf9dXV2fAAAAHwAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAFz09PWyJiYn/jIyM/4iI - iP+Ghob/h4eH/4eHh/+Hh4f/iIiI/4iIiP+IiIj/iIiI/4mJif+JiYn/ioqK/4qKiv+Li4v/i4uL/4eI - iv8YGWn/GBqF/xkak/8aGpb/GhqX/xoamP8aG5r/Gxuc/xsbn/8cG6L/HRuj/x0cpf8eHKn/Hx2r/yAd - rf8gHa//VFW5/8vLy/+oqKj/p6en/6mpqf+tra3/sLCw/7S0tP+3t7f/u7u7/7+/v//ExMT/ycnJ/8/P - z//V1dX/2tra/+Dg4P/m5ub/6+vr//Hx8f/29vb/+vr6//z8/P////////////7+/v/8/Pz/+fn5//X1 - 9f/x8fH/7Ozs/+fn5//i4uL/3d3d/6Wkwv8rKIj/Ix6T/ychrf8oIsD/KSLJ/yghyf8nIMb/JiHE/yYg - wP8lIL//JB+8/yMfuv8jH7b/Ih+z/yEesv8gHa7/IB2s/x8dqf8eHKf/HRyk/x0bov8cHKD/HBud/xsb - mv8vMZL/mpqa/5mZmf+Xl5f/lpaW/5aWlv+VlZX/lJSU/5SUlP+Tk5P/k5OT/5KSkv+SkpL/kZGR/5GR - kf+QkJD/kJCQ/5CQkP+Pj4//j4+P/5CQkP+UlJT/kZGR/0FBQW0AAAAXAAAAAwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAQISEhRX5+fu2RkZH/ioqK/4eHh/+IiIj/iIiI/4iIiP+JiYn/iYmJ/4mJ - if+Kior/ioqK/4uLi/+Li4v/jIyM/4yMjP+Ojo7/jo6O/z5Bcf8WGHn/GRmO/xoalv8aGpf/GhqZ/xsb - mv8cG5z/HBuf/x0bov8dG6P/HRyl/x4cqf8fHav/IB2t/yAdr/8hHrL/mJjH/8fHx/+srKz/rq6u/7Cw - sP+0tLT/t7e3/7u7u/+/v7//xMTE/8nJyf/Ozs7/09PT/9fX1//d3d3/4uLi/+jo6P/t7e3/8vLy//b2 - 9v/6+vr//Pz8/////////////v7+//z8/P/6+vr/9vb2//Ly8v/v7+//6urq/+Xl5f/g4OD/3Nzc/7q5 - y/86N47/Ix2N/yUgpP8nIbv/KCLG/ycgxv8mIcT/JiDC/yUgv/8kH7z/Ix+6/yMftv8iH7T/IR6y/yAe - rv8gHaz/Hx6q/x4dp/8dHKT/HRyi/xwdoP8cHJ3/Gxua/yorkP+cnJz/m5ub/5qamv+ZmZn/mZmZ/5eX - l/+Wlpb/lZWV/5WVlf+UlJT/lJSU/5OTk/+Tk5P/kpKS/5KSkv+RkZH/kZGR/5GRkf+QkJD/k5OT/5eX - l/+GhobtISEhRQAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAobW1txpGR - kf+Ojo7/iIiI/4mJif+JiYn/iYmJ/4qKiv+Kior/i4uL/4uLi/+Li4v/jIyM/46Ojv+Ojo7/j4+P/4+P - j/+QkJD/dXaF/xQWav8ZGoj/GhqV/xoal/8aGpn/Gxua/xwbnP8cG5//HRui/x0bpP8eHKX/Hxyp/yAd - q/8gHK7/IR2w/yEes/8uLbb/w8TR/8XFxf+ysrL/tLS0/7e3t/+7u7v/v7+//8PDw//IyMj/zc3N/9HR - 0f/W1tb/29vb/+Dg4P/m5ub/6+vr/+/v7//09PT/9/f3//v7+//+/v7////////////+/v7//Pz8//r6 - +v/39/f/9PT0//Dw8P/s7Oz/5+fn/+Tk5P/f39//2tra/8vL0v9KSZX/IR2I/yMenP8mIbX/JyHC/yYh - xP8mIML/JSC//yQfvP8jH7r/Ix+3/yIftP8hHrL/IB6u/yAdrP8fHqr/Hh2n/x0cpP8dHKL/HB2h/xwc - nf8bHJv/IySP/5+fn/+dnZ3/nJyc/5ubm/+ampr/mpqa/5mZmf+Xl5f/lpaW/5aWlv+VlZX/lZWV/5SU - lP+UlJT/k5OT/5OTk/+SkpL/kpKS/5GRkf+VlZX/mpqa/3d3d8cAAAAoAAAACQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABxcXFyVkZGR/5GRkf+Kior/ioqK/4qKiv+Li4v/i4uL/4uL - i/+MjIz/jIyM/46Ojv+Ojo7/j4+P/4+Pj/+QkJD/kZGR/5KSkv+SkpL/MjRu/xcZe/8aGZD/GhqX/xoa - mf8bG5v/HBuc/xwbn/8dG6L/HRuk/x4cpv8fHKn/IB2r/yAdrv8hHrD/Ih+z/yMftv9MTb7/1dXX/8nJ - yf+4uLj/u7u7/7+/v//Dw8P/x8fH/8vLy//Q0ND/1dXV/9nZ2f/d3d3/4uLi/+fn5//s7Oz/8fHx//X1 - 9f/5+fn/+/v7//7+/v////////////7+/v/8/Pz/+/v7//f39//19fX/8fHx/+3t7f/q6ur/5eXl/+Hh - 4f/d3d3/2dnZ/9PT1P9nZ6H/IB2E/yIelf8lIK//JiG//yYhwv8lIL//JB+8/yMfuv8jH7f/Ih+0/yEe - sv8gHq7/IB2t/x8eqv8eHaf/HRyk/x0cov8cHaH/HByd/xscm/8dHo3/o6Oj/5+fn/+enp7/nZ2d/5yc - nP+bm5v/mpqa/5qamv+ZmZn/mZmZ/5eXl/+Wlpb/lpaW/5WVlf+VlZX/lJSU/5SUlP+Tk5P/lJSU/5mZ - mf+ampr/YmJilgAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAETEx - MVOMjIz6lZWV/4+Pj/+Li4v/i4uL/4yMjP+MjIz/jo6O/46Ojv+Pj4//j4+P/5CQkP+QkJD/kZGR/5KS - kv+Tk5P/k5OT/5SUlP91doj/FRZr/xkaiP8aG5X/GhqZ/xsbm/8cG53/HByf/x0bov8dHKT/Hh2m/x8d - qf8gHqv/IB2u/yEesP8iH7T/Ix+2/yMguP9lZMb/29vb/9DQ0P+/v7//w8PD/8fHx//Kysr/z8/P/9PT - 0//X19f/3Nzc/+Hh4f/l5eX/6urq/+3t7f/y8vL/9vb2//n5+f/7+/v//v7+/////////////v7+//z8 - /P/7+/v/+fn5//b29v/y8vL/7+/v/+vr6//n5+f/5OTk/+Dg4P/b29v/19fX/9TU1P+FhK7/IyCF/yId - nP8mIbr/JiHC/yUhv/8kILz/Ix+7/yMft/8iH7T/IR6y/yAer/8gHa3/Hx6q/x4dp/8dHKT/HRyj/xwd - of8cHJ3/HByb/xsbjP+mpqf/oaGh/6CgoP+fn5//np6e/52dnf+cnJz/m5ub/5ubm/+ampr/mZmZ/5mZ - mf+Xl5f/l5eX/5aWlv+VlZX/lZWV/5WVlf+Wlpb/np6e/5SUlPo0NDRTAAAAEQAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAJ3x8fNGZmZn/k5OT/4yMjP+Ojo7/jo6O/4+P - j/+Pj4//j4+P/5CQkP+RkZH/kZGR/5KSkv+Tk5P/k5OT/5SUlP+VlZX/lpaW/5eXl/8wM27/Fxh4/xob - j/8aG5j/Gxub/xwcnf8cHKD/HRyi/x0cpP8eHab/Hx2q/yAdrP8gHa7/IR6w/yIftP8jH7f/IyC4/yQf - vP9vbsr/39/f/9nZ2f/Hx8f/ycnJ/87Ozv/R0dH/1tbW/9ra2v/f39//4uLi/+fn5//r6+v/8PDw//T0 - 9P/29vb/+vr6//z8/P/+/v7////////////+/v7//v7+//v7+//5+fn/9vb2//T09P/w8PD/7Ozs/+jo - 6P/l5eX/4eHh/93d3f/a2tr/1tbW/9PT0/+hoL//Mi2t/yYhvf8mIcL/JiG//yUgvf8jILv/IyC3/yIf - tP8hHrL/IB6v/yAdrf8gHqr/Hx2n/x4cpf8dHKP/HB2h/xwcnf8cHJv/GxuM/6ChqP+kpKT/oaGh/6Gh - of+goKD/n5+f/56env+dnZ3/nJyc/5ycnP+bm5v/mpqa/5qamv+ZmZn/mZmZ/5eXl/+Wlpb/lpaW/5ub - m/+goKD/g4OD0QAAACcAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAQAAAAZX19fjpmZmf+Wlpb/kJCQ/4+Pj/+Pj4//kJCQ/5CQkP+RkZH/kZGR/5KSkv+Tk5P/k5OT/5SU - lP+VlZX/lpaW/5eXl/+ZmZn/mpqa/31+jv8WF2j/GRqE/xobl/8bHJv/HByd/xwcoP8dHKL/HRyk/x4d - pv8fHar/IB2s/yAdrv8hHrD/Ih+0/yMft/8jH7r/JB+8/yUhvv9hYsv/3d3h/9/f3//Q0ND/0NDQ/9XV - 1f/Z2dn/3Nzc/+Hh4f/l5eX/6urq/+3t7f/x8fH/9fX1//f39//6+vr//Pz8//7+/v////////////// - ///+/v7/+/v7//r6+v/39/f/9fX1//Hx8f/t7e3/6+vr/+fn5//k5OT/4ODg/9zc3P/Z2dn/3d3d/+bm - 5v/ExeH/KSPD/yYhwv8mIcD/JSC9/yQgu/8jILf/IyC1/yIfs/8hH6//IB6t/yAeqv8fHaf/Hhyl/x0c - o/8cHaH/HByd/xwcnP8bG43/mZql/6Wlpf+kpKT/o6Oj/6Ghof+goKD/oKCg/5+fn/+enp7/nZ2d/52d - nf+cnJz/m5ub/5qamv+ampr/mZmZ/5mZmf+ZmZn/oKCg/6Ghof9mZmaOAAAAGQAAAAQAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA8qKipIkZGR8pycnP+Tk5P/kJCQ/5GR - kf+RkZH/kpKS/5KSkv+Tk5P/lJSU/5SUlP+VlZX/lpaW/5eXl/+ZmZn/mZmZ/5qamv+bm5v/nJyc/0dI - d/8WF3L/GhuN/xscmv8cHJ3/HByg/x0cov8dHKT/Hh2m/x8dqv8gHaz/IB2v/yEesP8iH7T/Ix+3/yMf - uv8kIL3/JSG+/yYhwv9NSsr/2trj/+bm5v/c3Nz/19fX/9vb2//f39//4uLi/+fn5//r6+v/7+/v//Ly - 8v/19fX/+fn5//v7+//8/Pz//v7+//////////////////7+/v/8/Pz/+vr6//f39//19fX/8vLy/+/v - 7//s7Oz/6Ojo/+Xl5f/i4uL/5OTk/+rq6v/r6+v/39/o/19d0f8nIcX/JiHD/yYhwP8lIL3/JCC7/yMg - t/8jILX/Ih+z/yEfr/8gHq3/IB+q/x8eqf8eHaX/HR2j/xwdof8cHJ3/HByc/xscjv+Vlqb/p6en/6am - pv+lpaX/pKSk/6Ojo/+hoaH/oKCg/6CgoP+fn5//np6e/52dnf+dnZ3/nJyc/5ubm/+bm5v/mpqa/52d - nf+kpKT/mZmZ8i4uLkgAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABwAAACF6enq9np6e/5mZmf+SkpL/kpKS/5KSkv+Tk5P/lJSU/5SUlP+VlZX/lpaW/5eX - l/+ZmZn/mZmZ/5qamv+bm5v/nJyc/52dnf+enp7/l5ec/yAjaf8YGXv/GxyT/xwcnP8cHKD/HRyj/x0c - pP8eHab/Hx2q/yAdrP8gHa//IR6y/yIftP8jILf/JCC6/yUgvf8mIb//JiHC/ychxP9DQMz/zMvk/+vr - 6//o6Oj/4eHh/+Hh4f/l5eX/6Ojo/+zs7P/w8PD/8vLy//b29v/5+fn/+/v7//z8/P/+/v7///////// - /////////v7+//z8/P/6+vr/+fn5//b29v/09PT/8PDw/+3t7f/q6ur/6urq/+/v7//w8PD/6+vu/5ST - 3v82M8z/KCLH/ychxf8mIcP/JiHA/yUgvf8kILv/IyC4/yMgtf8iH7P/IR+v/yAerf8gH6v/Hx6p/x4d - pf8dHaP/HB2h/xwdn/8cHZz/GxyP/5OUqf+pqan/qKio/6enp/+mpqb/paWl/6SkpP+jo6P/oaGh/6Cg - oP+goKD/n5+f/56env+dnZ3/nZ2d/5ycnP+cnJz/o6Oj/6enp/+Dg4O+AAAAIQAAAAcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAE0xMTGecnJz+n5+f/5aW - lv+Tk5P/lJSU/5WVlf+VlZX/lpaW/5eXl/+Xl5f/mZmZ/5qamv+bm5v/nJyc/52dnf+enp7/n5+f/6Cg - oP+hoaH/bW6K/xYWaf8aG4X/HBuZ/xwcoP8dHKP/Hhyl/x8dpv8gHar/IB2s/yEer/8iH7L/IiC0/yMg - t/8kILr/JSC9/yYhv/8mIcP/JyHE/yghx/8wKsv/j47b/+3t7f/v7+//7e3t/+rq6v/q6ur/7e3t//Hx - 8f/09PT/9vb2//n5+f/7+/v//Pz8//7+/v/////////////////+/v7//Pz8//v7+//5+fn/9vb2//T0 - 9P/x8fH/8fHx//Ly8v/09PT/8vLy/6mp5v9EP9X/KiPN/ykjyv8oIsn/JyHG/yYhw/8mIcD/JSC9/yQg - u/8jILj/IyC1/yIfs/8hH6//IB6t/yAfq/8fHqn/Hh2l/x0do/8cHaH/HB2f/xwdnP8bHJD/jY6n/6ys - rP+rq6v/qamp/6ioqP+np6f/pqam/6Wlpf+kpKT/o6Oj/6Ghof+goKD/oKCg/5+fn/+enp7/nZ2d/6Cg - oP+np6f/pqam/lBQUGgAAAATAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAKBgYGKYmJidOjo6P/nJyc/5WVlf+VlZX/lpaW/5eXl/+Xl5f/mZmZ/5qa - mv+bm5v/nJyc/52dnf+enp7/n5+f/6CgoP+hoaH/o6Oj/6SkpP+mpqb/R0l6/xcYb/8bG4z/HByd/x0c - o/8eHaX/Hx2n/yAeqv8gHqz/IR6v/yIfsv8jILX/IyC3/yQguv8lIL3/JiG//yYhw/8nIcX/KCLH/ykj - yv8qI8z/TEnV/7q66P/y8vL/9PT0//X19f/09PT/9PT0//X19f/39/f/+vr6//v7+//+/v7//v7+//// - //////////////7+/v/8/Pz/+/v7//n5+f/5+fn/9/f3//f39//39/f/9vb2/7u77P9NStr/KyPS/yok - 0P8qI83/KSPL/ygiyf8nIsb/JiHD/yYhwP8lIL3/JCC8/yMguP8jILX/Ih+z/yEfr/8gHq7/IB+r/x8e - qf8eHaX/HR2j/x0dov8cHZ//HB2c/xsckf+Ehqf/rq6u/6ysrP+rq6v/qamp/6ioqP+np6f/pqam/6Wl - pf+lpaX/pKSk/6Ojo/+hoaH/oKCg/6CgoP+fn5//paWl/62trf+RkZHTBgYGKQAAAAoAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAVYWFhfaam - pv+jo6P/mZmZ/5eXl/+Xl5f/mZmZ/5qamv+bm5v/m5ub/5ycnP+dnZ3/np6e/5+fn/+goKD/oaGh/6Oj - o/+lpaX/pqam/6enp/+kpKb/Ky5v/xkZdf8bHJD/HR2g/x4dpf8fHqf/IB6q/yAerP8hHq//Ih+y/yMg - tf8jILj/JCC6/yUgvf8mIb//JiHD/ychxf8oIsf/KSPK/yojzP8qJM7/KyPS/1ZT2/+sq+v/7u31//f3 - 9//5+fn/+vr6//r6+v/7+/v//Pz8//7+/v///////////////////////v7+//7+/v/8/Pz//Pz8//v7 - +//6+vr/+fn5/7W17/9RTd7/LSTX/ywk1P8rI9L/KiTQ/yojzf8pI8v/KCLJ/ycixv8mIcP/JiLA/yUh - vv8kILz/IyC4/yMgtf8iH7P/IR+w/yAerv8gH6v/Hx6p/x4dpf8dHaP/HR2i/xwdn/8cHZz/GxyT/4CC - p/+vr6//rq6u/62trf+srKz/q6ur/6mpqf+oqKj/p6en/6ampv+lpaX/pKSk/6SkpP+jo6P/oaGh/6Oj - o/+srKz/rq6u/2ZmZn0AAAAVAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAoGBgYqk5OT2qioqP+enp7/mZmZ/5qamv+ampr/m5ub/5yc - nP+dnZ3/np6e/5+fn/+goKD/oaGh/6Ojo/+kpKT/paWl/6enp/+oqKj/qamp/6ysrP+SkqD/Hh5p/xkZ - ev8cHJX/Hh2j/x8ep/8gHqv/IB6s/yEer/8iH7L/IyC1/yMguP8kILv/JSC9/yYhv/8mIcP/JyLF/ygi - yf8pI8v/KiPM/yokzv8rI9L/LCTU/y0k1/8zKtn/ZGHi/7Cu8P/z8vr//Pz8//z8/P/+/v7///////// - /////////////////////////v7+//7+/v/8/Pz/xsX1/4J/6v9AOt//Liba/y4l2f8tJNf/LCTU/ysj - 0v8qJND/KiPN/ykjy/8oIsn/JyLG/yYhw/8mIsD/JSG+/yQhvP8jILj/IyC1/yIfs/8hH7D/IB6u/yAf - q/8fHqn/Hh2l/x0dpP8dHaL/HB2f/xwdnP8bG5P/enym/7Kysv+wsLD/r6+v/66urv+srKz/q6ur/6mp - qf+oqKj/qKio/6enp/+mpqb/paWl/6SkpP+jo6P/qamp/7Kysv+ZmZnbBgYGKgAAAAoAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAA - ABVmZmZ8qamp/qenp/+dnZ3/m5ub/5ycnP+dnZ3/np6e/5+fn/+goKD/oaGh/6Ghof+jo6P/paWl/6am - pv+np6f/qKio/6urq/+srKz/rq6u/6+vr/+Dg5v/Ghpq/xoafv8dHZf/Hx6k/yAeq/8gHq3/IR6v/yIf - sv8jILX/IyC4/yQgu/8lIL3/JiG//yYhw/8nIsX/KCLJ/ykjy/8qI83/KiTO/ysj0v8sJNT/LSTX/y4l - 2P8uJtr/Libd/zQs3/9VUOX/dnTr/5yZ8P+ioPP/srD1/8/O+f+sq/T/oqDz/5+d8/93dO3/U03m/zcv - 4v8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0k1/8sJNT/LCPS/ysk0P8qI87/KiPL/ykiyf8oIsb/JyHD/yYi - wP8lIb7/JCG8/yMguP8jILX/IiC0/yIfsP8hHq7/IB+p/x8epf8fHaX/Hh2k/x0dov8dHZ//HB2c/xsb - lP91eKX/tLS0/7Kysv+wsLD/r6+v/66urv+tra3/rKys/6urq/+pqan/qKio/6enp/+mpqb/pqam/6en - p/+wsLD/sbGx/mtra3sAAAAVAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACgAAACeVlZXXra2t/6SkpP+dnZ3/nZ2d/56e - nv+fn5//oKCg/6Ghof+jo6P/pKSk/6Wlpf+mpqb/qKio/6mpqf+rq6v/ra2t/66urv+vr6//srKy/7Oz - s/91dpb/GBlr/xoagP8eHZj/Hx6m/yAerf8hHq//Ih+y/yMgtf8jILj/JCC7/yUhvv8mIr//JiHD/yci - xf8oIsn/KSPL/yojzf8rJND/KyPS/ywk1P8tJNf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm - 4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywk - 1P8sI9L/KyTQ/yojzv8qI8v/KSLJ/ygixv8nIcP/JiLC/yYhvv8lIbz/JCC4/yMhtf8iILT/Ih+v/yEf - qf8fH5r/HR2T/x4dmf8eHaH/HR2i/x0dn/8cHZ3/GxuV/2tupP+1tbX/tLS0/7Ozs/+ysrL/sLCw/6+v - r/+tra3/rKys/6ysrP+rq6v/qamp/6ioqP+oqKj/ra2t/7W1tf+dnZ3XBgYGJwAAAAoAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAADAAAAE2BgYGqtra3+ra2t/6Ojo/+fn5//oKCg/6Ghof+jo6P/o6Oj/6Wlpf+mpqb/p6en/6io - qP+pqan/rKys/62trf+urq7/sLCw/7Kysv+0tLT/tbW1/7e3t/9tb5X/GBlr/xsbgP8eHZn/IB+p/yEe - sP8iH7L/IyC1/yMguP8kIbv/JSG+/yYiwP8mIcP/JyLF/ykiyf8qI8v/KiPN/ysk0P8rI9L/LCTU/y0l - 1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm - 4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdf/LCTU/ywj0v8rI9H/KiPO/yojy/8pIsn/KCLG/ych - xP8mIsL/JiG+/yUhvP8kILj/IyC2/yIgsv8hIKb/Hh2V/xwcfv8aG3X/GxuB/x0dlP8dHZ//HR2f/xwd - nf8bG5X/Zmmi/7e3t/+2trb/tLS0/7Ozs/+ysrL/sLCw/6+vr/+urq7/ra2t/6ysrP+rq6v/qamp/6ys - rP+2trb/tra2/mZmZmsAAAATAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAH5OTk8Czs7P/q6ur/6Oj - o/+hoaH/o6Oj/6SkpP+lpaX/pqam/6enp/+oqKj/q6ur/6ysrP+tra3/r6+v/7CwsP+ysrL/tLS0/7W1 - tf+3t7f/urq6/7u7u/9vcZf/Ghtt/xsbgP8fHpj/IR+q/yIfsv8jILX/IyC4/yUhu/8mIb7/JiLA/ych - w/8oIsX/KSLJ/yojy/8qI83/KyTQ/ysj0v8sJNT/LSXX/y4l2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm - 4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l - 1/8sJNT/LCPS/ysj0f8qI87/KiPL/ykiyf8oIsb/JyHE/yYiwv8mIb7/JSG8/yQguP8jIbL/IR+k/x8d - jv8cG3n/HyBu/01Oh/8aG23/Ght7/xwcj/8dHZr/HB2c/xwclv9fY6H/uLi4/7e3t/+2trb/tbW1/7S0 - tP+zs7P/srKy/7CwsP+vr6//ra2t/62trf+tra3/tbW1/7y8vP+bm5vAAAAAHwAAAAcAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAOR0dHS62trfK0tLT/qamp/6Ojo/+lpaX/pqam/6enp/+oqKj/qamp/6ur - q/+srKz/rq6u/6+vr/+wsLD/s7Oz/7S0tP+2trb/t7e3/7q6uv+7u7v/vb29/7+/v/+CgqH/HR1u/xsb - fP8fHZX/ISCp/yMhtP8kILj/JSG7/yYhvv8mIsD/JyHE/ygixf8pIsn/KiPL/yojzf8rJND/KyPS/ywk - 1P8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm - 4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl1P8sJNP/KyPR/yojzv8qI8v/KSLJ/ygi - xv8nIcT/JiLC/yYhvv8lIbr/IyCy/yEfoP8eHYn/HBt1/zM0e/+qqrr/ycnJ/4WGpP8dHmz/GRp2/xwc - i/8cHZj/HByW/1peoP+7u7v/urq6/7e3t/+2trb/tbW1/7S0tP+zs7P/srKy/7CwsP+vr6//rq6u/7Oz - s/+8vLz/tbW18kpKSksAAAAOAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAWfn5+jbi4 - uP+zs7P/qKio/6ampv+np6f/qKio/6mpqf+rq6v/ra2t/66urv+vr6//sLCw/7Ozs/+0tLT/tra2/7e3 - t/+6urr/u7u7/729vf+/v7//wsLC/8TExP+Tla3/IyVx/xwbef8fHY7/IiCl/yQgtP8lIbr/JiG+/yYi - wP8nIcT/KCLF/ykiyf8qI8v/KiPN/ysk0P8rJNP/LCXU/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m - 4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l - 2f8tJdf/LCXU/ywk0/8rI9H/KiPO/yojy/8pIsn/KCLH/ychxP8mIsL/JiG8/yQhsP8iH5v/Hh2D/x0c - c/9dXpT/yMjL/83Nzf/Kysr/ycnJ/5SVrP8hJG3/GRpz/xsch/8bHJD/UFOc/7y8vP+7u7v/urq6/7i4 - uP+3t7f/tbW1/7S0tP+zs7P/srKy/7CwsP+zs7P/u7u7/8HBwf+FhYWNAAAAFgAAAAUAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAkHBwcjpKSkzry8vP+ysrL/qamp/6ioqP+rq6v/rKys/62t - rf+urq7/r6+v/7Kysv+zs7P/tLS0/7a2tv+3t7f/urq6/7u7u/+9vb3/v7+//8LCwv/Dw8P/xcXF/8jI - yP+ysb7/OzyA/x0bdv8fHon/Ih+g/yQhsP8mIbz/JiLA/ychxP8oIsb/KSLJ/yojy/8qI83/KyTQ/ysk - 0/8sJdT/LSXX/y4l2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm - 5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l1/8sJdT/LCTT/ysk0f8qJM7/KiPL/yki - yf8oIsf/JyHD/yYhvP8kIKz/IR+V/x8cgP8nJ3j/kpSy/9HR0f/Q0ND/zs7O/83Nzf/Kysr/ycnJ/6Ok - s/8nKW7/GBlv/xobgP9JTJb/vr6+/729vf+7u7v/urq6/7i4uP+3t7f/tra2/7W1tf+0tLT/tLS0/7y8 - vP/Dw8P/qqqqzgcHByMAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AA1MTExJtLS07ry8vP+ysrL/rKys/6ysrP+tra3/rq6u/7CwsP+ysrL/s7Oz/7W1tf+2trb/t7e3/7q6 - uv+7u7v/vb29/7+/v//BwcH/w8PD/8XFxf/IyMj/ycnJ/8vLy//Jycv/YWOW/x0cc/8eHYL/ISCV/yQg - q/8lIbj/JyHC/ygixv8pIsn/KiPL/yokzf8rJND/KyTT/ywl1P8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m - 3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m - 2v8uJdn/LSXX/ywl1P8sJNP/KyTR/yokzv8qI8v/KSLJ/ygiw/8mIbb/IyCk/yEejP8fHXv/QkSJ/8DB - y//V1dX/1NTU/9HR0f/Pz8//zs7O/8vLy//Kysr/yMjI/66vuv8vMnP/GBlq/0BDhv+/v7//vr6+/729 - vf+8vLz/urq6/7i4uP+3t7f/tra2/7a2tv+7u7v/xMTE/7u7u+5QUFBJAAAADQAAAAIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABN2dnZ0v7+//by8vP+zs7P/rq6u/6+v - r/+wsLD/srKy/7Ozs/+1tbX/tra2/7i4uP+6urr/u7u7/729vf+/v7//wcHB/8PDw//FxcX/x8fH/8nJ - yf/Ly8v/zs7O/9DQ0P/R0dH/m5u3/zAvfv8fHXv/IR6L/yMgn/8lIrD/JyK+/ykix/8qI8v/KiTN/ysk - 0P8rJNP/LCXW/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm - 5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdf/LCXW/ywk0/8rJNH/KiTO/yok - yf8oI73/JSKt/yMgl/8gH4X/IR94/3N0pv/X19r/2dnZ/9bW1v/V1dX/09PT/9HR0f/Pz8//zs7O/8vL - y//Kysr/yMjI/7e4v/85PHb/NTh1/8LCwv+/v7//vr6+/729vf+8vLz/urq6/7i4uP+3t7f/u7u7/8TE - xP/Gxsb9e3t7dAAAABMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABwAAABmWlpakw8PD/7y8vP+zs7P/sLCw/7Kysv+0tLT/tbW1/7a2tv+4uLj/urq6/7u7 - u/+9vb3/v7+//8HBwf/Dw8P/xMTE/8fHx//Jycn/y8vL/83Nzf/Pz8//0dHR/9TU1P/W1tb/0NHV/2xs - oP8hIXn/IB6B/yEfjv8lIaL/JyK0/ygkwP8qI8r/KyTO/ysk0/8sJdb/LSXX/y4l2P8uJtr/Libd/y8l - 3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m - 3f8uJtr/LiXZ/y0l1/8sJdb/LCTS/yokzP8pI8D/JyKz/yUhn/8iH4v/IB59/0FAi/+ztMn/39/f/9zc - 3P/a2tr/2dnZ/9bW1v/U1NT/09PT/9DQ0P/Pz8//zc3N/8vLy//Kysr/yMjI/8C/w/9kZ4//w8PD/8LC - wv+/v7//vr6+/729vf+8vLz/u7u7/729vf/ExMT/y8vL/52dnaUAAAAZAAAABwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACg0NDSWurq7QxMTE/7y8 - vP+1tbX/tLS0/7W1tf+2trb/uLi4/7q6uv+7u7v/vb29/76+vv/BwcH/w8PD/8TExP/Hx8f/yMjI/8rK - yv/Nzc3/z8/P/9DQ0P/T09P/1dXV/9fX1//a2tr/3Nzc/7q7zP9ZWZj/Hx16/yEfg/8jH5L/JiGh/ycj - sv8pJL7/KiTK/ywl0v8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm - 5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdj/LCTT/ysly/8qJL//KCKy/yYh - oP8kII7/Ih+D/zIyhf+Wlrv/5OTk/+Hh4f/g4OD/3d3d/9vb2//a2tr/19fX/9bW1v/U1NT/0dHR/9DQ - 0P/Pz8//zc3N/8vLy//Jycn/yMjI/8fHx//ExMT/w8PD/8LCwv+/v7//vr6+/729vf++vr7/xMTE/83N - zf+0tLTRDQ0NJgAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAADU5OTkG6urrox8fH/729vf+2trb/tra2/7i4uP+6urr/u7u7/729 - vf++vr7/wcHB/8LCwv/ExMT/x8fH/8jIyP/Kysr/y8vL/87Ozv/Q0ND/09PT/9XV1f/W1tb/2dnZ/9vb - 2//d3d3/4ODg/+Hh4f/AwNL/X2Cf/yMhff8iIIT/JCCO/yUhmv8nIqv/KSO4/ysjw/8sJMr/LSXR/y4l - 2f8uJtv/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybe/y4l - 2P8tJdL/LCXL/ywjxP8qI7f/KCOp/yYhmv8kIY7/IyCF/ywrhf+AgLP/4ODl/+bm5v/l5eX/4uLi/+Dg - 4P/f39//3Nzc/9vb2//Z2dn/19fX/9XV1f/U1NT/0dHR/9DQ0P/Ozs7/zc3N/8vLy//Jycn/yMjI/8fH - x//ExMT/w8PD/8LCwv/BwcH/v7+//8XFxf/Ozs7/wsLC6FJSUkEAAAANAAAAAgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEHBw - cFvDw8P0ycnJ/7+/v/+6urr/urq6/7u7u/+9vb3/vr6+/8HBwf/CwsL/xMTE/8XFxf/IyMj/ycnJ/8vL - y//Ozs7/0NDQ/9HR0f/U1NT/1tbW/9fX1//a2tr/3Nzc/9/f3//h4eH/4uLi/+Xl5f/n5+f/0NDd/3t8 - sP82NIr/IyCD/yQgi/8lIZP/JyKc/ygipv8qJLP/KyW9/ywkxP8tJcr/LSXO/y4l0v8uJdT/LiXU/y4l - 1P8uJdT/LiXU/y4l0v8uJdH/LiXN/y0ly/8sJMT/KyS7/yojsv8oI6X/KCKb/yYhk/8kIYr/JCCE/0JB - kv+Vk8D/5OPo/+vr6//o6Oj/5+fn/+Xl5f/k5OT/4eHh/+Dg4P/d3d3/3Nzc/9ra2v/Z2dn/1tbW/9XV - 1f/T09P/0dHR/8/Pz//Ozs7/zc3N/8rKyv/Jycn/yMjI/8fHx//ExMT/w8PD/8PDw//IyMj/z8/P/8vL - y/RycnJbAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEoSEhG7Jycn6y8vL/8HBwf+8vLz/vb29/76+ - vv/BwcH/wsLC/8TExP/FxcX/yMjI/8nJyf/Ly8v/zc3N/8/Pz//R0dH/09PT/9XV1f/X19f/2tra/9vb - 2//d3d3/4ODg/+Li4v/k5OT/5ubm/+jo6P/q6ur/7Ozs/+/v7/+1tNH/bGyr/zg3j/8kIYb/JSGK/yYh - kf8nIpb/JyKa/ygjoP8pJKb/KiSs/yskr/8rJK//KySw/ysksP8qI67/KiSs/ykjpv8pI6T/KCOf/ygj - m/8nIpX/JiGR/yUiiv8lIIb/RUOX/35+tv/Ozd//8fHx/+/v7//t7e3/6+vr/+rq6v/o6Oj/5ubm/+Xl - 5f/i4uL/4eHh/9/f3//d3d3/29vb/9ra2v/X19f/1tbW/9TU1P/T09P/0NDQ/8/Pz//Ozs7/zc3N/8rK - yv/Jycn/yMjI/8XFxf/FxcX/ycnJ/9PT0//S0tL6h4eHbwAAABMAAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAFAAAAE42NjXnOzs78zs7O/8XFxf+/v7//wcHB/8LCwv/Dw8P/xcXF/8fHx//Jycn/y8vL/83N - zf/Pz8//0NDQ/9PT0//V1dX/1tbW/9nZ2f/a2tr/3Nzc/9/f3//h4eH/4uLi/+Xl5f/n5+f/6urq/+vr - 6//t7e3/7+/v//Hx8f/y8vL/9fX1/9nY6P+bmsj/aWeu/0dFm/8qJ4v/JiKJ/yYii/8mIY//JyKR/yci - kf8nIpL/JyKS/ycikf8nIo//JiGN/yYii/8mIon/MS6P/1NQo/95d7f/rKvS/+bm7v/29vb/9fX1//Ly - 8v/x8fH/8PDw/+3t7f/s7Oz/6+vr/+jo6P/n5+f/5eXl/+Tk5P/h4eH/4ODg/93d3f/c3Nz/29vb/9nZ - 2f/X19f/1dXV/9TU1P/T09P/0NDQ/8/Pz//Ozs7/y8vL/8rKyv/Jycn/ycnJ/83Nzf/U1NT/1NTU/JGR - kXkAAAATAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAFJmZmX3Pz8/50dHR/8jI - yP/ExMT/w8PD/8XFxf/Hx8f/ycnJ/8rKyv/Nzc3/zs7O/9DQ0P/R0dH/1NTU/9bW1v/X19f/2tra/9zc - 3P/d3d3/4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/7Ozs/+3t7f/w8PD/8fHx//T09P/19fX/9vb2//f3 - 9//5+fn/+vr6//v7+//f3u7/zMvl/5+dzv+cm83/nJvN/5ybzv+cm87/nJvO/7u63f/My+X/zMvl//n5 - +//7+/v/+/v7//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Hx8f/w8PD/7+/v/+3t7f/r6+v/6urq/+jo - 6P/m5ub/5eXl/+Li4v/h4eH/39/f/93d3f/c3Nz/2tra/9nZ2f/W1tb/1dXV/9TU1P/R0dH/0NDQ/8/P - z//Nzc3/y8vL/8vLy//Q0ND/19fX/9XV1fmZmZl9AAAAFAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAFAAAAE46OjnHS0tL11dXV/8vLy//Hx8f/x8fH/8jIyP/Kysr/y8vL/87O - zv/Pz8//0dHR/9TU1P/V1dX/19fX/9nZ2f/b29v/3d3d/9/f3//h4eH/4uLi/+Xl5f/n5+f/6Ojo/+vr - 6//s7Oz/7+/v//Dw8P/y8vL/9PT0//X19f/29vb/+fn5//r6+v/7+/v/+/v7//z8/P/+/v7//v7+//// - //////////////////////////////7+/v/+/v7//Pz8//z8/P/7+/v/+vr6//n5+f/39/f/9vb2//X1 - 9f/09PT/8vLy//Hx8f/v7+//7e3t/+zs7P/q6ur/6Ojo/+fn5//l5eX/5OTk/+Li4v/g4OD/39/f/9zc - 3P/b29v/2tra/9fX1//W1tb/1dXV/9PT0//R0dH/0NDQ/8/Pz//Pz8//09PT/9ra2v/Y2Nj1kJCQcQAA - ABMAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAEYKC - gl7Ozs7s19fX/9DQ0P/Kysr/ycnJ/8vLy//Nzc3/z8/P/9DQ0P/T09P/1dXV/9bW1v/Z2dn/2tra/9zc - 3P/d3d3/4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/6+vr/+3t7f/v7+//8fHx//Ly8v/09PT/9vb2//f3 - 9//5+fn/+vr6//v7+//8/Pz//Pz8//7+/v/+/v7//////////////////////////////////v7+//7+ - /v/8/Pz//Pz8//v7+//6+vr/+fn5//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/v7+//7Ozs/+vr - 6//q6ur/5+fn/+bm5v/l5eX/4uLi/+Hh4f/g4OD/3d3d/9zc3P/a2tr/2dnZ/9fX1//W1tb/1NTU/9PT - 0//R0dH/0dHR/9bW1v/d3d3/09PT7IKCgl4AAAARAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAD3d3d1HOzs7k3Nzc/9TU1P/Pz8//zc3N/8/P - z//Q0ND/0dHR/9TU1P/W1tb/19fX/9ra2v/b29v/3d3d/9/f3//h4eH/4uLi/+Xl5f/m5ub/6Ojo/+vr - 6//s7Oz/7e3t//Dw8P/x8fH/8vLy//X19f/29vb/9/f3//n5+f/6+vr/+/v7//z8/P/8/Pz//v7+//7+ - /v/////////////////////////////////+/v7//v7+//z8/P/8/Pz/+/v7//r6+v/6+vr/+fn5//f3 - 9//29vb/9fX1//T09P/x8fH/8PDw/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Dg - 4P/f39//3d3d/9vb2//a2tr/2dnZ/9bW1v/V1dX/1NTU/9bW1v/a2tr/4ODg/9XV1eR6enpRAAAADwAA - AAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAEAAAADV9fXzvHx8fL4ODg/9ra2v/T09P/0dHR/9HR0f/U1NT/1dXV/9bW1v/Z2dn/2tra/9zc - 3P/f39//4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/6+vr/+3t7f/v7+//8PDw//Ly8v/09PT/9fX1//b2 - 9v/39/f/+fn5//r6+v/7+/v//Pz8//z8/P/+/v7//v7+//////////////////////////////////7+ - /v/+/v7//Pz8//z8/P/7+/v/+vr6//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Ly8v/x8fH/7+/v/+3t - 7f/s7Oz/6+vr/+rq6v/n5+f/5ubm/+Xl5f/i4uL/4eHh/+Dg4P/d3d3/3Nzc/9vb2//a2tr/19fX/9fX - 1//a2tr/39/f/+Tk5P/Ly8vLY2NjOwAAAA0AAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACiYmJiG1tbWi5OTk/9/f - 3//Z2dn/1dXV/9XV1f/W1tb/19fX/9ra2v/b29v/3d3d/9/f3//h4eH/4uLi/+Xl5f/m5ub/6Ojo/+rq - 6v/s7Oz/7e3t/+/v7//x8fH/8vLy//T09P/19fX/9vb2//n5+f/5+fn/+vr6//v7+//8/Pz//Pz8//7+ - /v/+/v7//////////////////////////////////v7+//7+/v/8/Pz//Pz8//v7+//7+/v/+vr6//n5 - +f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7+/v/+zs7P/r6+v/6urq/+jo6P/n5+f/5eXl/+Tk - 5P/i4uL/4ODg/9/f3//d3d3/3Nzc/9ra2v/b29v/3d3d/+Tk5P/n5+f/ubm5oiYmJiEAAAAKAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABwAAABOZmZlu2tra7OTk5P/d3d3/2tra/9nZ2f/Z2dn/29vb/9zc - 3P/f39//4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/6+vr/+zs7P/v7+//8PDw//Hx8f/y8vL/9fX1//b2 - 9v/39/f/+fn5//r6+v/7+/v/+/v7//z8/P/+/v7//v7+//7+/v////////////////////////////// - ///+/v7//v7+//7+/v/8/Pz/+/v7//v7+//6+vr/+fn5//f39//29vb/9fX1//X19f/y8vL/8fHx//Dw - 8P/v7+//7e3t/+zs7P/r6+v/6Ojo/+fn5//m5ub/5eXl/+Li4v/h4eH/4ODg/9/f3//f39//39/f/+Li - 4v/n5+f/3d3d7Jubm24AAAATAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAA - AA1vb29Az8/Px+jo6P/k5OT/4ODg/9zc3P/c3Nz/3d3d/+Dg4P/h4eH/4uLi/+Xl5f/m5ub/6Ojo/+rq - 6v/r6+v/7e3t/+/v7//w8PD/8fHx//T09P/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//7+ - /v/+/v7//v7+//////////////////////////////////7+/v/+/v7//v7+//z8/P/7+/v/+/v7//r6 - +v/5+fn/+fn5//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/t7e3/7Ozs/+vr6//q6ur/6Ojo/+bm - 5v/l5eX/5OTk/+Li4v/h4eH/4eHh/+Tk5P/o6Oj/6+vr/9DQ0Mdvb29AAAAADQAAAAQAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAkAAAAZqqqqft7e3unq6ur/5eXl/+Li - 4v/g4OD/4ODg/+Li4v/k5OT/5ubm/+fn5//o6Oj/6+vr/+zs7P/t7e3/7+/v//Hx8f/y8vL/9PT0//X1 - 9f/29vb/9/f3//n5+f/6+vr/+/v7//z8/P/8/Pz//v7+//7+/v////////////////////////////// - /////////v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+vr6//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Ly - 8v/x8fH/8PDw/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+bm5v/l5eX/5eXl/+Xl5f/o6Oj/7Ozs/+Dg - 4OmsrKx+AAAAGQAAAAkAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAANYmJiNMbGxqzp6en86+vr/+fn5//l5eX/5OTk/+Xl5f/m5ub/5+fn/+rq - 6v/r6+v/7Ozs/+/v7//w8PD/8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6+v/7+/v//Pz8//z8 - /P/+/v7//v7+///////////////////////////////////////+/v7//v7+//7+/v/8/Pz//Pz8//v7 - +//6+vr/+vr6//n5+f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7+/v/+3t7f/s7Oz/6+vr/+rq - 6v/o6Oj/5+fn/+fn5//r6+v/7e3t/+vr6/zIyMisYmJiNAAAAA0AAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAAAAEZeX - l1nZ2dnO7+/v/+3t7f/q6ur/5+fn/+jo6P/o6Oj/6urq/+zs7P/t7e3/7+/v//Dw8P/x8fH/9PT0//X1 - 9f/29vb/9/f3//n5+f/6+vr/+vr6//v7+//8/Pz//Pz8//7+/v/+/v7///////////////////////// - //////////////7+/v/+/v7//v7+//z8/P/8/Pz/+/v7//r6+v/6+vr/+fn5//f39//29vb/9vb2//X1 - 9f/09PT/8vLy//Hx8f/w8PD/7+/v/+zs7P/r6+v/6+vr/+vr6//t7e3/8PDw//Hx8f/b29vOl5eXWQAA - ABEAAAAHAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACQAAABWoqKht3t7e0vLy8v/w8PD/7e3t/+3t - 7f/s7Oz/7Ozs/+3t7f/w8PD/8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6+v/6+vr/+/v7//z8 - /P/8/Pz//v7+//7+/v///////////////////////////////////////v7+//7+/v/+/v7//Pz8//z8 - /P/7+/v/+/v7//r6+v/5+fn/9/f3//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/v7+//7+/v/+/v - 7//w8PD/8vLy//T09P/f39/Sra2tbQAAABUAAAAJAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABAAAAAoKCgoZsLCwb9zc3Mn19fX/9PT0//Ly8v/x8fH/8fHx//Hx8f/x8fH/8vLy//T0 - 9P/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//z8/P/+/v7//v7+//////////////////// - ///////////////////+/v7//v7+//7+/v/8/Pz//Pz8//v7+//7+/v/+vr6//n5+f/5+fn/9/f3//b2 - 9v/19fX/9PT0//Ly8v/y8vL/8fHx//Ly8v/09PT/9fX1//b29v/e3t7JsLCwbwoKChkAAAAKAAAABAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAKAAAAFZeX - l1TS0tKr6Ojo5vb29v/29vb/9fX1//T09P/19fX/9fX1//b29v/29vb/9/f3//n5+f/6+vr/+/v7//v7 - +//8/Pz//Pz8//7+/v/+/v7///////////////////////////////////////7+/v/+/v7//v7+//z8 - /P/8/Pz/+/v7//v7+//6+vr/+fn5//n5+f/39/f/9vb2//X19f/29vb/9vb2//b29v/39/f/9/f3/+jo - 6ObS0tKsl5eXVAAAABUAAAAKAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAABwAAAA5MTEwor6+vbdjY2Lry8vL1+fn5//n5 - +f/5+fn/+fn5//n5+f/6+vr/+fn5//r6+v/7+/v/+/v7//z8/P/+/v7//v7+//7+/v////////////// - /////////////////////////v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+/v7//r6+v/6+vr/+vr6//n5 - +f/5+fn/+fn5//r6+v/6+vr/8/Pz9djY2Lqvr69tTExMKAAAAA4AAAAHAAAAAgAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAAIAAAAEHZ2djbBwcGA29vbuu7u7uf7+/v/+/v7//v7+//7+/v/+/v7//z8 - /P/8/Pz//Pz8//7+/v/+/v7//v7+///////////////////////////////////////+/v7//v7+//7+ - /v/8/Pz//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//u7u7n3NzcusHBwYB2dnY2AAAAEAAA - AAgAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAA - AAkAAAAQaWlpLpqamlHFxcWK4eHhwOvr69/z8/Pw/v7+//7+/v/+/v7//v7+//7+/v/+/v7///////// - //////////////////////////////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/z8/Pw6+vr3+Hh - 4cDFxcWKmpqaUWlpaS4AAAAQAAAACQAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAABgAAAAoAAAAOCgoKGIOD - gzqurq5fvb29ecvLy5Xd3d2u5eXlxenp6dHw8PDd8PDw5vn5+fT5+fn0+fn59Pn5+fTw8PDm8PDw3enp - 6dHl5eXF3d3drsvLy5W9vb15rq6uX4ODgzoKCgoYAAAADgAAAAoAAAAGAAAAAwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAwAAAAYAAAAIAAAACgAAAA0AAAAPAAAAEAAA - ABEAAAATAAAAEwAAABQAAAAUAAAAEwAAABMAAAARAAAAEAAAAA8AAAANAAAACgAAAAgAAAAGAAAAAwAA - AAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - AAAAAAAA/////////////////////////////+AAAAf///////////////4AAAAAf//////////////w - AAAAAA//////////////gAAAAAAB/////////////AAAAAAAAD////////////AAAAAAAAAP//////// - ///AAAAAAAAAA///////////AAAAAAAAAAD//////////gAAAAAAAAAAf/////////gAAAAAAAAAAB// - ///////gAAAAAAAAAAAH////////wAAAAAAAAAAAA////////4AAAAAAAAAAAAH///////8AAAAAAAAA - AAAA///////8AAAAAAAAAAAAAD//////+AAAAAAAAAAAAAAf//////AAAAAAAAAAAAAAD//////gAAAA - AAAAAAAAAAf/////wAAAAAAAAAAAAAAD/////4AAAAAAAAAAAAAAAf////8AAAAAAAAAAAAAAAD///// - AAAAAAAAAAAAAAAA/////gAAAAAAAAAAAAAAAH////wAAAAAAAAAAAAAAAA////4AAAAAAAAAAAAAAAA - H///+AAAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAAB///4AAAAAAAAAAA - AAAAAAf//8AAAAAAAAAAAAAAAAAD//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//wAAAAAA - AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/wA - AAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/gAAAAAAAAAAAAAAAAA - AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAA - AAAAAAAP8AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA - AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AA - AAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA - AAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAA - AAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA - AAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AA - AAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA - AAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAA - AAAAAAADwAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA - AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAD/AA - AAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA - AB/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAA - AAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//4AAAAAA - AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAP//+AAAAAAAAAAAAAAAAAH///g - AAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAA - H////AAAAAAAAAAAAAAAAD////4AAAAAAAAAAAAAAAB/////AAAAAAAAAAAAAAAA/////wAAAAAAAAAA - AAAAAP////+AAAAAAAAAAAAAAAH/////wAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAAAB//////wAAAA - AAAAAAAAAA//////+AAAAAAAAAAAAAAf//////wAAAAAAAAAAAAAP///////AAAAAAAAAAAAAP////// - /4AAAAAAAAAAAAH////////AAAAAAAAAAAAD////////8AAAAAAAAAAAD/////////gAAAAAAAAAAB// - ///////+AAAAAAAAAAB//////////wAAAAAAAAAA///////////AAAAAAAAAA///////////8AAAAAAA - AA////////////wAAAAAAAA/////////////gAAAAAAB//////////////AAAAAAD//////////////+ - AAAAAH///////////////+AAAAf///////////////////////////////////////////////////// - //////////////////8oAAAAMAAAAGAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAFAAAACwAAAA8AAAARAAAAEQAAAA8AAAALAAAABQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAUAAAAaAAAAPAoKCmAgICCENDQ0nEFBQatLS0uzS0tLs0FBQasyMjKcICAghAoK - CmAAAAA8AAAAGgAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAQAAAAPx8fH4FMTEy/dnZ255qamvu7u7v/0NDQ/+Dg4P/p6en/6enp/+Dg - 4P/S0tL/vb29/5ycnPt3d3fnTU1Nvx8fH4EAAAA/AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAEk0NDSkcXFx566urv/c3Nz/9PT0//z8/P////////////// - ///////////////////////////////////29vb/4ODg/7Gxsf9zc3PnNjY2pAAAAEkAAAAOAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAwKioqlnR0dOu9vb3/5ubm/+/v7//y8vL/8/Pz//b2 - 9v/5+fn//Pz8//7+/v////////////7+/v/9/f3/+/v7//n5+f/39/f/9fX1//X19f/r6+v/wcHB/3Z2 - duwsLCyWAAAAMAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwoKCl1VVVXSpqam/9vb2//k5OT/5ubm/+np - 6f/t7e3/8fHx//X19f/5+fn/+/v7//7+/v////////////7+/v/9/f3/+/v7//j4+P/29vb/8fHx/+7u - 7v/r6+v/6urq/+Hh4f+rq6v/WFhY0g0NDV0AAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATIiIif3Nzc/HCwsL/2NjY/9nZ - 2f/d3d3/4uLi/+fn5//s7Oz/8PDw//T09P/39/j/+/v7/////f///////////////v/9/fz/+vr6//j4 - +P/09PT/8PDw/+zs7P/o6Oj/5OTk/+Dg4P/g4OD/ycnJ/3h4ePEkJCR/AAAAEwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYqKiqRgoKC+sbG - xv/Ozs7/0dHR/9bW1v/a2tr/39/f/+Xl5f/q6un/8/Pw//z89f////r//f38//Dw/P/r6/z/6+v8//Dw - /P/3+Pz////8////+f/39/T/7+/u/+rq6v/m5ub/4eHh/9zc3P/Y2Nj/19fX/87Ozv+Hh4f6LS0tkQAA - ABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAES8v - L5KGhob+wMDA/8fHxv/Ozsz/zc3N/9LS0v/X19j/3d3c/+rq5f/w8O7/1tXu/6mm6v98d+b/Xlfl/0tE - 5f9DO+b/RDvn/0tC5v9VTeX/cGrm/6Ge6//Y1/H/9fXy/+7u6v/j4+P/39/f/9ra2v/V1dX/0dHR/83N - zf/Jycn/jIyM/jAwMJIAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAGJycnen5+fvu5ubn/vb28/7W2vv+ys8n/0tLO/83Nzf/Y2NX/4+Pi/7Kx4P9jYNT/My3P/yQc - 0/8mHdj/KCDd/ysi4P8tI+L/LSPj/ywi4f8qId7/Jx3a/yUc1f80LdL/bWrZ/8TD5v/s7Of/3t7c/9bW - 1v/R0dH/zc3N/8nJyf/FxcX/wcHB/4aGhvspKSl6AAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAASEhJRbW1t7q+vr/+0tLT/ubm4/6iotf84OqL/p6fL/9zc0//Gxtn/YV/J/yMe - v/8hG8X/KCHM/ywk0/8uJdn/Libe/y8m4f8wJuP/MCbk/zAm4v8vJt//LiXb/y0l1v8pIs//IRvI/ykl - xP95eNH/2Njg/9ra1f/Nzc3/ycnJ/8TExP+/v7//vb29/7e3t/9ycnLuEhISUQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVVVVXPoKCg/62trf+vr6//tbWz/6Slsf8hIpr/Kiqn/42N - yf89PLj/Gxi2/yUgv/8oIsb/KiPN/ywk0/8uJdn/Libf/y8m4/8wJuX/MCbm/zAm5P8vJuH/LiXc/y0l - 1v8rI9D/KSLJ/yUfw/8cGLn/SknA/7291//S0s7/xMTE/7+/v/+7u7v/uLi4/7a2tv+pqan/WFhYzwAA - ACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjY2NoyKior/pqam/6enp/+qqqr/sLCu/52e - rP8iI5v/Ghqi/xoZqP8eG6//IyC3/yUhv/8nIsb/KSPN/ywk1P8tJNj/KCDR/yQcxf8kG77/JBy+/yQb - v/8lHcn/KyLW/y0l1/8rI9H/KSLJ/ychw/8lIbv/HBmx/y8vsv+pqcz/ycnE/7q6uv+2trb/s7Oz/7Cw - sP+vr6//kZGR/zg4OIwAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJN2ZmZumenp7/oKCg/6Ki - ov+lpaX/q6up/5eXp/8fH5r/HByj/x8eqf8hHrD/IyC3/yUgvv8nIsf/KCLL/yIbvP8rJaj/Uk6r/399 - vP+bmsr/n57M/5eVx/9ua7b/OjWm/yIcsv8nIMr/KSLK/yYhwv8kIbv/IiCz/xsaqv8sK6r/qKnE/7y7 - t/+ysrL/rq6u/6urq/+pqan/pqam/2xsbOkJCQk3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPj4+lIqK - iv+ampr/m5ub/52dnf+goKD/pqak/4+Po/8dHZn/HByi/x8dqP8hHq//IyC3/yUgv/8iHLj/JyOe/2dl - qf/AwNP/8fHx/////f/////////////////9/fr/39/m/5KRvf80MKD/IRy6/yYhw/8kILr/Ih+z/yAe - rP8YF6P/PD2p/7W1vP+urqz/qamp/6ampv+jo6P/o6Oj/5KSkv9DQ0OUAAAABQAAAAAAAAAAAAAAAAAA - AAAAAAAoY2Nj4pSUlP+VlZX/lpaW/5mZmf+bm5v/oaGe/4aHnv8cHJn/HBui/x4dqP8gHa//Ih+3/yEd - vv9LSLj/sbHA/+Li3v/s7Or/8fHx//n5+f/+/v7///////z8/P/29vb/8fHv/+7u6f/Dw87/Skif/x4a - sP8kILv/Ih+z/yAerP8eHaX/FRWd/2Firf+xsa7/o6Oj/6Ghof+enp7/nZ2d/5ycnP9nZ2fiAAAAKAAA - AAAAAAAAAAAAAAAAAAAwMDBqfHx8/5GRkf+RkZH/kpKS/5SUlP+Wlpb/nJyZ/3t7lv8ZGZb/Ghqf/xwb - pf8eG6z/IB20/yAbuv9DP8n/vr7V/9zc1//i4uL/7e3t//f39//+/v7///////v7+//z8/P/6urq/+Dg - 4P/b29n/wcHF/0hGm/8dGrD/Ih+z/x8dq/8dHKT/Gxue/xwdmv+Mjqz/oqKe/5ycnP+ampr/mZmZ/5iY - mP+BgYH/MjIyagAAAAAAAAAAAAAAAAAAAAdRUVGtiYmJ/4yMjP+NjY3/jo6O/5CQkP+RkZH/mJiU/29w - jv8UFJD/FhWX/xkWnv8bF6X/HRis/x8as/8bFbn/OzW+/7a1zP/f39z/6enp//X19f/8/Pz///////n5 - +f/w8PD/5eXl/9nZ2f/Ozs7/yMjG/6mqsv8wLpn/Hhux/x8dq/8dHKT/HBye/xQVlv9LTaD/oaGf/5eX - l/+VlZX/lJSU/5OTk/+QkJD/VVVVrgAAAAgAAAAAAAAAAAAAACFjY2PdioqK/4iIiP+JiYn/ioqK/4uL - i/+NjY3/k5KQ/2lqg/8aG27/ISJz/yMjeP8lJH3/JyWB/yooh/8yMIz/MCyQ/1ZTn//IyM7/4+Ti//Hx - 8f/7+/v//v7+//j4+P/s7Oz/3t7e/9DQ0P/ExMT/urq6/7m5tP95eZz/HBqh/x8drP8dG6T/HBud/xkY - mP8gIpb/iYqc/5SUkv+RkZH/kJCQ/4+Pj/+QkJD/ZmZm3QAAACEAAAAAAAAAAB4eHkJvb2/3h4eH/4WF - hf+Ghob/h4eH/4eHh/+IiIj/ioqK/4WGiP9+foX/g4SJ/4aGi/+JiY7/jY2T/5KSmP+cnKD/pKSo/6ys - sv/CwsX/2dnZ/+vr6//7+/v//v7+//T09P/k5OT/09PT/8TExP+4uLj/r6+v/6ioqP+hoaD/OTiT/xsZ - qf8cG6P/Gxud/xoal/8UFZP/ZWaW/5KSjv+NjY3/i4uL/4qKiv+MjIz/c3Nz9yIiIkIAAAAAAAAAADo6 - OmV5eXn/hISE/4ODg/+EhIT/hISE/4WFhf+FhYX/hoaG/4eHh/+Kion/ioqK/4yMi/+Pj47/kpKQ/5WV - lP+ampn/oaGg/6qqqv+3t7f/ysrK/+Li4v/4+Pj//v7+/+7u7v/Y2Nj/xMTE/7W1tf+qqqr/oqKi/5yc - nP+dnZj/ZmaO/xoYof8cG6T/Gxud/xkal/8UFZP/Q0aQ/46Oiv+IiIj/iIiI/4eHh/+IiIj/fX19/zw8 - PGUAAAAAAAAAAEZGRn5+fn7/goKC/4GBgf+CgoL/goKC/4KCgv+CgoL/g4OD/4ODg/+EhIT/hISE/4WF - hf+Ghob/iIiI/4qKiv+NjY3/kpKS/5mZmf+jo6P/tLS0/9DQ0P/z8/P/+/v7/+Li4v/ExMT/sLCw/6Oj - o/+bm5v/lZWV/5KSkv+QkI//gYGJ/yUkmP8bGab/Gxqe/xkamf8UFpX/MTON/4eHh/+FhYX/hYWF/4SE - hP+FhYX/gYGB/0hISH4AAAAAAAAAAFBQUI6AgID/gICA/4CAgP+AgID/gICA/4CAgP9/f3//f39+/39/ - fv9/f3//gIB//4CAgP+CgoL/goKC/4ODg/+EhIT/hoaG/4mJif+Ojo7/mJiY/66urv/h4eH/9vb2/8TE - xP+lpaX/l5eX/5CQkP+MjIz/iYmJ/4iIiP+Ghob/h4eF/zQ0fv8REX3/FBR5/xMTdf8PEXH/IyVx/319 - gf+Dg4L/gYGB/4GBgf+BgYH/goKC/1VVVY0AAAAAAAAAAFdXV5SBgYH/fn5+/35+fv9+fn7/fn5+/4B/ - gP+NjpH/kJGV/5CQlP+QkJT/kZGV/4qKjP9+fn7/f39//39/f/9/f3//f39//39/f/+AgID/gYGB/4SE - hP+jo6P/u7u7/42Njf+FhYX/g4OD/4KCgv+BgYH/gICA/4CAgP+AgID/gICA/25uef9iYnT/Y2Nz/2Nj - c/9iYnL/ZmZz/319fv+AgH//f39//39/f/9/f3//gYGB/1dXV5QAAAAAAAAAAFtbW5SCgoL/fn5+/35+ - fv9+fn7/fn5+/3p6fv9AQ5H/NTec/zc5n/85OaL/Nzeo/1pam/+BgX3/f39//39/f/9/f3//f39//4CA - gP+CgoL/hYWF/46Ojv+7u7v/1tbW/6CgoP+Ojo7/iIiI/4aGhv+EhIT/g4OD/4KCgv+CgoL/gYGB/4OD - gv+FhYL/hISC/4SEgv+EhIL/g4OC/4GBgf+AgID/gICA/4CAgP+AgID/hISE/1tbW5MAAAAAAAAAAFlZ - WYuDg4P/f39//39/f/9/f3//gIB//3t7fv8kJoP/ERKQ/xUVlP8WFpj/FBOf/zw7nv+FhYP/goKC/4OD - g/+FhYX/h4eH/4yMjP+Tk5P/oKCg/7u7u//r6+v/+vr6/9HR0f+xsbH/oKCg/5eXl/+RkZH/jY2N/4uL - i/+JiYn/h4eH/4eHh/+Ghob/hYWF/4WFhf+EhIT/g4OD/4ODg/+Dg4P/goKC/4KCgv+CgoL/hoaG/1tb - W4sAAAAAAAAAAFZWVnmDg4P/gICA/4GBgf+BgYH/gYGB/4KCgP8wMoD/FBWR/xkZlf8aGpn/GRif/y0s - pf+Hh5H/iIiH/4uLi/+Ojo7/lJSU/5ycnP+oqKj/u7u7/9fX1//29vb//Pz8/+bm5v/Ly8v/t7e3/6mp - qf+goKD/mpqa/5WVlf+SkpL/j4+P/4yMjP+Kior/iYmJ/4iIiP+IiIj/h4eH/4aGhv+Ghob/hoaG/4WF - hf+FhYX/h4eH/1hYWHkAAAAAAAAAAE5OTluCgoL/goKC/4KCgv+Dg4P/g4OD/4eHg/9DRX3/EhSP/xkZ - lf8aGpr/Gxqf/xsap/95eaT/lJSP/5SUlP+ampr/oaGh/6ysrP+7u7v/z8/P/+bm5v/6+vr//f39/+/v - 7//c3Nz/ysrJ/7y8uv+xsa7/q6um/6amof+jo53/pKSd/6Kinf+hoZ7/oaKh/5aWlv+MjIz/i4uL/4qK - iv+JiYn/iYmJ/4iIiP+IiIj/iIiI/1NTU1wAAAAAAAAAAD09PTZ+fn71hYWF/4SEhP+FhYX/hYWF/4uL - h/9iYn7/FBaK/xkalv8aGpr/HBug/xkWpv9MTLH/pKSi/56dnf+lpaX/r6+v/7u7u//Kysr/3Nzc/+7u - 7v/8/Pz//v7+//T09P/m5uX/z8/T/7W1yv+trMv/m5rG/4uLwf99fb7/c3G6/2Rjtf9VVLD/REWp/3Jz - mf+VlZH/kZGR/4+Pj/+Ojo7/jIyM/4yMjP+MjIz/h4eH9T09PTYAAAAAAAAAAAwMDBR+fn7Wi4uL/4eH - h/+IiIj/iIiI/4uLiv+Bgof/IiSA/xgYl/8aG5r/HBuh/x0bp/8fHa7/i4u6/7Gxq/+wsLD/u7u7/8fH - x//V1dX/5eXl//Pz8//9/f3//v7+//f39//u7uz/09PY/1lXqf8jHbb/JyHJ/yIdwf8dGbn/Ghax/xgW - qf8XFqP/EhKb/19glv+dnZj/lZWV/5OTk/+SkpL/kZGR/5CQkP+Tk5P/hYWF1gwMDBQAAAAAAAAAAAAA - AAF3d3egkpKS/4qKiv+Li4v/jY2N/4+Pj/+UlZH/TU5//xQUj/8bG5v/HBuh/x4cp/8dGa3/ODW5/7Oz - xv/Cwrz/xMTF/9HR0f/e3t7/6+vr//b29v/+/v7//v7+//n5+f/w8PD/6Ojn/9HR1f9iYKT/IBur/yQf - wf8jH7n/IR6y/x8dq/8dHKT/FRad/19gmf+kpJ7/m5ub/5iYmP+Xl5f/lZWV/5OTk/+cnJz/fX19oAAA - AAEAAAAAAAAAAAAAAABkZGRUkpKS/o+Pj/+Pj4//kZGR/5KSkv+Xl5b/hoaP/yAhgP8ZGpv/HByh/x4d - qP8gHa7/HRm1/0hFxP/AwNT/2NjS/9nZ2P/k5OT/7+/v//j4+P/+/v7//v7+//r6+v/z8/P/6urq/+Tk - 4f/j49r/dnTE/yAcv/8jILr/IR6y/yAdq/8eHKX/FRad/11dm/+oqaT/n5+f/52dnf+bm5v/mZmZ/5iY - mP+ampr+bW1tVAAAAAAAAAAAAAAAAAAAAAAzMzMUj4+P15iYmP+Tk5P/lZWV/5iYmP+ampr/oqKe/2Bh - h/8VFYv/HByj/x4dqP8gHa//Ix+2/x8avP9APMr/tbTf/+vs5v/w8Or/9PTy//r6+v/+/v7///////z8 - +//4+Pb/9/fw/+jo7P+joeL/RkHO/yMewf8kILr/Ih+z/yAerP8eHaX/Fhed/1lanf+tran/paWl/6Ki - ov+fn5//nZ2d/6Kiov+Xl5fYJCQkFQAAAAAAAAAAAAAAAAAAAAAAAAAAgoKCe6Kiov+Xl5f/mpqa/5yc - nP+fn5//o6Oj/6SkpP9BQoL/FhaX/x8eqv8hHq//IyC3/yUgvv8jHcX/LSbM/3Rw3v/Bv+3/7+73//7/ - /P////////////3+/f/o5/f/rqvs/1VP3P8lHs7/JB7I/yYhwv8kILr/Ih+z/yAerf8eHab/Fhee/1VW - n/+ysq7/qqqq/6enp/+lpaX/oqKi/6ysrP+IiIh7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/HJ2d - nd+hoaH/np6e/6Ghof+kpKT/qKio/6+vrv+hoaj/NDSD/xgXnf8hHrH/IyC3/yUgvv8nIsb/KCLM/yQc - 0v8sI9j/TEXi/21n6v9/eu7/enXu/2Nc6f9COuL/KSDa/yge1P8qI8//KSLJ/yYhwv8kIbv/Ih+0/xsa - oP8ZGZr/Fxef/1BRoP+2trP/r6+v/6ysrP+pqan/rKys/6Wlpd8/Pz8cAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAIyMjG2urq7/oqKi/6Wlpf+pqan/ra2t/7Gxsf+6urj/pKSu/zc4h/8ZF5//IyC5/yYh - wP8oIsb/KiPN/ywk0/8tJNn/KiLd/ygf4P8oHeL/KB7j/yog4f8sI9//LiXb/y0k1f8rI9D/KSLJ/ych - xP8jH7r/GRia/0ZGjf9ERYn/ERGN/0tMof+5ubf/tLS0/7CwsP+urq7/t7e3/5GRkW0AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwqlpaW5tLS0/6mpqf+urq7/srKy/7a2tv+6urr/xcXD/7a2 - vP9QUJH/GhiY/yMeuv8oIsj/KiPO/ywk0/8uJdn/Libe/y8m4f8wJuP/MCbk/zAm4v8vJt//LiXb/y0l - 1v8rJNH/KSLL/yEcuv8hHpb/b2+g/8rLy//CwsT/TU6K/z0/jP+9vbz/ubm4/7S0tP++vr7/ra2tuTMz - MwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzc3MqtLS047a2tv+ysrL/t7e3/7u7 - u//AwMD/xcXF/8/Ozf/Pz87/hIWs/y8uk/8dGKr/Jh/G/ywk1f8uJdv/Libf/y8m4v8wJuT/MCbl/zAm - 4/8vJuD/LiXd/ywk1/8mH8j/Hhqp/z49mP+iorz/3d3a/9TU0//Q0M//wsPF/4GCn/+8vL7/vLy8/8DA - wP+8vLzjc3NzKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk5OTUb+/ - v/a7u7v/urq6/7+/v//FxcX/ycnJ/8/Pz//W1tX/4eHe/8nJ0v9+frD/PDqe/yMeqP8iG7v/Jh7N/ykh - 1v8rIdr/KyHa/ykg1v8mHs3/Ihu8/yUfqf9CP6H/jIu4/9na3f/n5+P/29vb/9bW1v/R0dH/zs7N/8zM - yv/ExMT/xcXF/8fHx/aamppRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAKmpqWjHx8f6xMTE/8PDw//Jycn/zs7O/9PT0//Y2Nj/3t7e/+fn5v/w8O3/4eHm/7W0 - 0P+Egrz/YF2w/01Jrf9HQq7/SUSv/1NPr/9kYbL/iojA/7u61P/m5ur/8/Pw/+rq6f/j4+P/3t7e/9nZ - 2f/V1dX/0NDQ/8vLy//MzMz/z8/P+q6urmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvr69kzs7O88/Pz//MzMz/0dHR/9bW1v/b29v/4ODg/+bm - 5v/r6+v/8vLx//v7+P////z////9//b2+f/y8vf/9PT4//v7+/////3////9//z8+f/09PP/7e3u/+rq - 6v/l5eX/4ODg/9zc3P/X19f/09PT/9fX1//V1dXzsrKyZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr6+vTdPT0+Hd3d3/1dXV/9nZ - 2f/e3t7/4+Pj/+jo6P/t7e3/8vLy//X19f/5+fn//Pz8/////////////////////v/7+/v/+vr6//f3 - 9//z8/P/7+/v/+vr6//n5+f/4+Pj/97e3v/b29v/4+Pj/9jY2OGysrJNAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyc - nCfS0tKz4uLi/+Pj4//g4OD/5ubm/+rq6v/u7u7/8vLy//f39//6+vr//Pz8//7+/v////////////7+ - /v/8/Pz/+vr6//f39//09PT/8fHx/+3t7f/o6Oj/5eXl/+jo6P/m5ub/1dXVs5ycnCcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAExcXFYuLi4tjv7+//7+/v/+3t7f/w8PD/9PT0//f39//6+vr//Pz8//7+ - /v////////////7+/v/8/Pz/+vr6//j4+P/19fX/8fHx/+/v7//y8vL/8vLy/+Xl5djIyMhiAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJGRkRXW1tZx5+fnzu7u7v38/Pz//Pz8//v7 - +//7+/v//Pz8//7+/v////////////7+/v/8/Pz//Pz8//v7+//9/f3//v7+/+/v7/3p6enO1tbWcZGR - kRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzCsnJ - yUPh4eGT7Ozsz/Pz8/H7+/v//////////////////////////////////Pz8//T09PHs7OzP4+Pjk8nJ - yUMzMzMKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAHBwcCbW1tSbOzs5K3NzcZuPj43jt7e2B7e3tgePj43jh4eFmzs7OSrW1 - tSYcHBwJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///wD///AAD//wAA//8AAP/8AAA//wAA//AAAA// - AAD/wAAAA/8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAfAAD4AAAAAB8AAPAA - AAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAAB - AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA - AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAADAAAAAAAMAAMAAAAAAAwAA4AAAAAAH - AADgAAAAAAcAAPAAAAAADwAA8AAAAAAPAAD4AAAAAB8AAPwAAAAAPwAA/gAAAAB/AAD/AAAAAP8AAP+A - AAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/4AAAf/wAA//4AAH//AAD//8AD//8AAP///////wAAKAAAACAA - AABAAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAoAAAAKAAAABgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAA2MjIyb1lZWZ1xcXG4goKCxIKCgsRxcXG4WVlZnTIy - Mm8AAAA2AAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsiIiJaaWlpu6Ojo/LU1NT/8fHx//39/f////////////// - ///z8/P/19fX/6ampvJqamq7IiIiWgAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4X19fuLCwsP/n5+f/9PT0//f39//6+vr//f39//// - //////////////z8/P/6+vr/+fn5/+zs7P+0tLT/YmJiuAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkYoWFhezS0tL/4uLi/+Tk5P/q6ur/8vLx//v7 - +P////3///////////////7//v/6//b29f/v7+//6urq/+jo6P/Z2dn/ioqK7CcnJ2IAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMXGQkJD80dHP/9LS0f/X19f/4eHf//Dw - 6v/u7vH/19fz/7278/+qp/P/qqf0/7e19P/U0vT/8fH1//X17v/n5+X/3t7e/9nZ2f/X19f/lpaW/DMz - M3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKytdi4uL/MPDwf+xssL/y8vO/9nZ - 0//U1N//kY/b/1BL1v8yK9j/KSDd/yge4v8oHuP/KB/f/zAn2v9RS9n/nJrg/+Dg5f/f39v/0dHS/8zM - zP/Ly8v/kpKS/C4uLl0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFMHd3d+m0tLT/vLy3/2pr - qP9qarn/qqnP/0A9wP8eGcL/JR7N/ywk1/8vJuD/LyXl/y8l5v8vJuL/LSTb/yYf0P8gGsX/TEnG/7m5 - 1v/U1M7/xMTE/76+vv++vr7/fX196QUFBTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVaWlqxpKSk/6mp - qf+0tK//ZGWk/xUVof8jIa7/Hxy3/yciw/8pItD/Jh7R/ycfyP8vJ8P/MSrD/yoixf8lHc//KiLS/ygi - x/8fG7r/LCq0/5ycxv/ExMD/tra2/7Kysv+tra3/YGBgsQAAAAUAAAAAAAAAAAAAAAAAAAAAKysrTIKC - gv6goKD/oaGh/6ysp/9cXZ//Fxeh/x8drP8jILj/JB/A/ygis/9iX7b/razS/9XV5v/c3Or/wsHc/3t5 - v/8wK7T/Ix3E/yUhvP8dG6//JiWp/56euv+zs6//qqqq/6mpqf+JiYn+Li4uTAAAAAAAAAAAAAAAAAAA - AABcXFyulpaW/5aWlv+ampr/o6Oe/1RUm/8XF6H/IB2s/yEduP80ML3/qqrC/+jp4//6+/b///////// - ///+/vv/9PTu/7q6y/8/Par/Hxu4/yEfsP8YGKP/PD2l/6enrP+jo6L/n5+f/5+fn/9gYGCuAAAAAAAA - AAAAAAAADQ0NJXNzc+2RkZH/kJCQ/5KSkv+ampb/RkaR/xAPmv8ZFqT/Gxev/yEbvP9+fMn/29va/+7u - 7f/8/Pz//v7+//T09P/k5OT/2dnW/6+wuv8yMKT/Hhuw/x0dpP8VFZr/a2yi/6Cgm/+Xl5f/mJiY/3h4 - eO0NDQ0lAAAAAAAAAAA/Pz9ZgYGB/4mJif+Kior/jIyM/5GRj/9RUn7/NDR7/zs6g/8+PYr/RUOT/01K - nP+rqsD/6Ojm//n5+f/9/f3/7u7u/9jY2P/ExMT/vL23/3x7oP8cGqb/HRyk/xcXmv8zNZj/k5SW/5GR - kP+QkJD/hoaG/0RERFoAAAAAAAAAAFRUVIiGhob/hYWF/4WFhf+Ghob/h4eH/4qKiP+Njov/kZGO/5WV - kv+dnZr/qaml/7e3t//U1NT/9fX1//z8/P/i4uL/xMTE/7CwsP+lpaT/m5ua/zY1mf8aGaX/Ghqb/xwd - lf96e4//jIyJ/4mJif+Kior/WlpaiAAAAAAAAAAAX19fpYWFhf+BgYH/goKC/4KCgf+CgoH/g4OC/4OD - gv+FhYX/iIiI/4qKiv+QkJD/m5ub/7Ozs//n5+f/9vb2/8TExP+np6f/mZmZ/5KSkv+Sko3/VlWM/xIR - mv8UFZL/DxGL/2Jkhv+JiIX/hISE/4iIiP9hYWGlAAAAAAAAAABkZGSxg4OD/39/f/9/f37/goKE/4iI - jf+IiI3/iIiO/4KCg/+AgID/gICA/4GBgf+CgoL/h4eH/62trf/AwMD/j4+P/4aGhv+EhIT/goKC/4OE - gv9xcX3/R0h0/0hIcv9FRm//a2t5/4KCgf+AgID/hYWF/2ZmZrAAAAAAAAAAAGlpabCDg4P/fn5+/4GB - fv9hYoT/LC6Y/zAxnf8yMqX/bW2M/4KCfv+AgID/goKC/4SEhP+NjY3/vLy8/9DQ0P+ampr/jY2N/4iI - iP+FhYX/hISE/4SEg/+Hh4P/h4eD/4eHg/+Dg4L/gYGB/4GBgf+Ghob/a2trrwAAAAAAAAAAampqoYWF - hf+AgID/hISB/2Bhf/8SE43/FheX/xUToP9eXZr/jIyG/4uLi/+SkpL/n5+f/7u7u//t7e3/+Pj4/83N - zf+urq7/np6e/5aWlf+RkY//jo6M/42Nif+Li4j/h4eH/4aGhv+Ghob/hYWF/4qKiv9tbW2hAAAAAAAA - AABpaWmAiIiI/4ODg/+GhoX/dXWB/xsdiv8ZGZj/GBeg/0FAqf+Zmpn/m5ua/6ioqP+7u7v/2dnZ//f3 - 9//8/Pz/4+Pj/8fHyf+3t7v/qKiw/52dq/+UlKn/iIin/4aGn/+Pj47/jY2M/4uLi/+Kior/j4+P/25u - boEAAAAAAAAAAGBgYE+JiYn/h4eH/4mJif+Li4n/MzSE/xYXmP8cG6D/Hhys/4aGtP+zs6z/u7u7/9DQ - 0P/n5+f/+/v7//39/f/x8u//tbTL/0pGuP87Nsb/Mi+9/yglsf8cG6f/PT2a/5mal/+UlJT/kZGR/5CQ - kP+RkZH/Z2dnTwAAAAAAAAAAMTExGoeHh+eOjo7/jo6O/5aWkv9oaIj/FhaR/x0cov8cGav/NjS6/7Cv - x//T08z/3d3c/+/v7//9/f3//f39//Pz8//n5+T/o6LA/zItuf8gHLv/Hx2v/xkYpP86Opv/oaGf/5yc - nP+ZmZn/mJiY/5CQkOc6OjoaAAAAAAAAAAAAAAAAh4eHoJqamv+UlJT/mZmZ/5ycmv87PIj/Fxeg/yAe - rP8eG7b/PDjG/7Cu3P/t7en//f31/////v/////////4/+zs7v+qqOH/OzbI/yIeuv8hH6//Ghql/zg5 - nf+np6f/pKSj/5+fn/+lpaX/j4+PoAAAAAAAAAAAAAAAAAAAAAB2dnY4mpqa+52dnf+goKD/qKim/5WV - oP8pKY7/Gxms/yMguP8iHcL/LCXO/2Zg4P+no+//xsT3/8PA9/+em+//WFLg/ycf0P8lH8b/JSG8/x4c - rv8WFaH/NTaf/6usr/+sq6v/p6en/6Ojo/t6eno4AAAAAAAAAAAAAAAAAAAAAAAAAACbm5udrKys/6am - pv+tra3/ubm2/5eYqf8tLZX/HBmz/ycixf8pIs7/Jx7W/yce3f8tI+P/LCLj/ycd3/8pINj/KyPR/ygh - yf8dGbP/PTya/0pKlP8rLJT/r6+1/7Ozsv+4uLj/pKSknQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZm - ZhmsrKzctLS0/7S0tP+7u7v/ycnG/7Ozvf9RT6H/IBuu/yMdyv8sI9n/Lybg/zAm5f8wJub/Lybi/ywj - 2/8kHcz/Ix6v/2Niqf/Gxsr/y8vJ/3FynP+vsLf/wMC//7S0tNxwcHAZAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJmZmT+5ubn1wMDA/8LCwv/Kysr/19fV/9ra2f+iosP/WVey/zMtuP8oIMT/Jx7N/yce - zf8pIcX/Ni+5/19btf+vrsr/5OTh/9zc2//T09P/zc3L/8jIyP/BwcH1nZ2dPwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKurq0/FxcXzz8/P/9DQ0P/Y2Nj/4eHh/+/w7P/y8u//3Nzn/8HA - 3P+wrtj/tLLZ/8TD3v/f3+n/9fXy//Ly7//l5eX/3d3e/9bW1v/X19f/zMzM87GxsU8AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6urjzQ0NDa4eHh/97e3v/k5OT/7Ozs//Pz - 8v/8/Pr///////////////////////z8+//09PT/7u7u/+jo6P/j4+P/5+fn/9TU1Nq7u7s8AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIuLixbU1NSW4ODg+fPz - 8//y8vL/9fX1//n5+f/9/f3////////////9/f3/+vr6//b29v/09PT/9vb2/+Tk5PnW1taWi4uLFgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADMzMwy4ODglurq6uL4+Pj/////////////////////////////////+fn5/+zs7OLi4uKWzMzMMgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAqqqqEtLS0kXk5OR17e3tlfLy8qTy8vKk7e3tleTk5HXS0tJFqqqqEgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//D///8AD//8A - AP/+AAB//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADwAAAA4AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA - AAGAAAABgAAAAYAAAAHAAAADwAAAA+AAAAfgAAAH8AAAD/gAAB/8AAA//gAAf/+AAf//4Af//////ygA - AAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAbS0tLM0tLSzMAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVV - VUiioqK1zMzM7OPj4Pvj5OH7z8/O7KamprVVVVVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnp6 - eY3GxcP/9vbx//r6+//v7v//7+7///z8/v/8/Pb/ycnJ/35+fo0AAAACAAAAAAAAAAAAAAAAAAAAAHR0 - coqwsLr/t7jN/5eW1P9UTtr/OC/j/zct5P9TTd3/n53a/9ra2f/GxsX/eHh4igAAAAAAAAAAAAAAAFVV - VUKbm5j/lpar/ysrqP8gHLv/MCnG/2Ne0/9qZdX/My3I/xoWvv9oaLr/vLy7/6CgoP9VVVVCAAAAAAAA - AAB0dHStnp6b/4GCmf8WFZ//Hhm0/5+dzP/+//b////7/8fH1f9CP7L/FROn/3N0pP+oqKT/enp6rQAA - AAAaGhoTeXl55oyMi/+AgIf/W1uG/2Fgk/+Uk7D/7u7s//T09P/Ly8b/jo2k/xkYov8wMJj/kZGS/39/ - fuYaGhoTVVVVJ3h4ePeBgYL/gYKI/4iIiP+KioT/jY2K/7W1tv/CwsL/kZGR/4mJiP9DQ4f/NTaB/319 - g/97e3r3VVVVJ1BQUCZ6enn3eXqA/ywtk/8/P5v/hoaF/4yMi/+8vLz/ycnJ/5qal/+Skov/j4+G/4eH - g/+EhIT/fHx891BQUCY/Pz8QgIB/5ImJiP8vMIz/HBuk/42NqP/Cwrv/7+/v//f39P+hoMP/Yl+1/1FQ - p/+BgZb/lJSR/4eHh+Q/Pz8QAAAAAIiIiKaenpr/bW6R/xQToP9CP77/v77b//z8+f////v/p6bb/yIe - vv8REKf/fX2h/6mppf+RkZGmAAAAAAAAAACLi4s3oaGh/LCwrf9lZaT/Gha0/y4n1P9fWOn/XVXq/y0l - 1v8lILj/Pj2g/4aGqv+xsa38mZmZNwAAAAAAAAAAAAAAAKysrHvFxcX/z9DM/56dxf9XUsf/OTHS/zsy - 0/9aVcn/qKjM/9HR0P/Bwcf/tra0ewAAAAAAAAAAAAAAAAAAAAAAAAAAw8PDedXV1fz39/P/+vr2/+/v - 9v/w8Pb/+/v4//r69v/b29r8zMzMeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOzs415eXlofPz - 8+D///v0///79PPz8+Dn5+ehzs7ONQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACwsLAN2NjYIdjY2CGwsLANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/D81e/APAADAAwAAwAPmE4AB - //+AAf//AAD//wAArQAAAP//AAD//4AB//+AAUIAwAOK/+AH///wD////D8AAA== - - - \ No newline at end of file diff --git a/PROMS/Sync/SyncMany/CompareItem.cs b/PROMS/Sync/SyncMany/CompareItem.cs deleted file mode 100644 index af9cae84..00000000 --- a/PROMS/Sync/SyncMany/CompareItem.cs +++ /dev/null @@ -1,101 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; -using System.Xml.Serialization; - -namespace SyncMany -{ - [XmlRoot("SyncFile")] - public class SyncFile - { - private CompareItems _Items=new CompareItems(); - [XmlElement("CompareItem")] - public CompareItems Items - { - get { return _Items; } - set { _Items = value; } - } - } - public partial class CompareItems : List - { - } - public class CompareItem - { - private string _Source; - [XmlAttribute("Source")] - public string Source - { - get { return _Source; } - set { _Source = value; } - } - private string _Destination; - [XmlAttribute("Destination")] - public string DestinationItem - { - get { return _Destination; } - set { _Destination = value; } - } - public CompareItem() - { - } - public CompareItem(string source, string destination) - { - _Source = source; - _Destination = destination; - } - private FileInfo _SourceFile; - [XmlIgnore] - public FileInfo SourceFile - { - get - { - if (_SourceFile == null) - _SourceFile = new FileInfo(_Source); - return _SourceFile; - } - set { _SourceFile = value; } - } - private FileInfo _DestinationFile; - [XmlIgnore] - public FileInfo DestinationFile - { - get - { - if (_DestinationFile == null) - _DestinationFile = new FileInfo(_Destination); - return _DestinationFile; - } - set { _DestinationFile = value; } - } - public bool IsDifferent - { - get - { - string srcText = ReadFile(SourceFile); - string dstText = ReadFile(DestinationFile); - return srcText != dstText; - } - } - private string ReadFile(FileInfo myFile) - { - string retval; - using (StreamReader sr = myFile.OpenText()) - { - retval = sr.ReadToEnd(); - sr.Close(); - } - return retval; - } - public void CopySourceToDestination() - { - _DestinationFile.IsReadOnly = false; - _SourceFile.CopyTo(_Destination,true); - } - public void CopyDestinationToSource() - { - _SourceFile.IsReadOnly = false; - _DestinationFile.CopyTo(Source,true); - } - } -} diff --git a/PROMS/Sync/SyncMany/GenericSerializer.cs b/PROMS/Sync/SyncMany/GenericSerializer.cs deleted file mode 100644 index 107157e8..00000000 --- a/PROMS/Sync/SyncMany/GenericSerializer.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; -using System.Xml; -using System.Xml.Schema; -using System.Xml.Serialization; - -namespace SyncMany -{ - public static class ObjectSerializer where T : class - { - public static string StringSerialize(T t) - { - string strOutput = string.Empty; - XmlSerializer xs = new XmlSerializer(typeof(T)); - using (MemoryStream ms = new MemoryStream()) - { - xs.Serialize(new NonXsiTextWriter(ms, Encoding.UTF8), t); - //xs.Serialize(ms, t); - ms.Position = 0; - StreamReader sr = new StreamReader(ms); - strOutput = sr.ReadToEnd(); - ms.Close(); - } - return strOutput; - } - public static T StringDeserialize(string s) - { - T t; - XmlSerializer xs = new XmlSerializer(typeof(T)); - UTF8Encoding enc = new UTF8Encoding(); - Byte[] arrBytData = enc.GetBytes(s); - using (MemoryStream ms = new MemoryStream(arrBytData)) - { - t = (T)xs.Deserialize(ms); - } - return t; - } - public static void WriteFile(T t, string fileName) - { - string strOutput = string.Empty; - XmlSerializer xs = new XmlSerializer(typeof(T)); - using (FileStream fs = new FileStream(fileName, FileMode.Create)) - { - xs.Serialize(new NonXsiTextWriter(fs, Encoding.UTF8), t); - fs.Close(); - } - } - public static T ReadFile(string fileName) - { - T t; - XmlSerializer xs = new XmlSerializer(typeof(T)); - using (FileStream fs = new FileStream(fileName, FileMode.Open)) - { - t = (T)xs.Deserialize(fs); - } - return t; - } - } - public class NonXsiTextWriter : XmlTextWriter - { - public NonXsiTextWriter(TextWriter w) : base(w) { } - public NonXsiTextWriter(Stream w, Encoding encoding) - : base(w, encoding) - { - this.Formatting = Formatting.Indented; - } - public NonXsiTextWriter(string filename, Encoding encoding) : base(filename, encoding) { } - bool _skip = false; - public override void WriteStartAttribute(string prefix, string localName, string ns) - { - if ((prefix == "xmlns" && (localName == "xsd" || localName == "xsi")) || // Omits XSD and XSI declarations. - ns == XmlSchema.InstanceNamespace) // Omits all XSI attributes. - { - _skip = true; - return; - } - if (localName == "xlink_href") - base.WriteStartAttribute(prefix, "xlink:href", ns); - else - base.WriteStartAttribute(prefix, localName, ns); - } - public override void WriteString(string text) - { - if (_skip) return; - base.WriteString(text); - } - public override void WriteEndAttribute() - { - if (_skip) - { // Reset the flag, so we keep writing. - _skip = false; - return; - } - base.WriteEndAttribute(); - } - } -} diff --git a/PROMS/Sync/SyncMany/Program.cs b/PROMS/Sync/SyncMany/Program.cs deleted file mode 100644 index 2b42030b..00000000 --- a/PROMS/Sync/SyncMany/Program.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; - -namespace SyncMany -{ - static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new frmSyncMany()); - } - } -} \ No newline at end of file diff --git a/PROMS/Sync/SyncMany/Properties/AssemblyInfo.cs b/PROMS/Sync/SyncMany/Properties/AssemblyInfo.cs deleted file mode 100644 index 6cf4b7c6..00000000 --- a/PROMS/Sync/SyncMany/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("SyncMany")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SyncMany")] -[assembly: AssemblyCopyright("Copyright © 2010")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("1d309448-e6cc-4ad8-97ca-15dd2d5c551a")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/PROMS/Sync/SyncMany/Properties/DataSources/CompareItems.datasource b/PROMS/Sync/SyncMany/Properties/DataSources/CompareItems.datasource deleted file mode 100644 index 471fcc0d..00000000 --- a/PROMS/Sync/SyncMany/Properties/DataSources/CompareItems.datasource +++ /dev/null @@ -1,10 +0,0 @@ - - - - SyncMany.CompareItems, SyncMany, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - \ No newline at end of file diff --git a/PROMS/Sync/SyncMany/Properties/Resources.Designer.cs b/PROMS/Sync/SyncMany/Properties/Resources.Designer.cs deleted file mode 100644 index 2b4d39b5..00000000 --- a/PROMS/Sync/SyncMany/Properties/Resources.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.18408 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace SyncMany.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [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() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [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("SyncMany.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [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/PROMS/Sync/SyncMany/Properties/Resources.resx b/PROMS/Sync/SyncMany/Properties/Resources.resx deleted file mode 100644 index af7dbebb..00000000 --- a/PROMS/Sync/SyncMany/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/PROMS/Sync/SyncMany/Properties/Settings.Designer.cs b/PROMS/Sync/SyncMany/Properties/Settings.Designer.cs deleted file mode 100644 index 60e8cac4..00000000 --- a/PROMS/Sync/SyncMany/Properties/Settings.Designer.cs +++ /dev/null @@ -1,96 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.18408 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace SyncMany.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.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; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public global::System.Drawing.Size Size { - get { - return ((global::System.Drawing.Size)(this["Size"])); - } - set { - this["Size"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public global::System.Drawing.Point Location { - get { - return ((global::System.Drawing.Point)(this["Location"])); - } - set { - this["Location"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Normal")] - public global::System.Windows.Forms.FormWindowState WindowState { - get { - return ((global::System.Windows.Forms.FormWindowState)(this["WindowState"])); - } - set { - this["WindowState"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string FileName { - get { - return ((string)(this["FileName"])); - } - set { - this["FileName"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string SourceFolder { - get { - return ((string)(this["SourceFolder"])); - } - set { - this["SourceFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string DestinationFolder { - get { - return ((string)(this["DestinationFolder"])); - } - set { - this["DestinationFolder"] = value; - } - } - } -} diff --git a/PROMS/Sync/SyncMany/Properties/Settings.settings b/PROMS/Sync/SyncMany/Properties/Settings.settings deleted file mode 100644 index a2e3d8d9..00000000 --- a/PROMS/Sync/SyncMany/Properties/Settings.settings +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - Normal - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/Sync/SyncMany/SyncMany.csproj b/PROMS/Sync/SyncMany/SyncMany.csproj deleted file mode 100644 index c79f91a1..00000000 --- a/PROMS/Sync/SyncMany/SyncMany.csproj +++ /dev/null @@ -1,108 +0,0 @@ - - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {256A41AF-440F-42FE-A9B1-2CE36F1261A2} - WinExe - Properties - SyncMany - SyncMany - sync.ico - SAK - SAK - SAK - SAK - v2.0 - - - - - 2.0 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - Form - - - frmAddCompareItem.cs - - - Form - - - frmSyncMany.cs - - - - - - Designer - frmAddCompareItem.cs - - - Designer - frmSyncMany.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - \ No newline at end of file diff --git a/PROMS/Sync/SyncMany/Thumbs.db b/PROMS/Sync/SyncMany/Thumbs.db deleted file mode 100644 index 37de5f2d..00000000 Binary files a/PROMS/Sync/SyncMany/Thumbs.db and /dev/null differ diff --git a/PROMS/Sync/SyncMany/app.config b/PROMS/Sync/SyncMany/app.config deleted file mode 100644 index 217e8909..00000000 --- a/PROMS/Sync/SyncMany/app.config +++ /dev/null @@ -1,24 +0,0 @@ - - - - -
- - - - - - Normal - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/Sync/SyncMany/frmAddCompareItem.Designer.cs b/PROMS/Sync/SyncMany/frmAddCompareItem.Designer.cs deleted file mode 100644 index 21d06f43..00000000 --- a/PROMS/Sync/SyncMany/frmAddCompareItem.Designer.cs +++ /dev/null @@ -1,155 +0,0 @@ -namespace SyncMany -{ - partial class frmAddCompareItem - { - /// - /// 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.btnSource = new System.Windows.Forms.Button(); - this.tbSource = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.tbDestination = new System.Windows.Forms.TextBox(); - this.btnDestination = new System.Windows.Forms.Button(); - this.btnOK = new System.Windows.Forms.Button(); - this.btnCancel = new System.Windows.Forms.Button(); - this.ofd = new System.Windows.Forms.OpenFileDialog(); - this.SuspendLayout(); - // - // btnSource - // - this.btnSource.Location = new System.Drawing.Point(634, 11); - this.btnSource.Name = "btnSource"; - this.btnSource.Size = new System.Drawing.Size(75, 23); - this.btnSource.TabIndex = 0; - this.btnSource.Text = "Browse..."; - this.btnSource.UseVisualStyleBackColor = true; - this.btnSource.Click += new System.EventHandler(this.btnSource_Click); - // - // tbSource - // - this.tbSource.Location = new System.Drawing.Point(90, 13); - this.tbSource.Name = "tbSource"; - this.tbSource.Size = new System.Drawing.Size(538, 20); - this.tbSource.TabIndex = 1; - this.tbSource.TextChanged += new System.EventHandler(this.tbText_TextChanged); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 16); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(41, 13); - this.label1.TabIndex = 2; - this.label1.Text = "Source"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(12, 42); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(60, 13); - this.label2.TabIndex = 5; - this.label2.Text = "Destination"; - // - // tbDestination - // - this.tbDestination.Location = new System.Drawing.Point(90, 39); - this.tbDestination.Name = "tbDestination"; - this.tbDestination.Size = new System.Drawing.Size(538, 20); - this.tbDestination.TabIndex = 4; - this.tbDestination.TextChanged += new System.EventHandler(this.tbText_TextChanged); - // - // btnDestination - // - this.btnDestination.Location = new System.Drawing.Point(634, 37); - this.btnDestination.Name = "btnDestination"; - this.btnDestination.Size = new System.Drawing.Size(75, 23); - this.btnDestination.TabIndex = 3; - this.btnDestination.Text = "Browse..."; - this.btnDestination.UseVisualStyleBackColor = true; - this.btnDestination.Click += new System.EventHandler(this.btnDestination_Click); - // - // btnOK - // - this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOK.Location = new System.Drawing.Point(553, 65); - this.btnOK.Name = "btnOK"; - this.btnOK.Size = new System.Drawing.Size(75, 23); - this.btnOK.TabIndex = 6; - this.btnOK.Text = "OK"; - this.btnOK.UseVisualStyleBackColor = true; - // - // btnCancel - // - this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Retry; - this.btnCancel.Location = new System.Drawing.Point(634, 65); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 7; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - // - // ofd - // - this.ofd.Filter = "CSharp Files|*.cs|All Files|*.*"; - // - // frmAddCompareItem - // - this.AcceptButton = this.btnOK; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnCancel; - this.ClientSize = new System.Drawing.Size(782, 145); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnOK); - this.Controls.Add(this.label2); - this.Controls.Add(this.tbDestination); - this.Controls.Add(this.btnDestination); - this.Controls.Add(this.label1); - this.Controls.Add(this.tbSource); - this.Controls.Add(this.btnSource); - this.Name = "frmAddCompareItem"; - this.Text = "frmAddCompareItem"; - this.Resize += new System.EventHandler(this.frmAddCompareItem_Resize); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button btnSource; - private System.Windows.Forms.TextBox tbSource; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox tbDestination; - private System.Windows.Forms.Button btnDestination; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.OpenFileDialog ofd; - } -} \ No newline at end of file diff --git a/PROMS/Sync/SyncMany/frmAddCompareItem.cs b/PROMS/Sync/SyncMany/frmAddCompareItem.cs deleted file mode 100644 index e1ff1436..00000000 --- a/PROMS/Sync/SyncMany/frmAddCompareItem.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; - -namespace SyncMany -{ - public partial class frmAddCompareItem : Form - { - public string SourceName - { get { return tbSource.Text; } } - public string DestinationName - { get { return tbDestination.Text; } } - private string _SourceFolder; - public string SourceFolder - { - get { return _SourceFolder; } - set { _SourceFolder = value; } - } - private string _DestinationFolder; - public string DestinationFolder - { - get { return _DestinationFolder; } - set { _DestinationFolder = value; } - } - public frmAddCompareItem(string sourceFolder, string destinationFolder) - { - InitializeComponent(); - SetupButtons(); - SourceFolder = sourceFolder; - DestinationFolder = destinationFolder; - } - private void SetupButtons() - { - btnOK.Enabled = tbDestination.Text != null && tbSource != null; - } - private void frmAddCompareItem_Resize(object sender, EventArgs e) - { - if(Height != 131) - Height = 131; - } - private void tbText_TextChanged(object sender, EventArgs e) - { - SetupButtons(); - } - private void btnSource_Click(object sender, EventArgs e) - { - if (tbSource.Text != "") - { - SourceFolder = SetupOpenFileDialog(tbSource.Text); - } - else - { - ofd.InitialDirectory = SourceFolder; - } - if (ofd.ShowDialog() != DialogResult.OK) - return; - tbSource.Text = ofd.FileName; - SourceFolder = SetupOpenFileDialog(ofd.FileName); - } - private string SetupOpenFileDialog(string fileName) - { - FileInfo fi = new FileInfo(fileName); - ofd.InitialDirectory = fi.Directory.FullName; - ofd.FileName = fi.Name; - return ofd.InitialDirectory; - } - private void btnDestination_Click(object sender, EventArgs e) - { - if (tbDestination.Text != "") - { - DestinationFolder = SetupOpenFileDialog(tbDestination.Text); - } - else - { - ofd.InitialDirectory = DestinationFolder; - } - if (ofd.ShowDialog() != DialogResult.OK) - return; - tbDestination.Text = ofd.FileName; - DestinationFolder = SetupOpenFileDialog(ofd.FileName); - } - } -} \ No newline at end of file diff --git a/PROMS/Sync/SyncMany/frmAddCompareItem.resx b/PROMS/Sync/SyncMany/frmAddCompareItem.resx deleted file mode 100644 index 86c9308b..00000000 --- a/PROMS/Sync/SyncMany/frmAddCompareItem.resx +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - 17, 17 - - \ No newline at end of file diff --git a/PROMS/Sync/SyncMany/frmSyncMany.Designer.cs b/PROMS/Sync/SyncMany/frmSyncMany.Designer.cs deleted file mode 100644 index ba41a8a7..00000000 --- a/PROMS/Sync/SyncMany/frmSyncMany.Designer.cs +++ /dev/null @@ -1,285 +0,0 @@ -namespace SyncMany -{ - partial class frmSyncMany - { - /// - /// 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(frmSyncMany)); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); - this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.addToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.ofd = new System.Windows.Forms.OpenFileDialog(); - this.sfd = new System.Windows.Forms.SaveFileDialog(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.tsslStatus = new System.Windows.Forms.ToolStripStatusLabel(); - this.dgv = new System.Windows.Forms.DataGridView(); - this.IsDifferent = new System.Windows.Forms.DataGridViewCheckBoxColumn(); - this.sourceDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.destinationItemDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.cms = new System.Windows.Forms.ContextMenuStrip(this.components); - this.compareToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.copySourceToDestinationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.copyDestinationToSourceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.compareItemsBindingSource = new System.Windows.Forms.BindingSource(this.components); - this.menuStrip1.SuspendLayout(); - this.statusStrip1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv)).BeginInit(); - this.cms.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.compareItemsBindingSource)).BeginInit(); - this.SuspendLayout(); - // - // menuStrip1 - // - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileToolStripMenuItem, - this.addToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(672, 24); - this.menuStrip1.TabIndex = 0; - this.menuStrip1.Text = "menuStrip1"; - // - // fileToolStripMenuItem - // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.openToolStripMenuItem, - this.saveToolStripMenuItem, - this.saveAsToolStripMenuItem, - this.toolStripMenuItem1, - this.exitToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "&File"; - // - // openToolStripMenuItem - // - this.openToolStripMenuItem.Name = "openToolStripMenuItem"; - this.openToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.openToolStripMenuItem.Text = "&Open"; - this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); - // - // saveToolStripMenuItem - // - this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; - this.saveToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.saveToolStripMenuItem.Text = "&Save"; - this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); - // - // saveAsToolStripMenuItem - // - this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem"; - this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.saveAsToolStripMenuItem.Text = "Save&As"; - this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveAsToolStripMenuItem_Click); - // - // toolStripMenuItem1 - // - this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(149, 6); - // - // exitToolStripMenuItem - // - this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.exitToolStripMenuItem.Text = "E&xit"; - this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); - // - // addToolStripMenuItem - // - this.addToolStripMenuItem.Name = "addToolStripMenuItem"; - this.addToolStripMenuItem.Size = new System.Drawing.Size(41, 20); - this.addToolStripMenuItem.Text = "Add"; - this.addToolStripMenuItem.Click += new System.EventHandler(this.addToolStripMenuItem_Click); - // - // ofd - // - this.ofd.FileName = "SyncList.xml"; - this.ofd.Filter = "XML Files|*.xml"; - this.ofd.FileOk += new System.ComponentModel.CancelEventHandler(this.ofd_FileOk); - // - // sfd - // - this.sfd.FileName = "SyncList.XML"; - this.sfd.Filter = "XML Files|*.xml"; - this.sfd.FileOk += new System.ComponentModel.CancelEventHandler(this.sfd_FileOk); - // - // statusStrip1 - // - this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsslStatus}); - this.statusStrip1.Location = new System.Drawing.Point(0, 333); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(672, 22); - this.statusStrip1.TabIndex = 1; - this.statusStrip1.Text = "statusStrip1"; - // - // tsslStatus - // - this.tsslStatus.Name = "tsslStatus"; - this.tsslStatus.Size = new System.Drawing.Size(39, 17); - this.tsslStatus.Text = "Ready"; - // - // dgv - // - this.dgv.AllowUserToAddRows = false; - this.dgv.AllowUserToDeleteRows = false; - this.dgv.AutoGenerateColumns = false; - this.dgv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dgv.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.IsDifferent, - this.sourceDataGridViewTextBoxColumn, - this.destinationItemDataGridViewTextBoxColumn}); - this.dgv.ContextMenuStrip = this.cms; - this.dgv.DataSource = this.compareItemsBindingSource; - this.dgv.Dock = System.Windows.Forms.DockStyle.Fill; - this.dgv.Location = new System.Drawing.Point(0, 24); - this.dgv.Name = "dgv"; - this.dgv.Size = new System.Drawing.Size(672, 309); - this.dgv.TabIndex = 2; - this.dgv.CellMouseDown += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dgv_CellMouseDown); - // - // IsDifferent - // - this.IsDifferent.DataPropertyName = "IsDifferent"; - this.IsDifferent.HeaderText = "IsDifferent"; - this.IsDifferent.Name = "IsDifferent"; - this.IsDifferent.ReadOnly = true; - // - // sourceDataGridViewTextBoxColumn - // - this.sourceDataGridViewTextBoxColumn.DataPropertyName = "Source"; - this.sourceDataGridViewTextBoxColumn.HeaderText = "Source"; - this.sourceDataGridViewTextBoxColumn.Name = "sourceDataGridViewTextBoxColumn"; - // - // destinationItemDataGridViewTextBoxColumn - // - this.destinationItemDataGridViewTextBoxColumn.DataPropertyName = "DestinationItem"; - this.destinationItemDataGridViewTextBoxColumn.HeaderText = "DestinationItem"; - this.destinationItemDataGridViewTextBoxColumn.Name = "destinationItemDataGridViewTextBoxColumn"; - // - // cms - // - this.cms.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.compareToolStripMenuItem1, - this.copySourceToDestinationToolStripMenuItem, - this.copyDestinationToSourceToolStripMenuItem, - this.removeToolStripMenuItem}); - this.cms.Name = "cms"; - this.cms.Size = new System.Drawing.Size(219, 92); - // - // compareToolStripMenuItem1 - // - this.compareToolStripMenuItem1.Name = "compareToolStripMenuItem1"; - this.compareToolStripMenuItem1.Size = new System.Drawing.Size(218, 22); - this.compareToolStripMenuItem1.Text = "Compare"; - this.compareToolStripMenuItem1.Click += new System.EventHandler(this.compareToolStripMenuItem1_Click); - // - // copySourceToDestinationToolStripMenuItem - // - this.copySourceToDestinationToolStripMenuItem.Name = "copySourceToDestinationToolStripMenuItem"; - this.copySourceToDestinationToolStripMenuItem.Size = new System.Drawing.Size(218, 22); - this.copySourceToDestinationToolStripMenuItem.Text = "Copy Source to Destination"; - this.copySourceToDestinationToolStripMenuItem.Click += new System.EventHandler(this.copySourceToDestinationToolStripMenuItem_Click); - // - // copyDestinationToSourceToolStripMenuItem - // - this.copyDestinationToSourceToolStripMenuItem.Name = "copyDestinationToSourceToolStripMenuItem"; - this.copyDestinationToSourceToolStripMenuItem.Size = new System.Drawing.Size(218, 22); - this.copyDestinationToSourceToolStripMenuItem.Text = "Copy Destination to Source"; - this.copyDestinationToSourceToolStripMenuItem.Click += new System.EventHandler(this.copyDestinationToSourceToolStripMenuItem_Click); - // - // removeToolStripMenuItem - // - this.removeToolStripMenuItem.Name = "removeToolStripMenuItem"; - this.removeToolStripMenuItem.Size = new System.Drawing.Size(218, 22); - this.removeToolStripMenuItem.Text = "Remove"; - this.removeToolStripMenuItem.Click += new System.EventHandler(this.removeToolStripMenuItem_Click); - // - // compareItemsBindingSource - // - this.compareItemsBindingSource.DataSource = typeof(SyncMany.CompareItem); - // - // frmSyncMany - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(672, 355); - this.Controls.Add(this.dgv); - this.Controls.Add(this.statusStrip1); - this.Controls.Add(this.menuStrip1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MainMenuStrip = this.menuStrip1; - this.Name = "frmSyncMany"; - this.Text = "Sync Many"; - this.Load += new System.EventHandler(this.frmSyncMany_Load); - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmSyncMany_FormClosing); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.statusStrip1.ResumeLayout(false); - this.statusStrip1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv)).EndInit(); - this.cms.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.compareItemsBindingSource)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.MenuStrip menuStrip1; - private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; - private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; - private System.Windows.Forms.OpenFileDialog ofd; - private System.Windows.Forms.SaveFileDialog sfd; - private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.ToolStripStatusLabel tsslStatus; - private System.Windows.Forms.DataGridView dgv; - private System.Windows.Forms.BindingSource compareItemsBindingSource; - private System.Windows.Forms.ContextMenuStrip cms; - private System.Windows.Forms.ToolStripMenuItem compareToolStripMenuItem1; - private System.Windows.Forms.DataGridViewCheckBoxColumn IsDifferent; - private System.Windows.Forms.DataGridViewTextBoxColumn sourceDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn destinationItemDataGridViewTextBoxColumn; - private System.Windows.Forms.ToolStripMenuItem copySourceToDestinationToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem copyDestinationToSourceToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem removeToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem addToolStripMenuItem; - } -} - diff --git a/PROMS/Sync/SyncMany/frmSyncMany.cs b/PROMS/Sync/SyncMany/frmSyncMany.cs deleted file mode 100644 index 4252ef3a..00000000 --- a/PROMS/Sync/SyncMany/frmSyncMany.cs +++ /dev/null @@ -1,269 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; - -namespace SyncMany -{ - public partial class frmSyncMany : Form - { - public string MyStatus - { - get { return tsslStatus.Text; } - set { tsslStatus.Text = value; Application.DoEvents(); } - } - private string _MyFileName; - public string MyFileName - { - get { return _MyFileName; } - set { _MyFileName = value; ofd.FileName = value; sfd.FileName = value; } - } - SyncFile _MySyncFile = new SyncFile(); - public SyncFile MySyncFile - { - get { return _MySyncFile; } - set - { - _MySyncFile = value; - ResetOriginalSync(); - dgv.DataSource = value.Items; - dgv.AutoResizeColumns(); - } - } - private void ResetOriginalSync() - { - _OriginalSync = ObjectSerializer.StringSerialize(MySyncFile); - } - private string _SourceFolder; - public string SourceFolder - { - get { return _SourceFolder; } - set { _SourceFolder = value; } - } - private string _DestinationFolder; - public string DestinationFolder - { - get { return _DestinationFolder; } - set { _DestinationFolder = value; } - } - public frmSyncMany() - { - InitializeComponent(); - compareItemsBindingSource.DataSource = MySyncFile.Items; - } - public string _OriginalSync = ""; - public bool IsDirty - { - get - { - string tmp = ObjectSerializer.StringSerialize(MySyncFile); - return tmp != _OriginalSync; - } - } - private void openToolStripMenuItem_Click(object sender, EventArgs e) - { - if (ofd.ShowDialog() == DialogResult.OK) - { - MySyncFile = ObjectSerializer.ReadFile(MyFileName); - } - } - private void saveToolStripMenuItem_Click(object sender, EventArgs e) - { - if (MyFileName == null) - saveAsToolStripMenuItem_Click(sender, e); - else - { - ObjectSerializer.WriteFile(MySyncFile, MyFileName); - ResetOriginalSync(); - } - } - private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) - { - if (sfd.ShowDialog() == DialogResult.OK) - { - ObjectSerializer.WriteFile(MySyncFile, MyFileName); - ResetOriginalSync(); - } - } - private void ofd_FileOk(object sender, CancelEventArgs e) - { - MyFileName = ofd.FileName; - } - private void sfd_FileOk(object sender, CancelEventArgs e) - { - MyFileName = sfd.FileName; - } - private void addToolStripMenuItem_Click(object sender, EventArgs e) - { - frmAddCompareItem myCompareItem = new frmAddCompareItem(SourceFolder,DestinationFolder); - if (myCompareItem.ShowDialog() == DialogResult.OK) - { - SourceFolder = myCompareItem.SourceFolder; - DestinationFolder = myCompareItem.DestinationFolder; - MySyncFile.Items.Add(new CompareItem(myCompareItem.SourceName, myCompareItem.DestinationName)); - //compareItemsBindingSource.Add(new CompareItem(myCompareItem.SourceName, myCompareItem.DestinationName)); - compareItemsBindingSource.DataSource = null; - compareItemsBindingSource.DataSource = MySyncFile.Items; - dgv.DataSource = null; - dgv.DataSource = compareItemsBindingSource; - dgv.Refresh(); - } - } - private void compareToolStripMenuItem1_Click(object sender, EventArgs e) - { - foreach (DataGridViewRow row in dgv.SelectedRows) - { - CompareItem item = row.DataBoundItem as CompareItem; - if (item != null) - { - System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(@"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe", - string.Format(@" -t ""{0}"" ""{1}""", item.Source, item.DestinationItem)); - System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi); - } - } - } - private void frmSyncMany_Load(object sender, EventArgs e) - { - LoadSettings(); - this.Move +=new EventHandler(frmSyncMany_Move); - this.Resize +=new EventHandler(frmSyncMany_Resize); - FileInfo myInfo = new FileInfo(MyFileName); - if (myInfo.Exists) - MySyncFile = ObjectSerializer.ReadFile(MyFileName); - else - MySyncFile = new SyncFile(); - } - private void copySourceToDestinationToolStripMenuItem_Click(object sender, EventArgs e) - { - foreach (DataGridViewRow row in dgv.SelectedRows) - { - CompareItem item = row.DataBoundItem as CompareItem; - if (item != null) - { - item.CopySourceToDestination(); - } - dgv.Refresh(); - } - } - private void copyDestinationToSourceToolStripMenuItem_Click(object sender, EventArgs e) - { - foreach (DataGridViewRow row in dgv.SelectedRows) - { - CompareItem item = row.DataBoundItem as CompareItem; - if (item != null) - { - item.CopyDestinationToSource(); - } - } - dgv.Refresh(); - } - private void frmSyncMany_FormClosing(object sender, FormClosingEventArgs e) - { - if (IsDirty) - { - DialogResult result = MessageBox.Show("Do you want to Save changes?","Save Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); - switch (result) - { - case DialogResult.Cancel: - // Don't close - e.Cancel = true; - return; - break; - case DialogResult.No: - // Don't do anything - break; - case DialogResult.Yes: - saveToolStripMenuItem_Click(this, e); - break; - } - } - SaveSettings(); - } - private string GetPropertyString(string propertyName) - { - object prop = Properties.Settings.Default[propertyName]; - return prop == null ? "" : prop.ToString(); - } - private void LoadSettings() - { - string myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); - if (GetPropertyString("Location") != "") - this.Location = Properties.Settings.Default.Location; - if ((Properties.Settings.Default["Size"] ?? "") != "") - this.Size = Properties.Settings.Default.Size; - this.WindowState = Properties.Settings.Default.WindowState; - string test = GetPropertyString("FileName"); - if (GetPropertyString("FileName") != "") - MyFileName = Properties.Settings.Default.FileName; - else - MyFileName = myDocuments + @"\SyncList.XML"; - SetupOpenFileDialog(MyFileName); - if (GetPropertyString("SourceFolder") != "") - SourceFolder = Properties.Settings.Default.SourceFolder; - else - SourceFolder = myDocuments; - if (GetPropertyString("DestinationFolder") != "") - DestinationFolder = Properties.Settings.Default.DestinationFolder; - else - DestinationFolder = myDocuments; - } - private string SetupOpenFileDialog(string fileName) - { - FileInfo fi = new FileInfo(fileName); - sfd.InitialDirectory = ofd.InitialDirectory = fi.Directory.FullName; - sfd.FileName = ofd.FileName = fi.Name; - return ofd.InitialDirectory; - } - private void SaveSettings() - { - Properties.Settings.Default.WindowState = this.WindowState; - Properties.Settings.Default.FileName = MyFileName; - Properties.Settings.Default.SourceFolder = SourceFolder; - Properties.Settings.Default.DestinationFolder = DestinationFolder; - Properties.Settings.Default.Save(); - } - private void frmSyncMany_Move(object sender, EventArgs e) - { - if (this.WindowState == FormWindowState.Normal) - { - Properties.Settings.Default.Location = this.Location; - Properties.Settings.Default.Size = this.Size; - } - } - private void frmSyncMany_Resize(object sender, EventArgs e) - { - if (this.WindowState == FormWindowState.Normal) - { - Properties.Settings.Default.Location = this.Location; - Properties.Settings.Default.Size = this.Size; - } - } - private void removeToolStripMenuItem_Click(object sender, EventArgs e) - { - int index = dgv.SelectedRows[0].Index; - dgv.Rows[index].Selected = false; - MySyncFile.Items.RemoveAt(index); - compareItemsBindingSource.DataSource = MySyncFile.Items; - dgv.DataSource = null; - dgv.DataSource = compareItemsBindingSource; - dgv.Refresh(); - } - private void dgv_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) - { - if (e.RowIndex >= 0) - { - dgv.Rows[e.RowIndex].Selected = true; - dgv.CurrentCell = dgv[0, e.RowIndex]; - } - } - private void exitToolStripMenuItem_Click(object sender, EventArgs e) - { - this.Close(); - } - - } -} \ No newline at end of file diff --git a/PROMS/Sync/SyncMany/frmSyncMany.resx b/PROMS/Sync/SyncMany/frmSyncMany.resx deleted file mode 100644 index 661f3c7d..00000000 --- a/PROMS/Sync/SyncMany/frmSyncMany.resx +++ /dev/null @@ -1,4653 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - 17, 17 - - - 132, 17 - - - 189, 17 - - - 257, 17 - - - True - - - 581, 17 - - - 373, 17 - - - - - AAABAAEAAAAAAAEAIAAoIAQAFgAAACgAAAAAAQAAAAIAAAEAIAAAAAAAACAEAAAAAAAAAAAAAAAAAAAA - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMAAAADAAAAAwAAAAIAAAACAAAAAQAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACgAA - AAoAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACgAAAAoAAAAKAAAACAAAAAgAAAAGAAAABQAAAAUAAAADAAAAAwAA - AAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAEAAAACAAAABAAAAAUAAAAGAAAACQAAAAsAAAAMAAAADgAAABAAAAARAAAAEgAA - ABMAAAATAAAAEwAAABQAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABQAAAAUAAAAEwAAABMAAAATAAAAEgAAABAAAAAPAAAADgAAAAsAAAAKAAAABwAA - AAUAAAAEAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAEAAAADAAAABAAAAAYAAAAJAAAADAAAAA8AAAASAAAAFAAAABcAAAAZAAAAGwAA - AB0AAAAeAAAAHwAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAB8AAAAfAAAAHgAAABwAAAAaAAAAGQAAABYAAAATAAAAEAAA - AA0AAAAKAAAABwAAAAUAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAADAAAABAAAAAcAAAAKAAAADQAAABIAAAAWAAAAGgAAAB8AAAAjAAAAJgAA - ACkAAAArAAAALQAAAC4AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALQAAACwAAAAqAAAAKAAAACQAAAAhAAAAHQAA - ABgAAAAUAAAADwAAAAsAAAAIAAAABQAAAAMAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAYAAAAJAAAADgAAABMAAAAZAAAAHwAAACUAAAArAAAAMAAA - ADUAAAA5AAAAPAAAAD4AAAA/AAAAQAAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQAAAAD8AAAA9AAAAOgAAADcAAAAzAAAALgAA - ACgAAAAiAAAAHAAAABYAAAAQAAAACwAAAAgAAAAFAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAUAAAAJAAAADQAAABMAAAAZAAAAIQAAACoAAAAxAAAAOgAA - AEAAAABGAAAATAAAAE8AAABSAAAAVAAAAFUAAABWAAAAVgAAAFYAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFYAAABWAAAAVQAAAFUAAABTAAAAUQAAAE4AAABJAAAAQwAA - AD0AAAA2AAAALgAAACYAAAAeAAAAFgAAABAAAAALAAAABwAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAGAAAACwAAABEAAAAYAAAAIAAAACoAAAA0AAAAPwAA - AEgAAABRAAAAWQAAAF8AAABkAAAAaAAAAGoAAABsAAAAbAAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAGwAAABrAAAAagAAAGYAAABiAAAAXQAA - AFUAAABNAAAARAAAADoAAAAvAAAAJQAAABwAAAAUAAAADgAAAAgAAAAEAAAAAgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACAAAAA0AAAAUAAAAHgAAACcAAAAzAAAAQAAA - AEwAAABXAAAAYQAAAGsAAAByAAAAdwAAAHsAAAB+AAAAgAAAAIAAAACAAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIAAAACAAAAAfwAAAH0AAAB5AAAAdQAA - AG8AAABmAAAAXQAAAFIAAABGAAAAOQAAAC0AAAAiAAAAGQAAABAAAAALAAAABQAAAAIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAAkAAAAPAAAAFwAAACEAAAAtAAAAOwAA - AEoAAABXAAAAZQAAAHAAAAB6AAAAggAAAIgAAACNAAAAjwAAAJEAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJAAAACPAAAAiwAA - AIYAAAB+AAAAdQAAAGoAAABeAAAAUQAAAEIAAAA0AAAAKAAAAB0AAAATAAAADAAAAAYAAAADAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAJAAAAEQAAABoAAAAlAAAAMgAA - AEEAAABRCgoIcRUUEaUXFRK8FxUSwRcVEsUXFRLJFxUSyxcVEs0XFRLNFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4WFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhYVEs4WFRLOFhUSzhYVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4WFRLOFhUSzhYVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4WFRLOFhQRzhUUEc4WFRLOFxUSzhYVEs4WFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhYVEs4WFRLOFxUSzhcVEs4XFRLOFxUSzhYVEs4WFRLOFhUSzhYV - Es4WFRLOFhUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4WFRLOFRQRzhUUEc4VFBHOFhUSzhcV - Es4WFRLOFhUSzhYVEs4VFBHOFRQRzhUTEc4WFRLOFhUSzhYVEs4WFRLOFxUSzhcVEs4XFRLNFxUSzBYV - EsoWFRLHFhUSwxYVEr8WFRK5FBIQoAoICGoAAABJAAAAOQAAACsAAAAfAAAAFgAAAA0AAAAHAAAAAwAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAACgAAABIAAAAcAAAAKAAA - ADUAAABGJSIeqjczLPw5NC7/Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ni7/Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ni7/ODQt/zczLP84NC3/OjYu/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo2L/86NS7/Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//OjYv/zk0Lf84NCz/OjYv/zo3L/86Ni7/OjYv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo2 - Lv86Ni7/Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//OjYu/zk0 - Lf84NC3/OjUu/zo1Lv86NS7/Ojcv/zo3L/86Ny//OjYu/zo3L/86Ni7/OjUu/zgzLP83Myv/NzMs/zk0 - Lf86Ny//OjYv/zo1Lv85NS7/ODMs/zYyK/82Myv/OTQt/zo1Lv86NS7/OjUu/zo1Lv86Ni7/Ojcv/zo3 - L/86Ni//OjUu/zo2L/86Ni//OjYu/zYyK/8wLSf8HRsXpQAAAD0AAAAuAAAAIgAAABcAAAAOAAAACAAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQAAAAoAAAASAAAAHAAA - ACgAAAA3KSYijUM9N/9DPTf/Qz43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9CPTb/Qj03/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/QT02/z87NP8+OzP/QT01/0I9Nv9CPjf/Qz43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0M+N/9EPjf/Qz42/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9DPjf/Qj02/0E9Nf9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9DPjb/Qj02/0Q+N/9EPjf/Qz42/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9CPTb/QT02/0M+Nv9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0M+ - Nv9BPTb/QT01/0I9Nv9CPTb/Qz42/0Q+N/9EPjf/RD43/0M+Nv9EPjf/Qz43/0I9Nv8/PDT/Pzs0/0A8 - NP9CPTb/Qj02/0I9Nv9CPTb/QT02/0A8NP8/OjP/Pzsz/0I9Nv9CPTb/Qj02/0A9Nf9APTX/QT01/0M+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9DPjf/QDs0/zUwK/8aGBaIAAAAMAAAACIAAAAXAAAADgAA - AAcAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAJAAAAEQAA - ABsAAAAnBQQEOFtXUOtKRT3/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dBOf9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9GQDj/RkA4/0VAOP9HQTn/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dBOf9GQDn/RkA4/0ZAOP9GQDj/RkA4/0dBOf9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dBOf9GQDj/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/RkA4/0U/N/9FPzf/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0E5/0ZAOP9HQTn/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9GQDj/RT83/0Q/N/9GQTn/RkE5/0dBOf9HQjr/R0I6/0dCOv9HQTn/R0E5/0dCOv9HQjr/R0E5/0ZB - Of9GQTn/R0I6/0dCOv9HQTn/RkA4/0U/N/9EPjb/RD42/0U/N/9GQDj/RkA4/0ZAOP9EPzf/RD43/0U/ - OP9HQjr/R0I6/0dCOv9GQDj/RkA4/0ZAOP9HQjr/R0I6/0dCOv9BPTX/Mi8p6QMCAjEAAAAhAAAAFgAA - AA0AAAAGAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAACAAA - ABAAAAAaAAAAJi4tKmNjX1j/SkY9/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0hEO/9HQjr/SUQ8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/R0E5/0VAOP9GQTn/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRDz/SEQ7/0hDO/9IRDv/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9IQzv/SEM7/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0dCOv9FQDj/RkA6/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SEQ8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SEM7/0ZBOv9HQjr/SEQ7/0hEO/9JRDz/SUU8/0lFPP9JRTz/SUU8/0lEPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0dCOv9GQDn/RkA4/0dCOv9IRDv/SEQ7/0hEO/9IQzr/RkA6/0dC - Ov9JRDz/SUU8/0lFPP9JRTz/SEQ7/0hEO/9IRDv/SUU8/0lFPP9JRTz/SEQ7/zo3MP8UExBZAAAAHwAA - ABUAAAAMAQEBBQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAcAAAAOAAAAFwAAACM+PDqOYl5W/0xIP/9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9JRTz/SUU8/0pGPf9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/SkY9/0hDO/9HQzv/SUU8/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0pGPf9KRj3/SkY9/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/SkY9/0pGPf9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9IRDz/RkE5/0lEO/9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/SUU9/0lFPf9LRz7/S0c+/0pG - Pf9LRz7/SkY9/0lGPf9JRj3/SkY9/0pGPf9KRj3/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9JRj3/SEQ8/0hEPP9JRTz/SkY9/0pGPf9KRj3/SkY9/0lG - Pf9KRj3/S0c+/0tHPv9LRz7/S0c+/0lFPf9IRTz/SkY9/0tHPv9LRz7/S0c+/0tHPv9BPTX/GhgVfwAA - AB0AAAASAAAACgMCAgQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAECAQEGAAAACwAAABQAAAAeQkE+kmJeVv9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TUlA/01JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/01JQP9KRj7/SkY+/0xIP/9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9MSD//SkY9/0tH - P/9NSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TUlA/0xIP/9MSD//TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TEg//0lGPf9MSD//TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/01JQP9LRz7/TEg//01J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TUg//0pGPf9KRj3/TEg//01I - P/9MSD//S0c//0xIP/9MSD//TEg//0xIP/9NSD//TEg//01JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/01JQP9MSD//TEg//0xIP/9MSD//TEg//0xIP/9MSD//TEg//0xIP/9MSD//TEg//0xI - P/9NSD//TklA/05JQP9OSUD/TklA/05JQP9MSD//S0c+/0xIP/9OSUD/TklA/05JQP9OSUD/RkI6/xwa - F4sAAAAZAAAADwMDAwkEBAQDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAwMDBAYFBQkAAAAQAAAAGVJPTZNlYFn/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UEtD/09KQv9QSkL/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/T0pB/05J - QP9OSUD/UEtD/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1BKQ/9OSUD/UEpD/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UEtD/1BLQ/9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9PSkL/TUg//01I - QP9QS0P/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/05JQf9KRj7/TEc//05J - Qf9QS0P/UEtD/05JQf9PSUH/T0pC/1BKQv9QSkL/UEtE/1BKQv9QSkL/UEpC/1BLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9QSkL/UEpC/09KQf9QSkL/UEpC/1BKQv9QS0P/UUtE/1FLRP9RS0T/UEpC/1BK - Qv9QS0P/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UEpC/05JQv9QSkL/UUtE/1FLRP9RS0T/UUtE/0pE - Pf8mIyCRAAAAFQAAAAwPDg0HBwYFAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAUFBQIZGRgGAAAADAAAABRsaWWYZmFa/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/UkxF/1NN - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NN - Rv9STET/UUtF/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTUb/UkxE/1JN - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/UkxF/1JMRf9STEX/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/Uk1G/1FL - RP9RS0T/U01G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NNRv9QSkL/T0lB/1FL - Q/9STEX/U01G/1JMRv9RS0X/UUtE/1FLRP9RS0X/UkxF/1JMRf9STEX/UkxF/1JMRf9TTUb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/UkxF/1JMRf9STUX/U01G/1NNRv9TTkb/U05G/1NORv9TTkb/U05G/1NN - Rv9STEX/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NNRv9STEX/UkxF/1NORv9TTkb/U05G/1NO - Rv9NR0D/MS4plgAAABAAAAAJGxkWBQoJCAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAJCAgBLSspBQ4ODQkAAAAPeXZxnWZiWf9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VE9G/1RP - Rv9VUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1RP - Rv9UT0b/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1RPRv9UT0b/VE9G/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VE9G/1RP - Rv9TT0b/U05G/1VQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9VUEf/U05G/1JN - RP9TTkb/VE9G/1VQR/9UT0b/U05F/1JNRf9TTkb/U09G/1RPRv9UT0b/U09G/1NPRv9UT0f/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1RPRv9UT0b/VVBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VE9G/1VQR/9WUEf/VlBH/1ZQ - R/9WUEf/TkpB/zc0LpwAAAAMIR8cBiEfGwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAADQ0MATg2MwMyMC0GAAAACoJ+eqRmYlr/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1ZQ - SP9WUEj/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9WUEj/VlBI/1ZQSP9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9VUEj/U05G/1RPR/9WUEj/VU9H/1VPR/9VT0j/VlBI/1ZQSP9VT0f/VU9H/1VPSP9VT0f/VU9I/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1ZQSP9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1BLQ/87ODKjDw4MCDQwKwUoJSEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGQ0ABTktGBD06NQeHg32qaGNa/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9ZU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9ZU0r/WVNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WVNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WVNK/1hSSf9YUkn/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WFJJ/1dSSf9XUkn/WFJJ/1dRSP9YUkn/WFJJ/1lSSf9ZUkn/V1FJ/1dRSP9XUUj/VlBH/1dR - SP9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9ZU0r/WVNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9ZU0r/WVNK/1hSSf9YUkn/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9TTUX/Pzs0qkE9NgU7NzECMCwnAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlWUAFZVU4EioZ/sWhjWv9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tUS/9bVUv/W1VL/1tV - S/9bVUv/WlRL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9aVEv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVEv/WlNK/1pTSv9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1pUS/9YUkn/WVJK/1tVS/9bVUv/W1VL/1tUS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1pUS/9aU0r/WlNK/1pTSv9aU0r/WlNK/1pUSv9bVEv/WlNK/1pTSv9YUkn/WFJJ/1dR - SP9ZUkr/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tUS/9bVEv/WlRL/1pTSv9aU0r/WlRK/1tV - S/9bVUv/W1VL/1tVS/9bVUv/VU9G/0E9NrFHQzsCQj03AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYFkBYVxVAouHgbhmYVj/W1VM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVTP9bVEv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9cVkz/W1VL/1tUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1pTSv9aVEv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1pUS/9bVUv/XFZM/1xWTP9bVUv/W1VL/1pUS/9aVEv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVEv/WFNK/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVEv/WlNK/1tUS/9bVEv/W1RL/1tUS/9bVUv/XFZM/1xWTP9cVkz/W1RL/1pT - Sv9ZU0r/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1VPR/9CPje5TUhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhiWwGLh4HBZ2FY/1tW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1RL/1tV - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9aU0v/W1RL/1tVS/9cVkz/XFZM/1tVS/9bVUv/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tU - S/9aVEv/W1VL/1xWTP9cVkz/XFZM/1pUS/9YUkn/WlNK/1tUS/9bVUv/W1RL/1lTSv9aU0r/WlNK/1tV - S/9cVkz/XFZM/1xWTP9bVUv/WVNK/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1VL/1lTSv9ZU0r/WlNK/1tUS/9bVEv/W1VL/1xWTP9cVkz/XFZM/1tV - S/9bVEv/W1RL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9bVUv/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9WUEf/Qz43wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAioaByWZg - V/9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1hTSv9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1lT - Sv9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9aVEv/WVNK/1tUS/9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/WlNK/1tVS/9cVkz/XFZM/1xWTP9bVUv/WFNK/1pTSv9bVEv/WlNK/1pTSv9aU0r/W1RL/1tU - S/9bVUv/XFZM/1xWTP9bVUv/WVNL/1lTSv9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aVEv/V1JJ/1lSSv9bVEv/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VL/1tUS/9bVEv/XFZM/1xWTP9bVUv/W1RL/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/WlRL/1tUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9bVEv/W1RL/1tUS/9bVEv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/V1FI/0M/OMkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAImF - f9JlX1b/XFZM/1xWTP9cVkz/XFZM/1tVS/9aU0r/WlNK/1pTS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9aU0r/W1RL/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9ZU0r/WFJJ/1tUS/9bVEv/W1RL/1tUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/W1VL/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VL/1tVS/9cVkz/XFZM/1xWTP9cVkz/W1VL/1tUS/9aU0v/W1RL/1tUS/9aU0r/WlNK/1tU - S/9cVkz/XFZM/1xWTP9bVUv/WlNK/1tUS/9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1pUS/9ZU0r/WlNK/1tUS/9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tUS/9aU0r/WlNL/1tVS/9aU0v/WFJK/1dRSP9XUUj/WlRL/1xWTP9cVkz/XFZM/1xW - TP9bVUv/W1RL/1lTSv9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1VM/1xWTP9bVUv/WVNK/1tV - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1dRSP9EPznSAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACIhH7bY15V/1xWTP9cVkz/XFZM/1xWTP9bVUv/WFJJ/1hSSf9aU0r/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9ZU0r/WFJK/1pTSv9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/VlBI/1VQR/9bVEv/W1RL/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9bVEv/XFZM/1tVS/9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9aVEv/WVNK/1pUS/9bVEv/W1RL/1tU - S/9bVEv/XFZM/1xWTP9cVkz/W1VL/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1RL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/WlNK/1pTSv9bVEv/W1VL/1xW - TP9cVkz/XFZM/1xWTP9bVUv/WVNK/1lTSv9bVEv/WFJJ/1RPR/9TT0b/VlFI/1tVS/9cVkz/XFZM/1xW - TP9cVkz/WlNK/1hSSv9YUkn/W1RL/1tVS/9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1pT - Sv9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9YUUn/RUE52wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAh4N95GJcU/9cVkz/WlRL/1pUS/9cVkz/XFZM/1tVTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9aVEr/VlFI/1hSSf9aU0r/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/W1VL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1RL/1RORv9VUEj/W1RL/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1VL/1xWTP9bVUv/W1ZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1RL/1tUS/9bVEv/W1RL/1tU - S/9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1lTSv9XUUn/WVNK/1tV - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVEv/W1RL/1hSSf9TTkb/VU9H/1hSSf9cVkz/XFZM/1xW - TP9cVkz/XFZM/1pUS/9aU0r/WVNK/1tUS/9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/WFJJ/0ZBOuQAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAIaCe+xhXFL/W1VL/1dRSP9YUkn/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tU - S/9WUUj/VU9H/1VQR/9YU0r/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/WlRL/1dSSf9TTUb/V1FJ/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tVS/9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1RL/1tUS/9bVEv/XFZM/1tV - S/9bVEv/W1RL/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1ZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9ZU0r/V1FJ/1hS - Sf9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1RL/1tUS/9ZU0r/VlBI/1dRSP9aVEv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tUS/9bVEv/WVNK/1lTSv9bVEv/XFZM/1xWTP9cVkz/XFZM/1tV - TP9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lTSv9HQjvsAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACFgXr0YFpR/1pUS/9WUEj/WFJJ/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/WVNK/1hSSv9ZU0r/WlRL/1xWTP9cVkz/XFZM/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1VL/1dRSf9VUEf/VVBH/1pUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1RL/1tVS/9bVEv/W1RL/1tV - S/9bVEv/WlNK/1pTS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1pT - Sv9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tUS/9cVkz/W1RL/1hSSf9YUkr/W1VL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1lTSv9ZU0r/W1RL/1xWTP9cVkz/XFZM/1tV - S/9YU0r/WFJJ/1lSSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aU0r/R0M79QAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAhIB5/V9ZUP9bVUv/WVNK/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lTSv9VUEf/VlBI/1lTSv9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1pTSv9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/WlNL/1pTS/9bVEv/W1RL/1tU - S/9bVEv/WlNK/1lTSv9ZU0r/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/W1VM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9bVEv/W1VL/1pTSv9ZU0r/WlNK/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/W1VL/1xWTP9cVkz/XFZM/1tV - S/9YUkn/VlBI/1dRSP9YUkn/WlRL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/WlRK/0hD - O/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAfnpyB4N/eP9fWU//XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9YUkn/VVBH/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1VL/1pTS/9bVEv/W1VL/1tU - S/9bVEv/W1RL/1pTS/9ZU0r/WlRL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/W1VL/1tUS/9aU0r/WlNK/1tU - S/9bVUz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/V1FJ/1VQR/9XUUj/WFJJ/1pTSv9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1pU - S/9JRDz/S0Y+CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH56chCCfnf/X1lP/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/WlNK/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1RL/1pTS/9cVkz/XFZM/1tV - S/9bVEv/W1RL/1tUS/9ZU0r/WlNK/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/W1RL/1xWTP9cVkz/XFZM/1tV - S/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VL/1pUS/9YUkr/WlNK/1tUS/9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9aVEv/SUQ8/0tGPhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+enIYgXx1/19ZT/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9ZU0r/WlRL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVEv/W1RL/1xW - TP9cVkz/W1RL/1tUS/9ZU0r/WVNK/1pTS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1RL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tUS/9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVkz/W1VL/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1RL/0lEPf9KRT0ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf3pzIYB7dP9eWE7/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9ZU0v/WlNK/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9aU0r/V1FJ/1hSSf9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/WlNL/1pT - Sv9bVUv/XFZM/1tVS/9aU0v/WlNK/1tUS/9bVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tUS/9JRT3/SkU9IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH96cyp/eXL/XlhO/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/V1FJ/1lSSv9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/WVNK/1ZRSP9XUUj/WFJJ/1pUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9ZU0r/W1VL/1tVS/9bVEv/W1RL/1tUS/9bVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/W1RL/1tUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVEv/SkU9/0pFPSoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/enMzfXhx/15YTv9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/WlNK/1pTSv9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lTSv9XUUj/V1FI/1dRSf9aU0r/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/WlNL/1tUS/9aU0r/WlNK/1pTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tUS/9aU0r/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1RL/0tGPv9KRT0zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfnpzO3p2bv9cVk3/WlRL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1pTSv9aU0r/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aVEv/WFJK/1hSSf9ZU0r/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tUS/9bVEv/V1FI/1ZQR/9XUUj/WVNK/1pUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9aU0r/WlNK/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9MRj//SkU9PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH55ckV4c2z/WlVL/1pT - Sv9bVUz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9ZU0r/WVNK/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1lTSv9ZU0r/W1RL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/WlNK/1VPR/9STkb/U05G/1dRSP9YUkr/W1RL/1tUS/9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aVEv/WVNK/1pTSv9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/TUdA/0pFPkUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+eXJNd3Ns/11X - Tf9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/WFJJ/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VL/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VM/1tVS/9bVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/WlRL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lTSv9UT0b/UkxF/1JNRf9WUEf/WFJJ/1hSSv9ZU0r/W1RL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9bVUv/WVNK/1ZQSP9aU0r/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/01IQf9KRj5OAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfXlyVnZx - av9dV03/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1pUS/9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1lTSv9YUkr/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9ZU0r/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/WFJJ/1dRSf9XUUj/V1FJ/1lTSv9ZU0r/WVNK/1tV - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/W1RL/1hTSv9XUUn/WlRL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9OSUH/S0Y+VgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH15 - cV50b2j/XFZN/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - TP9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9aVEv/WlRL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tVS/9bVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1pU - S/9ZUkn/WlRK/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVUv/WlRL/1lTSv9bVEv/W1VL/1tV - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9ZU0r/WFJJ/1tU - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/UEpC/0tGPl4AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB9eXFmcm5m/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9aVEv/VlBI/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9aU0r/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1VL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9XUUj/U05G/1VQR/9ZU0r/WlNK/1tVS/9cVkz/W1VL/1tVS/9bVEv/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9aU0r/WVNK/1tWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xW - TP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tVS/9bVEv/WVNK/1dS - Sf9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VM/1BLQ/9KRj5nAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAfXlxb3BsZP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/WVJK/1VQSP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tV - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/WFJJ/1lTSv9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tUS/9cVkz/XFZM/1xW - TP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/V1FJ/1NNRv9TTkb/VVBH/1VQR/9YUkn/WlNK/1lTSv9YUkr/WlNK/1pTSv9bVUv/XFZM/1xW - TP9cVkz/W1ZM/1tVS/9aU0r/WVNK/1hSSf9cVkz/XFZM/1xWTP9cVkz/W1VL/1tVS/9bVUv/W1VL/1tV - S/9cVkz/XFZM/1pUS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVEv/W1VL/1xWTP9bVUv/WlNK/1dR - SP9XUUj/WVNK/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9RTEP/S0Y+cAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAH14cXlvamH/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/W1ZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1lTSv9XUUn/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VL/1hSSf9ZU0r/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tU - S/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVEv/W1VL/1tV - S/9aVEv/WVNK/1pUS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/2JcUv9pY1r/amRb/2pk - XP9rZV3/a2Ze/2tmXf9rZVz/amRc/2RfVv9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1pUS/9YUkn/VE9G/1NORv9STEX/VE9H/1dRSP9XUUj/V1FI/1hSSf9ZU0v/WlRL/1tV - S/9bVEv/W1RL/1pTSv9eWVD/Y15V/2NdVf9bVUv/XFZM/1xWTP9cVkz/XFZM/1tUS/9ZU0r/WlRL/1pU - S/9ZU0r/WlRL/1xWTP9aVEv/WlRL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/WlNK/1lTSv9bVEv/W1RL/1lT - Sv9VUEj/VU9H/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9aVEv/UkxE/0tG - PnkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACGgnuBbmhg/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/WVNL/1hSSf9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1RL/1hSSv9WUEj/WVRK/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - TP9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aVEv/WlRL/1tU - S/9aU0v/WVNK/1dSSf9YUkn/WlRL/2VfVv9oYln/amVc/3RvaP95dG3/e3dw/396dP+BfXf/gn54/4J9 - d/+CfXf/gX13/4N+eP+FgHr/hYB6/4aBe/+Hgnz/hoF7/4R/ef+BfXb/fnlz/25pYf9sZ17/amVc/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lTSv9UUEf/U05G/1VQR/9XUUj/VlFI/1dRSf9YUkn/WlRL/1pT - Sv9YUkr/WlNK/1lTS/9bVkz/ZmFZ/3dzbP95dG3/W1VL/1xWTP9cVkz/XFZM/1tVS/9aU0r/V1FI/1hS - Sf9YUkn/VVBH/1hSSf9aU0r/WFJJ/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lTSv9YUkr/WlNL/1tU - S/9aU0r/VlFI/1dRSP9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9YUkr/VU9H/1BL - Q/9GQjqBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAj4yFim1oX/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1pUSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1pUS/9WUEj/WVRK/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VM/1ZRSf9WUEj/WFJJ/1tVS/9cVkz/XFZM/1xWTP9cVkz/WlRL/1tVS/9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1RL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tV - S/9bVUv/W1VL/2RdVf9mYFf/cW1l/3dyav97dm//fHhx/3x5cv99eXL/fHhx/3p3cP95dW7/eXVu/3l1 - bv95dW7/eXVu/3l1bv95dW7/eXVu/3l1bv95dW7/eXVu/3p3cP99eXL/gHx1/4J+d/+FgHr/iIN8/4iE - ff+EgHn/f3t0/21oYP9qZFv/XFZM/1xWTP9bVEv/WFNK/1hSSf9YUkn/V1JJ/1hSSf9YUkn/WFJK/1lT - S/9ZU0r/V1JJ/1lTSv9aVkz/XFdO/2diWv94dG7/f3t1/2VfVv9cVkz/XFZM/1tVS/9bVEv/W1RL/1hS - Sv9YUkn/VVBH/1JNRf9UTkb/VlFI/1dRSf9aU0r/W1RL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/WlRL/1pUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aVEv/WVNK/1pU - S/9bVUv/WlRL/1hSSf9ZU0r/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/WlRK/1ZR - SP9QS0P/QT02igAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAI6LhJNsZ17/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lSSv9WUEj/WlRL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/VlBI/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9UT0f/WVNK/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9gWlD/Z2JZ/3FrZP92cWn/eXVt/3p2bv96dm7/eXVu/3l1bv95dW7/eXVu/3l1bv95dW7/eXVu/3l1 - bv95dW7/eXVu/3l1bv95dW7/eXVu/3l1bv95dW7/eXVu/3l1bv95dW7/eXVu/3l1bv95dW7/eXVu/3l1 - bv96dnD/f3t0/4SAef+IhH7/iIR9/4F9dv9zbmf/Z2FY/1tWTP9bVUv/W1RL/1tUS/9aU0r/WlNK/1tU - S/9bVEv/WVNK/1dRSP9aVEv/XlhO/2VfVv93cmv/eXRt/4F8dv9qZFz/WlRL/1pUS/9bVEv/W1RL/1tU - S/9bVEv/WVNK/1VQR/9RS0T/UUtD/1JMRf9VT0f/WlNK/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tU - S/9cVkz/XFZM/1xWTP9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/VE5G/0I+N5MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOi4Wba2de/1xXTf9cV03/W1ZM/1tVTP9bVkz/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1tWTP9YU0r/Vk9I/1pVTP9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1tVTP9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9bVkz/WlVL/1tWTP9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XllQ/2Nf - Vf9vamL/dHBo/3dza/94dG7/eHVv/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2 - cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2 - cP95dnD/eXZw/3l2cP95dnD/eXZw/3x5c/+EgHr/iYV//4eEff+AfXb/bmpi/2JdVP9cV03/W1ZN/1xX - Tf9cV03/W1ZM/1lUS/9aVEv/XVhO/2RgV/93c23/eXVv/3l1b/9/fHX/d3Ns/1lTSv9aVUz/W1ZM/1tW - TP9bVkz/WlRL/1hSSv9XUEn/VE5G/1JMRP9STEP/U05F/1lTSv9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1tWTP9bVk3/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1RPR/9CPzecAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjYqEpGpmXf9cV03/XFdN/1pVS/9YUkr/WFJJ/1lU - S/9bVkz/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/W1ZM/1lUS/9bVkz/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9fWlD/ZmJZ/21p - Yf9xbWX/dnJr/3h1bv95dm//eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2 - cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dW//eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2 - cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXVv/3l1b/9+enT/hYJ8/4qHgP+DgHn/dHBo/2Ne - Vf9cV03/XFdN/1xXTf9dWE7/XFdN/2NeVf91cmz/eHRu/3l1b/95dW//fHlz/3p2cP9YUkn/WlVM/1tW - TP9bVkz/W1ZM/1hSSv9WUEj/WFJK/1hTSv9XUUn/U01F/1JMRP9WT0j/WlVL/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9bVkz/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9VUEf/Qj44pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2JhK1pZVz/XFdN/1tWTP9ZU0v/WFJJ/1hS - Sf9YUkr/WVNL/1tWTP9bVkz/W1ZM/1xXTf9cV03/XFdN/1xXTf9cV03/W1ZM/1tWTP9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/15ZUP9mYVn/bmlh/3Ft - Zf91cWr/eHVu/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3 - cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/enZv/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3 - cP96d3D/endw/3p3cP95dm//eXZv/3l1bv96dm//enZv/3p2b/96dm//enZv/3p3cP97eHL/hIF7/4qH - gP+FgXv/dXFp/2NeVf9hXFP/X1pQ/2NfVv92cmz/dnJs/3dzbf95dW7/enZv/3p3cP9+e3T/ZmFY/1tW - TP9bVkz/W1ZM/1pVS/9XUEj/VU5H/1hSSv9aVUv/W1ZM/1lTSv9WUEj/VlBI/1pVS/9cV03/XFdN/1xX - Tf9cV03/W1ZM/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/W1ZM/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/VVBI/0I+N64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMiYK2aGRb/1xXTf9bVkz/WFNK/1pU - S/9aVUv/WlVL/1pUS/9aVUv/W1ZM/1tWTP9bVkz/XFdN/1xXTf9cV03/W1ZM/1dRSf9ZU0r/W1VM/1xX - Tf9cV03/XFdN/1xXTf9bVkz/W1VM/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XllP/2RfV/9rZl7/b2ti/3Vx - av95dm//endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3 - cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3 - cP96d3D/endw/3p3cP95dm//eHRu/3d0bf93c23/eXVu/3p2b/96dm//enZv/3p2b/96dm//endw/3p3 - cP97eHH/g4B5/4qHgP+AfHX/a2Ze/2ZhWP94dG3/eHRu/3ZzbP93c23/eHRu/3p2b/96d3D/gHx2/2pm - Xv9bVkz/W1ZM/1tWTP9aVkz/V1FJ/1VOR/9YUkn/W1VM/1xXTf9cV03/W1ZM/1tWTP9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1tWTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1VQSP9DPzi2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAioeBvmdiWf9bVkz/WlVL/1lT - Sv9bVUz/W1ZM/1tWTP9bVkz/W1ZM/1tWTP9bVkz/W1ZM/1xXTf9cV03/XFdN/1pVS/9VT0f/V1FJ/1pU - S/9cV03/XFdN/1xXTf9bVkz/WVRL/1dRSf9bVkz/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/YFtS/2hjW/9saGD/cm9n/3l1 - bv96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3 - cP96d3D/endw/3p3cP96d3D/endw/3p3cP96dm//endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3 - cP96d3D/endw/3p3cP96dm//eHRu/3ZxbP91cWv/dnJs/3h1bv95dW7/enZv/3p3cP96d3D/enZv/3p2 - b/96d3D/endw/3p3cP97eHH/gH13/3Rwaf92cmz/eXVu/3l1bv93c23/dnNs/3d0bf96dm//endw/398 - df95dW7/WlRL/1pVS/9bVkz/WlZM/1hSSf9XUEj/V1FI/1lUSv9bVkz/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9WUUj/Qz85vwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAImGgMdnYln/W1ZM/1pV - S/9ZU0v/XFdN/11YTv9dWE7/XVhO/1xXTf9cV03/XFdN/1xXTf9dWE7/XVhO/11YTv9aVEv/V1BJ/1dQ - Sf9aVEv/XFdN/11YTv9cV03/W1ZM/1lTS/9aU0v/XFdN/11YTv9dWE7/XVhO/11YTv9cV03/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9eWVD/ZF9W/2plXP9vamP/d3Rt/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endw/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3 - cf96d3H/endx/3p3cf96d3H/enZw/3l1bv94dG7/d3Nt/3dzbf95dG7/enZv/3p3cP96d3H/endx/3p3 - cP96d3D/endw/3p3cf96d3H/endx/3p3cP94dG7/dnJs/3l1b/96d3D/eXZv/3l0bv95dm//endx/3p3 - cf99eXT/f3t0/15ZUP9aVEz/W1ZN/1tWTP9bVUz/WVJK/1lSSv9aVEz/XFdO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/V1NK/0RBOscAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJhoDPZWBX/1tW - TP9ZU0v/WlNL/1xXTf9dWE7/XVhO/11YTv9cV03/XFdN/1xXTf9cV03/XVhO/11YTv9cV03/WVJL/1dQ - SP9WT0j/WlRL/1xXTf9cV03/W1ZM/1lTS/9aVEv/W1ZN/11YTv9dWE7/XVhO/11YTv9dWE7/XFdN/1xX - Tf9cV03/XFdN/1xXTv9cV03/XFdN/1xXTf9cV03/W1ZM/1xXTf9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/1xXTf9cWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9gW1L/Z2JZ/2pmXf9zb2j/enZw/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3 - cf96d3H/endx/3p3cf96d3H/enZw/3l0b/95dW7/enZv/3l0bv93dG7/eHRu/3l0bv96dnD/endx/3p3 - cf96d3D/endw/3p3cP96d3H/endx/3p3cf96d3D/d3Nt/3Vxa/95dW7/eXZv/3l1b/96dnD/endw/3p3 - cf96d3H/endx/4J+d/9oZFv/WlNL/1tWTf9bVk3/WlNL/1pUS/9aVEz/W1ZM/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/1hTSv9FQTrPAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIR+2GNe - Vv9bVkz/WlVL/1xXTf9dWE7/XVhO/11YTv9dWE7/XVhO/1xXTv9dWE7/XVhO/11YTv9dWE7/XFdN/1pU - S/9XUUn/V1BJ/1pUS/9cV03/WlVM/1lTSv9ZU0v/XFdN/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/1xXTf9bVUz/W1VM/1tWTP9bVkz/WlRL/1ZQSP9ZUkr/XFdN/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/1xXTf9YUUn/W1VM/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9iXVP/ZmFZ/2tnX/93c23/endx/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p2cP94dG//eXVv/3p3cf96d3H/eXVw/3h0b/93c27/eXVw/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3h0b/93c27/eXVw/3h0b/95dG//endx/3p3 - cf96d3H/endx/3p3cf+BfXj/cW1l/1tWTP9cV03/XFdN/1pVTP9bVk3/XFdN/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9ZU0r/RUI62AAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIaD - feFhXFP/WVJL/1tWTP9cV03/XVhO/11YTv9dWE7/XVhO/1xXTf9bVkz/XVhO/11YTv9cV03/XFdN/1xX - Tf9aU0v/WVNL/1lSSv9aVEv/WlVL/1lSSv9aVEv/XFdN/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9cV03/WlRL/1lTS/9ZU0v/WlRL/1lTSv9XUEn/WlRL/1xXTf9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9cV03/WVNK/1pVTP9cV03/W1ZN/1xX - Tf9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/15ZT/9jXlX/ZmJZ/25qYv95d3H/enhy/3p4 - cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4 - cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4 - cv96eHL/enhy/3p4cv96eHL/enhy/3p4cf96d3D/endw/3p3cP96eHH/enhy/3p4cf95dW//eHRv/3l2 - cP96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cf96eHH/endx/3p3cP94dG7/d3Nu/3p3 - cf96eHL/enhy/3p4cv96eHL/fnx1/3t3cP9cV03/XVhO/11YTv9bV03/XFdN/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/1xXTf9cV03/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/WVRL/0ZDO+IAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACGgnzqYFpS/1pTS/9cV03/XVhO/11YTv9dWE7/XVhO/11YTv9cV03/XFZN/11YTv9dWE7/XVhO/1xX - Tf9bVkz/WlNL/1pTS/9aU0v/WlNL/1pTS/9aVEz/XVdO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XFdO/1pUTP9aU0v/WVNL/1pTS/9ZUkv/V1BI/1xWTf9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9cVk3/XFZN/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/15ZT/9iXVT/ZGBX/3JvZ/96eHL/enhy/3p4 - cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4 - cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/eHVu/3JvaP9taWL/Z2Rd/2RgWf9jX1j/YV1V/2Bc - Vf9jX1j/Y19Y/2ZjXP9raGD/cW5n/3Zzbf96eHL/enhx/3p3cf96eHH/enhy/3p4cv96eHL/endx/3l1 - b/96eHH/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cf96d3H/eHRu/3d0 - bv96d3H/enhy/3p4cv96eHL/enhy/3x5c/+BfXb/Y15V/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/1pVTP9HRDzqAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAhoN982BbUv9cVk3/XVdO/15ZT/9eWU//XllP/15ZT/9eWU//XVdO/1tVTP9cVk7/XllP/15Z - T/9eWU//XVdO/1xVTf9aVEz/WlNM/1pTS/9bVU3/XVdO/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9cVk7/W1RN/1pUTP9bVEz/WVJL/1hSSv9dWE7/XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9dWE7/XllP/15ZT/9eWU//XVhO/11Y - Tv9eWU//XllP/15ZT/9eWU//XVhO/11YTv9eWU//XllP/11YTv9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9iXVP/ZWBX/3Vxav98eXL/fHly/3x5 - cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5 - cv98eXL/fHly/3x5cv97eHH/dHBp/2tmX/9iXVX/WVNL/1ZQSP9WUUn/V1FJ/1dSSv9aVUz/WlVM/1pV - TP9aVUz/WlRL/1lUS/9WUEj/VVBI/1RPR/9UT0f/VVBI/15aUv9oY1z/cm5n/3t3cP98eXL/e3hy/3p3 - cf96d3H/e3hy/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv97eXL/endx/3l1 - cP95dnD/enhx/3x5cv98eXL/fHly/3x5cv98eXL/hIB5/2tnXv9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XVdO/11YTv9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9cVk3/SEU98wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAIWCfPthW1P/XVhO/15ZT/9eWU//XllP/15ZT/9eWU//XllP/11YTv9cVk3/XFZO/15Z - T/9eWU//XllP/15ZT/9dV07/WlRM/1pTS/9ZU0v/XFZN/15ZT/9eWU//XllP/15ZT/9eWU//XllP/11Y - Tv9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XVdO/1xWTv9bVUz/W1RM/1lTS/9aVEz/XVhO/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XVdO/1xWTf9cVk3/XllP/11YTv9dWE7/XllP/11YTv9cVk7/XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9hXFP/ZF9W/3dzbP98eXL/fHly/3x5 - cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5 - cv98eXL/e3hx/3NvaP9mYVr/WlRM/1dRSf9YUkr/WlRL/1tWTf9cV03/XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9dV07/W1VM/1pUTP9YU0r/VVBI/1RPR/9VUEj/YVxV/25q - Y/96dnD/e3hy/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5 - cv97eHL/e3hy/3x5cv98eXL/fHly/3x5cv98eXL/fHly/4J+eP92cmr/XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/11YTv9dWE7/XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XFdN/0pF - PvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAHZxagWFgXv/YVxT/15ZT/9eWU//XVhO/11YTv9eWU//XllP/15ZT/9dWE7/XVdO/1xW - Tf9eWU//XllP/15ZT/9eWU//XVhO/1tVTP9aVEz/W1VN/11YTv9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XVdO/11XTv9dWE7/XVhO/1xWTf9bVEz/XFVN/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/11Y - Tv9dWE7/XllP/15ZT/9eWU//XVhO/1xWTf9cVk3/XFZN/15ZT/9dWE7/XVhO/15ZT/9eWU//XVhO/15Z - T/9eWU//XllP/1xWTv9cVk3/XVhO/15ZT/9eWU//XllP/15ZT/9gW1H/ZF9W/3d0bf98eXL/fHly/3x5 - cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5 - cv94dW7/amVd/1tWTv9YUkr/WVRL/1tWTP9dV07/XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9dWE7/XVdO/11XTv9eWU//XllP/15ZT/9cV03/WlVM/1RP - R/9QS0T/VVBJ/2VhWf92c2z/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5 - cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv+AfXb/fnp0/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/1xX - Tv9KRj//Uk1EBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACAfHUNhIF6/2FcU/9eWU//XllP/11XTv9dV07/XllP/11XTv9eWE//XVdO/11X - Tv9dV07/XllP/15ZT/9eWU//XllP/15YT/9bVU3/XVdO/11YT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XlhP/11XT/9eWU//XllP/15ZT/9eWE//W1VM/1xX - Tv9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9dWE7/XVdO/15YT/9eWU//XllP/1xXTv9aVUz/XFZN/11YTv9eWU//XllP/15ZT/9eWU//XllP/15Y - T/9eWU//XllP/15YT/9dV07/XlhP/15ZT/9eWU//XllP/15ZUP9gW1H/Y11U/3h0bf98eXL/fHly/3x5 - cv98eHL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3h0 - bv9oYlv/WlRM/1pUTP9bVU3/XFdO/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XlhP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15YT/9eWE//XllP/15ZT/9eWU//XllP/15Z - T/9cV07/WVRM/1lTS/9YUkr/WFJK/21oYf98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5 - cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fnp0/4J+eP9qZFz/XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWE//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9dV07/S0ZA/01IQQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAgHx2F4R/ef9iXFP/X1lQ/11YT/9dV07/XVdO/15YT/9eWE//XlhP/15Y - T/9dV07/XlhP/19ZUP9fWVD/X1lQ/19ZUP9fWVD/XVdO/11XTv9eWE//X1lQ/15YT/9eWE//X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/15YUP9eWFD/X1lQ/19ZUP9fWVD/XlhP/1hT - Sv9aVUz/XlhP/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XlhP/15YT/9eWE//XlhP/15YT/9cVk3/W1VN/11XTv9eWE//X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9eWE//X1lQ/19ZUP9fWVD/X1lQ/19ZUP9gWlH/YlxU/3dzbf99enT/fXp0/316 - dP98enT/fHlz/3x5c/98eXP/fHp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/e3dx/2pl - Xv9bVU3/W1VN/1xWTv9eWE//X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XlhP/15YT/9eWE//X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/XlhP/15Y - T/9fWVD/XlhP/15YT/9eWE//XlhP/2VgWP97eHL/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316 - dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP+Ef3r/bWhg/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XlhP/0xHQP9NSEEXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIF9dh+Cfnj/YVtT/19ZUP9dV07/XVdO/15YT/9fWVD/X1lQ/19Z - UP9eWE//XVdO/15YT/9fWVD/X1lQ/19ZUP9fWVD/XlhP/11XTv9dV07/XlhP/19ZUP9dV07/XlhP/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/XlhP/19ZUP9fWVD/X1lQ/1xX - Tf9XUUn/WVRL/11XTv9eWE//X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XlhP/15YT/9eWE//XlhP/15YT/9dV0//W1ZN/1tWTf9dV07/XlhP/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/YFpR/3Vxa/99enT/fXp0/316 - dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/cW1m/15X - UP9bVU3/XVdO/15YT/9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XlhP/11XTv9dV07/XlhP/19ZUP9fWVD/XlhP/15YT/9fWVD/X1lQ/19ZUP9fWVD/X1lQ/15Y - T/9eWE//X1lQ/15YT/9gWlH/YVxT/2ljW/98eHL/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316 - dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/g355/3x3 - cf9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/15YT/9MR0H/TEhBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBfXYogX12/2FbU/9fWVD/XlhP/15YT/9eWE//X1lQ/19Z - UP9fWVD/XlhP/11XTv9eWE//X1lQ/19ZUP9fWVD/X1lQ/15YT/9dV07/XVdO/11YT/9eWFD/XVdP/15Y - T/9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9bVk3/VlBI/1pUS/9eWE//X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XVdO/1tVTP9cVk7/XlhP/15YT/9eWE//XVdO/1tWTf9cVk3/XVdO/15YT/9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/3JsZf9+enT/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP97d3H/ZmFZ/1tV - Tf9cVk7/XlhP/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/15YT/9dV0//XVdO/15YT/9fWVD/X1lQ/15YT/9eWE//X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9eWE//XlhP/19ZUP9gWlH/YlxT/2lkXP99eHL/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/4F8 - d/+AfHb/X1pR/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XlhP/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9eWE//TUdB/0xIQSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgX12MIB8dP9hXFP/X1pQ/15ZT/9eWU//XllP/19a - UP9fWlD/XllP/15ZT/9dWE7/XlpQ/19aUP9fWlD/X1pQ/19aUP9eWU//XVhO/11YTv9eWU//XllP/15Z - T/9fWlD/X1pQ/19aUP9fWlD/XllP/19aUP9eWlD/X1pQ/15ZT/9eWU//XllP/19aUP9fWlD/X1pQ/19a - UP9eWU//WlVM/1dRSf9bVk3/XllQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/XllP/1tWTf9YUkr/W1ZM/11YTv9fWlD/XllP/15ZT/9dWE7/XVhO/11YTv9eWU//X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/2tnX/9+enT/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP92cmv/X1pR/1xX - Tf9dWE7/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9eWU//XVhO/11YTv9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/XllP/19aUP9gW1H/Yl1T/2llXP99eXL/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP99enP/fXpz/356dP9+enT/fnp0/356 - dP9+enT/g4B5/2tmXv9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/15ZT/9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/XllP/01JQv9MSEAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIF9dzl+enP/YFxS/19aUP9eWU//XllP/19a - UP9fWlD/XllP/11YTv9dWE7/XVhO/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/15ZT/9eWU//XllP/15Z - UP9eWU//X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/XllP/19aUP9eWU//XVhO/11YTv9fWlD/X1pQ/19a - UP9fWlD/XVlP/1lUS/9XUUn/XFdN/15ZT/9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/15ZT/9aVUz/WlRL/11YTv9eWU//X1pQ/15ZT/9eWU//XllP/11ZT/9dWE//XVhO/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/XllP/2VgV/99eXP/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9wbGX/XFhO/11Y - Tv9eWU//X1pQ/19aUP9fWlD/XllP/15ZT/9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/15ZT/9dWE7/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/15ZT/9eWU//YVxS/2hkW/99eXL/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/316c/98eXP/fHlz/3x5c/9+enT/fnp0/356 - dP9+enT/fnp0/4SAev9wbGT/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9eWU//X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/15ZT/9OSkL/TEhAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBfXZCfXlx/2BbUf9fWlD/XllP/11Y - Tv9eWU//XllP/15ZT/9dWE7/XVhO/15ZT/9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/XllP/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/15ZT/9eWU//X1pQ/19a - UP9fWlD/X1pQ/15ZT/9ZVEv/V1FJ/1lUS/9eWU//X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/XVhO/11YTv9eWU//XllP/15ZT/9eWU//XllP/15ZT/9dWE//XVhP/11Y - Tv9eWU//X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/XllQ/19aUf95dm//fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/316dP9rZ1//XFdO/11Y - Tv9eWU//X1pQ/19aUP9fWlD/X1pQ/15ZT/9eWU//X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9eWU//XllP/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9eWU//XVhO/2VhWP98eXL/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/316dP98enP/fHlz/3t5c/98eXP/fnp0/356 - dP9+enT/fnp0/356dP+Cf3j/fXhy/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/XllP/15ZT/9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9eWU//T0tD/0xIQUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgX12S3x4cP9hXFL/YFtR/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9fWlD/X1pQ/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/XllP/1tUTP9ZU0v/XllQ/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9fWlD/XllP/15ZT/9eWU//XllQ/11Y - T/9dWE//XlpQ/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/X1pQ/19aUP9yb2f/fnx2/358 - dv9+fHb/fnx2/358dv9+fHb/fnx2/358dv9+fHb/fnx2/358dv9+fHb/fnx2/317df9qZl7/XllP/15a - UP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/X1pQ/19bUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/X1pQ/1pVTP9qZl7/dnNt/317df9+fHb/fnx2/358dv9+fHb/fnx2/358 - dv9+fHb/fnx2/358dv9+fHb/fnx2/358dv9+fHb/fnx2/358dv99e3X/fXp0/316dP99enT/fXp0/357 - df9+fHb/fnx2/358dv9+fHb/gH13/4F9dv9lYFb/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/X1pR/19aUP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/X1pQ/1FMRP9NSUFLAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIB9dlR6dm7/YVxS/19a - UP9fWlD/X1pQ/19aUP9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9fWlH/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/19aUP9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/X1pQ/19a - UP9gW1H/YFtR/2BbUf9gW1H/YFtR/19aUP9cV07/WlRM/19aUP9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9fWlH/XVhP/1xXTf9cV03/XVhO/15Z - T/9eWU//XllQ/15ZUP9fWlD/XllP/19aUP9fW1H/YFtR/2BbUf9gW1H/X1pQ/15aUP9nY1r/f3t1/397 - df9/fHb/f3x2/398dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9rZ17/XllP/19a - UP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/19aUP9bVk3/WFJK/1ZRSf9YU0v/Y15X/25qY/95dm//f3x2/398 - dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9/fHb/f3x2/357df9+enX/fnp0/397df9/fHb/f3x2/398 - dv9/fHb/f3x2/398dv9/fHb/f3t1/316dP+BfHf/amZd/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/19aUP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/19aUP9STUX/TUlBVAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAfHZdeHRt/2Bb - Uf9eWVD/X1pQ/15ZT/9eWU//X1pQ/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9fWlD/X1pQ/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/19aUP9fWlD/YFtR/19a - UP9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/X1pQ/11YTv9fWlD/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/XllP/1xXTf9aU0z/W1dN/11Y - Tv9eWU//X1pQ/19aUP9eWlD/XllP/15ZT/9fWlD/YFtR/2BbUf9fWlD/X1pQ/19aUP9fWlD/endw/316 - dP9+enT/f3t1/398dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9uamL/XlpQ/19a - UP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9eWU//XFdO/1hTS/9XUkn/VlBI/1tW - Tv9lYlr/cW5n/3x5cv9/fHb/f3x2/398dv9/fHb/f3t1/356dP97eHL/e3hy/356dP9/e3X/f3x2/398 - dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9+e3X/gn55/3RwaP9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/19aUP9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9fWlD/YFtR/2BbUf9fWlD/U05G/05KQl0AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgHx2ZXZy - a/9fWVD/XllP/15ZT/9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/X1pQ/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/19aUP9fWlD/X1pQ/19a - UP9eWVD/X1pQ/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9fWVD/XllP/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9dWE//XFVN/1tV - Tf9dV07/X1pQ/19aUP9fWlD/XlpQ/15ZUP9eWE//X1pQ/2BbUf9gW1H/YFtR/2BbUf9eWlD/b2pj/397 - dv97eHP/fXlz/356df9/fHb/f3x2/398dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9xbWX/XVhO/19a - UP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/11Y - T/9cV07/WFNL/1dSSv9WUUn/XllS/2pmXv90cWr/fnt1/397dv99enT/enZx/3t3cv9/e3X/f3t2/398 - dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9/fHb/f3x2/4N/ef9/e3T/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9eWVD/XllP/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/X1pQ/19ZUP9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/X1pQ/19ZUP9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/1RQR/9PSkJlAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIB8 - dm10cGj/YFtR/2BbUf9fWlH/YFtR/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2BbUf9gW1H/YFtR/19ZUP9gW1H/YVxS/2FcUv9hXFL/YFtR/15ZUP9eWVD/X1pQ/2Bb - Uf9gW1H/YFtR/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/XllP/1tVTf9fWlD/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/X1lQ/1xX - Tv9aVUz/XFZO/15YT/9fWlH/X1tR/19bUf9fW1H/X1tR/19bUf9hXFL/YVxS/2FcUv9fWlD/Yl1U/356 - df9/e3b/e3hz/3x5dP9+enX/f3x2/4B8d/+AfHf/gHx3/4B8d/+AfHf/gHx3/4B8d/93c23/XllQ/11X - T/9gW1H/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9gW1H/XVhP/1tWTf9YU0v/V1JK/1hTS/9hXVb/a2Zg/3Nvav99eXT/f3x2/4B8 - d/+AfHf/gHx3/4B8d/+AfHf/gHx3/4B8d/+AfHf/gHx3/4B8d/+BfXj/hIB5/2diWf9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/X1pQ/15ZUP9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YFtR/2Bb - Uf9gW1H/YVxS/2FcUv9gW1H/XllQ/1hTS/9XUUr/WFJL/19ZUP9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2BbUf9gW1H/YFtR/2BbUf9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9WUUn/UEtEbgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACAfXZ2c29n/2BbUf9gW1H/YFtR/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2BbUf9gW1H/X1lQ/11YT/9dV07/YFtR/2FcUv9hXFL/YFtR/19ZUP9dV0//XlhP/19a - Uf9gW1H/YFtR/2BbUf9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/15ZUP9bVU3/X1lQ/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Bb - Uf9eWE//WlRM/1tVTf9dWE//X1pQ/19aUf9fW1H/X1tR/19bUf9gW1H/YVxS/2FcUv9gW1H/X1pQ/3Jv - aP+AfXj/fnt2/315dP98eHP/fXl0/357dv9/fXf/gH14/4B9eP+AfXj/gH14/4B9eP99enT/ZF9V/19Z - UP9eWE//YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/19aUP9dWE//W1ZN/1hTSv9VT0j/WVRN/2Vg - Wf9wbGb/e3hz/4B9eP+AfXj/gH14/4B9eP+AfXj/gH14/4B9eP+AfXj/gH14/4aCe/9uamH/YFtR/2Bb - Uf9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/19aUP9gWlH/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Bb - Uf9gW1H/YFtR/2FcUv9hXFL/XVdO/1dRSv9XUUr/V1FK/1dRSv9dV0//YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/V1JK/1BL - RHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAgXx2f3JuZv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FbUv9gW1L/YFpR/19ZUP9dWE//XFdO/2BaUf9hXFL/YVxS/2FcUv9hW1L/YFtR/2Ba - Uf9gW1H/YFtR/2FbUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9fWlH/XVdO/15Z - UP9hW1L/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FbUv9gW1H/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/X1pR/1xXTv9cV0//XVhP/2BaUf9gW1H/YFtR/2BbUf9gWlH/YVtS/2FcUv9hXFL/X1pR/2Nd - Vf+AfHf/gX14/397d/98eXT/enhy/3p4cv98eXP/fnp1/4B8d/+AfHf/gX14/4F9eP+BfHf/amVd/2Fc - Uv9dWE//XlhP/2FbUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/X1lQ/11Y - T/9ZVEz/WFJL/1dRSv9dWFH/aGNd/3Rvav9/enX/gX14/4F9eP+BfXj/gX14/4F9eP+FgHr/eXRt/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9gW1L/YVtS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9gW1H/YFtR/2FcUv9hXFL/YFtR/1hTS/9XUUr/V1FK/1dRSv9XUUr/X1lQ/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/1hT - S/9QS0SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJOPiohybWb/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9hW1L/YVtS/2BbUv9hW1L/YVtS/2BaUf9gWlH/YVtS/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YVtS/2FbUv9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YVtS/2Ba - Uf9dWVD/YVtS/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9hW1L/YFpR/2BaUf9hW1L/YVtS/2FbUv9hW1L/YVtS/2FcU/9iXFP/YVtS/19Z - UP9zbmf/gn14/4F9eP9/e3f/fXp0/3p4cv96eHL/e3hy/3x5c/98eXT/fHl0/397dv+BfXj/dG9o/2Jc - U/9hW1L/XllQ/19ZUP9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FbUv9hW1L/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FbUv9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9eWVD/XVdP/1pTTP9YUkv/WFJL/2FbVP9sZ2D/eHNt/4F8d/+CfXj/f3p0/3t2 - b/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YVtS/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9hW1L/YFpR/2FbUv9iXFP/YVtS/19ZUP9YUkr/WFJK/1hSSv9YUkr/W1VN/2FbUv9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9ZVEz/R0I9iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACSjomQcWxl/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FbUv9hW1L/YlxT/2JcU/9iXFP/YFtS/2FbUv9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9hW1L/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Fb - Uv9hW1L/X1lR/2FbUv9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YVtS/2FbUv9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FbUv9hW1L/YVtS/2BaUf9gWlL/YVtS/2FbUv9iXFP/YlxT/2Ba - Uf9hW1P/gHt2/4J9eP+BfXj/f3t2/3x6dP97eXP/fXl0/316df99enX/fHl0/3x5c/98eXT/fHhy/2Re - Vf9iXFP/YlxT/2FbUv9hW1L/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9hW1L/YlxT/2FbUv9fWVD/X1lR/2JcU/9iXFP/YVtS/2FbUv9gWlH/YFpR/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FbUv9hW1L/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YFtS/15YUP9cVk7/WVNM/1hSSv9ZVEz/ZV9Z/25o - Yf9qZV3/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FbUv9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YVtS/2FbUv9hW1L/YlxT/2FbUv9eWVD/WVRM/1lTS/9ZVEv/XVhP/2FbUv9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/WVRM/0dCPZEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAko6JmXBsZP9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9hXFP/YVxT/2JcU/9iXFP/YlxT/2JcU/9hXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YVtS/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9hW1P/YVtS/2BbUv9gW1L/YVxT/2JcU/9iXFP/YlxT/2JcU/9hXFP/YVxT/2BbUv9fWlH/YFtS/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YVxT/2FbUv9fWVD/X1pR/2BaUv9hW1L/YlxT/2Fc - U/9fWlH/b2pj/4J9ef+CfXn/gX15/398d/9+e3X/fXt1/398d/9/fHf/fXp1/316df98enT/e3hz/2ll - Xv9iXVT/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YVtS/2JcU/9iXFP/YVtS/2FcU/9iXFP/YlxT/2FcU/9gW1L/X1pR/19a - Uf9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FcU/9hW1L/YVtS/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FcU/9hW1L/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9gW1L/XllQ/1xW - Tv9cV0//YFtS/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YVxT/15ZUf9gW1L/YVtS/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/1pVTf9HQj2ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJGOiaJwa2T/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/YVxT/2FcU/9hXFP/YFtS/2BbUv9hXFP/Yl1U/2JdVP9hXFP/YFtS/19aUf9fWlL/XllQ/19a - Uf9gXFP/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2FcU/9gW1P/X1pR/19aUP9fWlH/YVxT/2Jd - VP9gXFP/XllR/315dP+Cfnr/gX55/4F+ef+AfXn/gH14/4B9eP+Bfnn/gH15/357dv9/fHf/f3x2/3d0 - bv9fW1L/YFtS/2JdVP9iXVT/Yl1U/2FcU/9hXFP/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/YVxU/2FcU/9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/YVxT/2Fc - U/9hXFP/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9hXFP/YVxT/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9hXFP/YFtT/2FcU/9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9bVk7/R0M9ogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRjomrb2tj/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2FcU/9iXVT/Yl1U/2JdVP9hXFT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2FcVP9iXVT/YVxT/2BbUv9hXFP/Yl1U/2JdVP9hXFP/YFtS/2BbUv9fW1H/YFtS/19a - Uf9eWU//X1pQ/2FcU/9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9hXFP/YVxT/2BbUv9fWlH/YFtS/2Fc - U/9iXVT/X1pR/2diW/+Df3r/g396/4J+ef+Cfnn/g396/4N/ev+Df3r/g396/4F+ef+AfXj/gX15/4F9 - eP9saF//YFtS/11ZT/9hXFP/Yl1U/2FcU/9fWlD/X1pS/2FcU/9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2FcU/9hXFP/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/YVxT/2FcU/9hXVT/YVxT/2FcU/9iXVT/Yl1U/2Fc - U/9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/YVxT/2FcU/9hXFP/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/W1ZO/0dDPasAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkY6Is25qYv9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVP/Yl1U/2JdVP9iXVP/YVxT/2Jd - U/9iXVP/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1T/2FcU/9hXFL/YVxT/2FcU/9iXVP/YVxS/2BbU/9gW1H/YVxS/2Jd - VP9hXFP/YFtS/19aUP9gW1L/Yl1T/2JdVP9iXVT/Yl1U/2JdVP9iXVT/YVxT/2FcU/9hXFP/YVxT/2Fc - U/9iXVP/Yl1T/19aUf90cGn/g395/4J+ef+Cfnn/g395/4N/ev+Df3r/g396/4N/ev+Df3n/gn55/4N/ - ef99eXP/Z2Nb/2JdVP9eWVD/X1pR/2JdU/9iXVP/XlpQ/19aUP9hXFP/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVP/Yl1T/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2FcU/9iXVP/Yl1U/2JdVP9iXVT/Yl1U/2FcU/9gW1H/YVxT/2FcU/9hXFP/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9hXFP/Yl1T/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdU/9iXVP/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/1xXTv9IRD60AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJGNh71uamH/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Jd - U/9hXFL/YFtS/2JdU/9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2JdU/9hXFL/YVxS/2JdU/9iXVP/YFtR/2BcUv9gXFL/YVxS/2Jd - U/9jXlT/Y15U/2JdU/9fWlH/XlpQ/2BbUv9iXVP/YVxT/2JdU/9iXVT/Yl1T/2FcUv9hXFL/Yl1T/2Jd - U/9iXVP/Y15U/2FcU/9fWlD/f3t1/4F9eP+BfXj/g395/4SAev+EgHr/hIB6/4SAev+EgHr/hIB6/4SA - ev+EgHr/dG9o/2lkW/9iXVP/YVxT/2BcUv9iXVP/Yl1T/2FcUv9eWVD/XVlP/2BbUf9hXFL/YV1T/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9iXVP/Yl1T/2NeVP9jXlT/Y15U/2NeVP9iXVP/YVxS/2JdU/9iXVP/Yl1T/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Yl1T/2Jd - U/9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2JdU/9iXVP/Yl1T/2JeVP9jXlT/Y15U/2Jd - U/9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9hXVP/YVxT/2JdU/9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9dWE//SEU+vQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQjYbFbWhg/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Yl1T/2NeVP9jXlT/Y15U/2Ne - VP9iXVP/X1pR/11YT/9gW1L/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9iXVP/Yl1T/2FcUv9iXVP/Yl1T/2BbUf9hXFL/YFxS/2Bb - Uf9iXVP/Y15U/2NeVP9hXVP/X1pQ/1xXTv9dWE//YVxS/2FcUv9iXVP/Yl1T/2FcUv9fWlD/YFtS/2Fc - Uv9hXFL/YVxS/2FcUv9eWlD/ZGBY/398d/9/e3b/gX54/4N/ef+EgHr/hIB6/4SAev+EgHr/hIB6/4SA - ev+EgHr/gX53/21oYP9nYln/Y15U/2NeVP9iXVP/Y15U/2NeVP9iXVP/YFxS/19aUP9fWlH/XVhP/19a - Uf9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Yl1T/2NeVP9jXlT/Y15U/2NeVP9jXlT/Yl1T/2JdU/9iXVP/Yl1T/2Jd - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Jd - U/9iXVP/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2JdU/9eWVD/XlpQ/2FcUv9iXVP/Yl1T/2Jd - U/9iXVP/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/YV1T/2FcUv9iXVP/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/XVlP/0lFPsYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj4yFzm1oX/9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15U/2JdU/9jXlT/Y15V/2Ne - Vf9jXlX/Y15U/2BbUv9eWVD/X1pR/2JdU/9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Yl1T/2JdU/9iXVP/Yl1T/2FcUv9gW1H/YVxS/2Fc - Uv9fWlH/Yl1T/2JeVP9iXVP/YVxS/15ZUP9bVk7/XVdP/2BaUf9iXVP/Yl1T/2JdU/9hXFL/X1pR/15Z - UP9fWlD/X1pR/15ZUP9eWVD/W1VN/2xoYv9/e3b/gH14/4SAev+EgXr/hIF6/4SBev+EgXr/hIF6/4SB - ev+EgXr/hIF6/3t3cP9taGD/ZWBX/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Yl1U/15Z - UP9eWFD/Yl1T/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlT/Yl1T/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9iXVP/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlT/Y15U/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlT/X1lQ/19ZUf9hXFL/Yl5U/2Ne - VP9iXVP/Y15U/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVP9hXVP/Yl1U/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15U/2JeVP9jXlX/Y15V/2NeVf9jXlX/Y15V/15aUP9KRj/OAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+LhdZsZ17/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2NeVf9iXVT/Y15V/2Rf - Vv9kX1b/ZF9W/2RfVv9hXFL/X1pR/19ZUP9iXVT/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/Y15U/2NeVP9jXlT/Y15U/2JdU/9gWlL/YFpS/2Jd - U/9iXVP/YVtS/2JdU/9iXVP/Y15U/2BaUv9eWVD/XFdO/11XT/9fWVH/Yl1T/2NeVf9kX1b/Yl1T/2Ba - Uv9fWVD/X1lQ/15YUP9dV0//XFZO/1hTS/94dG7/gXx4/4OAev+Fgnv/hYJ7/4WCe/+Fgnv/hYJ7/4WC - e/+Fgnv/hYJ7/4WCe/91cWn/a2Ze/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Ne - Vf9hXFL/YFpS/2FcUv9jXlX/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/Y15V/2NeVf9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/Y15V/2BbUv9hXFP/Yl1T/2Ne - VP9iXVP/YVtS/2JcU/9jXlX/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/Yl1T/2Ne - Vf9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2NeVf9iXlT/Y15V/2NeVP9jXlT/Y15U/2JdU/9dWE//SkY/1wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNioPeamVd/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9jXlX/Yl1T/2Ne - VP9jXlX/ZF9W/2RfVv9kX1b/Yl1U/2FcUv9hW1L/Y15V/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/Yl1T/2JdVP9jXlT/Y15U/2NeVP9jXlT/YFpS/2Jd - U/9jXlX/Yl1T/2JdVP9iXVP/Yl1T/2FcUv9hW1L/X1lR/11YT/9fWVH/YFtS/2JdU/9jXlX/Y19W/2Ne - VP9hXFP/YFpS/2BaUv9hXFL/YlxT/19aUf9eWVH/gn14/4N/ef+FgXr/hYJ7/4WCe/+Fgnv/hYF6/4WB - ev+Fgnv/hYJ7/4WCe/+Cf3j/cW1k/2hjWv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/Y15V/2NeVf9jXlT/Yl1T/2NeVf9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9jXlb/Y15U/2FcU/9iXVP/Y15V/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9iXVP/Yl1T/2Ne - VP9jXlX/YVxT/19aUf9gWlL/Yl1T/2RfVv9jXlX/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Ne - Vf9jXlX/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9jXlX/Yl5U/2NeVP9iXlT/Y15U/2NeVP9iXVP/XVdP/0tGQN8AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIiD6mpk - XP9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF5V/2NeVf9kXlb/ZF9W/2RfVv9kX1b/ZF5V/2Jd - VP9hW1P/Yl1U/2NeVv9kX1b/ZF9W/2RfVv9jXlX/ZF5W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2ReVf9iXVT/Y15V/2RfVv9jXlX/Y15V/2Fc - VP9jXlX/ZF9W/2RfVv9kX1b/Y15V/2JdVP9hXFT/Y11U/2FcU/9gW1L/YVtT/2FbUv9hXFP/ZF5W/2Rf - Vv9kXlX/Y15V/2JcVP9jXVT/Y15V/2ReVf9hXFP/aWRc/4WBe/+FgXv/hYJ7/4WCe/+Fgnv/hYJ7/4SA - ev+EgHr/hYJ7/4WCe/+Fgnv/fnpz/3FsZP9lX1f/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kXlb/Y15V/2Re - Vf9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2NdVP9kXlX/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kXlb/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kXlb/Yl1T/15YUP9bVk7/X1pR/2JdVP9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF5W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/Y15V/2Ne - Vf9kXlb/ZF9W/2JdVP9fWlH/XllQ/2JdVP9kXlb/Y15V/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF5W/2NeVf9jXlX/YV1U/2FdVP9iXVT/YVxT/15YUP9MSELqAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIuG - gvRpY1v/ZV9X/2RfV/9kXlb/ZF5W/2VfV/9lX1f/ZV9X/2ReVv9iXVX/ZF5W/2VfV/9lX1f/ZV9X/2Re - Vv9jXVb/YFtS/19bUv9iXVT/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9kXlb/Y11W/2ReVv9lX1f/ZF5W/2Re - Vv9kXlb/ZV9X/2VfV/9lX1f/ZV9X/2ReVv9kXlb/ZF5W/2ReVv9kXlb/ZF5W/2NdVv9hXFT/Yl1U/2Vf - V/9lX1f/ZV9X/2VfV/9kXlb/Y11W/2ReVv9lX1f/YFtS/3FsZv+Ggnz/hoJ8/4aCfP+FgXz/hYF8/4WB - e/+EgHv/hIB7/4WBfP+Ggnz/hoJ8/3t2cP9wa2P/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZF5W/2Re - Vv9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9kXlb/ZF5W/2ReVv9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9jXVX/Y11W/2ReVv9kXlb/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/YVxU/1xYT/9bV07/XFhP/2BbU/9kXlb/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Re - Vv9kXlb/ZV9X/2VfV/9iXVT/YFtS/15aUf9jXVX/ZF5W/2NdVv9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9kXlb/ZF5W/2FcVP9gXFP/YVxU/2JdVP9fW1L/TEhC8wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNu - ZwGKhoD+aGJa/2VfV/9kXlb/ZF5W/2VfV/9lX1f/ZV9X/2VfV/9jXlb/Y11V/2ReVv9lX1f/ZV9X/2Vf - V/9kXlb/Y11V/15aUf9eWVH/YVxT/2ReVv9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/Y15V/2Ne - Vf9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2ReVv9kXlb/ZV9X/19aUf95dG7/hoJ9/4aCff+FgXz/hYF7/4SA - e/+DgHr/hYF7/4WBfP+Ggnz/hoJ9/4aCff94c2z/a2Ve/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZF9X/2Re - Vv9kXlb/ZF5W/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2NdVf9jXVX/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/Y11V/2JdVP9kXlb/ZF5W/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZF5X/2BbUv9cV0//XVlQ/2FcVP9kXlb/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZF9X/2VfV/9lX1f/Y11W/2FcU/9hXFT/ZF5W/2VfV/9kXlb/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2ReVv9iXVX/Y11W/2ReVv9kXlb/ZF5W/2NeVv9hXVT/Yl1U/2JdVP9iXVT/X1pS/0xI - Qv0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACFgXoLiYWA/2hjW/9lYFj/ZF9X/2RfV/9kX1f/ZWBY/2VgWP9lYFj/ZF9X/2RfV/9kX1f/ZWBY/2Vg - WP9lYFj/ZF9X/2NeVv9hXVT/YFtT/2JdVf9kX1f/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9jX1f/Y15W/2RfV/9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9jXlb/ZF9X/2RfV/9fWlL/gHx1/4eDff+Hg33/hoJ8/4WB - e/+DgHr/hIB6/4SBe/+FgXz/hoJ8/4eDff+EgHv/d3Ns/2plXv9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Rf - V/9kX1f/Y15W/2NeVv9kX1f/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9kX1f/Y15W/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9jXlb/ZF9X/2RfWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9jXlb/YV1U/2NeV/9kX1f/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9jXlb/ZF9X/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9jXlf/YV1V/2JdVf9jXlb/ZF9X/2RfV/9kX1f/ZF9X/2RfV/9jXlb/Yl5W/2Bb - Uv9NSUP/T0tECQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAhYF6FoiEf/9nY1v/ZWBY/2RfV/9kX1f/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9kX1f/ZF9X/2Vg - WP9lYFj/ZWBY/2RfV/9kX1f/Yl1W/2JdVP9jXlb/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZF9X/2JdVv9jXlb/Y15W/2NeVv9kX1f/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9kX1f/ZF9X/2RfV/9jXlb/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9jXlb/YVxT/2FcVP9hXFT/XlpR/4WBe/+Hg33/h4N9/4WB - fP+EgHv/g395/4J/ef+Df3r/gn55/4J+ef+Fgnz/gn54/3Zya/9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZF9X/2RfV/9kX1f/ZF9X/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZGBY/2RfV/9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9kX1f/ZF9X/2RfV/9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9kX1f/ZF9X/2RfV/9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9kX1f/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/Yl1V/19bUv9gW1P/YVxU/2JdVf9jXlb/ZF9X/2VgWP9kX1f/Y15W/2Jd - Vf9fW1L/TUlD/09LRBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAIWBeyGGgnz/ZmJa/2NeVv9kX1f/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9kX1f/ZF9X/2Rf - V/9lYFj/ZWBY/2VgWP9kX1f/ZF9X/2RfV/9jXlb/Y15X/2RfV/9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZF9X/2NeVv9iXlb/Y15W/2NeVv9jXlb/ZF9X/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZF9X/2RfV/9lYFj/ZWBY/2VgWP9kX1f/Y15W/2JdVv9jXlb/Y15W/2Rf - V/9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9jXlf/YV1U/2BbU/9gW1P/YFtS/2FdVf+Hg33/h4N9/4eD - ff+Ggnz/hIF7/4SBe/+EgXv/hIB7/4F+eP+Cfnn/hIB6/4F9d/92cmr/ZWBY/2VgWP9kX1f/Y15W/2Rf - V/9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2NeVv9jXlb/Yl1V/2RfV/9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9kX1f/ZF9X/2VgWP9lYFj/ZWBY/2VgWP9kX1f/ZF9X/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZF9X/2FcVP9gW1P/X1pR/19aUf9eWVD/X1tS/2FcVP9jXlb/Y15W/2Jd - Vf9iXVT/X1pS/05JQ/9PS0QbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACGgXsshYJ7/2ZhWP9iXVT/ZF9W/2ZhWP9mYVj/ZmFY/2ZhWP9lYFf/ZWBX/2Vg - V/9lYFf/ZmFY/2ZhWP9mYVj/ZWBX/2VgV/9mYVj/ZWBX/2VgV/9lYFf/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9kX1b/ZF9W/2VgV/9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9kX1f/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9jXlX/Y19W/2Rf - Vv9lYFf/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZWBX/2RfVv9iXlT/YVxT/2BbUv9mYln/iIR+/4iE - fv+IhH7/iIR+/4iEfv+Hg37/h4N+/4aCfP+DgHr/g4B6/4SBe/+AfXb/c29m/2ZhWP9mYVj/ZWBX/2Ne - Vf9lYFf/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Vg - V/9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9jXlT/YFtS/19aUf9kX1b/ZWBX/2VgV/9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9lYFj/ZWBX/2Vg - V/9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9jXlX/YVxT/2FdU/9gW1L/XVhP/11XT/9dV0//XVhP/2Fc - U/9iXlT/Yl5U/2BbUv9PS0T/T0tEJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAhoJ7N4N/eP9lYVj/Y15V/2VgV/9mYVj/ZmFY/2ZhWP9mYVj/ZWBX/2Vg - V/9lYFf/ZWBX/2ZhWP9mYVj/ZmFY/2VgV/9mYVj/ZmFY/2ZhWP9lYFf/ZWBX/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZWBX/2VgV/9lYFf/ZmFY/2ZhWP9lYFf/ZF9W/2Rf - Vv9lYFf/ZWBX/2VgV/9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9iXlT/amVd/4mF - fv+JhX7/iYV+/4mFfv+JhX7/iYV+/4eEff+Hg3z/hoJ7/4eDff+IhH3/gH11/29rYv9mYVj/ZmFY/2Zh - WP9kX1b/ZWBX/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Vg - V/9kX1b/ZWBX/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9lYFf/Yl5V/2FcU/9hXVP/ZWBX/2VgV/9lYFf/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Vg - V/9lYFf/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9lYFf/ZF9X/2NeVf9jXlX/Yl1U/11YT/9dV0//XVdP/11X - T/9eWVD/YFxS/2FdU/9gW1L/UUxF/09KRDMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIaBekGCfXb/Z2JZ/2VgV/9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Vg - V/9lYFf/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZF9W/2VgV/9lYFf/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9jXlX/Y19V/2VgV/9mYVj/ZmFY/2Zh - WP9mYVj/ZWBY/2VgV/9lYFf/ZWBX/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/Y15V/2xp - YP+JhX7/iYV+/4mFfv+JhX7/iYV+/4eEff+Hg3z/h4R9/4iEff+IhH7/iYV+/4B8dv9vamL/ZmFY/2Zh - WP9mYVj/ZF9W/2RfVv9lYFf/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9lYFf/ZGBX/2RfVv9lYFf/ZWBX/2ZhWP9mYVj/ZWBX/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2RfV/9kX1b/ZWBX/2ZhWP9lYFf/ZWBX/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZWBY/2Zh - WP9lYFf/ZWBX/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9lYFf/ZWBX/2VgV/9kX1b/Y19W/2RfVv9fWVH/XVdP/11X - T/9dV0//XlhQ/19aUf9fWlH/XlpR/1FNRf9PSkQ/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFgXpNgXx1/2hiWv9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/ZmBY/2VfWP9mYFj/ZV9Y/2VfV/9lX1f/ZmBY/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9mYFj/ZF5X/2RfV/9mYFj/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/ZmBY/2ZgWP9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2Nd - Vf9uaWL/ioV//4mEfv+JhH7/ioV//4mEfv+Hg33/h4J9/4mEfv+KhX//ioV//4qFf/99eXL/b2pi/2dh - Wf9nYVn/Z2FZ/2VfV/9lX1f/ZmBY/2dhWf9mYFj/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/ZmBY/2VfV/9kX1f/ZF5W/2ReV/9mYFj/ZmBY/2ZgWP9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9mYFj/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2Zg - WP9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9mYFj/ZWBY/2ReVv9mYFj/Z2FZ/2ZgWP9lYFj/ZWBY/2ZgWP9mYFj/ZWBY/2VfV/9lX1f/Yl1V/15a - Uf9dWFD/XVlQ/15aUf9dWFD/XVhQ/1xYT/9RTEb/T0pESwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhoF6V396c/9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2ZgWP9lX1j/ZV9X/2VfV/9kXlb/ZF5W/2Zg - WP9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2ZgWP9mYFj/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2ZgWP9mYFj/ZmBY/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/ZmBZ/2ZgWP9mYFj/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9jXVX/Y11V/25pYv9taGH/bWhi/29qY/9xbGX/cWxl/3JtZv92cWv/d3Js/3dybP96dW7/bmhg/2xm - Xv9nYVn/Z2FZ/2dhWf9lX1j/ZV9X/2ZgWP9mYFj/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9mYFj/ZF5W/2NdVf9jXVb/ZF5W/2ZgWP9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2Vf - V/9jXlb/ZV9X/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9mYFj/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/ZF5W/19bUv9fWlL/Y15W/2dhWf9mYFj/ZWBY/2ZgWP9nYVn/ZmBY/2ZgWP9kXlf/ZF5W/2Ne - Vv9kXlf/ZF5W/2NeVv9hXFP/X1pS/11YUP9cV0//UUxG/05JQ1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIaBe2N9d3D/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9mYFj/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9lX1f/YVxU/2Bb - U/9iXVX/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2ZgWP9lX1j/ZmBY/2ZgWP9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/ZV9X/2NdVf9iXVT/YVxU/2FbU/9gW1P/YVtT/2FcVP9eWVH/XllR/15ZUf9eWVH/X1pS/2Re - Vv9nYVn/Z2FZ/2dhWf9kX1f/ZF5W/2ReVv9lX1f/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2VfV/9jXVX/ZF5W/2VfV/9mYFj/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/ZmBY/2Re - Vv9eWVH/XVhQ/15ZUf9lX1f/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9mYFj/ZmBY/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2FcVP9dWFD/XVhQ/2NdVf9nYVn/ZmBY/2VgWP9mYFj/Z2FZ/2dhWf9mYFj/ZF5W/2Fc - VP9iXFT/ZF5W/2VfWP9lX1f/Y11V/2JcVf9fWlH/XFhQ/1FMRv9NSUJjAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGgXttenZv/2diWv9mYVn/Z2Ja/2di - Wv9nYlr/ZmFZ/2ZhWf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9mYVn/ZF9X/2Bb - U/9eWlL/YFtT/2VgWP9nYlr/Z2Ja/2ZhWf9lYFn/ZWBY/2ZhWf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmFZ/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9mYVn/ZWBZ/2VhWf9lYFn/ZmFZ/2ZhWf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9mYVn/Yl5W/2FdVf9jXlf/ZWBY/2ZhWf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9mYVn/ZWBY/2VgWP9mYVn/ZmFZ/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2Zh - Wf9gXFT/XllR/15ZUf9eWVH/YFtU/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9lYFj/ZF9X/2NfV/9mYVn/Z2Ja/2ZhWf9lYVn/ZmFZ/2diWv9nYlr/ZmFZ/2Rf - WP9jXlb/Yl1W/2RfV/9lYFj/ZWBY/2VgWP9kX1j/Yl1V/19aUv9UT0n/T0pEbgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhYF6eXhzbP9mYVn/ZWBZ/2Zh - Wf9nYlr/Z2Ja/2ZhWf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmFZ/2Ne - V/9gW1P/XlpS/2BcVP9lYFj/ZmFZ/2diWv9mYVn/ZWBY/2RfWP9lYFj/ZmFZ/2diWv9nYlr/Z2Ja/2Zh - Wf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9mYVn/Y19X/2RfV/9lYFj/ZWBZ/2VgWf9mYVn/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9mYVn/Y15X/2FdVf9jX1f/ZWBY/2VgWP9mYVn/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmFZ/2VgWP9mYVn/ZmJa/2ZhWf9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9mYVn/YVxU/15ZUf9eWVH/XllR/2FdVf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmJa/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmFa/2ZhWv9nYlr/Z2Ja/2Zh - Wf9lYFj/ZF9X/2NeVv9kX1f/ZWBY/2RfV/9kX1f/ZF9Y/2NeV/9gW1P/VFFK/1BLRXsAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJWRjId3cmv/ZmFZ/2Zh - Wf9lYFn/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmFZ/2Zh - Wf9mYVn/ZGBY/2NeVv9jXlb/ZmFZ/2diWv9mYVn/ZmFZ/2ZhWf9lYFj/ZWBY/2diWv9nYlr/Z2Ja/2di - Wv9mYVn/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9mYVn/ZmFZ/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9mYVn/Y19X/2BbU/9iXVX/ZF9X/2VgWP9lYFj/ZmFZ/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/ZmFZ/2ZhWf9lYFj/ZmFZ/2ZhWf9mYVn/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmFZ/2VgWP9lYFj/ZmFZ/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9mYVn/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/ZmFZ/2RfV/9hXFT/X1pS/2NeVv9mYVn/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2ZhWf9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2Zh - Wf9lYVn/ZmFZ/2RfWP9jX1f/ZGBY/2VgWP9lYFj/ZWBY/2VgWP9kYFj/YVxU/1VRSv9FQTyJAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkYyWdnFq/2hj - W/9oY1v/Z2Ja/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2di - Wv9nYlr/aGNb/2hjW/9nYlv/Z2Ja/2hjW/9oY1v/aGNb/2ZhWf9mYVn/ZmFZ/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/ZmFZ/2Vg - WP9mYVn/Z2Ja/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/ZmJa/2JdVf9gXFP/Y15X/2ZhWf9mYlr/ZmFa/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2diWv9nYlr/Z2Ja/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9nYlr/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9nYlr/Z2Ja/2ZhWf9nYlr/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9nYlr/Z2Ja/2diWv9mYVn/ZmFZ/2ZhWf9mYlr/Z2Ja/2ZhWf9mYVr/Z2Ja/2RfV/9YU03/REE8lgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCLpHVw - af9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9mYVr/ZmFZ/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2Vh - Wf9kX1j/ZF9Y/2ZhWv9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2VgWP9hXVX/YFxU/2VgWf9nYlr/Z2Ja/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2diWv9nYlr/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9nYlr/Z2Ja/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2ZhWf9mYVn/Z2Ja/2dj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2ZhWv9mYVr/ZmFZ/2ZhWf9mYVn/ZmFZ/2diWv9lYFj/W1dQ/0VB - PKUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJOP - i7Nzbmf/aGNb/2hjW/9oY1v/aGNb/2diWv9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9nYlr/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9mYVn/ZmFZ/2diWv9nYlr/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2diWv9jXlf/Yl1V/2JeVv9nYlr/Z2Ja/2diWv9nYlr/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9nYlr/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9nYlr/Z2Ja/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2diWv9mYVn/ZWBY/2Vg - WP9nYlr/Z2Ja/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2diWv9nYlr/Z2Jb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/ZmJa/2ZiWv9mYVr/Z2Ja/2diWv9nYlr/Z2Ja/2ZhWf9mYVn/ZmFZ/2ZhWf9nYlr/Z2Ja/19a - U/9JRT+yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACSjonCcm1l/2hjW/9oY1v/aGNb/2hjW/9nYlr/aGNa/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNa/2diWv9oY1r/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9nYlr/ZGBX/2RfWP9lYVn/aGNa/2hjWv9nYlr/Z2Ja/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjWv9nYlr/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjWv9nYlr/aGNa/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9nY1r/ZmFZ/2diWv9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2di - Wf9lYFj/ZmFY/2diWv9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjWv9lYFj/Y15V/2ZhWf9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNa/2diWv9nYlr/Z2Ja/2hjWv9oY1v/aGNa/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9hXFT/S0dBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAkY2G0XFsZP9pZFv/aWRb/2lkW/9pZFv/aGNa/2hjWv9oY1r/aGNb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2diWf9oY1r/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oY1r/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2hjWv9oY1r/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/Z2JZ/2VhWP9nYln/aGNa/2lkW/9oY1r/ZmFZ/2di - Wf9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oY1r/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9nYln/ZmFY/2hj - Wv9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oY1v/aGNa/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aGNa/2diWv9oY1r/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aGNa/2hjWv9oY1r/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oY1r/Z2JZ/2VfV/9mYVn/aGNa/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2hjWv9nY1r/Z2Na/2hjWv9pZFv/aWRb/2hjWv9nYln/Z2JZ/2diWf9oY1r/aGNa/2hj - Wv9nYlr/Yl1V/0xIQs4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJCMhd5vamH/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2hjWv9oY1r/aGNa/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9nYln/aGNa/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aGNa/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9nYlr/aGNa/2hjWv9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2diWf9mYln/aGNa/2hjW/9pZFv/Z2JZ/2Zh - WP9mYVj/aGNa/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aGNa/2hj - Wv9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2diWf9oY1r/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/3NuZv+Ggnv/joqE/46K - hP+NiYP/jYmD/42Jgv+MiIH/jIiB/4uIgf+Kh4D/ioZ//4eDfP97d2//aGNa/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oZFv/aGNa/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9oY1r/Z2Na/2hjWv9oY1r/aGNa/2diWf9nY1r/Z2Ja/2ZiWf9nYln/aGNa/2hj - Wv9nYln/Z2JZ/2JdVP9OSkTdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACOioTtbWhg/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oY1v/Z2Ja/2hj - Wv9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oY1r/aGNa/2hj - Wv9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2hj - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aGNa/2hjWv9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9nYlr/Z2Na/2hjWv9oY1v/aGNb/2Zh - Wv9lYFj/ZWBY/2diWv9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9nYlr/aGNb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2ZhWf9xbGX/jYmE/42J - hP+NiYT/jYmE/42JhP+NiYT/jYmE/42JhP+OioX/jYqE/42KhP+LiIH/fnpz/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2hjW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aGNa/2hjWv9nY1r/Z2Na/2djWv9nYlr/Z2Na/2diWv9mYln/Z2Ja/2hj - Wv9nYlr/Z2JZ/2diWf9jX1b/T0tF7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAjYmD/GxnX/9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2hj - W/9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9oY1v/aGNb/2hj - W/9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2hj - W/9mYlr/Z2Nb/2lkXP9pZFz/aWRc/2lkXP9pZFz/aGNc/2hjW/9pZFz/aGNb/2hjW/9oY1v/aGNb/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aGNb/2diWv9oY1v/aGNc/2hj - W/9mYVn/ZF9X/2RgWP9nYlr/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aGNb/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9lYFj/eXVv/42J - hP+NiYT/jYmE/42JhP+NiYT/jYmE/42JhP+NiYT/jYmE/42JhP+NiYT/g395/3dza/9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9oZFz/aGNb/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aGNb/2diW/9oY1v/aGNb/2lkXP9oY1v/Z2Nb/2ZiWv9mYVn/ZWBZ/2di - Wv9nYlr/ZmFZ/2ZhWv9mYlr/ZGBY/1FNRvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAh4R9DIuHgv9rZl//aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aGNb/2lk - XP9oY1v/aGNb/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9nYlr/ZWFZ/2diWv9pZFz/aWRc/2lkXP9pZFz/aWRc/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Jb/2hj - W/9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9nYlv/Z2Jb/2hj - W/9oY1v/Z2Ja/2VgWP9lYFj/aGNb/2lkXP9pZFz/aGNb/2hjW/9oY1v/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2hjW/9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9nYlv/ZF9Y/4aD - ff+NioT/jYqE/42KhP+NioT/jYqE/42KhP+NioT/jYqE/42KhP+NioT/jYqE/3x4cf9vamP/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9oY1v/aGNb/2diW/9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2hkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aGNb/2lkXP9pZFz/aWRc/2hjW/9nYlr/ZWBZ/2Vg - WP9lYVn/ZWBY/2RfWP9kX1j/ZF9Y/2NeVv9RTUb/U1BJDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiEfRqJhYD/a2Ze/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2hjW/9pZFz/aWRc/2lkXP9oY1v/Z2Ja/2diWv9oY1v/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aGNb/2diWv9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9nY1v/Z2Nb/2hjW/9oY1v/aGNb/2di - Wv9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/Z2Ja/2di - Wv9pZFz/aWRc/2hjW/9lYVn/Z2Ja/2lkXP9pZFz/aWRc/2diWv9mYVn/ZmFZ/2hkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/ZmFa/2xn - YP+NioT/jYqE/42KhP+NioT/jYqE/42KhP+NioT/jYqE/42KhP+NioT/jYqE/4qGgP94dG3/bmlh/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aGRc/2hjW/9oY1v/aGNb/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aGNb/2Zh - Wv9mYVr/Z2Ja/2VhWf9kX1j/Y15W/2NeV/9hXVX/UU1H/1NPSBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIhH4piIR+/2xnX/9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/Z2Jb/2diWv9lYFn/aGNb/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2lkXP9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/amVd/2lk - XP9oY1v/aWRc/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2hj - W/9nY1v/aWRc/2lkXP9pZFz/Z2Ja/2hjW/9qZV3/amVd/2lkXP9mYVr/ZmFZ/2ZhWv9pZFz/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aWRc/2di - Wv97eHH/jouF/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jouF/46Lhf+FgXv/dnJq/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXf9pZFz/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9oY1v/Z2Ja/2hjW/9pZFz/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lk - XP9oY1z/aGNc/2lkXP9mYlr/ZWBY/2RfWP9kX1j/ZWBY/1RRSv9TT0krAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIR9OYWCe/9rZl//amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aGNb/2ZiWv9lYFn/ZF9Y/2diWv9pZFz/amVd/2pl - Xf9qZV3/amVd/2plXf9pZFz/aWRc/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lk - XP9pZFz/aWRc/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9nY1v/ZmFa/2diWv9nYlr/Z2Jb/2ZiWv9nYlr/aWRc/2lkXP9nY1v/ZmFZ/2diWv9oY1v/aWRc/2lk - XP9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2llXf9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2hj - W/9nYlv/ioeB/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jouF/46Lhf+Oi4X/fnpz/3Rv - aP9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/aGNc/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9oY1v/ZWBZ/2RgWP9mYVr/aGNb/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aWRc/2hkXP9pZFz/amVd/2lk - XP9pZFz/aWRc/2hjXP9nY1v/ZmFZ/2VgWP9mYVn/ZmJa/2ZhWv9WUkv/U1BJPAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiEfkmDf3j/a2Ze/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aWVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/aWRd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9pZFz/Z2Jb/2ZhWf9oY1v/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/aWRc/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9pZFz/aWRc/2lkXP9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/aGNb/2VgWf9kX1j/ZF9Y/2RgWP9kYFj/ZmFZ/2ZiWv9nYlr/ZmFZ/2ZhWv9nYlv/aWRc/2pl - Xf9oY1v/aGNb/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/aWRc/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lk - XP9nYlv/dXFp/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jImD/3dy - a/9uaWL/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aWRc/2hj - XP9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9pZFz/Z2Ja/2RfWP9jXlf/ZGBY/2hj - W/9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9pZFz/aGNc/2lk - XP9oZFz/aWRc/2hkXP9nYlv/ZmFa/2RfWP9kYFj/ZWFZ/2diWv9nYlr/V1NM/1NQSUwAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIhH1bgHt1/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2lkXP9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9pZFz/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9pZFz/aWRc/2lkXP9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2lkXP9kX1j/Yl1V/2JdVv9kX1j/ZmJa/2ZhWv9mYVr/ZmJa/2ZhWf9mYVr/aGNb/2lk - XP9qZV3/aWRc/2hjW/9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9pZFz/Z2Ja/4iEff+PjIb/j4yG/4+Mhv+PjIb/j4yG/4+Mhv+PjIb/j4yG/4+Mhv+PjIb/j4yG/4WB - e/90cGj/a2Zf/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lk - XP9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aWRc/2lkXP9pZFz/amVd/2lk - XP9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/aWRc/2hjW/9nYlr/ZWBY/2Vg - Wf9nYlv/aWRc/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lk - XP9pZFz/aGNb/2diWv9nYlr/ZmFa/2VgWf9kX1f/ZF9Y/2VgWf9mYlr/ZmFa/1hVTv9UUElfAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIN9bH14cf9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9qZV3/aWRc/2lkXP9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/ZWFZ/2JdVv9iXVb/ZWFZ/2hjW/9oY1v/aGNb/2xnYP9+enP/hoJ8/3p2 - b/90b2f/a2Ze/2plXf9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9qZV3/aWRc/3Rwaf+QjYf/kI2H/4+Mhv+PjIb/kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CN - h/98eHH/c25m/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tm - Xv9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2plXf9rZl7/amVd/2hj - XP9oY1v/aWRc/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9qZV3/aWRc/2diW/9nYlv/Z2Nb/2hjXP9nYlv/ZmFa/2diWv9oY1v/aGNb/2hjW/9cWFH/VVJLcAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+Lhn96dm//a2Ze/2tm - Xv9rZl7/a2Ze/2plXf9qZV3/a2Ze/2tmXv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2plXf9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2lkXP9pZFz/amZe/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2ZhWv9jX1f/Yl1W/2RgWP9nYlv/aGNb/2hjW/9lYVn/g4B5/4+M - hv+UkIv/ko+J/46KhP+Cfnj/eXVu/3BrZP9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2lkXf+JhoD/kI2H/5CNh/+PjIb/kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CN - h/+MiYP/dHBo/25pYf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZl7/amVd/2plXf9rZl7/amVd/2lkXP9qZV3/a2Ze/2tm - Xv9qZV3/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9qZV3/aWRd/2hjXP9oY1z/aGNb/2lkXP9qZV3/aWRc/2hjW/9oY1v/aWRc/2lkXf9qZV3/YFxU/1JO - SIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXk46QeXRu/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2hjW/9pZFz/amVd/2tm - Xv9rZl7/a2Ze/2plXf9oZFz/aGRc/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9oY1z/ZWBZ/2NeV/9kX1j/ZmFa/2hjW/9nYlv/YVxV/397 - df+QjYf/kI2H/5GNiP+Tj4n/lJCL/5SQi/+RjYj/jIiD/4F9d/94dGz/bGdf/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2lkXf96dm//kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CN - h/+QjYf/gX12/3JtZv9rZl//a2Ze/2tmXv9qZV3/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amZe/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2plXf9qZV3/a2Ze/2plXf9qZV3/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVe/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2lkXf9qZV3/aWRd/2lkXf9qZV3/a2Ze/2plXf9qZV3/aWVd/2llXf9qZV3/a2Ze/2Jd - Vv9NSkOUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlpKNondz - bP9rZl7/a2Ze/2tmXv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2lkXP9pZFz/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9pZV3/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/aGNc/2lkXP9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/aWRd/2diW/9lYFn/ZF9Y/2ZhWf9nYlv/Z2Ja/2Fd - Vf9xbWb/kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kY6I/5OPiv+UkIv/lJCK/5CMh/+Lh4H/e3Zv/3hz - bP9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2plXf9taGH/jYqE/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CN - h/+QjYf/jouF/3Rwaf9vamL/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/amVd/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVe/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV7/a2Ze/2tmXv9rZl7/amVd/2lkXP9pZF3/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9jXlb/TUlEpQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJSR - jLR1cWr/a2Ze/2tmXv9rZl7/a2Ze/2pmXv9qZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2plXf9oY1v/Z2Jb/2lkXP9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2pl - Xf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2lkXf9pZFz/aWRc/2hkXP9pZV3/aWRc/2di - W/9kYFj/ZWBZ/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CNh/+Sjon/lJCK/5SR - jP+Tj4r/j4uF/4iEfv96dm7/cm1m/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/g395/5CNh/+QjYf/kI2H/5CNh/+QjYf/j4yG/5CNh/+QjYf/kI2H/5CN - h/+QjYf/kI2H/4J/eP9ybWX/bGdf/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2plXf9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/a2Ze/2tmXv9rZl7/amZe/2plXf9pZF3/aWRd/2pl - Xf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/Y19X/01KRLcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACTkIrGdG9o/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2pl - Xf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/aWRc/2lkXP9qZV3/a2Ze/2tmXv9rZl7/amVd/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2hj - W/9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9pZF3/amVd/2plXf9qZV3/a2Ze/2pl - Xf9nYlv/ZmFa/2FdVf+IhH7/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5OPiv+UkIv/lJCL/5KPif+NioT/gn54/3l1bf9xbGT/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/eHNs/5GNiP+RjYj/kY2I/5GNiP+RjYj/kI2H/46Lhv+PjIb/kI2H/5GN - iP+RjYj/kY2I/5CLhv9zb2f/b2pi/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/aWRc/2hjXP9pZFz/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/a2Ze/2pl - Xf9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2VgWf9OSkTJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAko6H2HJtZf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/amVe/2tmXv9rZl7/a2Ze/2plXf9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2pl - Xf9oY1v/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/aWRd/2plXf9qZV3/amVd/2tm - Xv9pZFz/ZmFa/2hkXP9iXVb/e3dx/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+Sjon/k4+K/5SQi/+UkIv/kY2I/4yIgv9/e3T/eHRs/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/b2tj/4+Lhf+RjYj/kY2I/5GNiP+RjYj/kY2I/5CNh/+OjIb/j4yG/5CN - h/+RjYj/kY2I/5GNiP+BfXf/b2pj/2xnX/9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2pl - Xf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2lkXP9mYVr/ZmFZ/2hjW/9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9lYVn/T0tF2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJCMhepwa2P/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/amVd/2pl - Xf9rZl7/aGNb/2VgWf9oZFz/ZF9Y/21oYf+QjYf/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5KOif+UkIr/lZGM/5OQ - iv+QjIb/ioeB/3t2b/93c2z/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9sZ1//bWhg/4qGgP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kI2H/5GN - iP+RjYj/kY2I/5GNiP+OioX/cGtj/21oYf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2pl - Xf9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9oZFz/ZmFa/2VgWf9oY1v/amVd/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/ZmFa/1FNR+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACOioT6bmlh/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amZe/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2ll - Xf9qZV3/a2Ze/2diW/9lYVn/aWRc/2ZhWv9gXFT/jYqE/4+Mh/+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/k4+K/5SQi/+UkIv/ko+J/42Jg/9/e3T/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9sZ1//bGdf/4aCe/+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/fHhx/21oYP9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2pl - Xf9pZFz/aWRc/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/aGNb/2ZhWf9mYVn/aWRc/2plXf9rZl7/a2Ze/2tm - Xv9qZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2diW/9ST0j8Yl1WAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACJhH4OjYiD/25pYf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVe/2lk - XP9qZV3/a2Ze/2tmXv9pZFz/aGNc/2lkXP9nYlv/XlpS/4B9d/+Oi4b/kY2I/5CNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+OioX/gHx2/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2xnX/9uaWH/bmlh/4N/eP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/ioaA/21oYP9taGD/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2pl - Xv9oY1v/ZWBZ/2ZhWf9pZFz/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2hjXP9lYVn/ZmFZ/2plXf9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9pZFz/VFFK/1dTTBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAiYV+IYqGgP9uaWH/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/a2Ze/2xnX/9sZ1//a2Ze/2plXf9pZFz/aGNb/15aU/9yb2n/jouG/4+Mh/+Ni4b/j4yH/5CN - iP+Rjon/kY6J/5CNiP+RjYj/kY6J/5GOif+Rjon/kY6J/5GOif+Rjon/kY6J/5GOif+Rjon/kY6J/5GO - if+Rjon/kY6J/5GOif+Rjon/kY6J/5GOif+NioX/dG9n/3FsZf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9wa2P/cWxk/4N/eP+Rjon/kY6J/5GOif+Rjon/kY6J/5GOif+Rjon/kY6J/5GO - if+Rjon/kY6J/5GOif+Rjon/kI2I/3NuZ/9taGD/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9pZFz/ZF9Y/2NeV/9jXlf/aGNb/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/ZWFZ/2diW/9qZV3/bGdf/2xn - X/9sZ1//a2df/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZl7/amVd/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVe/1dTTP9XU0wlAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAImFfjaGg33/bWhg/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/aWRc/2lkXP9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWVd/2hjW/9jXlf/aGRe/46Lhv+Niob/jImE/46L - hv+QjYj/kY6J/5GOif+RjYj/kY6J/5GOif+Rjon/kY6J/5GOif+Rjon/kY6J/5GOif+Rjon/kY6J/5GO - if+Rjon/kY6J/5GOif+Rjon/kY6J/5GOif+NioX/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/21oYP9wa2P/cWxl/4aCfP+Rjon/kY6J/5GOif+Rjon/kY6J/5GOif+Rjon/kY6J/5GO - if+Rjon/kY6J/5GOif+Rjon/kY6J/356c/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pm - Xv9pZV3/aGNb/2VgWf9jX1f/ZF9Y/2diW/9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//aWVd/2ZiWv9oY1v/amVd/2xn - X/9sZ1//bGdf/2tmXv9rZl7/amZe/2tmXv9rZl7/a2Ze/2pmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXv9qZl7/a2Ze/2tmXv9rZl//a2Zf/2pm - Xv9qZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9ZVE3/VlNMOQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIhX5LhIB5/21oYP9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2lkXf9pZF3/a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/Z2Jb/2FdVf+MiYP/jYqF/42J - hP+QjYf/ko6J/5KPiv+Sjon/ko6J/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko6J/5KOif+Sj4r/ko+K/5KPiv+Oi4b/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/25pYf9ybWb/c25n/4iFf/+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/4mFf/9pZV3/aWRc/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/amVd/2llXf9qZV3/aWRd/2tmXv9rZl7/amVe/2plXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9qZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXv9nY1v/aGNb/2tm - Xv9sZ1//bGdf/2xnX/9rZl7/amZe/2pmXv9qZV7/amVe/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmX/9rZl//a2Zf/2tm - Xv9qZl7/a2Ze/2plXf9qZV7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/WlZQ/1dTTE4AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIR+X4B8dP9rZl7/amVd/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9jXlf/fnt1/42L - hf+Ni4X/kY6J/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sjon/ko+K/5KPiv+Oi4b/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/3FsZP90cGj/eXVt/4yJg/+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/4+Lhv9taWH/aGNb/2hkXP9qZV7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2plXf9qZV7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV7/aGNc/2ll - Xf9rZl7/bGdf/2tmXv9qZV3/amVe/2tmXv9qZV7/a2Ze/2tmXv9qZV7/aWRc/2lkXP9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/amZe/2pmXv9rZl7/a2Ze/2tnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/11YUv9XU0xhAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIeDfXN7d3D/aWRc/2hjW/9qZV3/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/Yl5W/29s - Zf+OjIb/kI2H/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Oi4b/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bmlh/3RvZ/92cWr/f3t0/5CNiP+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5GOif91cWn/Z2Jb/2ZhWv9nYlv/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2pl - Xf9rZl7/a2Ze/2tmXv9mYVn/ZF9Y/2VgWf9oY1z/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZl7/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tnX/9sZ1//bGdf/2tmXv9qZV7/aWVd/2plXf9fWlP/WFNNdgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWk42IeHNt/2hjW/9oY1v/amVd/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWRc/2Fd - Vf9hXVb/kI2I/5KOif+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Pi4b/c25n/25pYf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//c25n/3hzbP96dm7/iIR+/5KPiv+Sjon/kY6J/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv96dm//aGNc/2ZhWv9lYFj/ZmFa/2plXf9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9rZl7/a2Ze/2pmXv9qZV3/amVe/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9qZV3/Y15X/2NeV/9jXlf/ZWFZ/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9rZl7/YV1V/01K - RIoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlZGMnXdzbP9oY1v/aGNb/2pl - Xf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWRc/2Rf - WP9gW1T/W1ZP/4qHgf+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KOif+Rjon/ko+K/5KP - iv+Sj4r/ko+K/5KOif+Sj4r/ko+K/5KPiv+Sj4r/i4iC/4iEfv+Ggnz/eXVt/2xnX/9rZl7/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2pmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9xbWX/eHNs/3p2b/+Df3j/j4yH/5KPiv+Sj4r/kY6J/5GNiP+Sjon/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv9+enT/amVd/2diW/9mYVr/ZWBZ/2diW/9qZV3/bGdf/2xn - X/9sZ1//bGdf/2tmXv9nYlv/Z2Jb/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2lkXP9pZFz/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//amVd/2NeV/9jXlf/Y15X/2VhWf9qZV7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVe/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2Je - Vv9NSUOfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJOQirFzb2n/aWRc/2pl - Xf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lkXP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9rZl7/Z2Jb/2Vg - Wf9jXlf/Y15X/1tWT/97eHL/ko6J/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+QjYj/kI2I/5KO - if+Sj4r/ko6J/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/lpKN/5SRi/+NiYP/e3dv/29q - Yv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/3Ju - Zv96dm//fXly/4F9d/+MiIP/kY2I/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KOif+QjYj/kI2I/5GO - if+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Cfnj/a2Ze/2tmXv9pZF3/Z2Jb/2ZiWv9oY1v/amVd/2xn - X/9sZ1//bGdf/2xnX/9qZV7/ZWBZ/2VgWf9nYlv/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2pl - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2hjXP9oY1z/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9lYFj/ZF9Y/2NfV/9nY1v/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl//a2Zf/2tmX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9pZFz/aWRc/2lkXP9qZV3/amVd/2plXf9rZl7/bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2tm - Xv9jX1f/TUpDtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSjojGc25n/2tm - Xv9rZ1//bGdf/2plXf9nY1v/ZWBZ/2djW/9oY1z/aWRd/2tmXv9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lkXP9nYlv/aWRc/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//amVd/2Nf - V/9jXlf/Y19X/2NeV/9cWFD/a2di/5GNiP+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/j4yH/4+M - h/+Rjon/ko+K/5KOif+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+TkIv/lpKN/5WS - jP+Pi4X/gn53/3dza/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9vamP/d3Jr/315 - cv9+enT/hIF6/42JhP+RjYj/j42I/4+Mh/+Sjon/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Rjon/kI2I/4+N - iP+RjYj/ko+K/5KPiv+Sj4r/ko+K/5KPiv+FgXv/amZe/2tmXv9sZ1//a2Ze/2plXf9pZFz/amVd/2pl - Xv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2VgWf9kX1j/ZGBZ/2plXf9sZ1//bGdf/2xnX/9rZl7/amVd/2pl - Xf9qZV3/a2Ze/2tmXv9rZl7/amVd/2hjW/9nYlv/aGNb/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVe/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2pmXv9qZl7/a2Ze/2xnX/9qZl7/a2Ze/2xnX/9sZ1//a2Ze/2plXf9qZV3/amVe/2pl - Xf9pZF3/aGRc/2hjXP9oY1v/aWRc/2lkXP9pZFz/amVd/2tmXv9rZl7/amVe/2plXv9rZl7/a2Ze/2xn - X/9rZl7/ZWBZ/05LRMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkY2H2nFt - Zf9sZ1//bGdf/2tmXv9oY1v/ZF9Y/2NeV/9jXlf/ZF9Y/2VgWP9pZFz/a2Ze/2ZhWv9kX1j/ZmFZ/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/Z2Nb/2lkXf9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//a2Ze/2di - Wv9jXlf/ZF9Y/2diW/9mYlr/Yl1W/19bVP+QjYj/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5GN - iP+QjYj/kY6J/5KOif+Sjon/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/lZGM/5aSjf+Tj4n/jYmD/356c/95dG3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//c29n/3Vwaf9+enT/gX13/4SA - ev+JhYD/jouG/5KPiv+Rjon/kI2I/4+NiP+PjYj/kY2I/5GOif+Sjon/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+RjYj/ko6J/5KPiv+Sj4r/ko+K/5KPiv+Cf3j/amVd/2plXf9rZl7/bGdf/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9oZFz/Z2Ja/2hjXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2pl - Xf9pZF3/a2Ze/2xnX/9sZ1//a2Ze/2lkXP9mYlr/ZWFZ/2diW/9qZV3/a2Ze/2xnX/9sZ1//a2Ze/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9qZl7/a2Ze/2xnX/9sZ1//amZe/2tmXv9rZl7/a2Ze/2plXf9qZV3/amVd/2pl - Xf9qZV3/aGNc/2diW/9oY1v/aGNc/2lkXP9nY1v/Z2Jb/2lkXP9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9sZ1//a2Ze/2diWv9RTUfcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+L - he9wa2P/bGdf/2xnX/9rZl7/Z2Nb/2RfWP9jXlf/ZF9Y/2VgWf9mYVr/aWVd/2lkXf9jX1f/Y15X/2Ne - V/9pZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2plXf9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2hj - W/9jXlf/Y15X/2VgWf9rZl7/a2Ze/2hjXP9iXVb/iYaA/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/lJGL/5WSjf+VkYz/lJCK/5CMh/+LiIH/fHhx/3p2bv94c2z/a2Ze/2pl - Xf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/90b2j/dnJr/3hzbP+Cfnf/hH95/4aCe/+Ig33/ioaA/4+L - hv+Sj4r/k5CL/5OQi/+TkIv/k4+K/5KOiv+Sj4r/kY2J/4+Nh/+QjYf/kY6J/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/9/e3X/aWRd/2plXf9rZl7/bGdf/2tmXv9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9rZ1//a2Ze/2xnX/9pZF3/aGNb/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2tmXv9oY1z/ZmFa/2ZhWv9nYlv/aWRd/2tmXv9qZV3/amVd/2pl - Xv9qZV7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9qZV3/amVd/2hjW/9oY1v/aWRc/2lkXP9pZF3/aWRc/2lkXP9pZFz/amVd/2plXf9rZl7/amVd/2pm - Xv9rZl7/a2Ze/2xnX/9oZFz/U09J8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIB8 - dQaNiYP/bmli/2xnX/9sZ1//bGdf/2tmXv9pZFz/Z2Nb/2hjXP9pZFz/aWRc/2plXf9nY1v/Y15X/2Ne - V/9lYFj/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xf9jX1f/Y15X/2NeV/9pZFz/bGdf/2xnX/9sZ1//Y19Y/3t4cv+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+UkYz/lJGM/5SQi/+TkIv/ko+J/5CM - h/+OioT/joqE/42Jg/+MiIH/jIiB/4yJgv+MiYL/jImC/4yJgv+NiYP/joqF/4+Mhv+Rjoj/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5KPiv+QjYj/joyG/5CNiP+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5KPiv97d3D/aWRc/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//a2Ze/2tmXv9qZV3/ZmFa/2RfWP9nYlv/amVe/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9nY1v/ZmJa/2ZhWv9mYlr/aWRc/2plXf9rZl7/aWRc/2lk - XP9pZF3/a2Ze/2tmXv9sZ1//bGdf/2xnX/9rZl7/amVe/2plXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV3/aWVd/2tmXv9rZl7/a2Ze/2xn - X/9sZ1//a2Ze/2plXf9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXf9pZFz/aWRc/2lkXP9qZV7/amVe/2pl - Xf9qZV3/amVd/2tmXv9sZ1//aWVd/1RRSv9cWFEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACIhH4dioaB/25pYf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9mYVr/ZWBZ/2Vg - Wf9mYVr/aGNc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xn - X/9nYlr/Y15X/2NeV/9kX1j/a2Ze/2xnX/9sZ1//bGdf/2ZhWv9uamT/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k4+K/5KPiv+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+Sj4r/ko+K/5OPiv+Sj4r/ko+J/5KPif+Sj4r/ko6J/5KPiv+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/ko+K/5CMh/+Rjon/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5CNh/92cWv/aWRd/2tmXv9sZ1//bGdf/2xnX/9sZ1//a2df/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9rZl7/aWRd/2RfWP9jXlf/ZmFa/2plXf9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9kX1j/Y15X/2NeV/9lYFn/aGNb/2plXv9rZl7/a2Ze/2pl - Xf9pZF3/amVd/2tmXv9rZl7/bGdf/2xnX/9sZ1//a2Ze/2plXv9pZF3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV7/aWRc/2lkXP9qZV3/a2Ze/2xn - X/9rZl7/amVe/2plXf9qZV3/amVd/2lkXP9pZFz/aWRd/2lkXP9pZFz/aGNb/2hjW/9pZFz/amVd/2tm - Xv9pZFz/aWRc/2diW/9qZV3/a2Ze/2lkXf9VUUv/VlJMHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAiYR+M4aDff9taGD/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/Y19Y/2Vg - Wf9oY1z/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2lkXf9pZV3/a2Ze/2xn - X/9sZ1//ZGBY/2NeV/9jXlf/ZmFa/2xnX/9sZ1//bGdf/2xnX/9oY1z/Y19Y/5GOif+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OPiv+Sjon/k4+K/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+Tj4r/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/4mGgP9taWH/aWRc/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/amVd/2plXf9qZl7/a2Ze/2lkXP9kX1j/ZF9Y/2diW/9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9nYlv/Y15X/2NeV/9jXlf/Y15X/2hjXP9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9qZV3/aWRc/2plXf9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2hjXP9oY1v/aWRd/2tm - Xv9rZl7/a2Ze/2plXf9rZl7/a2Ze/2tmXv9qZV3/amVd/2plXf9pZFz/Z2Ja/2RfWP9kYFj/aGNb/2lk - Xf9qZV3/aWRc/2ZiWv9mYVr/aGNb/2plXf9pZV3/VlNM/1ZSSzQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAImEfkuEgHn/bWhg/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2Ne - V/9oY1v/a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xn - X/9sZ1//a2df/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2RfWP9jXlf/Y15X/2hkXP9sZ1//bGdf/2xnX/9sZ1//amVd/2NeV/+Fgnz/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+PjIf/kY6J/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+Tj4v/k4+K/5OPiv+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+Tj4r/k4+K/5OPiv+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k4+K/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/ko+K/357dP9pZFz/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2lkXP9qZV3/a2Ze/2tmXv9qZV3/aGNc/2hjW/9qZV3/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//aWRc/2NeV/9jXlf/Y15X/2RfWP9pZFz/a2Ze/2xn - X/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xnX/9rZl7/aWRd/2lkXP9qZV3/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9oY1v/Z2Jb/2lk - XP9qZV3/amVe/2plXf9qZV3/amZe/2tmXv9rZl7/aWVd/2lkXf9pZF3/aGRc/2VhWf9jXlf/Y15X/2Zh - Wv9pZF3/a2Ze/2plXf9pZFz/aGNc/2lkXP9qZV3/aWRc/1dUTf9VUUtLAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACIhH5hf3t0/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9qZV3/a2Ze/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9lYFn/Y15X/2VgWP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9kX1j/eHRu/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+PjIb/bWhi/2pmX/+HhH7/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OPiv+Tj4r/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/jImD/3JuZ/9oY1z/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9qZV3/amVd/2tmXv9qZV3/amVd/2llXf9pZF3/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//amVd/2plXf9rZl7/bGdf/2lkXf9kYFj/Y15X/2RfWP9mYVr/amVd/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2xnX/9sZ1//a2Ze/2plXf9qZV3/amZe/2tm - Xv9rZl7/amZe/2pmXv9sZ1//bGdf/2tmXv9qZV3/amVd/2tmXv9rZl7/bGdf/2xnX/9pZF3/Z2Nb/2di - Wv9oY1v/aWRc/2lkXP9pZFz/aWRc/2tmXv9rZl7/amVe/2lkXf9pZFz/aWRd/2hjW/9nYlr/ZF9Y/2Rg - WP9nYlr/amVd/2tmXv9rZl7/a2Ze/2plXf9qZV3/aWRd/2hjXP9aVU//VVJKYQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAh4R9eHt3cP9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/amVd/2lk - XP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/ZWFZ/2NeV/9nYlr/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//Z2Ja/2tn - YP+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+PjIb/cGtk/2hjXP9kX1j/YFxU/3NvaP+Oi4b/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+RjYj/e3dw/2hjW/9oY1z/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2xnX/9sZ1//a2Zf/2xnX/9sZ1//a2Ze/2plXv9qZV7/amVd/2plXf9qZl7/amVd/2pl - Xv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2tmXv9qZV3/a2Ze/2xnX/9rZl7/amVd/2lkXP9nYlr/Z2Nb/2lk - XP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV7/a2Ze/2tm - Xv9rZl7/a2Ze/2lkXP9qZV7/amVe/2tmXv9qZV7/aWRc/2plXf9qZV3/a2Ze/2xnX/9qZV3/aWRc/2di - W/9nY1v/aGRc/2lkXP9pZF3/aGRc/2lkXP9rZl7/amVd/2lkXf9pZV3/aWVd/2llXf9oY1v/Z2Ja/2Zh - Wf9mYVr/Z2Nb/2plXf9rZl7/bGdf/2xnX/9rZl//a2Ze/2plXf9pZFz/XFhR/1ZSS3gAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaTjY96dW7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWVd/2hj - XP9mYlr/aWRc/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2VgWf9jX1j/ZmJa/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2hk - XP9iXVb/j4uG/5OQi/+TkIv/k5CL/5OQi/+PjIb/cGtk/2plXf9rZl7/a2Ze/2ZhWv9iXVb/Yl5X/3x4 - cv+Sj4r/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5KPiv+Df3n/a2df/2djW/9pZF3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmX/9sZ1//bGdf/2tmX/9sZ1//bGdf/2xnX/9qZV3/amVd/2pmXv9rZl7/amVe/2lk - Xf9pZF3/a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2lk - XP9pZFz/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXv9qZV7/amVd/2lkXP9pZFz/amVd/2tm - Xv9sZ1//bGdf/2tmXv9qZV3/amZe/2pmXv9rZl7/amVd/2hkXP9qZV3/amVd/2tmXv9sZ1//amVd/2hj - W/9nY1v/aGNb/2lkXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9nYlv/aGNb/2lkXP9oY1v/Z2Jb/2Zi - Wv9lYVn/ZWFZ/2diWv9qZV3/a2Ze/2tmXv9rZl7/bGdf/2xnX/9rZl7/aWRd/19aU/9MSUKQAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVkYyld3Ns/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lk - XP9mYVr/ZWBZ/2lkXP9rZl7/a2Ze/2tmX/9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2pmXv9lYFn/Y15X/2VgWf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/Y15X/4J+ef+TkIv/k5CL/5OQi/+PjIb/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//amVd/2Vh - Wf9hXFX/ZmJa/357df+Sj4n/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/ko+K/4SAe/9uaWP/Z2Ja/2hkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//a2Ze/2pl - Xf9nYlv/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9qZV3/aWRc/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/amVd/2lkXP9pZF3/aWRc/2lk - Xf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2pmXv9rZl7/a2Ze/2plXf9qZV3/amVd/2plXf9rZl7/a2Ze/2lk - Xf9mYlr/Z2Jb/2hjXP9qZV3/amVd/2plXf9qZV3/aWVd/2lkXP9nYlv/ZmJa/2diW/9nYlr/ZmFa/2Zh - Wv9mYlr/Z2Jb/2ZhWv9nYlr/amVd/2plXf9qZV3/a2Ze/2tmXv9sZ1//a2Ze/2plXf9hXFX/S0hCpgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk5CKvXVxaf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/aWRd/2hjXP9qZV3/amVe/2tmXv9rZl7/a2Ze/2xnX/9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9rZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lk - XP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/ZWBZ/2NeV/9lYFn/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2RgWP90cGr/k5CL/5OQi/+PjIb/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//aWRc/2RfWP9hXFX/ZWFa/3p3cP+PjIb/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+Rjoj/gHx2/2xoYf9mYlr/aGNb/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/bGdf/2xnX/9sZ1//a2Ze/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9oY1v/ZWFZ/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV7/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2lkXf9qZV3/a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//a2Ze/2plXf9pZFz/amVe/2lk - Xf9pZFz/amVd/2pmXv9rZl7/a2Ze/2tmXv9qZl7/a2Ze/2tmXv9qZV7/amVd/2plXf9pZFz/aWRc/2ll - Xf9oY1v/ZmJa/2ZiWv9pZFz/amVd/2plXf9pZV3/aWRd/2lkXP9oY1z/aGNc/2diW/9nYlr/Z2Jb/2Vh - Wf9jXlf/ZGBY/2ZhWf9mYVr/Z2Ja/2hjXP9oY1z/aWVd/2plXf9rZl7/a2Ze/2tmXv9qZV3/Yl1V/0xI - Q78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCNh9VybWb/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2tmXv9rZl7/amVd/2hj - XP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xf9oY1z/aWVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2diWv9jXlf/ZWBZ/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9oY1v/Z2Nc/5OQi/+PjIb/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//aWRd/2VhWf9hXVb/YV1W/3FuZv+Fgnz/ko+K/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/4mF - gP93c23/aGNc/2ZhWv9nY1v/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9qZV3/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/aGNc/2ZiWv9pZFz/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2tmXv9pZFz/aWRc/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/aWRc/2tm - Xv9pZV3/aGNc/2hkXP9qZV3/a2Ze/2plXf9qZl7/amZe/2tmXv9rZl7/a2Ze/2plXv9pZFz/ZF9Y/2Rf - WP9mYVr/ZmFa/2ZiWv9mYlr/aWRc/2plXf9qZV3/aGNc/2hjW/9oY1v/aGNc/2hjXP9nYlv/Z2Jb/2di - W/9kX1j/Y15X/2NeV/9jXlf/ZWBZ/2ZiWv9nYlr/ZmFa/2djW/9pZFz/amVd/2tmXv9qZV7/aWRc/2Je - Vv9MSUPXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOioTub2tj/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//a2Ze/2lk - XP9nY1v/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/aWVd/2plXf9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9mYVn/Y15X/2VhWf9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//aWRc/2JeV/+HhH7/b2pj/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2djW/9jXlf/YVxV/2RgWP90cGr/hIF7/5GO - if+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5GPif+HhH7/eHVu/2pm - Xv9lYFn/ZmFa/2hkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//amVe/2lkXP9oZFz/amVd/2xnX/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/aWRc/2lkXP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2ll - Xf9pZF3/amVd/2lkXf9pZFz/amVd/2tmXv9pZF3/amVd/2pmXv9rZl7/a2Ze/2lkXf9qZV3/Z2Jb/2Ne - V/9jXlf/Y15X/2ZhWf9nYlr/Z2Jb/2llXf9qZV3/aWRd/2hjXP9pZFz/aWRc/2plXf9pZFz/aGNc/2di - W/9oY1v/ZF9Y/2NeV/9jXlf/Y15X/2NeV/9kX1j/ZGBY/2NfWP9mYVr/aGNb/2plXf9qZV3/amVd/2hj - XP9jX1f/TkpE7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAfHUJjIiD/25pYv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2tm - Xv9pZFz/aGNb/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9pZV3/ZWBZ/2NeV/9lYFn/a2Ze/2xn - X/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9kYFj/ZmFa/2hjXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2lkXf9nYlv/Y15W/2Fd - Vf9iXVX/bWli/3l1bv+EgXv/joyG/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5CNiP+Gg33/fHhy/3FuZv9mYVr/ZGBY/2Vh - Wf9oY1v/aWVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tnX/9qZV3/amVe/2xnX/9sZ1//bGdf/2xn - X/9rZl7/amZe/2plXv9qZV7/amVd/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2plXv9qZV7/a2Ze/2lkXf9pZFz/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//amVd/2Vg - Wf9kX1j/ZmFa/2plXf9qZl7/amVd/2tmXv9rZl7/aWRd/2plXf9rZl7/a2Ze/2plXf9pZFz/amVd/2Vg - Wf9jXlf/Y15X/2NeV/9lYFn/ZmJa/2diW/9pZFz/amVd/2lkXf9pZV3/aWVd/2tmXv9rZl7/amVd/2lk - Xf9pZFz/aWRc/2ZhWv9jXlf/Y15X/2NeV/9jXlf/Y15X/2NfV/9kYFj/Z2Jb/2lkXf9qZV3/aWRd/2hk - XP9oY1v/ZWBY/1BMRv9ZVU4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIR+IYmFgP9uaWH/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2plXf9sZ1//bGdf/2xn - X/9rZl7/aWRd/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2djW/9jXlf/ZGBY/2lk - Xf9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//aWVd/2lkXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9qZV3/aGNb/2VhWf9iXlb/YV1V/2BcVf9kYFn/bWli/3NvaP95dnD/f3t1/4F9d/+EgXv/hYJ8/4mF - gP+JhoD/hoN9/4SBe/+Bfnj/f3x2/3t3cf91cWv/b2tl/2hkXP9jXlf/ZF9Y/2VgWf9nYlv/aWRc/2pm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//a2df/2xn - X/9rZl7/amVd/2llXf9qZl7/amZe/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2pmXv9qZV3/aWRc/2lkXP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2di - W/9jXlf/Y15X/2NeV/9pZFz/a2Ze/2tmXv9sZ1//a2Ze/2plXv9qZl7/amZe/2tmXv9pZF3/Z2Nb/2lk - Xf9mYlr/Y15X/2NeV/9kX1j/ZmFa/2diWv9oY1v/aWRc/2lkXf9pZF3/aWVd/2tmXv9sZ1//bGdf/2tm - Xv9rZl7/amVd/2plXf9pZFz/ZmFa/2NfWP9kYFj/ZGBZ/2NeV/9lYFn/Z2Ja/2lkXf9qZV7/amVe/2hk - XP9mYlr/ZmFa/2RfWP9QTEb/U09JIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiEfjmFgnz/bWhg/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9rZl7/bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2tmXv9pZF3/ZmFZ/2Nf - WP9mYVn/amVe/2xnX/9rZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2df/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9oY1z/aGNb/2diW/9mYVr/Y15X/2JeV/9iXlf/Yl1W/2Jd - Vv9iXVX/Yl1W/2JeV/9iXlf/Y15X/2NfWP9kX1j/ZmFa/2hjW/9oZFz/aWRc/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xn - X/9sZ1//bGdf/2pmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl//bGdf/2xn - X/9rZl7/bGdf/2xnX/9rZl7/amZe/2pmXv9qZl7/amVd/2lkXP9nYlv/aWRc/2tmXv9rZl7/bGdf/2xn - X/9mYVr/Y15X/2NeV/9jX1f/aWVd/2tmXv9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9rZl7/amVd/2pl - Xf9qZV7/aGNc/2ZhWf9nY1v/Z2Nb/2hjXP9pZFz/amVd/2tmXv9pZFz/aGNb/2llXf9qZV3/bGdf/2xn - X/9sZ1//a2Ze/2plXf9qZV3/aGNc/2ZiWv9lYFn/ZmJa/2ZhWv9lYFn/Z2Jb/2lkXP9rZl7/a2Ze/2pl - Xf9oY1v/Z2Jb/2djW/9kYFj/Uk9I/1NPSToAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIhH1Rgn53/21o - YP9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aGNb/2lkXf9rZl7/bGdf/2xnX/9sZ1//a2Ze/2hj - XP9jXlf/Y15X/2VgWf9pZFz/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xn - X/9rZl7/amVe/2plXv9qZV3/amVd/2pmXv9qZl7/amZe/2plXf9oY1z/ZmFa/2hjW/9rZl7/a2Zf/2xn - X/9sZ1//aGNc/2RfWP9jXlf/ZWFZ/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2pmXv9rZl7/amVd/2tm - Xv9sZ1//bGdf/2tmXv9rZl7/amVd/2plXf9pZF3/amVd/2plXf9rZl7/aGNc/2hjW/9oZFz/amVd/2pl - Xv9qZV3/amVd/2plXf9oY1z/Z2Nb/2hjW/9mYVr/ZmFZ/2diW/9nYlv/aGNb/2plXf9rZl7/a2Zf/2tm - Xv9qZV3/aWRc/2lkXP9oZFz/aGNb/1hUTf9VUEpUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh4N9bH14 - cf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/aWRc/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xf9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2hjW/9oZFz/a2Ze/2xnX/9sZ1//bGdf/2tm - Xv9pZF3/ZWBZ/2NeV/9jXlf/Z2Ja/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/aWRc/2tmX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2plXv9qZl7/amZe/2pmXv9qZV7/amZe/2pmXv9qZV3/aGNb/2ZiWv9pZFz/a2Ze/2xn - X/9sZ1//bGdf/2tmXv9qZV3/aGNc/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2pl - Xf9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/amVd/2plXf9pZF3/aWRc/2hjW/9nY1v/aWVd/2ll - Xf9pZV3/aWVd/2llXf9pZFz/ZmFa/2ZhWv9nY1v/aGNb/2hkXP9qZV3/amVd/2plXf9rZl7/bGdf/2xn - X/9sZ1//a2Ze/2plXv9pZV3/aWRc/2plXf9dWVL/VlJLbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI6K - hIZ6dW//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aGNb/2hkXP9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9qZV3/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9rZl7/amZe/2hkXP9kX1j/Y15X/2VgWf9qZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//a2Ze/2llXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2xnX/9pZFz/aGNc/2pl - Xf9rZl7/bGdf/2tmXv9rZl7/amVd/2plXf9qZV3/amVd/2plXf9rZl7/a2Ze/2llXf9pZFz/aWRc/2pm - Xv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9rZl7/bGdf/2xnX/9rZl7/a2df/2xnX/9sZ1//a2Ze/2tm - Xv9rZl7/bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/amVd/2hjW/9mYVr/ZmJa/2lk - Xf9qZV3/aWVd/2plXf9qZV3/aWRc/2VgWf9lYVn/aGNb/2lkXP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9qZV3/amVd/2llXf9qZV7/YFxV/1JOSIcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACUkYuheHNs/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Zf/2plXf9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/amVe/2tmXv9rZl7/aGNc/2ZhWv9nY1v/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2hj - XP9oY1v/aWRc/2xnX/9sZ1//bGdf/2tmXv9qZV3/amVe/2lkXP9oY1v/aWRd/2tmXv9rZl7/ZmFa/2Vg - Wf9oY1z/amVd/2tmXv9rZl7/a2Ze/2plXv9oY1z/aGNb/2lkXP9pZV3/a2Ze/2tmXv9rZl7/amVd/2lk - Xf9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2xnX/9qZV7/aWRc/2plXf9sZ1//bGdf/2pmXv9rZl7/amVe/2llXf9nYlr/Y19Y/2Vh - Wf9pZFz/aWVd/2lkXf9pZF3/aWVd/2djW/9kYFj/ZmFa/2djW/9pZF3/amVd/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2xnX/9rZl7/aWRc/2llXf9pZV3/amVe/2NeVv9MSUOhAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAk5CJvHVxaf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2tmXv9rZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9nYlv/ZmFZ/2hjW/9rZ1//bGdf/2xnX/9pZF3/amVd/2tmXv9pZF3/aGNb/2lkXP9rZl7/a2Ze/2Rg - WP9kYFj/aGNb/2plXf9rZl7/a2Ze/2tmXv9qZV7/Z2Ja/2diW/9oY1v/Z2Nb/2plXf9rZl7/bGdf/2tm - Xv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9rZl7/bGdf/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//aWRc/2hjW/9pZFz/a2Ze/2tmXv9pZV3/aWVd/2llXf9oZFz/ZGBY/2Ne - V/9kX1j/aGNb/2lkXf9pZF3/aWVd/2lkXP9nY1v/ZWBZ/2VgWf9mYVr/Z2Jb/2plXf9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2tmXv9rZl7/amVe/2plXf9qZV7/aWVd/2llXf9kX1f/TUpEvQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJCNhtZybWb/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//amVe/2tmXv9rZl7/bGdf/2xnX/9rZl7/amVd/2tmXv9rZl7/a2Ze/2plXf9rZl7/bGdf/2tm - Xv9oY1z/Z2Nb/2hjXP9qZV3/amVe/2plXf9rZl7/a2Ze/2lkXP9oZFz/aWRc/2hjXP9qZV3/a2Ze/2xn - X/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Zf/2lkXf9oY1z/aWRc/2tmXv9qZV3/Z2Jb/2ZiWv9nYlv/Z2Nb/2Ne - V/9jXlf/ZF9Y/2djW/9qZV3/amVd/2tmXv9qZV3/amVd/2plXf9oZFz/Z2Jb/2diW/9qZV3/bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/a2Zf/2tmXv9rZl7/amZe/2lkXf9oZFz/ZGBY/09MRdcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACQjIbxcGxk/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2plXf9qZV3/aWRc/2lkXP9pZFz/amZe/2tmXv9qZV3/amVd/2plXf9qZV3/amZe/2xn - X/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9sZ1//a2Ze/2tmX/9rZl7/bGdf/2tmXv9sZ1//a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVe/2tmXv9sZ1//aWRd/2VhWf9jXlf/ZGBY/2Vh - Wf9jXlf/Y15X/2RfWP9qZV3/a2df/2xnX/9sZ1//a2Ze/2xnX/9sZ1//a2Ze/2lkXP9mYlr/aWRc/2tm - Xv9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2tmXv9qZV3/amVd/2diW/9ST0jyAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAl5SP9nJuZv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9qZV3/a2Ze/2tm - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2tmXv9rZl7/bGdf/2xn - X/9sZ1//bGdf/2tmXv9qZV3/aWRc/2lkXP9oY1v/aGNb/2plXf9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xn - X/9rZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//amVe/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/amVe/2xnX/9sZ1//bGdf/2lkXP9kX1j/Y15X/2Ne - V/9kX1j/Y15X/2NeV/9lYFn/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/aWRc/2lk - XP9qZV7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/amVd/2plXv9pZFz/VFFK9gAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKShnM96dm//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9qZV3/aWRd/2llXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2tnX/9rZl7/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9qZV3/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9pZFz/Z2Ja/2diW/9pZF3/amZe/2tmXv9rZl7/bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xnX/9rZl7/a2Ze/2plXf9sZ1//bGdf/2xnX/9qZl7/ZWBZ/2Ne - V/9jXlf/ZF9Y/2NeV/9jXlf/ZmFZ/2plXf9sZ1//a2Ze/2tmXv9qZV3/bGdf/2xnX/9sZ1//amVd/2lk - XP9oY1v/aWRd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWVd/2pmXv9rZl7/aGNb/1VR - S88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkoZx7j4yF/29qYv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/amVd/2ZhWv9mYlr/aGNc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Zf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZ1//a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/amVd/2djW/9oY1z/aWVd/2plXf9qZl7/a2Ze/2xn - X/9sZ1//a2Ze/2tmXv9sZ1//a2Ze/2tmXv9rZ1//a2Ze/2pmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xnX/9rZl7/aWVd/2llXf9qZV3/a2Ze/2xnX/9sZ1//amVd/2Vg - Wf9jXlf/Y19X/2NfV/9jXlf/Y15X/2ZiWv9pZV3/amVd/2lkXP9oZFz/aWRc/2tmXv9sZ1//a2Ze/2tm - Xv9pZFz/Z2Jb/2hjW/9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2pmXv9qZl7/a2Ze/2Rg - WP9cV1F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkY2HDKuppeWCfXf/bmlh/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9nYlv/Z2Jb/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tn - X/9rZl7/amVd/2pmXv9rZl7/bGdf/2xnX/9rZl7/amVe/2lkXf9nY1v/aGNb/2lkXP9pZFz/amVd/2tm - Xv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2df/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xnX/9rZl7/amZe/2llXf9qZV7/a2Ze/2tmXv9rZl7/a2Ze/2ll - Xf9mYVr/Y15X/2NeV/9jXlf/Y15X/2RfWP9pZF3/amVd/2lkXf9nYlv/ZmJa/2lkXP9rZl7/a2Ze/2tm - Xv9sZ1//a2Ze/2lkXf9nYlv/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmX/9rZl7/a2Ze/2ll - Xf9iXVblZWFZDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpp6I5q6ij74aDfP9ybmb/bWhg/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWRd/2hkXP9pZFz/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Zf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9sZ1//a2Ze/2plXf9qZV7/a2Ze/2tmX/9rZl7/amZe/2plXv9oY1z/ZmFa/2djW/9pZFz/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2tmXv9qZV7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/bGdf/2tnX/9rZl7/a2Ze/2plXf9pZFz/amVd/2tmXv9rZl7/amVd/2lk - Xf9oY1v/ZWFZ/2RfWP9kX1j/Y15X/2NeV/9nYlv/a2Ze/2tmX/9rZl7/amVd/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/aGNc/2hkXP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bWhg/29q - Yv9qZV3vZWFaOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJKPiSaxr6q+nZuV/4yI - gv+Cfnj/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/fnpz/315cv97d3H/fHhy/356c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9+eXL/fHdx/3t3cP98eHL/fnly/355 - cv9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/356c/9+enP/fHdy/3x4 - cv9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/fnpz/355 - cv99eXL/fnly/355cv99eHL/fXhy/355cv99eXL/fXly/314cv99eHL/e3dw/3l1bv96dm//e3dx/315 - cv9+eXL/fnpz/355cv9+eXL/fnpz/396c/9/enP/f3pz/396c/9+eXL/fnly/355cv9+eXL/fXhy/314 - cv9+eXL/fnly/355cv9+eXL/fnly/356c/9+enP/fXly/315cv97d3D/e3dw/315cv9+eXL/fnly/315 - cv98d3H/e3dw/3l1bv94dW7/eXVu/3dzbf93c23/e3dw/356c/9/enP/fnpz/356c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/3x4cf98eHH/fXhy/396c/9/enP/f3pz/396c/9+enP/gX11/4OA - ef9+e3TAb2tjJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmW - kSaTj4lii4iCfoqFf790bmb/b2lh/3BqYf9wamH/cGph/29pYf9vaWH/b2lh/29pYf9wamH/cGph/3Bq - Yf9wamH/cGph/29pYf9wamH/cGph/3BqYf9wamH/cGph/29qYf9uaGH/bGZf/2xnX/9sZ1//bGZf/2xm - X/9tZ2D/bmlg/29pYf9vaWH/b2lh/29pYf9taGD/bWdg/29pYf9vaWH/b2lh/29pYf9vaWH/cGph/29p - Yf9wamH/b2lh/29pYf9vaWH/b2lh/29pYf9vaWH/b2lh/29pYf9vaWH/cGph/29pYf9vaWH/b2lh/29p - Yf9vaWH/b2lh/29pYf9tZ2D/bGdf/2xnX/9tZ2D/bmlg/25pYP9vaWH/b2lh/29pYf9vaWH/bmlg/29p - Yf9vaWH/b2lh/29pYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3Bq - Yf9wamH/b2lh/21nX/9sZ1//bmhg/29pYf9wamH/cGph/3BqYf9wamH/b2lh/25oYP9taGD/bmhh/29p - Yf9vamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3Bq - Yf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3Bq - Yf9wamH/cGph/29pYf9uaGD/bWhg/21nX/9taGD/bmlg/3BqYf9wamH/cGph/3BqYf9vamH/b2lh/21o - YP9uaGH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3Bq - Yf9vamH/b2lh/29qYf9vaWH/b2lh/29pYf9vamH/b2ph/29pYf9uaWH/b2lh/25pYf9taGD/bWhg/25p - Yf9vamH/b2ph/29qYf9vamH/b2lh/25pYf9vaWH/cGph/3BqYf9wamH/b2ph/29qYf9vamH/b2ph/29p - Yf9vaWH/b2ph/3BqYf9wamH/cGph/29qYf9vamH/b2ph/29qYf9vaWH/bmhh/25pYf9vaWH/b2ph/29q - Yf9vaWH/bmlh/25oYP9tZ1//bWdf/25oYP9tZ1//a2Zf/21nYP9uaGD/b2lh/29qYf9wamH/cGph/3Bq - Yf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9vaWH/b2lh/29qYf9wamH/cGph/21nX/+EgHl/hIB5foN/ - eGJ+enQmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAABybWV/SUM4/0E6L/9BOi//QTov/0A5Lv8/OS3/QDkt/0A5Lf9AOS3/QTov/0E6 - L/9BOi//QTov/0E6L/9BOi7/QDou/0E6L/9BOi//QTov/0E6L/9BOi//QDkt/z43LP89Niv/PDUr/zw1 - K/88NSv/Pjcs/z84Lf8/OCz/QDkt/0A5Lf9AOS3/Pzgt/z43LP8+OCz/QDkt/0A5Lf9AOS7/QDku/0A5 - Lv9AOS3/QTou/0E6L/9AOS3/Pzgt/0A5Lf9AOS3/QDkt/0A5Lf9AOS3/QDkt/0A5Lf9AOS3/QDkt/0A5 - Lf9AOS3/QDkt/0A5Lf8+Nyz/OzQq/zkyKP86Myn/OzUq/z43LP8+Nyz/Pzgt/0A5Lf9AOS3/Pzkt/z84 - Lf9AOS3/QDkt/0A5Lf9BOi7/QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6Lv8+Nyz/PDYr/z84Lf9BOi7/QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0A5 - Lv9AOS3/QDkt/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6Lv8/OCz/PTYs/z02K/89Niz/Pjgs/z84Lf9AOS7/QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTou/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/8+OCz/Pzgt/0A5Lv9BOi//QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTou/z84Lf8+Niz/PTYs/0E6Lv9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/87NSr/AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAc29of09JQP9HQDb/R0A2/0ZANv9FPzX/RT81/0U+Nf9GQDX/RkA1/0hB - Nv9IQTb/SEE3/0hBN/9IQTf/R0E2/0dANv9IQTb/SEE3/0hBN/9IQTf/SEE3/0hBNv9GPzX/RD40/0M9 - M/9EPjT/RT81/0U/Nf9GPzX/Rj81/0Y/Nf9HQDX/R0A2/0dANv9GPzX/RT41/0dANf9HQTb/R0A2/0dA - Nv9HQDX/RkA1/0Y/Nf9HQDX/R0A2/0dANv9IQTb/R0A2/0dANv9HQDb/Rj81/0Y/Nf9GQDb/R0A2/0dA - Nv9HQDb/R0A2/0dANf9GPzX/Qz0z/0A7Mf8/OTD/QDox/0I8Mv9FPjT/RT81/0Y/Nv9GPzb/RkA2/0Y/ - Nv9GPzb/R0A1/0dANv9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/R0A2/0Y/Nf9HQDb/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9HQTb/Rj81/0dANv9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9IQTb/SEE3/0hBN/9HQDb/RT40/0Q+NP9GQDX/R0A2/0dANv9IQTb/SEE2/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTb/R0A2/0hBNv9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/RT80/0Q+M/9FPzX/SEE2/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9HQDb/RD40/0Q+NP9IQTb/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/QTsy/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRvaX9VUEf/TUc+/01HPv9NRz7/TUc+/01HPv9MRT3/SkQ7/0tF - PP9MRj3/TUc+/09JP/9PST//T0k//01HPv9LRTz/TEY8/05IPv9PST//T0k//09JP/9OSD//TUg+/0xG - Pf9LRDv/S0U8/0xGPf9MRj3/S0U8/0tEPP9LRjz/TEY9/01HPv9OSD7/TUc+/01HPv9NSD7/Tkg+/09J - P/9OSD//TEY9/0tEO/9KRDv/TEc9/01HPv9OSD7/Tkg+/05IPv9OSD7/TUc9/0tFO/9LRTv/TEY8/05I - Pv9OSD7/Tkg+/01IPv9NRz7/TUc9/0pEO/9IQzn/SUM6/0pEO/9KRDv/S0U8/01HPf9NRz3/TUc9/01H - Pf9NSD7/TUc9/0xGPP9OSD7/T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09J - P/9PST//T0k//09JP/9PST//T0k//01HPf9LRTz/Tkg+/09JP/9PST//T0k//09JP/9OST//T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09J - P/9PST//Tkg+/01IPv9OSD7/T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//05I - Pv9NRz3/S0U8/0tGPP9NRz3/Tkg+/01HPv9OSD7/T0k//09JP/9PST//T0k//09JP/9PST//T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//05IPv9OSD7/T0k//09JP/9PST//T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//01HPf9LRTv/SUM6/0tFPP9NSD7/T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//TUc+/0tFPP9NRz3/T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//0dC - Of8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwa2R/W1VM/1JNQ/9STUP/Uk1E/1NNRP9UTkT/U05E/1BL - Qf9RS0H/UEtB/1JNQ/9VT0X/VU9F/1VPRf9TTUT/UEtC/1NNRP9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9TTUP/UUtC/1FMQv9RTEP/UUxC/1BLQf9PS0D/UUtC/1JNQ/9TTkT/U01D/1JNQ/9STEP/Uk1D/1RO - RP9UTkT/U01E/1JNQ/9RTEL/UEtB/1JMQ/9STUP/U01E/1NNQ/9STUP/U05E/1NNQ/9STUP/UkxD/1NN - Q/9VT0X/VU9F/1VPRf9TTkT/VE5E/1NNRP9STEP/Uk1D/1NNQ/9STEP/UkxD/1FLQv9STEL/Uk1D/1FM - Qv9RTEL/UkxC/1JMQv9STUP/U01E/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1RORP9STUP/Uk1D/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1NO - RP9RTEH/T0pA/01IPv9OSUD/U01D/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1RORP9STkT/UUxC/01IPv9OST//UUxC/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VE5E/1FMQv9RTEL/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9MSD7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcWxlf15ZUP9XUUj/V1FJ/1lTSv9aVEv/W1VM/1pV - TP9YUkr/V1FJ/1ZQSP9YUkn/WlRL/1tVTP9aVUv/WlVL/1lTSv9aVUv/W1VM/1tVTP9bVUz/W1VM/1tV - TP9ZVEv/WVNK/1hSSv9XUkn/WVNK/1dRSf9WUEj/VlFI/1hSSf9YUkr/WVNK/1hSSf9WUEj/U05G/1NP - Rv9YUkn/WVNK/1pUS/9ZU0r/WVNK/1hSSv9ZU0r/WVNK/1lTSv9YUkn/WFJJ/1hTSv9ZVEv/WVRL/1lU - S/9ZU0r/WlRL/1pUS/9YUkn/WlVL/1tVTP9bVUz/WlVM/1tVTP9bVUz/WVRL/1lTSv9ZU0r/WVNK/1dS - Sf9WUEj/VVBH/1VQR/9WUUj/WVNK/1pVS/9bVUz/W1VM/1tVTP9bVUz/W1VM/1pVS/9ZU0r/WlVL/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/WlVL/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9aVUv/WVNK/1hSSf9YUkr/WVNK/1pVS/9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1pVS/9YUkr/WFJK/1hSSf9TTkb/Uk5F/1ZQ - SP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1lUS/9XUUn/WFNK/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/Uk1F/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNvaH9gWlP/W1ZN/1tVTP9bVk3/XlhP/2Ba - Uf9gWlH/X1pQ/11YTv9bVUz/XVdO/15YT/9eWU//X1lQ/15ZT/9dWE7/X1lQ/2BaUf9gWlH/YFpR/2Ba - Uf9fWlD/XlhP/11YTv9dWE7/XVhP/11YTv9dWE7/XlhP/15YT/9eWE//XVhP/15YT/9dWE//WlVM/1dS - Sv9VUEn/WlRM/11YTv9fWVD/XlhP/1xWTv9cV07/XVdO/15YT/9eWE//XFZN/1pVTP9cVk3/XVhO/19Z - UP9eWVD/XVhP/15ZT/9eWE//XFZN/19ZUP9gWlH/X1pR/19aUP9gWlH/X1pQ/15ZUP9eWE//XVhP/15Y - T/9cV07/W1ZN/1tWTf9cVk3/XVhO/19ZUP9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/XVhO/15Z - UP9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/19aUP9fWlD/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9fWVD/XVhP/11YT/9fWVD/XVhP/15Y - T/9eWVD/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9dWE//XVdO/19Z - UP9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/1dRSf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2cmt/ZF9X/2BbUv9fWlH/XllQ/2Fc - VP9jXlX/Y15V/2NeVf9iXVT/XllR/2BaUv9hXFP/YFtS/2FbU/9hXFP/X1pR/2JcVP9jXlX/Y15V/2Ne - Vf9jXlX/Y11V/2FcU/9fWlL/X1pS/2FcU/9hXFP/YVxT/2FcU/9hXFP/YlxU/2JcVP9iXVT/Yl1U/2Ba - Uv9cV0//WlRN/11YUP9hW1L/YlxU/2FcU/9fWlH/XllQ/11YUP9gW1L/YVtT/19aUv9cV0//XFdO/19Z - Uf9hXFP/YlxT/2FcU/9fWlH/XllR/19ZUf9iXFT/Y15V/2NdVf9jXVX/Y15V/2NeVf9jXVX/YVtT/2Bb - U/9hXFP/YVxT/2FcU/9hW1P/YVtT/2BbU/9iXVT/Y15V/2NdVf9hXFP/Y11V/2NeVf9jXlX/Y15V/2Jd - VP9iXVT/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXVX/Yl1U/2Nd - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2JdVP9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXVX/YFpS/2Bb - Uv9jXVX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9aVU3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAendwf2tmXv9lYFj/ZWFY/2Zh - WP9nYln/Z2JZ/2diWf9nYln/ZmFZ/2NfVv9kX1b/ZF9W/2JdVP9hXVT/YFxT/2JdVP9kX1f/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9mYVj/ZF9X/2VgV/9nYln/Z2JZ/2VgV/9lYFf/ZWBX/2ZhWP9mYVj/ZmFZ/2Zh - WP9lYFj/ZF9X/2VgV/9mYVj/ZmFZ/2ZhWP9kX1j/ZF9W/2NeVf9hXVT/YV1U/2FdU/9hXVT/XVlQ/11Z - UP9hXFP/ZWBY/2ZhWf9lYFf/Y15V/2JdVP9iXVX/ZWBY/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2Vg - WP9kX1f/ZF9X/2RfV/9lYFj/ZmFZ/2VgWP9kX1f/ZWBY/2VgWP9kX1b/ZF9X/2ZhWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Yl5V/2Fd - VP9kX1f/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/ZmFZ/2VgWP9mYVn/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9mYVn/ZWBX/2Jd - Vf9kX1b/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/XVhQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH96dH9xbGT/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/aGNb/2djW/9kX1f/YFxU/19bU/9jXlb/Z2Jb/2lk - XP9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9oY1v/Z2Nb/2hjW/9pZFz/amVd/2pl - Xf9oY1v/Z2Nb/2hjW/9qZV3/amVd/2plXf9qZV3/amVd/2hjXP9oY1v/ZmFZ/2NeV/9iXVX/Y15X/2Jd - Vv9jX1f/ZmJa/2lkXP9qZV3/aGNb/2ZhWv9kX1j/ZmFa/2hjW/9qZV3/amVd/2plXf9pZFz/aWRc/2pl - Xf9pZFz/aGNb/2ZhWv9mYlr/aGNb/2lkXP9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2diW/9pZF3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2Rf - WP9hXVX/ZWBY/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2hjW/9nYlr/aGNb/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/aGNc/2di - Wv9lYVn/Z2Jb/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2BbVP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBfHZ/cm1m/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/Z2Jb/2JeV/9fW1P/Y15X/2lk - Xf9qZV7/a2Ze/2plXf9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9rZl7/a2Ze/2tm - Xv9rZl7/aWRc/2hkXP9pZFz/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9pZV3/aWVd/2lkXP9jX1f/YV1V/2Nf - V/9kYFj/aGNb/2lkXP9rZl7/amVd/2diWv9kX1j/Yl5X/2djW/9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2plXf9oY1v/Z2Ja/2hjW/9pZF3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9pZFz/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9oZFz/a2Ze/2tm - Xv9mYlr/ZF9Y/2hjW/9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9pZF3/aGNb/2lk - XP9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/Z2Nb/2hj - W/9pZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2pl - Xf9pZFz/aWRc/2pmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9hXVX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgn13f3Nu - Zv9sZ1//bGdf/2tmX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9oZFz/ZGBY/2Vg - Wf9qZV3/a2Ze/2xnX/9qZV3/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2plXv9rZl7/a2Ze/2xnX/9sZ1//a2Ze/2plXf9qZV3/amVd/2plXf9qZV7/ZmFa/2Jd - Vv9kYFj/aGNb/2plXf9qZV7/a2Ze/2plXf9nYlr/Y15X/2RgWP9oY1z/a2Ze/2xnX/9sZ1//a2Ze/2xn - X/9sZ1//a2Ze/2plXf9qZV3/aWRc/2hjXP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9sZ1//aWRc/2ZhWf9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl//aWVd/2pl - Xf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//aWRc/2Vg - WP9lYFn/aWRc/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//Yl1W/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIJ+ - eH9zbmb/bGdf/2xnX/9qZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xf9qZV3/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9sZ1//bGdf/2plXf9oY1v/Z2Ja/2hkXP9pZFz/amVd/2hj - W/9kX1j/ZWBZ/2hjW/9pZV3/amVd/2tmXv9rZl7/aGRc/2VgWP9lYFn/aGNb/2tmXv9sZ1//a2Ze/2tm - Xv9sZ1//bGdf/2tmXv9qZV3/amVd/2lkXP9nY1v/aWRd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2lkXP9qZV3/a2Ze/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2tmXv9pZFz/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lk - XP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/a2Zf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2ll - Xf9mYVn/ZWFZ/2diW/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xv9pZFz/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2JdVv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACBfXd/cm1l/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9rZl7/ZmJa/2ZhWv9nYlv/aWRd/2pl - Xf9qZV3/Z2Jb/2VhWf9mYVn/aGNc/2plXf9rZl7/bGdf/2tmXv9qZV3/amVd/2tmXv9sZ1//a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//amVd/2plXf9oY1z/ZmFZ/2djW/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9pZF3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xf9lYVn/aGNc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2pl - Xf9qZV3/aWRd/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9pZF3/Z2Nb/2hjW/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9iXVb/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAgHx2f3BrZP9qZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//amVd/2lkXf9pZFz/a2Ze/2xnX/9sZ1//bGdf/2lkXf9nYlr/Z2Jb/2pl - Xf9qZV7/amVd/2lkXP9mYVr/ZmFZ/2diW/9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/bGdf/2xnX/9sZ1//bGdf/2plXf9qZV7/aWRc/2ZhWv9oY1v/amVd/2tmXv9sZ1//bGdf/2xn - X/9rZl7/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9pZF3/ZF9Y/2VgWf9qZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/aWRc/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2pl - Xf9pZFz/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//aWRd/2RgWP9jX1j/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//Yl1W/wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAH98dX9rZ1//Z2Ja/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV7/amVd/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xnX/9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pmXv9oZFz/ZmJa/2plXf9sZ1//bGdf/2xnX/9rZl7/aWRc/2hj - XP9qZV3/amVe/2plXf9pZFz/Z2Jb/2ZhWv9oY1v/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV3/amVd/2lkXf9oZFz/aWRc/2lkXP9qZV3/amVd/2pl - Xf9qZV3/aWRd/2diW/9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//amVe/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//amVd/2RfWP9lYFj/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lkXP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9pZFz/aGNc/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2plXf9lYVn/Y19X/2hjXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2JdVv8AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACAfHZ/bWlh/2hjXP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV3/ZmFa/2Fc - Vf9lYVn/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9oY1v/aWRc/2plXf9rZl7/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV7/aGRc/2hjW/9rZl7/bGdf/2xnX/9sZ1//bGdf/2tm - Xv9qZV3/amVd/2plXv9qZV3/amVd/2plXf9pZFz/aWRd/2plXf9qZV3/amVd/2plXf9qZV3/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2plXv9qZV3/amVd/2plXf9qZV3/aWRc/2lk - XP9qZV3/amVd/2hjXP9kYFj/Z2Jb/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//amVd/2diW/9oY1v/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9mYVr/aGNb/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9pZFz/Z2Ja/2diWv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/aGNb/2ZhWv9oY1v/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9iXlb2AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAgn13f3FsZf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amZe/2Rg - WP9eWVH/YFtU/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9oY1z/ZmFa/2hjW/9qZV3/amZe/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lkXP9pZF3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2plXf9qZV3/a2Ze/2xnX/9sZ1//a2Ze/2tmXv9qZV3/amVd/2plXf9pZFz/amVd/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/amVd/2plXf9qZV3/amVe/2plXf9qZV3/aWRc/2lk - XP9pZFz/a2Ze/2plXf9mYVr/Yl1W/2VhWf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2hjW/9mYlr/Z2Nb/2tnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZ1//aGRc/2llXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//amVd/2diWv9nY1v/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/Y15XzwAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIJ+eH9ybWX/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9qZV3/ZmFa/2VhWf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2pmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/aWVd/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/amVd/2pl - Xf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aGNc/2di - W/9oY1v/aWRc/2tmXv9rZl7/aGNb/2VgWf9mYVn/aGNc/2tnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9oY1z/aGNb/2hjXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/aWRd/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9pZFz/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2Zh - WXsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCfnh/cm1m/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2plXf9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/aWRd/2lkXf9pZF3/amVd/2lk - XP9oY1v/aGNb/2lkXP9qZV3/amVd/2lkXP9oY1z/aGNb/2plXv9rZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//aWVd/2lkXP9qZV3/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV3/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2hk - XOVrZl8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg354f3NuZv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV3/aGNb/2hjXP9pZFz/aWRc/2lk - XP9qZV3/aWRc/2lkXP9oZFz/aWRc/2lkXP9nYlr/aGNb/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9qZV3/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2llXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//cGtj/3Br - Y+9sZ185AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIN/eX9ybWX/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWRc/2pl - Xf9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVe/2ZhWv9nYlv/aWRc/2hk - XP9pZFz/a2Ze/2plXf9pZFz/aWRc/2lkXP9pZFz/aWRd/2lkXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWRc/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9vamL/d3Jr/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3h0bP95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3h0bP94c2z/eXRt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3p1bv+CfXf/jIiC/4yJ - gsB1cWkmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDf3l/cWxl/2tmXv9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lk - Xf9qZl7/a2Ze/2tmXv9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9nYlv/ZmJa/2lk - XP9qZV3/a2Ze/2tmXv9rZl7/amVd/2plXf9qZV3/amVd/2plXf9qZV3/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//amVe/2hjW/9pZF3/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/21oYP91cGn/iYV+25GNh3+YlI9/mZWQf5mVkH+ZlpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+ZlpF/mZaRf5mWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+ZlpF/mpaRf5qWkX+alpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+ZlpF/mZaQf5mWkH+ZlpB/mZaQf5mVkH+ZlpB/mZaQf5mW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5mWkX+YlI9+lpKMYo+L - hCYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhIB6f3FsZf9qZV3/aWRd/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/bGdf/2xnX/9rZl7/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2lk - XP9qZV3/bGdf/2xnX/9sZ1//bGdf/2plXf9qZV3/amVd/2plXf9pZFz/aWRc/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9oY1z/aWRc/2tmXv9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2lkXP9qZV3/bGdf/3Vwaf+Df3j0h4N8f3t2bwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIeDfH9zb2f/a2Ze/2tm - Xv9pZFz/aWRc/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Zf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9qZV3/amVd/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2plXf9oY1v/aWRc/2plXf9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//aWRc/2hjXP9pZV3/bGdf/2xn - X/9sZ1//a2Ze/2plXf9uaWH/enVu/4yIgvCOi4WQfXlyGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOi4V3fHdw/2xn - X/9sZ1//a2Ze/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/amVd/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9qZV3/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV7/aWRd/2tmXv9rZl7/bGdf/2tm - Xv9qZV3/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9pZF3/Z2Ja/2lkXP9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/aGNc/2lk - XP9rZl7/bWhg/3NvZ/+BfXb/ko+K0pKOiGZ/e3UMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmpeSUI6K - hP9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9pZV3/aWRc/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV7/amVd/2tmXv9sZ1//a2Ze/2tmXv9rZ1//bGdf/2xn - X/9sZ1//amVd/2lkXP9pZF3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/aGNb/2VgWf9mYVn/aGNb/2pl - Xf9qZV3/aWRc/2lkXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/aWRc/2lkXP9qZV7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/21o - YP9ybmb/gX12/5SQi/OcmZSni4eBPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJSQ - iwyuq6fudG9o/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9nY1v/ZF9Y/2VgWf9oZFz/amVe/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2plXf9pZFz/aGNb/2lkXP9qZV3/bGdf/2xnX/9sZ1//bGdf/2hjW/9iXVb/YVxV/2Rf - WP9qZV3/aWRc/2lkXP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV3/aWRd/2lkXP9qZV3/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/bGdf/29qYv90b2j/fXly/46K - hf+bmJPmo6Gcn4+Lhk6EgHkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAuLaycpqXkv9vamL/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9nYlv/YFxU/15aUv9jX1f/aWRc/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9qZV3/aWRd/2lkXP9pZF3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/ZF9Y/2Fd - Vv9kX1j/aWRc/2plXf9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2ZiWv9nYlv/amVd/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9taGD/cGtk/3Vwaf96dW7/hoJ8/5SRi/+fnJfhqKahrJKO - iWmTkIkoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJuYkwLPzcumnpuW/3RwaP9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9rZl7/YV1W/11ZUf9dWVH/Yl1W/2hjXP9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWRc/2tmXv9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2lkXP9nYlv/amVd/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Zf/2di - Wv9lYFn/ZmFa/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXv9mYVr/Z2Jb/2xo - YP9xbGT/c29n/3Zxav94c2z/f3t0/4yIgf+UkIv/m5iT+qSinNeuq6epop+bgZaTjU6Vko0YAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAjIiCAcLBvnO8urbvmpeS/4WBe/96dm7/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf93c2z/dXFq/3Zxa/94dGz/eHNs/29rZf9saWL/bWlj/3NvaP94dGz/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/d3Jr/3Nvaf90cGr/dnJr/3l1 - bf95dW3/eXVt/3l0bf93c2v/dXFq/3h0bP95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf92cmv/dXBq/3Zya/95dG3/fHdw/4N/eP+Ggnv/jImC/5CNh/+PjYb/kI2H/5aTjv+XlI//mZaS/5uY - k/+hn5rvqaei2LCuqcKzsKyqpaKdipiWkGybl5JImpaRKYqGgAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJmTCKyppU2koZxynZqVf5uXkn+alpF/mpaRf5qW - kX+alpF/mpaRf5mWkX+ZlpF/mJWQf5eUj3+XlI9/l5SPf5eTjn+Wko1/lpKNf5aTjn+Xk45/l5SPf5iU - j3+YlZB/mZWQf5mWkX+alpF/mpaRf5qWkX+alpF/mpaRf5mWkX+ZlZB/mZWQf5iVkH+XlI9/l5SPf5eU - j3+ZlZB/mZWQf5mVkH+ZlZB/mZWQf5mVkH+ZlZB/mZWQf5mVkH+ZlZB/mZWQf5mWkH+ZlpB/mZWQf5mV - kH+YlZB/mJSPf5eUj3+XlI9/mJSPf5eUj3KbmJRmm5iTZZ6alUygnZhMoJ2YTJ6blkCfnJcznZqVJJ2a - lRmLiIIGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - AAAAAAAA//////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///wAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/gA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf8AAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+AAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AH/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAB//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///wAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//8AAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - Af//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//4AAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - Af//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//wAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AH/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AB/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAf+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+AAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/AAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAP+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/+AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAf//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//8AAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - B///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAf//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAH///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///wAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAH///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//8AAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - D///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAH///8AAAAAAAAAAAAAAAAA/////////////////////////wAAAAAAAAAAAAAAAAP////////// - ///////////////AAAAAAAAAAAAAAAAD/////////////////////////8AAAAAAAAAAAAAAAB////// - ////////////////////wAAAAAAAAAAAAAAAf//////////////////////////gAAAAAAAAAAAAAAf/ - /////////////////////////+AAAAAAAAAAAAAAf///////////////////////////8AAAAAAAAAAA - AA/////////////////////////////8AAAAAAAAAAAf//////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////8yNzAzOTg= - - - \ No newline at end of file diff --git a/PROMS/Sync/SyncMany/sync.ico b/PROMS/Sync/SyncMany/sync.ico deleted file mode 100644 index 25da3cb6..00000000 Binary files a/PROMS/Sync/SyncMany/sync.ico and /dev/null differ diff --git a/PROMS/Sync/Thumbs.db b/PROMS/Sync/Thumbs.db deleted file mode 100644 index ac1e1a7f..00000000 Binary files a/PROMS/Sync/Thumbs.db and /dev/null differ diff --git a/PROMS/Sync/frmSync.cs b/PROMS/Sync/frmSync.cs deleted file mode 100644 index dcb91903..00000000 --- a/PROMS/Sync/frmSync.cs +++ /dev/null @@ -1,535 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; -using System.Xml; -using SevenZip; - -namespace Sync -{ - public partial class frmSync : Form - { - private List _CheckedOut; - private bool IsLoading = false; - public frmSync() - { - InitializeComponent(); - } - private void LoadSettings() - { - if (Properties.Settings.Default["Location"] != null) - Location = Properties.Settings.Default.Location; - if (Properties.Settings.Default["Size"] != null) - Size = Properties.Settings.Default.Size; - if (Properties.Settings.Default.DevelopmentFolder != "") - tbDevelopment.Text = Properties.Settings.Default.DevelopmentFolder; - if (Properties.Settings.Default.SourceSafeFolder != "") - tbSourceSafe.Text = Properties.Settings.Default.SourceSafeFolder; - if(Properties.Settings.Default.MailBoxDevelopmentFolder != "") - tbMailBox.Text = Properties.Settings.Default.MailBoxDevelopmentFolder; - if (Properties.Settings.Default.MailBoxSourceSafeFolder != "") - tbSSMailBox.Text = Properties.Settings.Default.MailBoxSourceSafeFolder; - } - private void frmSync_Load(object sender, EventArgs e) - { - LoadSettings(); - Setup(); - } - private void Setup() - { - // Setup Browse Buttons - btnBrwsDev.Tag = this.tbDevelopment; - btnBrwsSS.Tag = this.tbSourceSafe; - btnBrwsMail.Tag = this.tbMailBox; - btnBrwsSSMail.Tag = this.tbSSMailBox; - - } - private void btnBrowse_Click(object sender, EventArgs e) - { - TextBox tb = (TextBox)((Button)sender).Tag; - fbd.SelectedPath = tb.Text; - if (fbd.ShowDialog() == DialogResult.OK) - tb.Text = fbd.SelectedPath; - } - private void ClearResults() - { - _CheckedOut = new List(); - dgv.DataSource = null; - Application.DoEvents(); - } - private void FindCheckedOut(DirectoryInfo di) - { - FindCheckedOut(di.GetFiles()); - FindCheckedOut(di.GetDirectories()); - } - private void FindCheckedOut(DirectoryInfo[] directoryInfoList) - { - foreach (DirectoryInfo di in directoryInfoList) - FindCheckedOut(di); - } - private void FindCheckedOut(FileInfo[] fileInfoList) - { - foreach (FileInfo fi in fileInfoList) - FindCheckedOut(fi); - } - private void FindCheckedOut(FileInfo fi) - { - if (fi.Name.ToLower().EndsWith("scc")) return; - if (fi.Name.ToLower().EndsWith("sln")) return; - if (fi.Name.ToLower().EndsWith("csproj")) - { - // Find files that have been added to the new Project - List compileList = GetCompileList(fi.FullName); - FileInfo fi1csproj = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if (fi1csproj.Exists) - { - List compileList1 = GetCompileList(fi1csproj.FullName); - CompareLists(compileList, compileList1, fi, fi1csproj); - } - return; - } - if (fi.Name.ToLower().EndsWith("licx")) return; - FileInfo fi1 = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if ((fi1.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly) - AddToResults(fi, fi1); - } - - private void CompareLists(List compileList, List compileList1, FileInfo fi, FileInfo fi1) - { - // If anything is in compileList1 and not in CompileList add it to the results - foreach (string filename in compileList1) - if (!compileList.Contains(filename)) - AddToResults(fi, fi1, filename); - } - private void AddToResults(FileInfo fi, FileInfo fi1, string filename) - { - FileInfo newfi = new FileInfo(fi.DirectoryName + "/" + filename); - FileInfo newfi1 = new FileInfo(fi1.DirectoryName + "/" + filename); - if(!newfi.Exists)AddToResults(newfi, newfi1); // Only add if the file does not exist - } - private List GetCompileList(string fileName) - { - List retval = new List(); - XmlDocument doc = new XmlDocument(); - doc.Load(fileName); - XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); - foreach (XmlAttribute attrib in doc.DocumentElement.Attributes) - if (attrib.Name == "xmlns") - nsmgr.AddNamespace("ns", attrib.Value); - XmlNodeList xl = doc.DocumentElement.SelectNodes(@"//ns:Compile/@Include",nsmgr); - foreach (XmlAttribute xa in xl) - retval.Add(xa.Value); - xl = doc.DocumentElement.SelectNodes(@"//ns:None/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - if(xa.Value.ToUpper().EndsWith("SQL")) - retval.Add(xa.Value); - xl = doc.DocumentElement.SelectNodes(@"//ns:Content/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - if (xa.Value.ToUpper().EndsWith("DLL")) - retval.Add(xa.Value); - xl = doc.DocumentElement.SelectNodes(@"//ns:Content/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - if (xa.Value.ToUpper().EndsWith("XML")) - retval.Add(xa.Value); - xl = doc.DocumentElement.SelectNodes(@"//ns:EmbeddedResource/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - if (!xa.Value.ToUpper().EndsWith("LICX")) - retval.Add(xa.Value); - return retval; - } - private void AddToResults(FileInfo fiSS,FileInfo fiDev) - { - FileCompare fc = new FileCompare(fiDev, fiSS); - //if(!_OnlyContentDifferent || (fc.Different && (fc.DevModified != null))) - if (!_OnlyContentDifferent || (fc.Different)) - _CheckedOut.Add(fc); - //if (tbResults.Text == "") tbResults.Text = "Found:"; - //tbResults.Text += "\r\n" + fiDev.FullName + " - " + ((fiDev.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly ? "" : "ReadOnly"); - } - private void ClearMailBox() - { - DeleteFolder(new DirectoryInfo(tbMailBox.Text)); - DeleteFolder(new DirectoryInfo(tbSSMailBox.Text)); - } - private void DeleteFolder(DirectoryInfo directoryInfo) - { - if (directoryInfo.Exists) - { - AdjustAttributes(directoryInfo); - directoryInfo.Delete(true); - } - } - private void AdjustAttributes(DirectoryInfo directoryInfo) - { - foreach (DirectoryInfo di in directoryInfo.GetDirectories()) - AdjustAttributes(di); - foreach (FileInfo fi in directoryInfo.GetFiles()) - AdjustAttribute(fi); - } - private void AdjustAttribute(FileInfo fi) - { - fi.Attributes &= (fi.Attributes ^ FileAttributes.ReadOnly);// Turn-Off ReadOnly Attribute - fi.Attributes &= (fi.Attributes ^ FileAttributes.Hidden);// Turn-Off Hidden Attribute - } - private void frmSync_FormClosing(object sender, FormClosingEventArgs e) - { - Properties.Settings.Default.Location = Location; - Properties.Settings.Default.Size = Size; - Properties.Settings.Default.DevelopmentFolder = tbDevelopment.Text; - Properties.Settings.Default.SourceSafeFolder = tbSourceSafe.Text; - Properties.Settings.Default.MailBoxDevelopmentFolder = tbMailBox.Text; - Properties.Settings.Default.MailBoxSourceSafeFolder = tbSSMailBox.Text; - Properties.Settings.Default.Save(); - } - private void exitToolStripMenuItem_Click(object sender, EventArgs e) - { - this.Close(); - } - private void clearToolStripMenuItem_Click(object sender, EventArgs e) - { - ClearMailBox(); - } - private void buildToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearMailBox(); - if (_CheckedOut == null) - checkedOutToolStripMenuItem_Click(sender, e); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) - { - fc.MoveDevToMailBox(tbDevelopment.Text, tbMailBox.Text); - fc.MoveSSToMailBox(tbSourceSafe.Text, tbSSMailBox.Text); - } - } - BuildZipOfMailBox(tbMailBox.Text); - } - private void BuildZipOfMailBox(string mailbox) - { - SevenZipCompressor.SetLibraryPath(Application.StartupPath + @"\7z.dll"); - SevenZipCompressor cmpr = new SevenZipCompressor(); - cmpr.PreserveDirectoryRoot = true; - string zipName = string.Format("{0} To SS {1}.7z", mailbox, DateTime.Now.ToString("yyyyMMdd HHmm")); - cmpr.CompressDirectory(mailbox, zipName, "*.*", true); - MessageBox.Show(string.Format("{0} created!", zipName), "Mailbox Zip Created", MessageBoxButtons.OK, MessageBoxIcon.Information); - - //if (System.IO.File.Exists(@"c:\program files\7-zip\7z.exe")) - //{ - // string args = string.Format(@"a -t7z ""{0} To SS {1}.7z"" ""{0}\*.*"" -r", mailbox, DateTime.Now.ToString("yyyyMMdd HHmm")); - // System.Diagnostics.Process p = System.Diagnostics.Process.Start(@"c:\program files\7-zip\7z", args); - // p.WaitForExit(); - //} - //"c:\program files\7-zip\7z" a -t7z "C:\Development\MailBox\Proms To SS 20120424 1850.7z" "C:\Development\MailBox\Proms\*.*" -r - } - private void checkedOutToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindCheckedOut(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void syncAllToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - fc.MoveToDevelopment(); - } - } - private void restoreUnchangedToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if(!fc.Different || fc.DevModified == null) - fc.MoveToDevelopment(); - } - } - private void restoreSelectedToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) fc.MoveToDevelopment(); - } - } - private void restoreAllToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - fc.MoveToDevelopment(); - } - } - private List SelectedList - { - get - { - dgv.EndEdit(); - List fcList = new List(); - foreach (DataGridViewCell dgc in dgv.SelectedCells) - { - FileCompare fc = dgv.Rows[dgc.RowIndex].DataBoundItem as FileCompare; - if (fc != null && fcList.Contains(fc) == false) - fcList.Add(fc); - } - return fcList; - } - } - private void compareToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - CompareOneFile(fc.FileName, fc.SSFileName); - } - } - private static void CompareOneFile(string fileDev, string fileSS) - { - Console.WriteLine("Compare {0} and {1}", fileDev, fileSS); - string progname = string.Empty; - if (System.IO.File.Exists(@"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe")) - progname = @"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe"; - if (System.IO.File.Exists(@"C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\UC.exe")) - progname = @"C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\UC.exe"; - // string cmd = string.Format("\"{0}\" -t \"{1}\" \"{2}\"", progname, fc.FileName, fc.SSFileName); - System.Diagnostics.ProcessStartInfo psi = - new System.Diagnostics.ProcessStartInfo(progname, string.Format(@" -t ""{0}"" ""{1}""", fileDev, fileSS)); - System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi); - } - private void restoreToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - fc.MoveToDevelopment(); - } - } - private void differentToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void SetColumnWidth() - { - IsLoading = true; - if (Properties.Settings.Default["Widths"] == null) - { - dgv.Columns[0].Width = 60; - dgv.Columns[1].Visible = false; - dgv.Columns[2].Width = 125; - dgv.Columns[3].Width = 125; - dgv.Columns[4].Width = 50; - dgv.Columns[5].Width = 500; - } - else - { - for (int i = 0; i < Properties.Settings.Default.Widths.Count; i++) - { - string sWidth = Properties.Settings.Default.Widths[i]; - if (sWidth == "Invisible") - dgv.Columns[i].Visible = false; - else - dgv.Columns[i].Width = int.Parse(sWidth); - } - } - dgv.Columns[1].Visible = false; - IsLoading = false; - } - private void FindDifferent(DirectoryInfo di) - { - FindDifferent(di.GetFiles()); - FindDifferent(di.GetDirectories()); - } - private void FindDifferent(DirectoryInfo[] directoryInfoList) - { - foreach (DirectoryInfo di in directoryInfoList) - FindDifferent(di); - } - private void FindDifferent(FileInfo[] fileInfoList) - { - foreach (FileInfo fi in fileInfoList) - FindDifferent(fi); - } - private void FindDifferent(FileInfo fi) - { - if (fi.Name.ToLower().EndsWith("scc")) return; - if (fi.Name.ToLower().EndsWith("sln")) return; - if (fi.Name.ToLower().EndsWith("csproj")) - { - // Find files that have been added to the new Project - List compileList = GetCompileList(fi.FullName); - FileInfo fi1csproj = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if (fi1csproj.Exists) - { - List compileList1 = GetCompileList(fi1csproj.FullName); - CompareLists(compileList, compileList1, fi, fi1csproj); - } - return; - } - if (fi.Name.ToLower().EndsWith("licx")) return; - FileInfo fiD = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - FileInfo fiS = fi; - // Only check Read-Only flag, other attributes are unimportant - if (fiS.LastWriteTimeUtc != fiD.LastWriteTimeUtc || (fiS.Attributes & FileAttributes.ReadOnly ) != (fiD.Attributes & FileAttributes.ReadOnly )) - AddToResults(fi, fiD); - } - private void dgv_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) - { - if (!IsLoading) - { - System.Collections.Specialized.StringCollection widths = new System.Collections.Specialized.StringCollection(); - foreach (DataGridViewColumn col in dgv.Columns) - widths.Add(col.Visible ? col.Width.ToString() : "Invisible"); - Properties.Settings.Default.Widths = widths; - Properties.Settings.Default.Save(); - } - } - private bool _OnlyContentDifferent = false; - private void contentDifferentToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearResults(); - _OnlyContentDifferent = true; - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - _OnlyContentDifferent = false; - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void frmSync_LocationChanged(object sender, EventArgs e) - { - Rectangle rec = Screen.GetWorkingArea(this); - int newLeft = Left; - int newTop = Top; - if (Math.Abs(Left - rec.X) < 10) newLeft = rec.X; - if (Math.Abs(Top - rec.Y) < 10) newTop = rec.Y; - if (Math.Abs(rec.X + rec.Width - Right) < 10) newLeft = rec.X + rec.Width - Width; - if (Math.Abs(rec.Y + rec.Height - Bottom) < 10) newTop = rec.Y + rec.Height - Height; - if (newTop != Top || newLeft != Left) - Location = new Point(newLeft, newTop); - } - private void restoreReadOnlyToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ReadOnly) fc.MoveToDevelopment(); - } - } - private void listToClipboardToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - StringBuilder sb = new StringBuilder(); - int lenFolder = tbDevelopment.Text.Length; - string lastFolder = ""; - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) - { - FileInfo fi = new FileInfo(fc.FileName); - FileInfo fis = new FileInfo(fc.SSFileName); - string folder = fi.Directory.FullName.Substring(lenFolder + 1); - if (folder != lastFolder) - { - sb.Append(folder + ":\r\n"); - lastFolder = folder; - } - sb.Append((fis.Exists ? "" : " =>NEW") + "\t" + fi.Name + "\r\n"); - } - } - try - { - sb.Append("\r\nInternal Release:\r\n"); - sb.Append("\r\nExternal Release:\r\n"); - sb.Append("\r\nTesting Performed:\r\n"); - sb.Append("\r\nTesting Requirements:\r\n"); - Clipboard.Clear(); - Clipboard.SetText(sb.ToString()); - MessageBox.Show(sb.ToString(), "Copied to Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - catch (Exception ex) - { - StringBuilder sb2 = new StringBuilder(); - string prefix = ""; - while (ex != null) - { - sb2.AppendLine(string.Format("{0}{1} - {2}",prefix, ex.GetType().Name, ex.Message)); - prefix += " "; - } - MessageBox.Show(sb2.ToString(), "Error saving Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void dgv_MouseDown(object sender, MouseEventArgs e) - { - dgv.ClearSelection(); - DataGridView.HitTestInfo info = dgv.HitTest(e.X, e.Y); - if (info.RowIndex < 0) return; - dgv.CurrentCell = dgv[0, info.RowIndex]; - dgv.Rows[info.RowIndex].Selected = true; - } - - private void selectAllToolStripMenuItem_Click(object sender, EventArgs e) - { - if (_CheckedOut == null || _CheckedOut.Count == 0) - { - MessageBox.Show("Don't you really think you should get a list first!", "Hey Moron!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop); - return; - } - foreach (FileCompare fc in _CheckedOut) fc.ToProcess = true; - dgv.Refresh(); - } - - private void selectNoneToolStripMenuItem_Click(object sender, EventArgs e) - { - if (_CheckedOut == null || _CheckedOut.Count == 0) - { - MessageBox.Show("Don't you really think you should get a list first!", "Hey Moron!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop); - return; - } - foreach (FileCompare fc in _CheckedOut) fc.ToProcess = false; - dgv.Refresh(); - } - - private void compareSourceSafeToolStripMenuItem_Click(object sender, EventArgs e) - { - // Compare SS version with SS version from Mailbox - dgv.EndEdit(); - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - CompareOneFile(fc.SSFileName, fc.SSFileName.Replace(tbSourceSafe.Text, tbSSMailBox.Text)); - } - } - - private void compareMailboxToolStripMenuItem_Click(object sender, EventArgs e) - { - // Compare MailBox version with Mailbox Source Safe version - dgv.EndEdit(); - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - CompareOneFile(fc.FileName, fc.FileName.Replace(tbDevelopment.Text, tbSSMailBox.Text)); - } - } - } -} \ No newline at end of file diff --git a/PROMS/Sync/iSync-128x128.png b/PROMS/Sync/iSync-128x128.png deleted file mode 100644 index b6293d16..00000000 Binary files a/PROMS/Sync/iSync-128x128.png and /dev/null differ diff --git a/PROMS/Sync/iSync.ico b/PROMS/Sync/iSync.ico deleted file mode 100644 index af4a5cb4..00000000 Binary files a/PROMS/Sync/iSync.ico and /dev/null differ diff --git a/PROMS/Sync/sync.ico b/PROMS/Sync/sync.ico deleted file mode 100644 index 25da3cb6..00000000 Binary files a/PROMS/Sync/sync.ico and /dev/null differ diff --git a/PROMS/xxxSync/7zip/7z.dll b/PROMS/xxxSync/7zip/7z.dll deleted file mode 100644 index 2bdaed6a..00000000 Binary files a/PROMS/xxxSync/7zip/7z.dll and /dev/null differ diff --git a/PROMS/xxxSync/7zip/7z64.dll b/PROMS/xxxSync/7zip/7z64.dll deleted file mode 100644 index f4f869f9..00000000 Binary files a/PROMS/xxxSync/7zip/7z64.dll and /dev/null differ diff --git a/PROMS/xxxSync/7zip/SevenZipSharp.dll b/PROMS/xxxSync/7zip/SevenZipSharp.dll deleted file mode 100644 index f588f8a2..00000000 Binary files a/PROMS/xxxSync/7zip/SevenZipSharp.dll and /dev/null differ diff --git a/PROMS/xxxSync/ActiveSync_icon_by_alex3305.png b/PROMS/xxxSync/ActiveSync_icon_by_alex3305.png deleted file mode 100644 index 390fe453..00000000 Binary files a/PROMS/xxxSync/ActiveSync_icon_by_alex3305.png and /dev/null differ diff --git a/PROMS/xxxSync/Sync.sln b/PROMS/xxxSync/Sync.sln deleted file mode 100644 index cdbac3a0..00000000 --- a/PROMS/xxxSync/Sync.sln +++ /dev/null @@ -1,37 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.30723.0 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sync", "Sync\Sync.csproj", "{400F2DAC-E405-4C1B-A388-5120FCF59DF0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SyncMany", "SyncMany\SyncMany.csproj", "{256A41AF-440F-42FE-A9B1-2CE36F1261A2}" -EndProject -Global - GlobalSection(SourceCodeControl) = preSolution - SccNumberOfProjects = 3 - SccLocalPath0 = . - SccProjectUniqueName1 = Sync\\Sync.csproj - SccLocalPath1 = Sync - SccProjectUniqueName2 = SyncMany\\SyncMany.csproj - SccProjectName2 = \u0022$/PROMS/Sync/SyncMany\u0022,\u0020LEEAAAAA - SccLocalPath2 = SyncMany - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Release|Any CPU.Build.0 = Release|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/PROMS/xxxSync/Sync/7z.dll b/PROMS/xxxSync/Sync/7z.dll deleted file mode 100644 index 2bdaed6a..00000000 Binary files a/PROMS/xxxSync/Sync/7z.dll and /dev/null differ diff --git a/PROMS/xxxSync/Sync/7z64.dll b/PROMS/xxxSync/Sync/7z64.dll deleted file mode 100644 index f4f869f9..00000000 Binary files a/PROMS/xxxSync/Sync/7z64.dll and /dev/null differ diff --git a/PROMS/xxxSync/Sync/FileCompare.cs b/PROMS/xxxSync/Sync/FileCompare.cs deleted file mode 100644 index 44b9878e..00000000 --- a/PROMS/xxxSync/Sync/FileCompare.cs +++ /dev/null @@ -1,141 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; - -namespace Sync -{ - class FileCompare - { - private FileInfo _Developement; - private FileInfo _SourceSafe; - private bool _ToProcess = false; - public bool ToProcess - { - get { return _ToProcess; } - set { _ToProcess = value; } - } - public string FileName - { - get { return _Developement.FullName; } - } - public Nullable DevModified - { - get - { - if (_Developement.Exists) - return _Developement.LastWriteTime; - return null; - } - } - public Nullable SSModified - { - get - { - if(_SourceSafe.Exists) - return _SourceSafe.LastWriteTime; - return null; - } - } - private bool _Different; - public bool Different - { - get { return _Different; } - } - public string SSFileName - { - get { return _SourceSafe.FullName; } - } - private bool _ReadOnly; - public bool ReadOnly - { - get { return _ReadOnly; } - } - private bool _Merge = false; - public bool Merge - { - get { return _Merge; } - set { _Merge = value; } - } - public FileCompare(FileInfo development, FileInfo sourceSafe) - { - _Developement = development; - _SourceSafe = sourceSafe; - _Different = DifferentContents(development, sourceSafe); - _ToProcess = _Different; - _ReadOnly = (development.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly; - } - public static bool DifferentContents(FileInfo development, FileInfo sourceSafe) - { - string strDev =ReadFile(development); - string strSS = ReadFile(sourceSafe); - return strDev != strSS; - } - private static string ReadFile(FileInfo fi) - { - if (fi.Exists == false) return ""; - TextReader tr = fi.OpenText(); - string retval = tr.ReadToEnd(); - tr.Close(); - return retval; - } - public void MoveToDevelopment() - { - if (_Developement.Exists) - { - _Developement.Attributes &= (_Developement.Attributes ^ FileAttributes.ReadOnly);// Turn-Off ReadOnly Attribute - _Developement.Attributes &= (_Developement.Attributes ^ FileAttributes.Hidden);// Turn-Off Hidden Attribute - } - BuildFolder(_Developement.Directory); - if(_SourceSafe.Exists)_SourceSafe.CopyTo(_Developement.FullName , true); - } - public void MoveDevToMailBox(string devFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_Developement.FullName.Replace(devFolder, mailboxFolder)); - BuildFolder(fi1.Directory); - if (fi1.Exists) fi1.IsReadOnly = false; - if(_Developement.Exists)_Developement.CopyTo(fi1.FullName,true); - } - } - public void MoveMailBoxToDev(string devFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_Developement.FullName.Replace(devFolder, mailboxFolder)); - BuildFolder(_Developement.Directory); - if (fi1.Exists) fi1.IsReadOnly = false; - if (_Developement.Exists) fi1.CopyTo(_Developement.FullName, true); - } - } - public void MoveSSToMailBox(string SSFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_SourceSafe.FullName.Replace(SSFolder, mailboxFolder)); - BuildFolder(fi1.Directory); - if (fi1.Exists) fi1.IsReadOnly = false; - if (_SourceSafe.Exists) _SourceSafe.CopyTo(fi1.FullName, true); - } - } - public void MoveMailBoxToSS(string SSFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_SourceSafe.FullName.Replace(SSFolder, mailboxFolder)); - BuildFolder(fi1.Directory); - if (fi1.Exists) fi1.IsReadOnly = false; - if (_SourceSafe.Exists) fi1.CopyTo(_SourceSafe.FullName, true); - } - } - private static void BuildFolder(DirectoryInfo directoryInfo) - { - if (!directoryInfo.Exists) - { - BuildFolder(directoryInfo.Parent); - directoryInfo.Create(); - } - } - } -} diff --git a/PROMS/xxxSync/Sync/FileCompare.cs.bak b/PROMS/xxxSync/Sync/FileCompare.cs.bak deleted file mode 100644 index 11f24c99..00000000 --- a/PROMS/xxxSync/Sync/FileCompare.cs.bak +++ /dev/null @@ -1,122 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; - -namespace Sync -{ - class FileCompare - { - private FileInfo _Developement; - private FileInfo _SourceSafe; - private bool _ToProcess = false; - public bool ToProcess - { - get { return _ToProcess; } - set { _ToProcess = value; } - } - public string FileName - { - get { return _Developement.FullName; } - } - public Nullable DevModified - { - get - { - if (_Developement.Exists) - return _Developement.LastWriteTime; - return null; - } - } - public Nullable SSModified - { - get - { - if(_SourceSafe.Exists) - return _SourceSafe.LastWriteTime; - return null; - } - } - private bool _Different; - public bool Different - { - get { return _Different; } - } - public string SSFileName - { - get { return _SourceSafe.FullName; } - } - public FileCompare(FileInfo development, FileInfo sourceSafe) - { - _Developement = development; - _SourceSafe = sourceSafe; - _Different = DifferentContents(development, sourceSafe); - _ToProcess = _Different; - } - public static bool DifferentContents(FileInfo development, FileInfo sourceSafe) - { - string strDev =ReadFile(development); - string strSS = ReadFile(sourceSafe); - return strDev != strSS; - } - private static string ReadFile(FileInfo fi) - { - if (fi.Exists == false) return ""; - TextReader tr = fi.OpenText(); - string retval = tr.ReadToEnd(); - tr.Close(); - return retval; - } - public void MoveToDevelopment() - { - //if (_Developement.Attributes & FileAttributes.ReadOnly == FileAttributes.ReadOnly) - if (_Developement.Exists) _Developement.Attributes &= (_Developement.Attributes ^ FileAttributes.ReadOnly); - BuildFolder(_Developement.Directory); - if(_SourceSafe.Exists)_SourceSafe.CopyTo(_Developement.FullName , true); - } - public void MoveDevToMailBox(string devFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_Developement.FullName.Replace(devFolder, mailboxFolder)); - BuildFolder(fi1.Directory); - if(_Developement.Exists)_Developement.CopyTo(fi1.FullName,true); - } - } - public void MoveMailBoxToDev(string devFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_Developement.FullName.Replace(devFolder, mailboxFolder)); - BuildFolder(_Developement.Directory); - fi1.CopyTo(_Developement.FullName, true); - } - } - public void MoveSSToMailBox(string SSFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_SourceSafe.FullName.Replace(SSFolder, mailboxFolder)); - BuildFolder(fi1.Directory); - if(_SourceSafe.Exists) _SourceSafe.CopyTo(fi1.FullName, true); - } - } - public void MoveMailBoxToSS(string SSFolder, string mailboxFolder) - { - if (ToProcess) - { - FileInfo fi1 = new FileInfo(_SourceSafe.FullName.Replace(SSFolder, mailboxFolder)); - BuildFolder(fi1.Directory); - if(fi1.Exists)fi1.CopyTo(_SourceSafe.FullName, true); - } - } - private static void BuildFolder(DirectoryInfo directoryInfo) - { - if (!directoryInfo.Exists) - { - BuildFolder(directoryInfo.Parent); - directoryInfo.Create(); - } - } - } -} diff --git a/PROMS/xxxSync/Sync/Program.cs b/PROMS/xxxSync/Sync/Program.cs deleted file mode 100644 index 8de31e2d..00000000 --- a/PROMS/xxxSync/Sync/Program.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; - -namespace Sync -{ - static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new frmSync()); - } - } -} \ No newline at end of file diff --git a/PROMS/xxxSync/Sync/Properties/AssemblyInfo.cs b/PROMS/xxxSync/Sync/Properties/AssemblyInfo.cs deleted file mode 100644 index fc96276e..00000000 --- a/PROMS/xxxSync/Sync/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Sync")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Volian Enterprises, Inc.")] -[assembly: AssemblyProduct("Sync")] -[assembly: AssemblyCopyright("Copyright © Volian Enterprises, Inc. 2007")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("5e74e740-f6c7-46e4-a77d-2353564108b6")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/PROMS/xxxSync/Sync/Properties/Resources.Designer.cs b/PROMS/xxxSync/Sync/Properties/Resources.Designer.cs deleted file mode 100644 index 3b8c4ead..00000000 --- a/PROMS/xxxSync/Sync/Properties/Resources.Designer.cs +++ /dev/null @@ -1,133 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.18408 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Sync.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [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() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [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("Sync.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture { - get { - return resourceCulture; - } - set { - resourceCulture = value; - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon iSync { - get { - object obj = ResourceManager.GetObject("iSync", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap iSync_128x128 { - get { - object obj = ResourceManager.GetObject("iSync_128x128", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon wi0124_16 { - get { - object obj = ResourceManager.GetObject("wi0124_16", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon wi0124_24 { - get { - object obj = ResourceManager.GetObject("wi0124_24", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon wi0124_32 { - get { - object obj = ResourceManager.GetObject("wi0124_32", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon wi0124_48 { - get { - object obj = ResourceManager.GetObject("wi0124_48", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - - /// - /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). - /// - internal static System.Drawing.Icon wi0124_64 { - get { - object obj = ResourceManager.GetObject("wi0124_64", resourceCulture); - return ((System.Drawing.Icon)(obj)); - } - } - } -} diff --git a/PROMS/xxxSync/Sync/Properties/Resources.resx b/PROMS/xxxSync/Sync/Properties/Resources.resx deleted file mode 100644 index 2979ec09..00000000 --- a/PROMS/xxxSync/Sync/Properties/Resources.resx +++ /dev/null @@ -1,2380 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - AAABAAQAgIAAAAEAIAAoCAEARgAAADAwAAABACAAqCUAAG4IAQAgIAAAAQAgAKgQAAAWLgEAEBAAAAEA - IABoBAAAvj4BACgAAACAAAAAAAEAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAwAA - AAYAAAAIAAAACgAAAA0AAAAPAAAAEAAAABEAAAATAAAAEwAAABQAAAAUAAAAEwAAABMAAAARAAAAEAAA - AA8AAAANAAAACgAAAAgAAAAGAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAAwAAAAYAAAAKAAAADgAAABMAAAAZAAAAIAAAACUAAAArAAAALgAAADMAAAA2AAAAOAAA - ADoAAAA8AAAAPQAAAD0AAAA8AAAAOgAAADgAAAA2AAAAMwAAAC4AAAArAAAAJQAAACAAAAAZAAAAEwAA - AA4AAAAKAAAABgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAACgAAABAAAAAXAAAAHwAAACgAAAAxAAAAOwAA - AEYAAABPAAAAWAAAAGAAAABmAAAAbAAAAHAAAAB0AAAAeAAAAHoAAAB8AAAAfAAAAHoAAAB4AAAAdAAA - AHAAAABsAAAAZgAAAGAAAABYAAAATwAAAEYAAAA7AAAAMQAAACgAAAAfAAAAFwAAABAAAAAKAAAABAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAKAAAAEQAA - ABwAAAAnAAAANAAAAEEAAABPAAAAXQAAAGoAAAB4ExMTkiQkJKotLS27NTU1yT09PddGRkbjS0tL6VBQ - UO9UVFT0WVlZ+llZWfpZWVn6WVlZ+lRUVPRQUFDvS0tL6UZGRuM9PT3XNjY2yS0tLbskJCSqExMTkgAA - AHgAAABqAAAAXQAAAE8AAABBAAAANAAAACcAAAAcAAAAEQAAAAoAAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAAwAAAAcAAAAPAAAAGQAAACcAAAA2AAAARwAAAFkAAABqDw8PiBoaGqMwMDDEQ0ND4E1N - Te9WVlb4Xl5e/2RkZP9vb2//fHx8/4iIiP+RkZH/mZmZ/6Ghof+np6f/q6ur/6urq/+np6f/oaGh/5qa - mv+SkpL/iIiI/3x8fP9wcHD/ZGRk/19fX/9XV1f4Tk5O70REROAxMTHEHBwcow8PD4gAAABqAAAAWQAA - AEcAAAA2AAAAJwAAABkAAAAPAAAABwAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAAoAAAATAAAAIQAAADEAAABEAAAAWAAA - AG4RERGRLS0tv0FBQd5RUVH1XFxc/2lpaf+AgID/l5eX/6ysrP++vr7/y8vL/9XV1f/d3d3/5ubm/+zs - 7P/x8fH/9vb2//n5+f/6+vr/+vr6//n5+f/29vb/8vLy/+3t7f/m5ub/39/f/9fX1//Nzc3/v7+//66u - rv+Xl5f/goKC/2pqav9dXV3/UVFR9UFBQd4tLS2/ERERkQAAAG4AAABYAAAARAAAADEAAAAhAAAAEwAA - AAoAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAA - AAoAAAAVAAAAJQAAADkAAABPAAAAZg4ODooqKiq7QkJC41VVVfxkZGT/fn5+/52dnf+3t7f/zc3N/93d - 3f/o6Oj/8fHx//f39//6+vr/+/v7//z8/P/8/Pz//v7+//7+/v////////////////////////////// - //////////////7+/v/+/v7//v7+//v7+//6+vr/9PT0/+vr6//f39//z8/P/7i4uP+enp7/gYGB/2Vl - Zf9WVlb8Q0ND4y0tLbsODg6KAAAAZgAAAE8AAAA5AAAAJQAAABUAAAAKAAAABAAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAoAAAAVAAAAJgAAADwAAABVAAAAbxkZGaI7OzvYTk5O9mJi - Yv+BgYH/o6Oj/8HBwf/X19f/5+fn//Hx8f/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//z8 - /P/+/v7//v7+/////////////////////////////////////////////v7+//7+/v/8/Pz//Pz8//v7 - +//7+/v/+vr6//r6+v/39/f/9PT0/+rq6v/a2tr/w8PD/6ampv+EhIT/ZGRk/1BQUPY8PDzYGhoaogAA - AG8AAABVAAAAPAAAACYAAAAVAAAACgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAASAAAAIwAA - ADoAAABVAgICcyMjI7JCQkLlV1dX/3Nzc/+Xl5f/u7u7/9XV1f/l5eX/7e3t//Hx8f/y8vL/9PT0//X1 - 9f/29vb/9/f3//n5+f/6+vr/+/v7//v7+//8/Pz//Pz8//7+/v/+/v7///////////////////////// - ///////////////////+/v7//v7+//z8/P/8/Pz/+/v7//v7+//6+vr/+fn5//n5+f/39/f/9vb2//X1 - 9f/x8fH/6Ojo/9nZ2f+9vb3/m5ub/3V1df9ZWVn/Q0ND5SUlJbICAgJzAAAAVQAAADoAAAAjAAAAEgAA - AAcAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAANAAAAHAAAADQAAABQAAAAbiQkJLBDQ0PpXFxc/319ff+mpqb/yMjI/9zc - 3P/n5+f/6+vr/+3t7f/w8PD/8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6+v/6+vr/+/v7//z8 - /P/8/Pz//v7+//7+/v///////////////////////////////////////v7+//7+/v/+/v7//Pz8//z8 - /P/7+/v/+/v7//r6+v/5+fn/9/f3//f39//29vb/9fX1//T09P/y8vL/8PDw/+zs7P/h4eH/zc3N/6mp - qf+BgYH/XV1d/0ZGRukkJCSwAAAAbgAAAFAAAAA0AAAAHAAAAA0AAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAJAAAAFgAAACsAAABGAAAAZRoa - GqFBQUHnW1tb/4CAgP+pqan/y8vL/9/f3//m5ub/6Ojo/+vr6//s7Oz/7e3t/+/v7//x8fH/8vLy//T0 - 9P/19fX/9vb2//f39//5+fn/+vr6//r6+v/7+/v//Pz8//z8/P/+/v7//v7+//7+/v////////////// - ///////////////////+/v7//v7+//7+/v/8/Pz//Pz8//v7+//7+/v/+vr6//n5+f/39/f/9vb2//X1 - 9f/09PT/9PT0//Ly8v/w8PD/7+/v/+3t7f/r6+v/4uLi/9DQ0P+urq7/g4OD/11dXf9DQ0PnHBwcowAA - AGUAAABGAAAAKwAAABYAAAAJAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAEAAAADgAAACAAAAA6AAAAWQ8PD4g0NDTUUlJS/nl5ef+mpqb/x8fH/9vb2//i4uL/5eXl/+fn - 5//o6Oj/6urq/+vr6//t7e3/7+/v//Dw8P/x8fH/8vLy//T09P/19fX/9/f3//f39//5+fn/+vr6//v7 - +//8/Pz//Pz8//7+/v/+/v7//v7+//////////////////////////////////7+/v/+/v7//v7+//z8 - /P/8/Pz/+/v7//r6+v/6+vr/+fn5//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/v7+//7e3t/+zs - 7P/r6+v/5+fn/+Dg4P/Nzc3/qamp/3x8fP9VVVX+Nzc31A8PD4gAAABZAAAAOgAAACAAAAAOAAAABAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABwAAABQAAAArAAAASQAAAG0mJia4SEhI9Gxs - bP+ZmZn/v7+//9XV1f/f39//4eHh/+Li4v/l5eX/5ubm/+fn5//q6ur/6+vr/+zs7P/t7e3/8PDw//Hx - 8f/y8vL/9PT0//X19f/29vb/9/f3//n5+f/6+vr/+/v7//v7+//8/Pz//v7+//7+/v/+/v7///////// - /////////////////////////v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+vr6//n5+f/5+fn/9/f3//b2 - 9v/19fX/9PT0//Ly8v/x8fH/8PDw/+/v7//s7Oz/6+vr/+rq6v/o6Oj/5+fn/+Tk5P/b29v/xMTE/52d - nf9wcHD/SUlJ9CgoKLgAAABtAAAASQAAACsAAAAUAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAoAAAAbAAAANQAAAFgRERGPPDw84l5eXv+FhYX/sLCw/83Nzf/Z2dn/3Nzc/9/f3//g4OD/4uLi/+Tk - 5P/l5eX/5+fn/+jo6P/q6ur/7Ozs/+3t7f/v7+//8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6 - +v/7+/v/+/v7//z8/P/+/v7//v7+//7+/v/////////////////////////////////+/v7//v7+//7+ - /v/8/Pz/+/v7//v7+//6+vr/+fn5//f39//39/f/9vb2//X19f/09PT/8fHx//Dw8P/v7+//7e3t/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Tk5P/f39//0dHR/7a2tv+Kior/YGBg/z4+PuIRERGPAAAAWAAA - ADUAAAAbAAAACgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAANAAAAIQAAAD8AAABkIyMjtElJSfdxcXH/nZ2d/8HB - wf/R0dH/19fX/9ra2v/c3Nz/3d3d/9/f3//h4eH/4uLi/+Xl5f/m5ub/6Ojo/+rq6v/r6+v/7e3t/+/v - 7//w8PD/8fHx//T09P/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//7+/v/+/v7//v7+//// - //////////////////////////////7+/v/+/v7//v7+//z8/P/7+/v/+/v7//r6+v/5+fn/9/f3//b2 - 9v/19fX/9PT0//Ly8v/x8fH/8PDw/+/v7//t7e3/6+vr/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Hh - 4f/d3d3/2dnZ/8fHx/+jo6P/dHR0/0tLS/ckJCS0AAAAZAAAAD8AAAAhAAAADQAAAAQAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAADwAA - ACUAAABHBgYGdDIyMtFcXFz/g4OD/66urv/Jycn/0dHR/9XV1f/X19f/2dnZ/9vb2//c3Nz/39/f/+Dg - 4P/i4uL/5OTk/+Xl5f/n5+f/6Ojo/+vr6//s7Oz/7e3t//Dw8P/x8fH/8vLy//T09P/19fX/9/f3//n5 - +f/6+vr/+vr6//v7+//8/Pz//v7+//7+/v/+/v7//////////////////////////////////v7+//7+ - /v/8/Pz//Pz8//v7+//7+/v/+vr6//n5+f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7e3t/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Li4v/h4eH/4ODg/9/f3//c3Nz/2dnZ/9DQ0P+0tLT/h4eH/19f - X/80NDTRBgYGdAAAAEcAAAAlAAAADwAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABQAAABEAAAApAAAATREREYc+Pj7lZmZm/5KSkv+4uLj/y8vL/9DQ - 0P/T09P/1dXV/9bW1v/X19f/2tra/9vb2//d3d3/39/f/+Hh4f/i4uL/5eXl/+bm5v/o6Oj/6urq/+zs - 7P/t7e3/7+/v//Hx8f/y8vL/9PT0//X19f/29vb/9/f3//n5+f/6+vr/+/v7//z8/P/8/Pz//v7+//7+ - /v/////////////////////////////////+/v7//v7+//z8/P/8/Pz/+/v7//r6+v/6+vr/+fn5//f3 - 9//29vb/9fX1//T09P/x8fH/8PDw/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Dg - 4P/f39//3d3d/9vb2//a2tr/19fX/9TU1P+/v7//l5eX/2pqav8/Pz/lERERhwAAAE0AAAApAAAAEQAA - AAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAATAAAALQAA - AFIYGBiURkZG8XBwcP+cnJz/vLy8/8rKyv/Ozs7/0NDQ/9HR0f/T09P/1dXV/9bW1v/Z2dn/2tra/9zc - 3P/f39//4ODg/+Hh4f/k5OT/5ubm/+fn5//q6ur/6+vr/+zs7P/v7+//8PDw//Hx8f/09PT/9fX1//b2 - 9v/39/f/+fn5//r6+v/7+/v//Pz8//z8/P/+/v7//v7+//////////////////////////////////7+ - /v/+/v7//Pz8//z8/P/7+/v/+vr6//n5+f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7+/v/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Li4v/h4eH/4ODg/93d3f/c3Nz/29vb/9nZ2f/X19f/1tbW/9HR - 0f/ExMT/o6Oj/3R0dP9KSkrxGBgYlAAAAFIAAAAtAAAAEwAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAGAAAAFAAAAC8AAABVGRkZnkpKSvV2dnb/pKSk/76+vv/IyMj/y8vL/83N - zf/Pz8//0NDQ/9HR0f/U1NT/1tbW/9fX1//a2tr/29vb/93d3f/f39//4eHh/+Li4v/l5eX/5ubm/+jo - 6P/q6ur/7Ozs/+3t7f/w8PD/8fHx//Ly8v/19fX/9vb2//f39//5+fn/+vr6//v7+//8/Pz//Pz8//7+ - /v/+/v7//////////////////////////////////v7+//7+/v/8/Pz//Pz8//v7+//6+vr/+fn5//f3 - 9//29vb/9fX1//T09P/y8vL/8fHx/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Dg - 4P/f39//3Nzc/9vb2//a2tr/19fX/9bW1v/V1dX/09PT/9DQ0P/FxcX/qamp/3t7e/9PT0/1GxsbngAA - AFUAAAAvAAAAFAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQAAABMAAAAwAAAAWCEh - IapRUVH6enp6/6Wlpf++vr7/xcXF/8jIyP/Kysr/y8vL/87Ozv/Pz8//0NDQ/9PT0//V1dX/1tbW/9nZ - 2f/a2tr/3Nzc/93d3f/g4OD/4eHh/+Tk5P/m5ub/5+fn/+rq6v/r6+v/7e3t/+/v7//x8fH/8vLy//X1 - 9f/29vb/+vr6//v7+//8/Pz//v7+//7+/v/+/v7///////////////////////////////////////// - //////////////7+/v/+/v7//Pz8//z8/P/6+vr/+fn5//b29v/19fX/9PT0//Hx8f/w8PD/7+/v/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Li4v/h4eH/39/f/93d3f/c3Nz/2tra/9nZ2f/W1tb/1dXV/9TU - 1P/R0dH/0NDQ/87Ozv/FxcX/rKys/35+fv9TU1P6JCQkqgAAAFgAAAAwAAAAEwAAAAUAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAATAAAALgAAAFclJSWxUlJS/Hx8fP+mpqb/vLy8/8LCwv/FxcX/x8fH/8jI - yP/Kysr/y8vL/87Ozv/Pz8//0dHR/9PT0//V1dX/19fX/9nZ2f/b29v/3Nzc/9/f3//h4eH/4uLi/+Xl - 5f/m5ub/6Ojo/+vr6//s7Oz/8fHx//T09P/39/f/+vr6//r6+v/7+/v/+/v7//z8/P/g4fn/y8v3/6Gf - 8P+Ni+7/d3Tt/3d07f93dO7/d3Tu/3d07v93dO7/jYvw/6Kg8v+ioPL/ubf1/9nY+P/+/v7//Pz8//z8 - /P/7+/v/+vr6//f39//09PT/8fHx//Dw8P/t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4eHh/+Dg - 4P/d3d3/3Nzc/9vb2//Z2dn/19fX/9XV1f/U1NT/09PT/9DQ0P/Pz8//zs7O/8rKyv/ExMT/ra2t/4OD - g/9WVlb8JiYmsQAAAFcAAAAuAAAAEwAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAACsAAABVIyMjrVhY - WP1+fn7/pqam/7u7u//BwcH/wsLC/8PDw//FxcX/x8fH/8nJyf/Kysr/zc3N/87Ozv/Q0ND/0dHR/9TU - 1P/W1tb/19fX/9ra2v/b29v/3d3d/+Dg4P/h4eH/5OTk/+bm5v/q6ur/8PDw//X19f/29vb/9/f3//n5 - +f/a2fT/qKbs/3t55/9RTeH/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm - 5P8wJuP/MCbh/y8m4f8vJuD/LyXe/zIp3v9UUOL/hoPp/7u68P/19fn/+vr6//n5+f/29vb/8vLy/+3t - 7f/r6+v/6urq/+fn5//m5ub/5OTk/+Li4v/g4OD/39/f/9zc3P/b29v/2tra/9fX1//W1tb/1NTU/9PT - 0//Q0ND/z8/P/87Ozv/Ly8v/ysrK/8nJyf/ExMT/rq6u/4SEhP9cXFz9JiYmrQAAAFUAAAArAAAAEAAA - AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAA0AAAAnAAAATyIiIqVWVlb8fX19/6ampv+4uLj/vb29/7+/v//BwcH/wsLC/8TE - xP/T09P/ysrK/8nJyf/Kysr/zc3N/8/Pz//Q0ND/09PT/9TU1P/W1tb/2dnZ/9ra2v/c3Nz/39/f/+Hh - 4f/n5+f/7+/v//T09P/09PT/9fX1/7e36v97eeD/PznX/ywl1v8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m - 3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m - 2v8uJdn/LSXY/zQt1/9qZ+D/tLPr//f39//39/f/9fX1//Hx8f/q6ur/5+fn/+Xl5f/k5OT/4eHh/+Dg - 4P/d3d3/3Nzc/9ra2v/Z2dn/1tbW/9XV1f/T09P/0dHR/8/Pz//Ozs7/zc3N/8rKyv/Jycn/yMjI/8fH - x//BwcH/ra2t/4SEhP9aWlr8IyMjpQAAAE8AAAAnAAAADQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKAAAAIAAAAEcZGRmVVVVV+Hp6 - ev+jo6P/tbW1/7q6uv+8vLz/vb29/7+/v//BwcH/wsLC/9PU1f/c3Nz/ysrK/8nJyf/Ly8v/zc3N/8/P - z//R0dH/09PT/9XV1f/X19f/2dnZ/9vb2//h4eH/7Ozs//Dw8P/x8fH/zMzr/3V02/80Mc3/KiTN/ysk - 0P8rJNP/LCXW/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm - 5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdj/LCXW/ywk0/8rJNH/OTTS/4uK - 4f/l5fL/9fX1//Ly8v/s7Oz/5eXl/+Li4v/g4OD/39/f/9zc3P/b29v/2dnZ/9bW1v/V1dX/09PT/9HR - 0f/Q0ND/zs7O/83Nzf/Kysr/ycnJ/8jIyP/Hx8f/xMTE/8PDw/++vr7/qamp/4GBgf9YWFj4HR0dlQAA - AEcAAAAgAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABwAAABkAAAA9ERERgExMTPJ1dXX/nZ2d/7Ozs/+3t7f/uLi4/7q6uv+8vLz/vb29/7+/ - v//BwcH/b3Kp/8jJ2P/c3Nz/ysrK/8nJyf/Ly8v/zs7O/8/Pz//R0dH/1NTU/9bW1v/a2tr/5ubm/+3t - 7f/v7+//qarg/1JQz/8oIsb/KSPK/yoky/8qJM3/KyTQ/ysk0/8sJdb/LSXX/y4l2P8uJtr/Libd/y8l - 3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m - 3f8uJtr/LiXZ/y0l1/8sJdb/LCTT/ysk0f8qJM7/KiTM/y4py/9zctn/3+Dv//Ly8v/v7+//5ubm/9/f - 3//d3d3/29vb/9ra2v/X19f/1dXV/9TU1P/R0dH/0NDQ/87Ozv/Nzc3/y8vL/8nJyf/IyMj/x8fH/8TE - xP/Dw8P/wcHB/7+/v/+7u7v/paWl/3t7e/9RUVHyExMTgAAAAD0AAAAZAAAABwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAATAAAANAUFBWVGRkbjb29v/5aW - lv+tra3/s7Oz/7W1tf+3t7f/uLi4/7q6uv+8vLz/vb29/7+/v/9VWaD/Nzqj/9DR3P/d3d3/ysrK/8rK - yv/Ly8v/zs7O/9DQ0P/T09P/2tra/+jo6P/s7Oz/ubnh/0hGyP8mIsD/JyHE/ygixv8pIsn/KiPL/yok - zf8rJND/KyTT/ywl1v8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm - 5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl1v8sJNP/KyTR/yok - zv8qJMz/KSPK/ygjx/8vKsb/fH3X/+Xm7v/w8PD/6Ojo/93d3f/a2tr/19fX/9bW1v/U1NT/09PT/9DQ - 0P/Pz8//zc3N/8vLy//Jycn/yMjI/8fHx//ExMT/w8PD/8HBwf+/v7//vr6+/7y8vP+2trb/np6e/3V1 - df9JSUnjBQUFZQAAADQAAAATAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACAAAADgAAACoAAABVNzc3x2dnZ/+Ojo7/qKio/7CwsP+zs7P/tLS0/7W1tf+3t7f/uLi4/7q6 - uv+8vLz/vb29/1BUn/8cHpn/OTyp/83O3P/f39//y8vL/8rKyv/Nzc3/z8/P/93d3f/o6Oj/0NHk/1hZ - yP8lIbv/JiG+/yYiwP8nIcT/KCLG/ykiyf8qI8v/KiTN/ysk0P8rJNP/LCXU/y0l1/8uJdj/Liba/y4m - 3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l - 3v8uJt3/Liba/y4l2f8tJdf/LCXW/ywk0/8rJNH/KiTO/yoky/8pI8r/KCPH/ycixP8mIsL/ODbE/6ip - 3v/t7e3/6+vr/9zc3P/W1tb/1dXV/9PT0//Q0ND/z8/P/83Nzf/Ly8v/ycnJ/8jIyP/Hx8f/xMTE/8PD - w//BwcH/v7+//76+vv+9vb3/vLy8/7q6uv+wsLD/k5OT/2xsbP84ODjHAAAAVQAAACoAAAAOAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAkAAAAgAAAASSUlJaRcXFz+goKC/6Gh - of+tra3/r6+v/7Kysv+zs7P/tLS0/7W1tf+2trb/uLi4/7q6uv+8vLz/Rkqa/xwdmf8dHaD/NTiq/8vM - 2v/f39//zc3N/8rKyv/d3d3/5+fn/6Wl2P8vL7r/JCC6/yUhu/8mIb7/JiLA/ychxP8oIsb/KSLJ/yoj - y/8qI83/KyTQ/ysk0/8sJdT/LSXX/y4l2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm - 5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l1/8sJdb/LCTT/ysk - 0f8qJM7/KiTL/ykjyv8oIsf/JyHE/yYiwv8mIb7/JSG9/1layP/f3+j/6urq/93d3f/T09P/0dHR/8/P - z//Ozs7/y8vL/8rKyv/IyMj/x8fH/8TExP/Dw8P/wcHB/7+/v/++vr7/vb29/7u7u/+6urr/uLi4/7a2 - tv+pqan/iIiI/2FhYf4mJiakAAAASQAAACAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAFAAAAFgAAADoTExOCUVFR9Xd3d/+ampr/q6ur/62trf+urq7/r6+v/7CwsP+ysrL/tLS0/7W1 - tf+2trb/uLi4/7q6uv9DRpn/HB2a/x0doP8dHaH/MzWr/8fH2v/g4OD/2tra/+Hh4/9rbcX/IiCz/yMg - tv8kILj/JSG7/yYhvv8mIsD/JyHE/ygixv8pIsn/KiPL/yojzf8rJND/KyTT/ywl1P8tJdf/LiXY/y4m - 2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m - 4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl1v8sJNP/KyTR/yokzv8qI8v/KSPK/ygix/8nIcT/JiLC/yYh - vv8lIbz/JCC6/zY2vP+/v97/6urq/9/f3//Q0ND/zs7O/8vLy//Kysr/yMjI/8fHx//ExMT/w8PD/8HB - wf+/v7//vr6+/7y8vP+7u7v/urq6/7i4uP+3t7f/tra2/7Ozs/+jo6P/fHx8/1VVVfUVFRWCAAAAOgAA - ABYAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA4AAAAsAgICXkVFReFtbW3/kJCQ/6Wl - pf+pqan/q6ur/62trf+urq7/r6+v/7CwsP+ysrL/s7Oz/7W1tf+2trb/uLi4/zxAmP8cHZr/HR2f/x0d - of8eHaT/LzCr/8TF2v/g4OL/WFq+/yIfsP8iILP/IyC2/yQguP8lIbv/JiG+/yYiwP8nIcT/KCLF/yki - yf8qI8v/KiPN/ysk0P8rI9L/LCTU/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm - 4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdf/LCXW/ywk - 0/8rJNH/KiTO/yojy/8pIsn/KCLH/ychxP8mIsL/JiG+/yUhvP8kILr/IyC2/ygmtv+QktH/5+fn/+Hh - 4f/Ozs7/ysrK/8jIyP/Hx8f/xMTE/8PDw//BwcH/v7+//76+vv+8vLz/u7u7/7q6uv+4uLj/tra2/7W1 - tf+0tLT/s7Oz/66urv+Xl5f/cnJy/0lJSeECAgJeAAAALAAAAA4AAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAHAAAAHwAAAEktLS2yZGRk/4aGhv+fn5//pqam/6ioqP+pqan/q6ur/6ysrP+tra3/r6+v/7Cw - sP+ysrL/s7Oz/7W1tf+2trb/NjiV/xwdm/8dHZ//HR2h/x4dpP8fHab/Ly+t/1dZvf8hH63/Ih+w/yIg - s/8jILb/JCC4/yUhu/8mIb7/JiLA/ychxP8oIsX/KSLJ/yojy/8qI83/KyTQ/ysj0v8sJNT/LSXX/y4l - 2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m - 4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l1/8sJdT/LCTT/ysj0f8qJM7/KiPL/ykiyf8oIsf/JyHE/yYi - wv8mIb7/JSG8/yQguv8jILb/IiC0/yIgsP9iY8L/3d3j/+Dg4P/Kysr/x8fH/8TExP/Dw8P/wcHB/7+/ - v/+9vb3/vLy8/7u7u/+4uLj/t7e3/7a2tv+1tbX/tLS0/7Ozs/+ysrL/r6+v/6enp/+Ojo7/ampq/zAw - MLIAAABJAAAAHwAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABMAAAA1FBQUfVVVVfd5eXn/l5eX/6Sk - pP+mpqb/p6en/6ioqP+pqan/q6ur/6ysrP+tra3/rq6u/6+vr/+ysrL/s7Oz/7S0tP8zN5X/HB2c/x0d - n/8dHaH/Hh2k/x8dpv8fHqf/IB6r/yEerf8iH7D/IiCz/yMhtf8kILj/JSG7/yYhvv8mIsD/JyHD/ygi - xf8pIsn/KiPL/yojzf8rJND/KyPS/ywk1P8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm - 4P8wJt7/LyXe/y8l3v8vJd7/LyXe/zAm3v8wJt//Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl - 1P8sJNP/KyPR/yojzv8qI8v/KSLJ/ygixv8nIcT/JiLC/yYhvv8lIbz/JCC4/yMgtv8iILT/IiCw/yEf - rv9AQ7b/0NDe/93d3f/Hx8f/w8PD/8HBwf+/v7//vb29/7y8vP+7u7v/uLi4/7e3t/+2trb/tbW1/7S0 - tP+ysrL/sLCw/6+vr/+urq7/rKys/6CgoP+AgID/W1tb9xQUFH0AAAA2AAAAEwAAAAMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAKAAAAJAAAAFJAQEDVbW1t/46Ojv+enp7/o6Oj/6SkpP+lpaX/pqam/6enp/+oqKj/qamp/6ur - q/+tra3/rq6u/6+vr/+wsLD/s7Oz/ystkv8cHZv/HB2f/x0dof8dHaT/Hh2l/x8ep/8gHqv/IB6t/yEe - sP8iH7P/IyC1/yMguP8kIbv/JSG+/yYiwP8mIcP/JyLF/ykiyf8qI8v/KiPN/ysk0P8rI9L/LCTU/y0k - 1/8uJdj/Liba/y4m2v8uJdj/LibT/y0l0f8tJcz/LSXJ/y0lw/8tJcP/LSXD/y0lw/8tJcP/LSXE/y0l - yf8tJc3/LSXR/y4l1v8uJtr/Liba/y4l2f8tJdf/LCXU/ywk0/8rI9H/KiPO/yojy/8pIsn/KCLG/ych - xP8mIsL/JiG+/yUhvP8kILj/IyC2/yIgtP8iILD/IR+u/yAgq/84ObL/y8za/9vb2//Dw8P/vr6+/729 - vf+8vLz/urq6/7i4uP+3t7f/tbW1/7S0tP+zs7P/srKy/7CwsP+vr6//rq6u/62trf+srKz/p6en/5SU - lP9ycnL/RERE1QAAAFIAAAAkAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABUAAAA6IiIilV9fX/5+fn7/mZmZ/5+f - n/+hoaH/o6Oj/6SkpP+lpaX/paWl/6enp/+oqKj/qamp/6urq/+srKz/ra2t/6+vr/+wsLD/KCmS/xwd - nP8cHZ//HB2h/x0dpP8eHaX/Hx6n/yAeq/8gHq3/IR6w/yIfsv8jILX/IyC4/yQgu/8lIb7/JiK//yYh - w/8nIsX/KCLJ/ykjy/8qI83/KiTO/ysj0v8sJNT/LSTW/y0k0/8tJM7/LCTG/yskvP8qI7L/KSSq/ykj - ov8oI57/KCOa/ygjmv8oI5r/KCOa/ygjmv8oI5r/KCOc/ygjo/8qJKz/KyS3/ywkxP8sJcz/LSTS/y0l - 1P8sJNT/LCPS/ysj0f8qI87/KiPL/ykiyf8oIsb/JyHE/yYiwv8mIb7/JSG8/yQguP8jILb/IiC0/yIg - sP8hH67/IB+r/yAeqf80Nq3/ysvZ/9bW1v++vr7/u7u7/7q6uv+4uLj/tra2/7W1tf+0tLT/s7Oz/7Ky - sv+wsLD/rq6u/62trf+srKz/q6ur/6urq/+oqKj/oaGh/4aGhv9kZGT+IyMjlQAAADoAAAAVAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAKAAAAJgICAlhLS0vlcXFx/4+Pj/+dnZ3/n5+f/5+fn/+goKD/oaGh/6Ojo/+kpKT/paWl/6am - pv+np6f/qKio/6urq/+srKz/ra2t/6+vr/8jI4//HB2c/xwdn/8cHaH/HR2j/x4dpf8fHqf/IB6r/yAe - rf8hHq//Ih+y/yMgtf8jILj/JCC7/yUhvv8mIr//JiHD/ycixf8oIsn/KSPL/yojzf8qJM7/KyTQ/ysk - zv8rJMX/KiO4/ygjq/8nIp7/JyKW/yYikf8mIoz/JiKK/yomjP9IRZ7/SUaf/0lGn/9JRp//SUaf/0hF - nv8oJIn/JiKL/yYhjv8nIpT/KCKc/ygjqP8qI7X/KyPD/yslzP8sI9H/KyPR/yojzv8qI8v/KSLJ/ygi - xv8nIcP/JiLC/yYhvv8lIbz/JCC4/yMhtf8iILT/Ih+w/yEerv8gH6v/IB6p/x8dpv84Oq3/0NHZ/87O - zv+6urr/t7e3/7a2tv+1tbX/s7Oz/7Kysv+wsLD/r6+v/66urv+tra3/rKys/6urq/+pqan/qKio/6en - p/+lpaX/l5eX/3d3d/9PT0/lAgICWAAAACYAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABUAAAA8KCgon2VlZf+CgoL/l5eX/5yc - nP+dnZ3/np6e/5+fn/+goKD/oaGh/6Ghof+jo6P/pKSk/6Wlpf+np6f/qKio/6mpqf+rq6v/r6+v/xwe - jf8cHZz/HB2f/xwdof8dHaP/Hh2l/x8ep/8gHqv/IB6t/yEer/8iH7L/IyC1/yMguP8kILv/JSC9/yYh - v/8mIcP/JyLF/ygiyf8pI8v/KiPM/yojyf8pIsL/KCK0/yYhov8mIZT/JSGL/yUgh/9RT6D/hIO9/7Cv - 1P/e3e3//Pz8//7+/v///////////////////////v7+//z8/P/V1ej/rq3T/11aqP8qJ4v/JSGL/yYh - kv8mIp//KCOy/yojwv8rI8z/KiPN/yojy/8pIsn/KCLG/yYhw/8mIsD/JSG+/yQhvP8jILj/IyC1/yIf - s/8hH7D/IB6u/yAfq/8gHqn/Hx2m/x4dpP9ESK7/1tbY/8HBwf+2trb/tLS0/7Ozs/+ysrL/sLCw/6+v - r/+tra3/rKys/6urq/+pqan/qKio/6ioqP+np6f/pqam/6Wlpf+fn5//iIiI/2tra/8rKyugAAAAPAAA - ABUAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAKAAAAJQICAlhMTEzmcnJy/46Ojv+ZmZn/m5ub/5ycnP+cnJz/nZ2d/56env+fn5//oKCg/6Gh - of+jo6P/pKSk/6Wlpf+mpqb/p6en/6ioqP+srK3/GxyM/xwcnP8cHZ//HB2g/x0do/8eHaX/Hx6n/yAe - q/8gHqz/IR6v/yIfsv8jILX/IyC4/yQgu/8lIL3/JiG//yYhw/8nIcX/KCLH/ygixf8oIr7/JyKv/yUh - n/8kII//Ix+H/0RClf+QkMD/3t3o//X19f/39/f/+vr6//v7+//8/Pz//v7+//////////////////7+ - /v/+/v7//Pz8//v7+//5+fn/9vb2/+fn7v+dnMf/VlSg/yYih/8kII//JiGi/ygitf8pIsT/KSPJ/ygi - yf8nIsb/JiHD/yYiwP8lIb7/JCC8/yMguP8jILX/Ih+z/yEfsP8gHq7/IB+r/x8eqf8eHaX/HR2k/x0d - ov9maLX/1tbW/7a2tv+ysrL/sLCw/6+vr/+urq7/ra2t/6ysrP+rq6v/qamp/6ioqP+np6f/pqam/6Wl - pf+kpKT/pKSk/6Ghof+VlZX/eHh4/1BQUOYCAgJYAAAAJQAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABMAAAA5KSkpnmVlZf+BgYH/lJSU/5mZ - mf+ampr/mpqa/5ubm/+cnJz/nZ2d/52dnf+enp7/n5+f/6CgoP+hoaH/o6Oj/6SkpP+lpaX/p6en/6Kj - qf8bHI3/HByc/xwcnf8cHaD/HR2j/x4dpf8fHqf/IB6q/yAerP8hHq//Ih+y/yMgtf8jILj/JCC6/yUg - vf8mIb//JiHD/ychwv8nIrz/JiKu/yUfnP8jH43/Ix+F/0VElv+np8n/6+vr/+3t7f/x8fH/9PT0//b2 - 9v/5+fn/+/v7//z8/P/+/v7//////////////////v7+//7+/v/8/Pz/+vr6//n5+f/29vb/9PT0//Hx - 8f/v7+//ysrb/05Om/8jH4b/JCCT/yYhqf8oIrz/KCLG/ycixv8mIcP/JiLA/yUgvf8kILz/IyC4/yMg - tf8iH7P/IR+v/yAerv8gH6v/Hx6p/x4dpf8dHaP/HR2i/xwdnf+focb/y8vL/7CwsP+vr6//ra2t/6ys - rP+rq6v/qamp/6ioqP+np6f/pqam/6Wlpf+kpKT/pKSk/6Ojo/+hoaH/oKCg/52dnf+Hh4f/ampq/y0t - LZ4AAAA5AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAHAAAAIQMDA1JJSUngcXFx/4qKiv+VlZX/lpaW/5eXl/+ZmZn/mpqa/5qamv+bm5v/nJyc/52d - nf+enp7/n5+f/6CgoP+hoaH/o6Oj/6SkpP+lpaX/nJ2o/xsbjf8cHJz/HByd/xwcoP8dHKP/Hh2l/x8d - p/8gHqr/IB6s/yEer/8iH7L/IyC1/yMgt/8kILr/JSC9/yYhv/8mIcD/JiC1/yMfnv8iHov/IR6C/z08 - jv+iocD/4uLi/+bm5v/q6ur/7e3t//Dw8P/09PT/9vb2//n5+f/7+/v//Pz8//7+/v////////////// - ///+/v7//v7+//v7+//6+vr/9/f3//X19f/y8vL/8PDw/+3t7f/q6ur/5+fn/5mYv/8xMIn/Ih6J/yUg - n/8mIbf/JyLD/yYhw/8mIcD/JSC9/yQgu/8jILj/IyC1/yIfs/8hH6//IB6t/yAfq/8fHqn/Hh2l/x0d - o/8cHaH/HB2f/ygroP/HxtH/vb29/62trf+rq6v/qamp/6ioqP+np6f/pqam/6ampv+lpaX/pKSk/6Oj - o/+hoaH/oKCg/6CgoP+fn5//nZ2d/5KSkv93d3f/TU1N4AMDA1IAAAAhAAAABwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA8AAAAxISEhi2RkZP98fHz/kJCQ/5SU - lP+VlZX/lpaW/5aWlv+Xl5f/mZmZ/5qamv+ampr/m5ub/5ycnP+dnZ3/np6e/5+fn/+goKD/oaGh/6Oj - o/+YmKX/GxuN/xwcm/8cHJ3/HByg/x0co/8eHKX/Hx2m/yAdqv8gHaz/IR6v/yIfsv8iILT/IyC3/yQg - uv8lIL3/JiG//yYhv/8kIKz/IR2P/zQyh/+Li7L/2tra/93d3f/h4eH/5eXl/+jo6P/s7Oz/7+/v//Ly - 8v/19fX/9/f3//r6+v/8/Pz//v7+//////////////////7+/v/8/Pz/+/v7//r6+v/39/f/9fX1//Hx - 8f/v7+//7Ozs/+jo6P/l5eX/4uLi/9TU2v9gYKD/IR+F/yMfmv8lIbP/JiG+/yYhwP8lIL3/JCC7/yMg - uP8jILX/Ih+z/yEfr/8gHq3/IB+r/x8eqf8eHaX/HR2j/xwdof8cHZ//HB2c/0tPqf/T09P/r6+v/6mp - qf+oqKj/p6en/6ampv+lpaX/pKSk/6Ojo/+hoaH/oKCg/6CgoP+fn5//np6e/52dnf+dnZ3/l5eX/4SE - hP9paWn/IiIiiwAAADEAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAEAAAAGgAAAEVDQ0PPbm5u/4aGhv+SkpL/k5OT/5SUlP+UlJT/lZWV/5aWlv+Wlpb/l5eX/5mZ - mf+ampr/mpqa/5ubm/+cnJz/nZ2d/56env+fn5//oKCg/42NoP8bG47/HByb/xwcnf8cHKD/HRyj/x0c - pP8eHab/Hx2q/yAdrP8gHa//IR6y/yIftP8jILf/IyC6/yUgvf8mIb//JiHA/ysmt/+EhL//y8vO/9TU - 1P/X19f/29vb/9/f3//i4uL/5ubm/+rq6v/t7e3/8fHx//X19f/39/f/+vr6//z8/P/+/v7///////// - /////////v7+//z8/P/7+/v/+fn5//b29v/09PT/8fHx/+3t7f/q6ur/5+fn/+Tk5P/g4OD/3Nzc/9ra - 2v97e6v/IB2C/yIelv8kIK//JiG8/yUgvf8kILv/IyC3/yMgtf8iH7P/IR+v/yAerf8gH6r/Hx6p/x4d - pf8dHaP/HB2h/xwdn/8cHJz/Gxua/36Ct//CwsL/p6en/6ampv+lpaX/pKSk/6Ojo/+hoaH/oKCg/5+f - n/+fn5//np6e/52dnf+dnZ3/nJyc/5ubm/+ampr/jo6O/3R0dP9ISEjPAAAARQAAABoAAAAEAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAnExMTa1paWvZ3d3f/i4uL/5GR - kf+SkpL/kpKS/5OTk/+Tk5P/lJSU/5WVlf+Wlpb/lpaW/5eXl/+ZmZn/mpqa/5qamv+bm5v/nJyc/52d - nf+enp7/iIqf/xobjv8bHJv/HByd/xwcoP8dHKP/HRyk/x4dpv8fHar/IB2s/yAdr/8hHrD/Ih+0/yMf - t/8jH7r/JCC8/yUhvv8mIcL/WlnM/+Xl5f/Z2dn/0dHR/9XV1f/Z2dn/3Nzc/+Hh4f/l5eX/6Ojo/+zs - 7P/w8PD/9PT0//b29v/6+vr/+/v7//7+/v/////////////////+/v7//Pz8//v7+//5+fn/9vb2//Ly - 8v/w8PD/7Ozs/+jo6P/l5eX/4eHh/93d3f/b29v/19fX/9TU1P+EhK3/IB6B/yEelf8kIK//JSC7/yQg - u/8jILf/IyC1/yIfs/8hH6//IB6t/yAeqv8fHqn/Hh2l/x0co/8cHaH/HByd/xwcnP8bG5r/ICOZ/7q7 - yf+tra3/pKSk/6Ojo/+hoaH/oKCg/5+fn/+fn5//np6e/52dnf+cnJz/nJyc/5ubm/+ampr/mpqa/5mZ - mf+Tk5P/fX19/19fX/YTExNrAAAAJwAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAEgAAADczMzOoaWlp/4GBgf+Ojo7/kJCQ/5GRkf+RkZH/kpKS/5KSkv+Tk5P/k5OT/5SU - lP+VlZX/lZWV/5aWlv+Xl5f/mZmZ/5qamv+ampr/m5ub/5ycnP+Dg53/GhuP/xscm/8cHJ3/HByg/x0c - ov8dHKT/Hh2m/x8dqv8gHaz/IB2u/yEesP8iH7T/Ix+3/yMfuv8kH7z/JSC+/yYhwv8mIcT/fHvU/+Xl - 5f/a2tr/09PT/9bW1v/a2tr/39/f/+Li4v/n5+f/6+vr/+/v7//y8vL/9vb2//n5+f/7+/v//v7+//// - //////////////7+/v/8/Pz/+vr6//f39//19fX/8fHx/+/v7//r6+v/5+fn/+Tk5P/g4OD/3Nzc/9nZ - 2f/V1dX/0dHR/87Ozv+Ojq//IyCC/yEel/8kIK//JCC4/yMgt/8iILT/Ih+z/yEer/8gHa3/IB6q/x8d - p/8eHKX/HRyj/xwdof8cHJ3/HByb/xsbmv8aG5j/VVip/7+/v/+hoaH/oKCg/5+fn/+fn5//np6e/52d - nf+cnJz/nJyc/5ubm/+ampr/mpqa/5mZmf+Xl5f/l5eX/5SUlP+Hh4f/bm5u/zY2NqgAAAA3AAAAEgAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAASUxMTN1xcXH/hoaG/4yM - jP+Pj4//j4+P/5CQkP+QkJD/kZGR/5GRkf+SkpL/kpKS/5OTk/+UlJT/lJSU/5WVlf+Wlpb/l5eX/5mZ - mf+ampr/mpqa/25xjv8XFor/GBeW/xgXmP8YGJn/GRmc/xoYn/8bGaH/Gxmk/xwapv8dGar/Hhqs/x8c - rv8gG7L/IBy0/yEct/8iHrr/Ix29/yQev/8lH8P/d3fF/8vLy//Pz8//1NTU/9fX1//c3Nz/4eHh/+Xl - 5f/q6ur/7e3t//Hx8f/19fX/+fn5//v7+//+/v7//////////////////v7+//z8/P/6+vr/9/f3//T0 - 9P/w8PD/7Ozs/+jo6P/l5eX/4eHh/93d3f/a2tr/1dXV/9HR0f/Ozs7/y8vL/8jIyP+Fhaj/HhuB/yEd - nP8jILP/IyC3/yIftP8hHrL/IB6v/yAdrf8fHqr/Hh2n/x4cpf8dHKP/HB2h/xwcnf8cHJv/GxuZ/xob - mP8cHJf/p6rB/6Wlpf+enp7/np6e/52dnf+cnJz/m5ub/5ubm/+ampr/mZmZ/5mZmf+Xl5f/l5eX/5aW - lv+VlZX/lJSU/4uLi/92dnb/UFBQ3QAAAEkAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAACQAAACcWFhZwYGBg+3l5ef+IiIj/jIyM/46Ojv+Ojo7/j4+P/4+Pj/+Pj4//kJCQ/5CQ - kP+RkZH/kpKS/5KSkv+Tk5P/k5OT/5SUlP+VlZX/lpaW/5eXl/+ZmZn/a2yM/xYWiv8YF5X/GBeX/xgX - mf8ZF5z/Ghif/xsZof8bGaP/HBql/x0Zqf8dGqv/Hhuu/yAbsv8gHLT/IRy3/yIduv8jHb3/Ix6//yUe - w/8mH8X/eXjG/83Nzf/Q0ND/1dXV/9ra2v/f39//4uLi/+fn5//s7Oz/8PDw//T09P/39/f/+/v7//z8 - /P/////////////////+/v7/+/v7//n5+f/29vb/8vLy/+/v7//r6+v/5+fn/+Li4v/f39//29vb/9bW - 1v/T09P/z8/P/8vLy//IyMj/xMTE/8HBwf9naJr/HhuF/yEeo/8iH7P/Ih+0/yEesv8gHq//IB2t/x8e - qv8eHaf/HRyk/x0co/8cHaH/HByd/xscm/8aG5n/GhuY/xoal/9MUKL/tra2/52dnf+cnJz/m5ub/5qa - mv+ampr/mZmZ/5eXl/+Xl5f/lpaW/5aWlv+VlZX/lZWV/5SUlP+UlJT/j4+P/35+fv9kZGT7GRkZcAAA - ACcAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAQAAAAMzk5Oapra2v/gICA/4qK - iv+Li4v/i4uL/4yMjP+MjIz/jo6O/46Ojv+Pj4//j4+P/5CQkP+QkJD/kZGR/5GRkf+SkpL/k5OT/5OT - k/+UlJT/lZWV/5aWlv9iZIr/FhaK/xcXlf8YF5f/GBeZ/xkYnP8ZF53/Gxig/xsYo/8cGaX/HRmp/x0a - q/8eG67/Hxqy/yAbtP8hHLf/Ih26/yMcvf8jHb//JB7D/yYfxf8nH8f/fn3H/87Ozv/R0dH/1tbW/9vb - 2//g4OD/5eXl/+rq6v/v7+//8vLy//f39//6+vr//Pz8//7+/v////////////7+/v/7+/v/+fn5//X1 - 9f/x8fH/7e3t/+jo6P/l5eX/4ODg/9zc3P/X19f/1NTU/8/Pz//Ly8v/yMjI/8TExP/BwcH/vr6+/7u7 - u/8/Poj/HxyN/yEfqv8iH7L/IR6y/yAerv8gHaz/Hx6q/x4dp/8dHKT/HRyi/xwdof8cHJ3/Gxyb/xob - mf8aG5f/GhuW/xock/+vscD/nZ2d/5qamv+ZmZn/mZmZ/5eXl/+Wlpb/lpaW/5WVlf+VlZX/lJSU/5SU - lP+Tk5P/k5OT/5KSkv+RkZH/hoaG/3BwcP88PDyqAAAANAAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAABcAAABBSkpK0nFxcf+Dg4P/ioqK/4qKiv+Kior/i4uL/4uLi/+Li4v/jIyM/4yM - jP+Ojo7/jo6O/4+Pj/+Pj4//kJCQ/5CQkP+RkZH/kpKS/5KSkv+Tk5P/lJSU/11ghv8WFoj/FxeR/xcX - kf8XF5P/GBeV/xkXl/8aGJn/Gxec/xsYn/8cGaL/HRqj/x0apf8eGqn/Hxur/yAbrv8gHK//Ihyy/yId - s/8jHrb/JB63/yUduv8mH73/goHE/8/Pz//U1NT/2dnZ/93d3f/i4uL/6Ojo/+3t7f/x8fH/9vb2//r6 - +v/8/Pz//v7+/////////////v7+//v7+//39/f/9PT0//Dw8P/r6+v/5+fn/+Li4v/d3d3/2dnZ/9XV - 1f/Q0ND/zc3N/8jIyP/ExMT/wcHB/729vf+7u7v/t7e3/6Skr/8lJH//IB2Z/yEerv8hHrL/IB6u/yAd - rP8fHqr/Hh2n/x0cpP8dHKL/HB2g/xwcnf8bHJv/GhuZ/xobl/8aG5b/GRuV/19jpv+np6f/l5eX/5eX - l/+Wlpb/lZWV/5WVlf+UlJT/lJSU/5OTk/+Tk5P/kpKS/5KSkv+RkZH/kZGR/5GRkf+JiYn/dnZ2/01N - TdMAAABBAAAAFwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAHxAQEF5ZWVnwdXV1/4SE - hP+JiYn/iYmJ/4mJif+Kior/ioqK/4qKiv+Li4v/i4uL/4uLi/+MjIz/jIyM/46Ojv+Ojo7/j4+P/4+P - j/+QkJD/kZGR/5GRkf+SkpL/V1mA/xUWeP8WFn7/FhZ9/xYWff8XF37/GBeB/xgXgv8YF4X/GReG/xoY - if8bGYr/GxqM/xwZjv8dGpD/HRqU/x4blf8fGpT/IBuU/yAclv8gHJj/IhyZ/yIem/8jHZ//goK4/9DQ - 0P/V1dX/2tra/+Dg4P/m5ub/6+vr//Dw8P/19fX/+fn5//z8/P/+/v7////////////8/Pz/+vr6//b2 - 9v/y8vL/7+/v/+rq6v/l5eX/4ODg/9vb2//W1tb/0dHR/83Nzf/Jycn/xMTE/8HBwf+9vb3/urq6/7e3 - t/+0tLT/srKy/3N1mP8cGoX/IR6k/yEesP8gHq7/IB2s/x8dqf8eHaf/HRyk/x0bov8cHKD/HBud/xsb - m/8aGpn/GhqX/xoalv8ZGpT/ISSS/7Cytf+VlZX/lZWV/5SUlP+UlJT/k5OT/5OTk/+SkpL/kpKS/5GR - kf+RkZH/kJCQ/5CQkP+QkJD/j4+P/4qKiv97e3v/XFxc8RAQEF4AAAAgAAAABgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAoAAAApJiYmhGhoaP97e3v/hYWF/4iIiP+IiIj/iIiI/4iIiP+JiYn/iYmJ/4mJ - if+Kior/ioqK/4uLi/+Li4v/i4uL/4yMjP+MjIz/jo6O/46Ojv+Pj4//kJCQ/5CQkP9QUnj/FBVh/xQW - ZP8VFmT/FRVl/xYWZv8WFmf/FhZp/xcWa/8XFmz/GBdu/xgXb/8YGHH/Ghhz/xsYdf8bGHf/Gxp3/xwa - eP8dGnj/HRp6/x0bfP8fG33/IByA/yAcgv8iHoX/iomx/9HR0f/X19f/3Nzc/+Li4v/o6Oj/7+/v//T0 - 9P/39/f/+/v7//7+/v////////////z8/P/6+vr/9vb2//Hx8f/s7Oz/5+fn/+Hh4f/c3Nz/19fX/9PT - 0//Ozs7/ycnJ/8TExP/BwcH/vb29/7q6uv+2trb/s7Oz/7CwsP+urq7/rKys/zU2g/8eG5T/IR6q/yAd - rv8gHaz/Hx2p/x4cpv8dG6T/HRui/xwcoP8cG5z/Gxub/xoamf8aGpf/GhqW/xkalP8YGpH/h4qw/5WV - lf+Tk5P/k5OT/5KSkv+SkpL/kZGR/5GRkf+QkJD/kJCQ/4+Pj/+Pj4//j4+P/46Ojv+Ojo7/i4uL/4CA - gP9sbGz/JiYmhAAAACkAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAADwAAADI7OzuwbW1t/35+ - fv+FhYX/h4eH/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iIiI/4mJif+JiYn/iYmJ/4qKiv+Kior/ioqK/4uL - i/+Li4v/jIyM/4yMjP+Ojo7/jo6O/1pbef8mKWP/Jylk/zM1av8/QXD/P0Jx/0BDcv9BQ3P/QkN1/0ND - dv9ERHj/RUV5/0ZGe/9HR33/R0l+/0hKgf9KS4L/Y2KO/2pqkv9ra5X/bW2X/3Bwmv9ycpz/dnWh/3l5 - pP9/fqr/yMjK/9PT0//Z2dn/4ODg/+bm5v/s7Oz/8vLy//f39//7+/v//v7+///////+/v7//Pz8//n5 - +f/09PT/7+/v/+rq6v/k5OT/39/f/9nZ2f/T09P/zs7O/8nJyf/ExMT/v7+//7y8vP+4uLj/tbW1/7Ky - sv+vr6//ra2t/6urq/+oqKj/hYaa/xwagv8gHaH/IB2t/x8drP8fHan/Hhym/x0bpP8dG6L/HByg/xwb - nP8bG5v/GhqZ/xoal/8aGpb/GRqU/xgak/9KTpv/np6e/5GRkf+RkZH/kJCQ/5CQkP+QkJD/j4+P/4+P - j/+Ojo7/jo6O/46Ojv+MjIz/jIyM/4yMjP+Kior/hISE/3Fxcf8+Pj6wAAAAMgAAAA8AAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAUAAAAPE1NTdVxcXH/gICA/4aGhv+Ghob/hoaG/4aGhv+Ghob/h4eH/4eH - h/+Hh4f/h4eH/4iIiP+IiIj/iIiI/4mJif+JiYn/iYmJ/4qKiv+Kior/i4uL/4uLi/+MjIz/jIyM/46O - jv+Pj4//j4+P/5CQkP+RkZH/kpKS/5OTk/+Tk5P/lZWV/5aWlv+Xl5f/mpqa/5ubm/+dnZ3/n5+f/6Gh - of+kpKT/pqam/6mpqf+tra3/sLCw/7S0tP+4uLj/vb29/8PDw//IyMj/z8/P/9XV1f/c3Nz/4uLi/+rq - 6v/w8PD/9vb2//v7+//+/v7///////7+/v/7+/v/9/f3//Ly8v/t7e3/5+fn/+Hh4f/b29v/1dXV/8/P - z//Jycn/xMTE/7+/v/+8vLz/t7e3/7S0tP+wsLD/rq6u/6urq/+oqKj/pqam/6Wlpf+jo6P/PDyB/x0b - lf8fHan/Hx2s/x4dqf8dHKb/HRuj/x0bov8cHKD/HBuc/xsbmv8aGpn/GhqX/xoalv8ZGpT/GBqT/x4f - jP+lpaf/kJCQ/4+Pj/+Pj4//j4+P/46Ojv+Ojo7/jIyM/4yMjP+MjIz/i4uL/4uLi/+Li4v/i4uL/4qK - iv+FhYX/dXV1/1JSUtUAAAA8AAAAFAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABoDAwNKV1dX63V1 - df+BgYH/hYWF/4WFhf+FhYX/hYWF/4WFhf+Ghob/hoaG/4aGhv+Ghob/h4eH/4eHh/+Hh4f/h4eH/4iI - iP+IiIj/iIiI/4mJif+JiYn/ioqK/4qKiv+Li4v/i4uL/4yMjP+MjIz/jo6O/4+Pj/+Pj4//kJCQ/5GR - kf+SkpL/k5OT/5SUlP+Wlpb/l5eX/5qamv+bm5v/nZ2d/5+fn/+hoaH/paWl/6enp/+rq6v/r6+v/7Oz - s/+4uLj/vb29/8PDw//Jycn/0NDQ/9fX1//f39//5ubm/+3t7f/19fX/+vr6//7+/v///////v7+//v7 - +//29vb/8fHx/+rq6v/k5OT/3Nzc/9bW1v/Q0ND/ysrK/8TExP+/v7//u7u7/7a2tv+zs7P/r6+v/62t - rf+pqan/p6en/6Wlpf+jo6P/oKCg/5+fn/9+fpL/GxmF/x4dov8fHav/Hh2p/x0cpv8dG6P/HBui/xsc - oP8bG5z/Ghua/xoamP8aGpf/GhqW/xkalP8YGpP/GBqM/4iLpv+Ojo7/jo6O/4yMjP+MjIz/jIyM/4uL - i/+Li4v/i4uL/4qKiv+Kior/ioqK/4qKiv+JiYn/iYmJ/4aGhv95eXn/W1tb6wMDA0oAAAAaAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAGAAAAIBoaGmlfX1/2eHh4/4KCgv+EhIT/hISE/4SEhP+EhIT/hISE/4WF - hf+FhYX/hYWF/4WFhf+FhYX/hoaG/4aGhv+Ghob/hoaG/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iIiI/4mJ - if+JiYn/ioqK/4qKiv+Li4v/jIyM/4yMjP+Ojo7/j4+P/5CQkP+RkZH/kpKS/5OTk/+UlJT/lZWV/5eX - l/+ampr/m5ub/52dnf+goKD/o6Oj/6ampv+pqan/rq6u/7Ozs/+3t7f/vb29/8TExP/Kysr/09PT/9ra - 2v/i4uL/6+vr//Ly8v/5+fn//v7+///////+/v7/+vr6//X19f/v7+//5+fn/+Dg4P/Z2dn/0dHR/8rK - yv/ExMT/vr6+/7q6uv+1tbX/srKy/66urv+rq6v/qKio/6Wlpf+jo6P/oKCg/5+fn/+dnZ3/nJyc/5qa - mv8wMX//Hh2Y/x8dqf8eHan/HRym/x0bo/8cHKH/Gxyg/xsbnP8aG5r/GhqY/xoal/8aGpb/GRqU/xga - k/8YGo7/Y2ie/4yMjP+Li4v/i4uL/4uLi/+Kior/ioqK/4qKiv+JiYn/iYmJ/4mJif+JiYn/iIiI/4iI - iP+IiIj/hoaG/3x8fP9iYmL2HR0daQAAACAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAlLS0th2ho - aP57e3v/goKC/4ODg/+Dg4P/g4OD/4ODg/+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+FhYX/hYWF/4WF - hf+FhYX/hoaG/4aGhv+Ghob/hoaG/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iYmJ/4mJif+Kior/ioqK/4uL - i/+MjIz/jIyM/46Ojv+Pj4//kJCQ/5GRkf+SkpL/k5OT/5WVlf+Xl5f/mpqa/5ycnP+enp7/oaGh/6Sk - pP+oqKj/ra2t/7Kysv+3t7f/vb29/8TExP/Nzc3/1dXV/9/f3//n5+f/8PDw//f39//8/Pz///////7+ - /v/5+fn/8vLy/+vr6//i4uL/29vb/9PT0//Ly8v/xMTE/76+vv+4uLj/tLS0/7CwsP+srKz/qKio/6am - pv+jo6P/oKCg/56env+dnZ3/m5ub/5qamv+Xl5f/lpaW/2RliP8cGoz/Hxyk/x4cp/8dHKb/HRuj/xwc - of8bHJ//Gxuc/xobmv8aGpj/GRuW/xkalv8YGpT/GBqT/xgZj/9ARZT/jIyM/4qKiv+JiYn/iYmJ/4mJ - if+JiYn/iIiI/4iIiP+IiIj/iIiI/4eHh/+Hh4f/h4eH/4eHh/+Ghob/gICA/2pqav4tLS2HAAAAJQAA - AAgAAAAAAAAAAAAAAAAAAAAAAAAACgAAACs4ODidb29v/3x8fP+BgYH/goKC/4KCgv+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4SEhP+EhIT/hISE/4SEhP+EhIT/hYWF/4WFhf+FhYX/hYWF/4aG - hv+Ghob/hoaG/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iYmJ/4mJif+Kior/i4uL/4uLi/+MjIz/jo6O/4+P - j/+QkJD/kpKS/5OTk/+VlZX/lpaW/5qamv+cnJz/n5+f/6Ojo/+mpqb/q6ur/7CwsP+2trb/vb29/8XF - xf/Pz8//2dnZ/+Li4v/t7e3/9vb2//z8/P///////v7+//f39//w8PD/5+fn/93d3f/V1dX/zc3N/8TE - xP+9vb3/t7e3/7Ozs/+urq7/qamp/6ampv+kpKT/oKCg/56env+cnJz/m5ub/5mZmf+Xl5f/lZWV/5SU - lP+Tk5P/jo6R/x8fgv8eHaD/Hhyn/x0bpf8dG6P/HBuh/xsbn/8bG5z/Ghqa/xoamP8ZG5b/GRqV/xga - lP8XGpP/FxmQ/yQniv+Tk5P/iIiI/4iIiP+IiIj/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Ghob/hoaG/4aG - hv+Ghob/hoaG/4WFhf+BgYH/cnJy/zw8PJ0AAAArAAAACgAAAAAAAAAAAAAAAAAAAAAAAAANAAAALkND - Q7JxcXH/fn5+/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4ODg/+Dg4P/hISE/4SEhP+EhIT/hISE/4WFhf+FhYX/hYWF/4WFhf+Ghob/hoaG/4aG - hv+Hh4f/h4eH/4iIiP+IiIj/iYmJ/4qKiv+Li4v/i4uL/4yMjP+Ojo7/kJCQ/5GRkf+SkpL/lJSU/5aW - lv+ampr/nJyc/5+fn/+kpKT/qKio/66urv+1tbX/vb29/8fHx//R0dH/3Nzc/+jo6P/09PT/+/v7//// - ///8/Pz/9vb2/+zs7P/h4eH/19fX/87Ozv/ExMT/vb29/7a2tv+wsLD/rKys/6enp/+kpKT/oKCg/56e - nv+cnJz/mpqa/5eXl/+Wlpb/lJSU/5OTk/+SkpL/kZGR/5CQkP+Pj4//Pz9+/x0bmP8dHKb/HRul/x0b - o/8cG6H/Gxuf/xsanP8aGpr/GhqY/xkalv8ZGpX/GBqU/xcak/8XGZD/FxmF/5GSlv+Hh4f/h4eH/4aG - hv+Ghob/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WFhf+FhYX/hYWF/4KCgv9zc3P/REREsgAA - AC4AAAANAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAzS0tLx3Jycv99fX3/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4SEhP+EhIT/hISE/4SEhP+EhIT/hYWF/4WFhf+Ghob/hoaG/4aGhv+Hh4f/h4eH/4iI - iP+JiYn/iYmJ/4qKiv+Li4v/jIyM/4+Pj/+QkJD/kpKS/5OTk/+Wlpb/mpqa/52dnf+hoaH/pqam/62t - rf+0tLT/vb29/8jIyP/V1dX/4uLi//Dw8P/7+/v///////v7+//y8vL/5+fn/9vb2//Pz8//xMTE/7y8 - vP+0tLT/rq6u/6ioqP+lpaX/oKCg/52dnf+bm5v/mZmZ/5aWlv+VlZX/k5OT/5KSkv+RkZH/kJCQ/4+P - j/+Ojo7/jIyM/4yMjP9kZIL/GxqP/x0bo/8dG6X/HBui/xwbof8bG5//Gxqb/xoamv8aGpj/GRqW/xkZ - lf8YGZP/FxmT/xcZkP8XGYb/fX6R/4WFhf+FhYX/hYWF/4WFhf+FhYX/hYWF/4WFhf+EhIT/hISE/4SE - hP+EhIT/hISE/4SEhP+EhIT/gYGB/3V1df9MTEzHAAAAMwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAEAAA - ADZSUlLVdHR0/35+fv+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4GBgf+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/hISE/4SEhP+EhIT/hISE/4WFhf+FhYX/hoaG/4aGhv+Hh4f/h4eH/4iIiP+JiYn/ioqK/4uL - i/+MjIz/j4+P/5GRkf+Tk5P/lZWV/5qamv+dnZ3/o6Oj/6mpqf+zs7P/vb29/8rKyv/a2tr/6+vr//n5 - +f//////+vr6/+/v7//g4OD/0dHR/8TExP+6urr/srKy/6urq/+lpaX/oKCg/52dnf+ampr/l5eX/5WV - lf+Tk5P/kpKS/5CQkP+Pj4//jo6O/4yMjP+MjIz/i4uL/4qKiv+Kior/iYmJ/4WFiP8dHIb/HRyf/x0b - pf8cG6L/Gxuh/xsbn/8bGpv/Ghqa/xoamP8ZGpb/GRmV/xgZk/8XGZH/FxiQ/xcZh/9pbIz/hISE/4SE - hP+EhIT/hISE/4SEhP+EhIT/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+BgYH/dnZ2/1VV - VdQAAAA2AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAOVhYWOB2dnb/fX19/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+EhIT/hISE/4SEhP+FhYX/hYWF/4aGhv+Hh4f/h4eH/4iIiP+JiYn/i4uL/4yMjP+Pj4//kpKS/5WV - lf+ampr/n5+f/6ampv+wsLD/vb29/8/Pz//i4uL/9vb2///////39/f/5+fn/9XV1f/ExMT/t7e3/66u - rv+mpqb/oKCg/5ycnP+ZmZn/lZWV/5OTk/+RkZH/kJCQ/4+Pj/+MjIz/i4uL/4uLi/+Kior/iYmJ/4mJ - if+IiIj/h4eH/4eHh/+Hh4f/hoaG/zI0gP8cG47/GxuU/xsakf8aGpD/GhqO/xoai/8aGor/GRmJ/xgZ - h/8YGYb/GBmE/xcZhP8XGIL/Fhl7/2Rmiv+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+CgoL/goKC/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4CAgP94eHj/WVlZ4AAAADgAAAASAAAAAAAAAAAAAAAAAAAAAAAA - ABMAAAA6XV1d63d3d/9+fn7/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4SE - hP+EhIT/hYWF/4aGhv+Ghob/h4eH/4mJif+Kior/jIyM/5CQkP+Tk5P/mpqa/6Ghof+tra3/vb29/9XV - 1f/w8PD///////Ly8v/b29v/xMTE/7S0tP+oqKj/oKCg/5ubm/+Wlpb/k5OT/5GRkf+Pj4//jIyM/4uL - i/+Kior/iYmJ/4iIiP+IiIj/h4eH/4eHh/+Ghob/hoaG/4WFhf+FhYX/hYWF/4SEhP+EhIT/RUV0/xYW - bP8VFW3/FRVr/xUVav8UFWn/FBRn/xQUZv8TE2X/EhNj/xIUYv8SFGH/EhRg/xITYP8RE13/S05u/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gICA/3h4 - eP9fX1/rAAAAOgAAABMAAAAAAAAAAAAAAAAAAAAAAAAAEwAAADxhYWHxeHh4/319ff9+fn7/fn5+/35+ - fv9+fn7/fn5+/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4KCgv+CgoL/goKC/4ODg/+Dg4P/hISE/4WF - hf+Ghob/h4eH/4mJif+MjIz/kpKS/5qamv+mpqb/vb29/+Li4v//////5+fn/8TExP+urq7/oKCg/5mZ - mf+Tk5P/kJCQ/4yMjP+Li4v/iYmJ/4iIiP+Hh4f/hoaG/4aGhv+FhYX/hYWF/4SEhP+EhIT/hISE/4OD - g/+Dg4P/g4OD/4ODg/+Dg4P/goKC/4KCgv9cW3f/FBVf/xQVXv8UFFz/ExRb/xMUWv8TE1n/ExNY/xIT - V/8SE1b/EhNV/xETVP8RE1P/ERNS/xETUv9FR2n/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP9+fn7/eXl5/2JiYvAAAAA8AAAAEwAAAAAAAAAAAAAAAAAA - AAAAAAATAAAAPWZmZvV5eXn/fX19/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+BgYH/gYGB/4GBgf+CgoL/goKC/4ODg/+FhYX/h4eH/4yM - jP+ampr/vb29///////ExMT/oKCg/5OTk/+MjIz/iYmJ/4eHh/+Ghob/hYWF/4SEhP+Dg4P/g4OD/4OD - g/+CgoL/goKC/4KCgv+CgoL/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/35+ - fv96enr/ZGRk8wAAAD0AAAATAAAAAAAAAAAAAAAAAAAAAAAAABMAAAA9Z2dn+Ht7e/99fX3/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv+bm5v/vLy8/7y8 - vP+8vLz/vLy8/7y8vP+8vLz/vLy8/7y8vP+8vLz/vLy8/7y8vP+8vLz/vLy8/7y8vP+SkpL/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fX19/3p6ev9mZmb2AAAAPQAAABMAAAAAAAAAAAAA - AAAAAAAAAAAAEwAAADxoaGj4fHx8/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/2pri/9OUpr/TlKg/05SoP9OU6L/TlOi/09To/9PVKT/T1Sl/1BU - pf9RU6f/UVOo/1FUq/9SVKz/UlWm/4GBk/9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/gICA/4CAgP+AgID/gICA/4GBgf+CgoL/g4OD/4WF - hf+Kior/lpaW/7u7u///////w8PD/6CgoP+Tk5P/jIyM/4mJif+Hh4f/hoaG/4WFhf+EhIT/g4OD/4OD - g/+Dg4P/goKC/4KCgv+CgoL/goKC/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/fHx8/2pqavgAAAA8AAAAEwAAAAAAAAAAAAAAAAAAAAAAAAATAAAAOmlpafV8fHz/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/UFOB/xcY - hv8XGY7/FxiP/xcZkf8YGZP/GBmV/xgalv8ZGpf/GhqZ/xsam/8bGpz/Gxug/xwbov8cG5z/b3CW/35+ - fv9+fn7/fn5+/35+fv+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4GBgf+BgYH/gYGB/4KC - gv+CgoL/g4OD/4SEhP+FhYX/h4eH/4qKiv+Pj4//lpaW/6Ojo/+7u7v/4uLi///////l5eX/w8PD/62t - rf+goKD/mZmZ/5OTk/+Pj4//jIyM/4qKiv+JiYn/iIiI/4eHh/+Ghob/hoaG/4WFhf+FhYX/hISE/4SE - hP+EhIT/g4OD/4ODg/+Dg4P/g4OD/4ODg/+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP99fX3/ampq9QAAADoAAAATAAAAAAAA - AAAAAAAAAAAAAAAAABIAAAA5Z2dn8H19ff+AgID/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9QUn7/FxiF/xcZjv8XGI//FxmR/xgZk/8YGZX/GBqW/xka - l/8aGpn/Gxqb/xsanf8bG6D/HBui/xwbn/9naZ7/gICA/4CAgP+AgID/gICA/4CAgP+BgYH/gYGB/4GB - gf+BgYH/goKC/4KCgv+CgoL/g4OD/4ODg/+EhIT/hYWF/4aGhv+IiIj/ioqK/4yMjP+RkZH/lpaW/56e - nv+pqan/u7u7/9XV1f/x8fH///////Hx8f/Z2dn/w8PD/7Ozs/+oqKj/oKCg/5qamv+Wlpb/k5OT/5CQ - kP+Pj4//jIyM/4uLi/+Kior/iYmJ/4iIiP+Hh4f/h4eH/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4SE - hP+EhIT/hISE/4SEhP+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4KCgv+CgoL/goKC/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/goKC/4CAgP9paWnwAAAAOQAAABIAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADZmZmbqfX19/4CA - gP9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/4CAgP+AgID/gICA/1RW - e/8XGIP/FxiP/xcYj/8XGZH/GBmT/xkZlf8ZGpb/GRqX/xoamf8bGpv/Gxqd/xsboP8cG6L/HRui/1hZ - ov+BgYH/gYGB/4GBgf+CgoL/goKC/4KCgv+CgoL/g4OD/4ODg/+EhIT/hISE/4WFhf+Ghob/h4eH/4iI - iP+Kior/jIyM/4+Pj/+SkpL/lpaW/5ycnP+jo6P/rq6u/7u7u//Ozs7/4uLi//b29v//////9vb2/+Xl - 5f/T09P/w8PD/7a2tv+tra3/pqam/6CgoP+cnJz/mZmZ/5WVlf+Tk5P/kZGR/4+Pj/+Ojo7/jIyM/4uL - i/+Kior/ioqK/4mJif+IiIj/iIiI/4eHh/+Hh4f/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+Dg4P/gYGB/2lpaekAAAA2AAAAEAAA - AAAAAAAAAAAAAAAAAAAAAAAPAAAAM2FhYd59fX3/gYGB/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/WVt3/xcYgf8XGY7/FxiP/xcZkf8YGZP/GRmV/xka - lv8ZGpf/GhqZ/xsam/8bGp3/Gxug/xwbov8dG6T/P0Ch/4yMjP+CgoL/g4OD/4ODg/+EhIT/hISE/4WF - hf+FhYX/hoaG/4eHh/+IiIj/iIiI/4qKiv+Li4v/jo6O/5CQkP+Tk5P/lpaW/5ubm/+goKD/p6en/7Cw - sP+7u7v/ycnJ/9ra2v/r6+v/+vr6///////5+fn/7Ozs/93d3f/Pz8//w8PD/7i4uP+wsLD/qamp/6Wl - pf+goKD/nJyc/5qamv+Wlpb/lJSU/5OTk/+RkZH/kJCQ/4+Pj/+Ojo7/jIyM/4uLi/+Li4v/ioqK/4mJ - if+JiYn/iIiI/4iIiP+IiIj/h4eH/4eHh/+Hh4f/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+FhYX/hISE/4SEhP+EhIT/hISE/4SEhP+EhIT/hISE/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4WFhf+CgoL/ZGRk3QAAADIAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAuX19f0X5+ - fv+CgoL/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gYGB/4GB - gf9oaHn/Fhh7/xcZjf8XGI//FxmR/xgZk/8ZGZX/GRqW/xoamP8aGpn/Gxqb/xsanf8bG6D/HBui/x0b - pP8mJqD/n5+f/4SEhP+FhYX/hYWF/4aGhv+Ghob/h4eH/4iIiP+JiYn/ioqK/4uLi/+MjIz/j4+P/5GR - kf+Tk5P/lpaW/5qamv+enp7/o6Oj/6mpqf+ysrL/u7u7/8fHx//V1dX/4uLi//Hx8f/7+/v///////v7 - +//x8fH/5eXl/9nZ2f/Ozs7/w8PD/7q6uv+zs7P/ra2t/6ioqP+kpKT/oKCg/52dnf+ampr/mZmZ/5aW - lv+UlJT/k5OT/5KSkv+QkJD/j4+P/4+Pj/+Ojo7/jIyM/4uLi/+Li4v/ioqK/4qKiv+JiYn/iYmJ/4iI - iP+IiIj/iIiI/4eHh/+Hh4f/h4eH/4eHh/+Ghob/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+FhYX/hYWF/4SEhP+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+EhIT/hoaG/4KCgv9gYGDRAAAALgAA - AA0AAAAAAAAAAAAAAAAAAAAAAAAACgAAACpZWVnCfn5+/4KCgv+AgID/gICA/4CAgP+AgID/gYGB/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/3h5fv8VF3X/FxmL/xcYkP8XGZH/GBmT/xkZ - lf8ZGpb/GhqY/xoamf8bGpv/Gxqd/xsboP8cG6L/HRuk/x0bo/+Ula3/hoaG/4eHh/+Hh4f/iIiI/4mJ - if+Kior/i4uL/4yMjP+Ojo7/kJCQ/5GRkf+Tk5P/lpaW/5qamv+dnZ3/oaGh/6ampv+srKz/s7Oz/7u7 - u//FxcX/0NDQ/9zc3P/q6ur/9fX1//z8/P//////+/v7//X19f/r6+v/4ODg/9XV1f/Ly8v/w8PD/7y8 - vP+1tbX/r6+v/6urq/+mpqb/o6Oj/6CgoP+dnZ3/m5ub/5mZmf+Xl5f/lZWV/5SUlP+Tk5P/kpKS/5GR - kf+QkJD/j4+P/46Ojv+Ojo7/jIyM/4yMjP+Li4v/i4uL/4qKiv+Kior/iYmJ/4mJif+JiYn/iIiI/4iI - iP+IiIj/h4eH/4eHh/+Hh4f/h4eH/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+FhYX/hYWF/4WFhf+Ghob/g4OD/1xcXMIAAAArAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAJVJS - Uqt+fn7/g4OD/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4KCgv+CgoL/goKC/4KC - gv+CgoL/goKC/x4hc/8XGIj/FxiQ/xcZkf8YGZP/GRmV/xkalv8aGpj/GhqZ/xsam/8bGp3/Gxug/xwb - ov8dG6T/HRum/2psrv+RkZH/iYmJ/4qKiv+Li4v/jIyM/46Ojv+Pj4//kJCQ/5KSkv+UlJT/lpaW/5mZ - mf+cnJz/n5+f/6Ojo/+oqKj/rq6u/7S0tP+7u7v/xMTE/87Ozv/X19f/4uLi/+3t7f/29vb//Pz8//// - ///8/Pz/9vb2/+/v7//l5eX/3Nzc/9PT0//Kysr/w8PD/7y8vP+2trb/srKy/62trf+pqan/pqam/6Oj - o/+goKD/nZ2d/5ycnP+ampr/mZmZ/5aWlv+VlZX/lJSU/5OTk/+SkpL/kZGR/5CQkP+Pj4//j4+P/46O - jv+Ojo7/jIyM/4yMjP+Li4v/i4uL/4qKiv+Kior/ioqK/4mJif+JiYn/iYmJ/4iIiP+IiIj/iIiI/4iI - iP+Hh4f/h4eH/4eHh/+Hh4f/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4eHh/+Dg4P/VVVVqwAA - ACUAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAfR0dHk35+fv+EhIT/gYGB/4GBgf+BgYH/goKC/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+Dg4P/g4OD/4ODg/+Dg4P/MDRy/xcZhP8XGJD/FxmR/xgZ - k/8ZGZX/GRqW/xoamP8aGpr/Gxqb/xsanf8bG6H/HBui/x0bpP8dG6f/OTuo/6mpqf+Li4v/jIyM/46O - jv+Pj4//kZGR/5KSkv+UlJT/lpaW/5mZmf+bm5v/np6e/6Ghof+lpaX/qamp/6+vr/+1tbX/u7u7/8PD - w//Ly8v/1dXV/93d3f/n5+f/8fHx//n5+f/+/v7///////z8/P/39/f/8fHx/+rq6v/h4eH/2dnZ/9HR - 0f/Kysr/w8PD/729vf+3t7f/s7Oz/6+vr/+rq6v/qKio/6Wlpf+jo6P/oKCg/56env+cnJz/mpqa/5mZ - mf+Xl5f/lpaW/5WVlf+UlJT/k5OT/5KSkv+RkZH/kJCQ/5CQkP+Pj4//j4+P/46Ojv+Ojo7/jIyM/4yM - jP+Li4v/i4uL/4qKiv+Kior/ioqK/4mJif+JiYn/iYmJ/4mJif+IiIj/iIiI/4iIiP+IiIj/h4eH/4eH - h/+Hh4f/h4eH/4eHh/+Ghob/iIiI/4SEhP9ISEiTAAAAIAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAwAA - ABk8PDx6fHx8/oaGhv+Dg4P/goKC/4KCgv+CgoL/goKC/4KCgv+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4SE - hP+EhIT/hISE/4SEhP9GSnL/Fhh+/xcYjv8XGZH/GBmT/xkZlf8ZGpb/GhqY/xoamv8bGpv/Gxqd/xwb - of8dG6P/HRuk/x0bp/8eHKf/pKW7/5KSkv+QkJD/kZGR/5OTk/+UlJT/lpaW/5mZmf+bm5v/nZ2d/6Cg - oP+jo6P/p6en/6ysrP+wsLD/tbW1/7u7u//CwsL/ycnJ/9HR0f/a2tr/4uLi/+vr6//09PT/+vr6//7+ - /v///////v7+//n5+f/09PT/7Ozs/+Xl5f/d3d3/1tbW/8/Pz//Jycn/w8PD/729vf+4uLj/tLS0/7Cw - sP+tra3/qamp/6enp/+lpaX/oaGh/6CgoP+enp7/nJyc/5ubm/+ampr/mZmZ/5aWlv+VlZX/lJSU/5SU - lP+Tk5P/kpKS/5KSkv+ZmZn/m5ub/5ubm/+Pj4//jo6O/46Ojv+MjIz/jIyM/4yMjP+Li4v/i4uL/4uL - i/+Kior/ioqK/4qKiv+JiYn/iYmJ/4mJif+JiYn/iIiI/4iIiP+IiIj/iIiI/4mJif+Li4v/goKC/kBA - QHoAAAAaAAAABAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAFCkpKVd2dnb0h4eH/4WFhf+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4ODg/+EhIT/hISE/4SEhP+EhIT/hYWF/4WFhf+FhYX/hYWF/2Zmev8VF3X/FxqL/xcZ - k/8YGZP/GRqV/xkalv8aGpj/Ghqa/xsanP8bGp3/HBuh/x0bo/8dG6T/Hhun/x4cqv9gYbL/rKys/5OT - k/+UlJT/lpaW/5mZmf+ampr/nJyc/5+fn/+hoaH/paWl/6ioqP+tra3/sLCw/7a2tv+7u7v/wsLC/8jI - yP/Pz8//19fX/9/f3//n5+f/7+/v//X19f/7+/v//v7+///////+/v7/+vr6//X19f/v7+//6Ojo/+Li - 4v/b29v/1dXV/8/Pz//Jycn/w8PD/76+vv+6urr/tbW1/7Kysv+urq7/rKys/6ioqP+mpqb/pKSk/6Gh - of+goKD/oaGh/6ampv+rq6v/ra2t/7S0tP+1tbX/vr6+/76+vv/IyMj/yMjI/8jIyP/Hx8f/uLi4/5GR - kf+QkJD/kJCQ/4+Pj/+Pj4//jo6O/46Ojv+MjIz/jIyM/4yMjP+Li4v/i4uL/4uLi/+Kior/ioqK/4qK - iv+Kior/iYmJ/4mJif+JiYn/i4uL/46Ojv9+fn70KioqWQAAABQAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAOBAQENnJycueIiIj/hoaG/4ODg/+EhIT/hISE/4SEhP+EhIT/hISE/4WFhf+FhYX/hYWF/4WF - hf+Ghob/hoaG/4aGhv+Hh4f/hYWG/xocbf8XGYb/FxqT/xgalP8ZGpX/GRuW/xoamP8aGpr/Gxuc/xsb - nf8cG6H/HRuj/x0bpf8eHKf/Hxyq/yQjq/+5usP/nJyc/5eXl/+ampr/nJyc/56env+goKD/o6Oj/6am - pv+pqan/rq6u/7Kysv+2trb/u7u7/8HBwf/Hx8f/zs7O/9XV1f/b29v/4uLi/+rq6v/x8fH/9vb2//v7 - +//+/v7///////7+/v/7+/v/9vb2//Hx8f/r6+v/5eXl/9/f3//Z2dn/09PT/87Ozv/IyMj/w8PD/76+ - vv+/v7//vb29/8LCwv/BwcH/xcXF/8XFxf/Kysr/zc3N/9DQ0P/Pz8//z8/P/87Ozv/Bwcr/o6TF/6Kj - xP98fbz/e325/2Fjsv9WWa//SEyp/zU5of9VWZr/k5OT/5KSkv+SkpL/kZGR/5CQkP+QkJD/j4+P/4+P - j/+Pj4//jo6O/46Ojv+MjIz/jIyM/4yMjP+Li4v/i4uL/4uLi/+Li4v/ioqK/4qKiv+Ojo7/kJCQ/3h4 - eOcEBAQ2AAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAoaWlpzYmJif+IiIj/hISE/4SE - hP+FhYX/hYWF/4WFhf+FhYX/hoaG/4aGhv+Ghob/h4eH/4eHh/+Hh4f/iIiI/4iIiP+IiIj/NTlw/xcY - gf8YGpD/GBqU/xkalf8ZG5b/GhqY/xobmv8bG5z/Gxuf/xwcof8dG6P/HRyl/x4cp/8fHar/IB2t/2xt - uf+6urr/m5ub/52dnf+fn5//oaGh/6Wlpf+np6f/q6ur/66urv+zs7P/tra2/7u7u//BwcH/x8fH/8vL - y//T09P/2dnZ/+Dg4P/m5ub/7Ozs//Ly8v/39/f//Pz8/////////////v7+//v7+//39/f/8vLy/+3t - 7f/o6Oj/4uLi/9zc3P/X19f/1dXV/9/f3//i4uL/4eHh/9/f3/+5udj/sbHW/5yc0/+Hh87/f3/M/2Fh - xv9gYMT/QUK9/z49uv8sK7X/IB2w/yAdrv8fHaz/Hh2p/x4cpv8dG6T/HRui/xwcoP8cG5z/GxuY/zk8 - kf+VlZX/lJSU/5OTk/+Tk5P/kpKS/5KSkv+RkZH/kZGR/5CQkP+QkJD/j4+P/4+Pj/+Pj4//jo6O/46O - jv+MjIz/jIyM/4yMjP+Li4v/i4uL/4+Pj/+RkZH/bm5uzQAAACgAAAAKAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABgAAAB9VVVWfiYmJ/4qKiv+FhYX/hYWF/4aGhv+Ghob/hoaG/4aGhv+Hh4f/h4eH/4eH - h/+IiIj/iIiI/4iIiP+JiYn/iYmJ/4qKiv9bXHn/FRd0/xgajf8ZGpT/GRqW/xkblv8aGpj/Ghua/xsb - nP8bG5//HByh/x0bo/8dHKX/Hhyp/x8dqv8gHa3/JiWv/7e3yP+srKz/oaGh/6Ojo/+mpqb/qKio/6ys - rP+vr6//s7Oz/7e3t/+7u7v/wcHB/8XFxf/Ly8v/0NDQ/9bW1v/c3Nz/4uLi/+rq6v/v7+//9fX1//n5 - +f/8/Pz////////////+/v7/+/v7//n5+f/19fX/8PDw/+vr6//l5eX/4ODg/9bW2P9WVKD/QD6l/0E9 - u/8pIsb/KiLM/ykhzP8oIcn/JyDG/yYhxP8lIMD/JCC+/yMfvP8jH7r/Ih62/yEes/8hHbD/IB2u/yAd - rP8fHan/Hhym/x0bpP8dG6L/HByg/xwbnP8bG5n/NjmS/5eXl/+Wlpb/lZWV/5WVlf+UlJT/k5OT/5OT - k/+SkpL/kpKS/5GRkf+RkZH/kJCQ/5CQkP+Pj4//j4+P/4+Pj/+Ojo7/jo6O/46Ojv+MjIz/kpKS/5GR - kf9dXV2fAAAAHwAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAFz09PWyJiYn/jIyM/4iI - iP+Ghob/h4eH/4eHh/+Hh4f/iIiI/4iIiP+IiIj/iIiI/4mJif+JiYn/ioqK/4qKiv+Li4v/i4uL/4eI - iv8YGWn/GBqF/xkak/8aGpb/GhqX/xoamP8aG5r/Gxuc/xsbn/8cG6L/HRuj/x0cpf8eHKn/Hx2r/yAd - rf8gHa//VFW5/8vLy/+oqKj/p6en/6mpqf+tra3/sLCw/7S0tP+3t7f/u7u7/7+/v//ExMT/ycnJ/8/P - z//V1dX/2tra/+Dg4P/m5ub/6+vr//Hx8f/29vb/+vr6//z8/P////////////7+/v/8/Pz/+fn5//X1 - 9f/x8fH/7Ozs/+fn5//i4uL/3d3d/6Wkwv8rKIj/Ix6T/ychrf8oIsD/KSLJ/yghyf8nIMb/JiHE/yYg - wP8lIL//JB+8/yMfuv8jH7b/Ih+z/yEesv8gHa7/IB2s/x8dqf8eHKf/HRyk/x0bov8cHKD/HBud/xsb - mv8vMZL/mpqa/5mZmf+Xl5f/lpaW/5aWlv+VlZX/lJSU/5SUlP+Tk5P/k5OT/5KSkv+SkpL/kZGR/5GR - kf+QkJD/kJCQ/5CQkP+Pj4//j4+P/5CQkP+UlJT/kZGR/0FBQW0AAAAXAAAAAwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAQISEhRX5+fu2RkZH/ioqK/4eHh/+IiIj/iIiI/4iIiP+JiYn/iYmJ/4mJ - if+Kior/ioqK/4uLi/+Li4v/jIyM/4yMjP+Ojo7/jo6O/z5Bcf8WGHn/GRmO/xoalv8aGpf/GhqZ/xsb - mv8cG5z/HBuf/x0bov8dG6P/HRyl/x4cqf8fHav/IB2t/yAdr/8hHrL/mJjH/8fHx/+srKz/rq6u/7Cw - sP+0tLT/t7e3/7u7u/+/v7//xMTE/8nJyf/Ozs7/09PT/9fX1//d3d3/4uLi/+jo6P/t7e3/8vLy//b2 - 9v/6+vr//Pz8/////////////v7+//z8/P/6+vr/9vb2//Ly8v/v7+//6urq/+Xl5f/g4OD/3Nzc/7q5 - y/86N47/Ix2N/yUgpP8nIbv/KCLG/ycgxv8mIcT/JiDC/yUgv/8kH7z/Ix+6/yMftv8iH7T/IR6y/yAe - rv8gHaz/Hx6q/x4dp/8dHKT/HRyi/xwdoP8cHJ3/Gxua/yorkP+cnJz/m5ub/5qamv+ZmZn/mZmZ/5eX - l/+Wlpb/lZWV/5WVlf+UlJT/lJSU/5OTk/+Tk5P/kpKS/5KSkv+RkZH/kZGR/5GRkf+QkJD/k5OT/5eX - l/+GhobtISEhRQAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAobW1txpGR - kf+Ojo7/iIiI/4mJif+JiYn/iYmJ/4qKiv+Kior/i4uL/4uLi/+Li4v/jIyM/46Ojv+Ojo7/j4+P/4+P - j/+QkJD/dXaF/xQWav8ZGoj/GhqV/xoal/8aGpn/Gxua/xwbnP8cG5//HRui/x0bpP8eHKX/Hxyp/yAd - q/8gHK7/IR2w/yEes/8uLbb/w8TR/8XFxf+ysrL/tLS0/7e3t/+7u7v/v7+//8PDw//IyMj/zc3N/9HR - 0f/W1tb/29vb/+Dg4P/m5ub/6+vr/+/v7//09PT/9/f3//v7+//+/v7////////////+/v7//Pz8//r6 - +v/39/f/9PT0//Dw8P/s7Oz/5+fn/+Tk5P/f39//2tra/8vL0v9KSZX/IR2I/yMenP8mIbX/JyHC/yYh - xP8mIML/JSC//yQfvP8jH7r/Ix+3/yIftP8hHrL/IB6u/yAdrP8fHqr/Hh2n/x0cpP8dHKL/HB2h/xwc - nf8bHJv/IySP/5+fn/+dnZ3/nJyc/5ubm/+ampr/mpqa/5mZmf+Xl5f/lpaW/5aWlv+VlZX/lZWV/5SU - lP+UlJT/k5OT/5OTk/+SkpL/kpKS/5GRkf+VlZX/mpqa/3d3d8cAAAAoAAAACQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABxcXFyVkZGR/5GRkf+Kior/ioqK/4qKiv+Li4v/i4uL/4uL - i/+MjIz/jIyM/46Ojv+Ojo7/j4+P/4+Pj/+QkJD/kZGR/5KSkv+SkpL/MjRu/xcZe/8aGZD/GhqX/xoa - mf8bG5v/HBuc/xwbn/8dG6L/HRuk/x4cpv8fHKn/IB2r/yAdrv8hHrD/Ih+z/yMftv9MTb7/1dXX/8nJ - yf+4uLj/u7u7/7+/v//Dw8P/x8fH/8vLy//Q0ND/1dXV/9nZ2f/d3d3/4uLi/+fn5//s7Oz/8fHx//X1 - 9f/5+fn/+/v7//7+/v////////////7+/v/8/Pz/+/v7//f39//19fX/8fHx/+3t7f/q6ur/5eXl/+Hh - 4f/d3d3/2dnZ/9PT1P9nZ6H/IB2E/yIelf8lIK//JiG//yYhwv8lIL//JB+8/yMfuv8jH7f/Ih+0/yEe - sv8gHq7/IB2t/x8eqv8eHaf/HRyk/x0cov8cHaH/HByd/xscm/8dHo3/o6Oj/5+fn/+enp7/nZ2d/5yc - nP+bm5v/mpqa/5qamv+ZmZn/mZmZ/5eXl/+Wlpb/lpaW/5WVlf+VlZX/lJSU/5SUlP+Tk5P/lJSU/5mZ - mf+ampr/YmJilgAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAETEx - MVOMjIz6lZWV/4+Pj/+Li4v/i4uL/4yMjP+MjIz/jo6O/46Ojv+Pj4//j4+P/5CQkP+QkJD/kZGR/5KS - kv+Tk5P/k5OT/5SUlP91doj/FRZr/xkaiP8aG5X/GhqZ/xsbm/8cG53/HByf/x0bov8dHKT/Hh2m/x8d - qf8gHqv/IB2u/yEesP8iH7T/Ix+2/yMguP9lZMb/29vb/9DQ0P+/v7//w8PD/8fHx//Kysr/z8/P/9PT - 0//X19f/3Nzc/+Hh4f/l5eX/6urq/+3t7f/y8vL/9vb2//n5+f/7+/v//v7+/////////////v7+//z8 - /P/7+/v/+fn5//b29v/y8vL/7+/v/+vr6//n5+f/5OTk/+Dg4P/b29v/19fX/9TU1P+FhK7/IyCF/yId - nP8mIbr/JiHC/yUhv/8kILz/Ix+7/yMft/8iH7T/IR6y/yAer/8gHa3/Hx6q/x4dp/8dHKT/HRyj/xwd - of8cHJ3/HByb/xsbjP+mpqf/oaGh/6CgoP+fn5//np6e/52dnf+cnJz/m5ub/5ubm/+ampr/mZmZ/5mZ - mf+Xl5f/l5eX/5aWlv+VlZX/lZWV/5WVlf+Wlpb/np6e/5SUlPo0NDRTAAAAEQAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAJ3x8fNGZmZn/k5OT/4yMjP+Ojo7/jo6O/4+P - j/+Pj4//j4+P/5CQkP+RkZH/kZGR/5KSkv+Tk5P/k5OT/5SUlP+VlZX/lpaW/5eXl/8wM27/Fxh4/xob - j/8aG5j/Gxub/xwcnf8cHKD/HRyi/x0cpP8eHab/Hx2q/yAdrP8gHa7/IR6w/yIftP8jH7f/IyC4/yQf - vP9vbsr/39/f/9nZ2f/Hx8f/ycnJ/87Ozv/R0dH/1tbW/9ra2v/f39//4uLi/+fn5//r6+v/8PDw//T0 - 9P/29vb/+vr6//z8/P/+/v7////////////+/v7//v7+//v7+//5+fn/9vb2//T09P/w8PD/7Ozs/+jo - 6P/l5eX/4eHh/93d3f/a2tr/1tbW/9PT0/+hoL//Mi2t/yYhvf8mIcL/JiG//yUgvf8jILv/IyC3/yIf - tP8hHrL/IB6v/yAdrf8gHqr/Hx2n/x4cpf8dHKP/HB2h/xwcnf8cHJv/GxuM/6ChqP+kpKT/oaGh/6Gh - of+goKD/n5+f/56env+dnZ3/nJyc/5ycnP+bm5v/mpqa/5qamv+ZmZn/mZmZ/5eXl/+Wlpb/lpaW/5ub - m/+goKD/g4OD0QAAACcAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAQAAAAZX19fjpmZmf+Wlpb/kJCQ/4+Pj/+Pj4//kJCQ/5CQkP+RkZH/kZGR/5KSkv+Tk5P/k5OT/5SU - lP+VlZX/lpaW/5eXl/+ZmZn/mpqa/31+jv8WF2j/GRqE/xobl/8bHJv/HByd/xwcoP8dHKL/HRyk/x4d - pv8fHar/IB2s/yAdrv8hHrD/Ih+0/yMft/8jH7r/JB+8/yUhvv9hYsv/3d3h/9/f3//Q0ND/0NDQ/9XV - 1f/Z2dn/3Nzc/+Hh4f/l5eX/6urq/+3t7f/x8fH/9fX1//f39//6+vr//Pz8//7+/v////////////// - ///+/v7/+/v7//r6+v/39/f/9fX1//Hx8f/t7e3/6+vr/+fn5//k5OT/4ODg/9zc3P/Z2dn/3d3d/+bm - 5v/ExeH/KSPD/yYhwv8mIcD/JSC9/yQgu/8jILf/IyC1/yIfs/8hH6//IB6t/yAeqv8fHaf/Hhyl/x0c - o/8cHaH/HByd/xwcnP8bG43/mZql/6Wlpf+kpKT/o6Oj/6Ghof+goKD/oKCg/5+fn/+enp7/nZ2d/52d - nf+cnJz/m5ub/5qamv+ampr/mZmZ/5mZmf+ZmZn/oKCg/6Ghof9mZmaOAAAAGQAAAAQAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA8qKipIkZGR8pycnP+Tk5P/kJCQ/5GR - kf+RkZH/kpKS/5KSkv+Tk5P/lJSU/5SUlP+VlZX/lpaW/5eXl/+ZmZn/mZmZ/5qamv+bm5v/nJyc/0dI - d/8WF3L/GhuN/xscmv8cHJ3/HByg/x0cov8dHKT/Hh2m/x8dqv8gHaz/IB2v/yEesP8iH7T/Ix+3/yMf - uv8kIL3/JSG+/yYhwv9NSsr/2trj/+bm5v/c3Nz/19fX/9vb2//f39//4uLi/+fn5//r6+v/7+/v//Ly - 8v/19fX/+fn5//v7+//8/Pz//v7+//////////////////7+/v/8/Pz/+vr6//f39//19fX/8vLy/+/v - 7//s7Oz/6Ojo/+Xl5f/i4uL/5OTk/+rq6v/r6+v/39/o/19d0f8nIcX/JiHD/yYhwP8lIL3/JCC7/yMg - t/8jILX/Ih+z/yEfr/8gHq3/IB+q/x8eqf8eHaX/HR2j/xwdof8cHJ3/HByc/xscjv+Vlqb/p6en/6am - pv+lpaX/pKSk/6Ojo/+hoaH/oKCg/6CgoP+fn5//np6e/52dnf+dnZ3/nJyc/5ubm/+bm5v/mpqa/52d - nf+kpKT/mZmZ8i4uLkgAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABwAAACF6enq9np6e/5mZmf+SkpL/kpKS/5KSkv+Tk5P/lJSU/5SUlP+VlZX/lpaW/5eX - l/+ZmZn/mZmZ/5qamv+bm5v/nJyc/52dnf+enp7/l5ec/yAjaf8YGXv/GxyT/xwcnP8cHKD/HRyj/x0c - pP8eHab/Hx2q/yAdrP8gHa//IR6y/yIftP8jILf/JCC6/yUgvf8mIb//JiHC/ychxP9DQMz/zMvk/+vr - 6//o6Oj/4eHh/+Hh4f/l5eX/6Ojo/+zs7P/w8PD/8vLy//b29v/5+fn/+/v7//z8/P/+/v7///////// - /////////v7+//z8/P/6+vr/+fn5//b29v/09PT/8PDw/+3t7f/q6ur/6urq/+/v7//w8PD/6+vu/5ST - 3v82M8z/KCLH/ychxf8mIcP/JiHA/yUgvf8kILv/IyC4/yMgtf8iH7P/IR+v/yAerf8gH6v/Hx6p/x4d - pf8dHaP/HB2h/xwdn/8cHZz/GxyP/5OUqf+pqan/qKio/6enp/+mpqb/paWl/6SkpP+jo6P/oaGh/6Cg - oP+goKD/n5+f/56env+dnZ3/nZ2d/5ycnP+cnJz/o6Oj/6enp/+Dg4O+AAAAIQAAAAcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAE0xMTGecnJz+n5+f/5aW - lv+Tk5P/lJSU/5WVlf+VlZX/lpaW/5eXl/+Xl5f/mZmZ/5qamv+bm5v/nJyc/52dnf+enp7/n5+f/6Cg - oP+hoaH/bW6K/xYWaf8aG4X/HBuZ/xwcoP8dHKP/Hhyl/x8dpv8gHar/IB2s/yEer/8iH7L/IiC0/yMg - t/8kILr/JSC9/yYhv/8mIcP/JyHE/yghx/8wKsv/j47b/+3t7f/v7+//7e3t/+rq6v/q6ur/7e3t//Hx - 8f/09PT/9vb2//n5+f/7+/v//Pz8//7+/v/////////////////+/v7//Pz8//v7+//5+fn/9vb2//T0 - 9P/x8fH/8fHx//Ly8v/09PT/8vLy/6mp5v9EP9X/KiPN/ykjyv8oIsn/JyHG/yYhw/8mIcD/JSC9/yQg - u/8jILj/IyC1/yIfs/8hH6//IB6t/yAfq/8fHqn/Hh2l/x0do/8cHaH/HB2f/xwdnP8bHJD/jY6n/6ys - rP+rq6v/qamp/6ioqP+np6f/pqam/6Wlpf+kpKT/o6Oj/6Ghof+goKD/oKCg/5+fn/+enp7/nZ2d/6Cg - oP+np6f/pqam/lBQUGgAAAATAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAKBgYGKYmJidOjo6P/nJyc/5WVlf+VlZX/lpaW/5eXl/+Xl5f/mZmZ/5qa - mv+bm5v/nJyc/52dnf+enp7/n5+f/6CgoP+hoaH/o6Oj/6SkpP+mpqb/R0l6/xcYb/8bG4z/HByd/x0c - o/8eHaX/Hx2n/yAeqv8gHqz/IR6v/yIfsv8jILX/IyC3/yQguv8lIL3/JiG//yYhw/8nIcX/KCLH/ykj - yv8qI8z/TEnV/7q66P/y8vL/9PT0//X19f/09PT/9PT0//X19f/39/f/+vr6//v7+//+/v7//v7+//// - //////////////7+/v/8/Pz/+/v7//n5+f/5+fn/9/f3//f39//39/f/9vb2/7u77P9NStr/KyPS/yok - 0P8qI83/KSPL/ygiyf8nIsb/JiHD/yYhwP8lIL3/JCC8/yMguP8jILX/Ih+z/yEfr/8gHq7/IB+r/x8e - qf8eHaX/HR2j/x0dov8cHZ//HB2c/xsckf+Ehqf/rq6u/6ysrP+rq6v/qamp/6ioqP+np6f/pqam/6Wl - pf+lpaX/pKSk/6Ojo/+hoaH/oKCg/6CgoP+fn5//paWl/62trf+RkZHTBgYGKQAAAAoAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAVYWFhfaam - pv+jo6P/mZmZ/5eXl/+Xl5f/mZmZ/5qamv+bm5v/m5ub/5ycnP+dnZ3/np6e/5+fn/+goKD/oaGh/6Oj - o/+lpaX/pqam/6enp/+kpKb/Ky5v/xkZdf8bHJD/HR2g/x4dpf8fHqf/IB6q/yAerP8hHq//Ih+y/yMg - tf8jILj/JCC6/yUgvf8mIb//JiHD/ychxf8oIsf/KSPK/yojzP8qJM7/KyPS/1ZT2/+sq+v/7u31//f3 - 9//5+fn/+vr6//r6+v/7+/v//Pz8//7+/v///////////////////////v7+//7+/v/8/Pz//Pz8//v7 - +//6+vr/+fn5/7W17/9RTd7/LSTX/ywk1P8rI9L/KiTQ/yojzf8pI8v/KCLJ/ycixv8mIcP/JiLA/yUh - vv8kILz/IyC4/yMgtf8iH7P/IR+w/yAerv8gH6v/Hx6p/x4dpf8dHaP/HR2i/xwdn/8cHZz/GxyT/4CC - p/+vr6//rq6u/62trf+srKz/q6ur/6mpqf+oqKj/p6en/6ampv+lpaX/pKSk/6SkpP+jo6P/oaGh/6Oj - o/+srKz/rq6u/2ZmZn0AAAAVAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAoGBgYqk5OT2qioqP+enp7/mZmZ/5qamv+ampr/m5ub/5yc - nP+dnZ3/np6e/5+fn/+goKD/oaGh/6Ojo/+kpKT/paWl/6enp/+oqKj/qamp/6ysrP+SkqD/Hh5p/xkZ - ev8cHJX/Hh2j/x8ep/8gHqv/IB6s/yEer/8iH7L/IyC1/yMguP8kILv/JSC9/yYhv/8mIcP/JyLF/ygi - yf8pI8v/KiPM/yokzv8rI9L/LCTU/y0k1/8zKtn/ZGHi/7Cu8P/z8vr//Pz8//z8/P/+/v7///////// - /////////////////////////v7+//7+/v/8/Pz/xsX1/4J/6v9AOt//Liba/y4l2f8tJNf/LCTU/ysj - 0v8qJND/KiPN/ykjy/8oIsn/JyLG/yYhw/8mIsD/JSG+/yQhvP8jILj/IyC1/yIfs/8hH7D/IB6u/yAf - q/8fHqn/Hh2l/x0dpP8dHaL/HB2f/xwdnP8bG5P/enym/7Kysv+wsLD/r6+v/66urv+srKz/q6ur/6mp - qf+oqKj/qKio/6enp/+mpqb/paWl/6SkpP+jo6P/qamp/7Kysv+ZmZnbBgYGKgAAAAoAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAA - ABVmZmZ8qamp/qenp/+dnZ3/m5ub/5ycnP+dnZ3/np6e/5+fn/+goKD/oaGh/6Ghof+jo6P/paWl/6am - pv+np6f/qKio/6urq/+srKz/rq6u/6+vr/+Dg5v/Ghpq/xoafv8dHZf/Hx6k/yAeq/8gHq3/IR6v/yIf - sv8jILX/IyC4/yQgu/8lIL3/JiG//yYhw/8nIsX/KCLJ/ykjy/8qI83/KiTO/ysj0v8sJNT/LSTX/y4l - 2P8uJtr/Libd/zQs3/9VUOX/dnTr/5yZ8P+ioPP/srD1/8/O+f+sq/T/oqDz/5+d8/93dO3/U03m/zcv - 4v8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0k1/8sJNT/LCPS/ysk0P8qI87/KiPL/ykiyf8oIsb/JyHD/yYi - wP8lIb7/JCG8/yMguP8jILX/IiC0/yIfsP8hHq7/IB+p/x8epf8fHaX/Hh2k/x0dov8dHZ//HB2c/xsb - lP91eKX/tLS0/7Kysv+wsLD/r6+v/66urv+tra3/rKys/6urq/+pqan/qKio/6enp/+mpqb/pqam/6en - p/+wsLD/sbGx/mtra3sAAAAVAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACgAAACeVlZXXra2t/6SkpP+dnZ3/nZ2d/56e - nv+fn5//oKCg/6Ghof+jo6P/pKSk/6Wlpf+mpqb/qKio/6mpqf+rq6v/ra2t/66urv+vr6//srKy/7Oz - s/91dpb/GBlr/xoagP8eHZj/Hx6m/yAerf8hHq//Ih+y/yMgtf8jILj/JCC7/yUhvv8mIr//JiHD/yci - xf8oIsn/KSPL/yojzf8rJND/KyPS/ywk1P8tJNf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm - 4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywk - 1P8sI9L/KyTQ/yojzv8qI8v/KSLJ/ygixv8nIcP/JiLC/yYhvv8lIbz/JCC4/yMhtf8iILT/Ih+v/yEf - qf8fH5r/HR2T/x4dmf8eHaH/HR2i/x0dn/8cHZ3/GxuV/2tupP+1tbX/tLS0/7Ozs/+ysrL/sLCw/6+v - r/+tra3/rKys/6ysrP+rq6v/qamp/6ioqP+oqKj/ra2t/7W1tf+dnZ3XBgYGJwAAAAoAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAADAAAAE2BgYGqtra3+ra2t/6Ojo/+fn5//oKCg/6Ghof+jo6P/o6Oj/6Wlpf+mpqb/p6en/6io - qP+pqan/rKys/62trf+urq7/sLCw/7Kysv+0tLT/tbW1/7e3t/9tb5X/GBlr/xsbgP8eHZn/IB+p/yEe - sP8iH7L/IyC1/yMguP8kIbv/JSG+/yYiwP8mIcP/JyLF/ykiyf8qI8v/KiPN/ysk0P8rI9L/LCTU/y0l - 1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm - 4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdf/LCTU/ywj0v8rI9H/KiPO/yojy/8pIsn/KCLG/ych - xP8mIsL/JiG+/yUhvP8kILj/IyC2/yIgsv8hIKb/Hh2V/xwcfv8aG3X/GxuB/x0dlP8dHZ//HR2f/xwd - nf8bG5X/Zmmi/7e3t/+2trb/tLS0/7Ozs/+ysrL/sLCw/6+vr/+urq7/ra2t/6ysrP+rq6v/qamp/6ys - rP+2trb/tra2/mZmZmsAAAATAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAH5OTk8Czs7P/q6ur/6Oj - o/+hoaH/o6Oj/6SkpP+lpaX/pqam/6enp/+oqKj/q6ur/6ysrP+tra3/r6+v/7CwsP+ysrL/tLS0/7W1 - tf+3t7f/urq6/7u7u/9vcZf/Ghtt/xsbgP8fHpj/IR+q/yIfsv8jILX/IyC4/yUhu/8mIb7/JiLA/ych - w/8oIsX/KSLJ/yojy/8qI83/KyTQ/ysj0v8sJNT/LSXX/y4l2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm - 4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l - 1/8sJNT/LCPS/ysj0f8qI87/KiPL/ykiyf8oIsb/JyHE/yYiwv8mIb7/JSG8/yQguP8jIbL/IR+k/x8d - jv8cG3n/HyBu/01Oh/8aG23/Ght7/xwcj/8dHZr/HB2c/xwclv9fY6H/uLi4/7e3t/+2trb/tbW1/7S0 - tP+zs7P/srKy/7CwsP+vr6//ra2t/62trf+tra3/tbW1/7y8vP+bm5vAAAAAHwAAAAcAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAOR0dHS62trfK0tLT/qamp/6Ojo/+lpaX/pqam/6enp/+oqKj/qamp/6ur - q/+srKz/rq6u/6+vr/+wsLD/s7Oz/7S0tP+2trb/t7e3/7q6uv+7u7v/vb29/7+/v/+CgqH/HR1u/xsb - fP8fHZX/ISCp/yMhtP8kILj/JSG7/yYhvv8mIsD/JyHE/ygixf8pIsn/KiPL/yojzf8rJND/KyPS/ywk - 1P8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm - 4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl1P8sJNP/KyPR/yojzv8qI8v/KSLJ/ygi - xv8nIcT/JiLC/yYhvv8lIbr/IyCy/yEfoP8eHYn/HBt1/zM0e/+qqrr/ycnJ/4WGpP8dHmz/GRp2/xwc - i/8cHZj/HByW/1peoP+7u7v/urq6/7e3t/+2trb/tbW1/7S0tP+zs7P/srKy/7CwsP+vr6//rq6u/7Oz - s/+8vLz/tbW18kpKSksAAAAOAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAWfn5+jbi4 - uP+zs7P/qKio/6ampv+np6f/qKio/6mpqf+rq6v/ra2t/66urv+vr6//sLCw/7Ozs/+0tLT/tra2/7e3 - t/+6urr/u7u7/729vf+/v7//wsLC/8TExP+Tla3/IyVx/xwbef8fHY7/IiCl/yQgtP8lIbr/JiG+/yYi - wP8nIcT/KCLF/ykiyf8qI8v/KiPN/ysk0P8rJNP/LCXU/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m - 4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l - 2f8tJdf/LCXU/ywk0/8rI9H/KiPO/yojy/8pIsn/KCLH/ychxP8mIsL/JiG8/yQhsP8iH5v/Hh2D/x0c - c/9dXpT/yMjL/83Nzf/Kysr/ycnJ/5SVrP8hJG3/GRpz/xsch/8bHJD/UFOc/7y8vP+7u7v/urq6/7i4 - uP+3t7f/tbW1/7S0tP+zs7P/srKy/7CwsP+zs7P/u7u7/8HBwf+FhYWNAAAAFgAAAAUAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAkHBwcjpKSkzry8vP+ysrL/qamp/6ioqP+rq6v/rKys/62t - rf+urq7/r6+v/7Kysv+zs7P/tLS0/7a2tv+3t7f/urq6/7u7u/+9vb3/v7+//8LCwv/Dw8P/xcXF/8jI - yP+ysb7/OzyA/x0bdv8fHon/Ih+g/yQhsP8mIbz/JiLA/ychxP8oIsb/KSLJ/yojy/8qI83/KyTQ/ysk - 0/8sJdT/LSXX/y4l2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm - 5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l1/8sJdT/LCTT/ysk0f8qJM7/KiPL/yki - yf8oIsf/JyHD/yYhvP8kIKz/IR+V/x8cgP8nJ3j/kpSy/9HR0f/Q0ND/zs7O/83Nzf/Kysr/ycnJ/6Ok - s/8nKW7/GBlv/xobgP9JTJb/vr6+/729vf+7u7v/urq6/7i4uP+3t7f/tra2/7W1tf+0tLT/tLS0/7y8 - vP/Dw8P/qqqqzgcHByMAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AA1MTExJtLS07ry8vP+ysrL/rKys/6ysrP+tra3/rq6u/7CwsP+ysrL/s7Oz/7W1tf+2trb/t7e3/7q6 - uv+7u7v/vb29/7+/v//BwcH/w8PD/8XFxf/IyMj/ycnJ/8vLy//Jycv/YWOW/x0cc/8eHYL/ISCV/yQg - q/8lIbj/JyHC/ygixv8pIsn/KiPL/yokzf8rJND/KyTT/ywl1P8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m - 3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m - 2v8uJdn/LSXX/ywl1P8sJNP/KyTR/yokzv8qI8v/KSLJ/ygiw/8mIbb/IyCk/yEejP8fHXv/QkSJ/8DB - y//V1dX/1NTU/9HR0f/Pz8//zs7O/8vLy//Kysr/yMjI/66vuv8vMnP/GBlq/0BDhv+/v7//vr6+/729 - vf+8vLz/urq6/7i4uP+3t7f/tra2/7a2tv+7u7v/xMTE/7u7u+5QUFBJAAAADQAAAAIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABN2dnZ0v7+//by8vP+zs7P/rq6u/6+v - r/+wsLD/srKy/7Ozs/+1tbX/tra2/7i4uP+6urr/u7u7/729vf+/v7//wcHB/8PDw//FxcX/x8fH/8nJ - yf/Ly8v/zs7O/9DQ0P/R0dH/m5u3/zAvfv8fHXv/IR6L/yMgn/8lIrD/JyK+/ykix/8qI8v/KiTN/ysk - 0P8rJNP/LCXW/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm - 5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdf/LCXW/ywk0/8rJNH/KiTO/yok - yf8oI73/JSKt/yMgl/8gH4X/IR94/3N0pv/X19r/2dnZ/9bW1v/V1dX/09PT/9HR0f/Pz8//zs7O/8vL - y//Kysr/yMjI/7e4v/85PHb/NTh1/8LCwv+/v7//vr6+/729vf+8vLz/urq6/7i4uP+3t7f/u7u7/8TE - xP/Gxsb9e3t7dAAAABMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABwAAABmWlpakw8PD/7y8vP+zs7P/sLCw/7Kysv+0tLT/tbW1/7a2tv+4uLj/urq6/7u7 - u/+9vb3/v7+//8HBwf/Dw8P/xMTE/8fHx//Jycn/y8vL/83Nzf/Pz8//0dHR/9TU1P/W1tb/0NHV/2xs - oP8hIXn/IB6B/yEfjv8lIaL/JyK0/ygkwP8qI8r/KyTO/ysk0/8sJdb/LSXX/y4l2P8uJtr/Libd/y8l - 3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m - 3f8uJtr/LiXZ/y0l1/8sJdb/LCTS/yokzP8pI8D/JyKz/yUhn/8iH4v/IB59/0FAi/+ztMn/39/f/9zc - 3P/a2tr/2dnZ/9bW1v/U1NT/09PT/9DQ0P/Pz8//zc3N/8vLy//Kysr/yMjI/8C/w/9kZ4//w8PD/8LC - wv+/v7//vr6+/729vf+8vLz/u7u7/729vf/ExMT/y8vL/52dnaUAAAAZAAAABwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACg0NDSWurq7QxMTE/7y8 - vP+1tbX/tLS0/7W1tf+2trb/uLi4/7q6uv+7u7v/vb29/76+vv/BwcH/w8PD/8TExP/Hx8f/yMjI/8rK - yv/Nzc3/z8/P/9DQ0P/T09P/1dXV/9fX1//a2tr/3Nzc/7q7zP9ZWZj/Hx16/yEfg/8jH5L/JiGh/ycj - sv8pJL7/KiTK/ywl0v8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm - 5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdj/LCTT/ysly/8qJL//KCKy/yYh - oP8kII7/Ih+D/zIyhf+Wlrv/5OTk/+Hh4f/g4OD/3d3d/9vb2//a2tr/19fX/9bW1v/U1NT/0dHR/9DQ - 0P/Pz8//zc3N/8vLy//Jycn/yMjI/8fHx//ExMT/w8PD/8LCwv+/v7//vr6+/729vf++vr7/xMTE/83N - zf+0tLTRDQ0NJgAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAADU5OTkG6urrox8fH/729vf+2trb/tra2/7i4uP+6urr/u7u7/729 - vf++vr7/wcHB/8LCwv/ExMT/x8fH/8jIyP/Kysr/y8vL/87Ozv/Q0ND/09PT/9XV1f/W1tb/2dnZ/9vb - 2//d3d3/4ODg/+Hh4f/AwNL/X2Cf/yMhff8iIIT/JCCO/yUhmv8nIqv/KSO4/ysjw/8sJMr/LSXR/y4l - 2f8uJtv/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybe/y4l - 2P8tJdL/LCXL/ywjxP8qI7f/KCOp/yYhmv8kIY7/IyCF/ywrhf+AgLP/4ODl/+bm5v/l5eX/4uLi/+Dg - 4P/f39//3Nzc/9vb2//Z2dn/19fX/9XV1f/U1NT/0dHR/9DQ0P/Ozs7/zc3N/8vLy//Jycn/yMjI/8fH - x//ExMT/w8PD/8LCwv/BwcH/v7+//8XFxf/Ozs7/wsLC6FJSUkEAAAANAAAAAgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEHBw - cFvDw8P0ycnJ/7+/v/+6urr/urq6/7u7u/+9vb3/vr6+/8HBwf/CwsL/xMTE/8XFxf/IyMj/ycnJ/8vL - y//Ozs7/0NDQ/9HR0f/U1NT/1tbW/9fX1//a2tr/3Nzc/9/f3//h4eH/4uLi/+Xl5f/n5+f/0NDd/3t8 - sP82NIr/IyCD/yQgi/8lIZP/JyKc/ygipv8qJLP/KyW9/ywkxP8tJcr/LSXO/y4l0v8uJdT/LiXU/y4l - 1P8uJdT/LiXU/y4l0v8uJdH/LiXN/y0ly/8sJMT/KyS7/yojsv8oI6X/KCKb/yYhk/8kIYr/JCCE/0JB - kv+Vk8D/5OPo/+vr6//o6Oj/5+fn/+Xl5f/k5OT/4eHh/+Dg4P/d3d3/3Nzc/9ra2v/Z2dn/1tbW/9XV - 1f/T09P/0dHR/8/Pz//Ozs7/zc3N/8rKyv/Jycn/yMjI/8fHx//ExMT/w8PD/8PDw//IyMj/z8/P/8vL - y/RycnJbAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEoSEhG7Jycn6y8vL/8HBwf+8vLz/vb29/76+ - vv/BwcH/wsLC/8TExP/FxcX/yMjI/8nJyf/Ly8v/zc3N/8/Pz//R0dH/09PT/9XV1f/X19f/2tra/9vb - 2//d3d3/4ODg/+Li4v/k5OT/5ubm/+jo6P/q6ur/7Ozs/+/v7/+1tNH/bGyr/zg3j/8kIYb/JSGK/yYh - kf8nIpb/JyKa/ygjoP8pJKb/KiSs/yskr/8rJK//KySw/ysksP8qI67/KiSs/ykjpv8pI6T/KCOf/ygj - m/8nIpX/JiGR/yUiiv8lIIb/RUOX/35+tv/Ozd//8fHx/+/v7//t7e3/6+vr/+rq6v/o6Oj/5ubm/+Xl - 5f/i4uL/4eHh/9/f3//d3d3/29vb/9ra2v/X19f/1tbW/9TU1P/T09P/0NDQ/8/Pz//Ozs7/zc3N/8rK - yv/Jycn/yMjI/8XFxf/FxcX/ycnJ/9PT0//S0tL6h4eHbwAAABMAAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAFAAAAE42NjXnOzs78zs7O/8XFxf+/v7//wcHB/8LCwv/Dw8P/xcXF/8fHx//Jycn/y8vL/83N - zf/Pz8//0NDQ/9PT0//V1dX/1tbW/9nZ2f/a2tr/3Nzc/9/f3//h4eH/4uLi/+Xl5f/n5+f/6urq/+vr - 6//t7e3/7+/v//Hx8f/y8vL/9fX1/9nY6P+bmsj/aWeu/0dFm/8qJ4v/JiKJ/yYii/8mIY//JyKR/yci - kf8nIpL/JyKS/ycikf8nIo//JiGN/yYii/8mIon/MS6P/1NQo/95d7f/rKvS/+bm7v/29vb/9fX1//Ly - 8v/x8fH/8PDw/+3t7f/s7Oz/6+vr/+jo6P/n5+f/5eXl/+Tk5P/h4eH/4ODg/93d3f/c3Nz/29vb/9nZ - 2f/X19f/1dXV/9TU1P/T09P/0NDQ/8/Pz//Ozs7/y8vL/8rKyv/Jycn/ycnJ/83Nzf/U1NT/1NTU/JGR - kXkAAAATAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAFJmZmX3Pz8/50dHR/8jI - yP/ExMT/w8PD/8XFxf/Hx8f/ycnJ/8rKyv/Nzc3/zs7O/9DQ0P/R0dH/1NTU/9bW1v/X19f/2tra/9zc - 3P/d3d3/4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/7Ozs/+3t7f/w8PD/8fHx//T09P/19fX/9vb2//f3 - 9//5+fn/+vr6//v7+//f3u7/zMvl/5+dzv+cm83/nJvN/5ybzv+cm87/nJvO/7u63f/My+X/zMvl//n5 - +//7+/v/+/v7//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Hx8f/w8PD/7+/v/+3t7f/r6+v/6urq/+jo - 6P/m5ub/5eXl/+Li4v/h4eH/39/f/93d3f/c3Nz/2tra/9nZ2f/W1tb/1dXV/9TU1P/R0dH/0NDQ/8/P - z//Nzc3/y8vL/8vLy//Q0ND/19fX/9XV1fmZmZl9AAAAFAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAFAAAAE46OjnHS0tL11dXV/8vLy//Hx8f/x8fH/8jIyP/Kysr/y8vL/87O - zv/Pz8//0dHR/9TU1P/V1dX/19fX/9nZ2f/b29v/3d3d/9/f3//h4eH/4uLi/+Xl5f/n5+f/6Ojo/+vr - 6//s7Oz/7+/v//Dw8P/y8vL/9PT0//X19f/29vb/+fn5//r6+v/7+/v/+/v7//z8/P/+/v7//v7+//// - //////////////////////////////7+/v/+/v7//Pz8//z8/P/7+/v/+vr6//n5+f/39/f/9vb2//X1 - 9f/09PT/8vLy//Hx8f/v7+//7e3t/+zs7P/q6ur/6Ojo/+fn5//l5eX/5OTk/+Li4v/g4OD/39/f/9zc - 3P/b29v/2tra/9fX1//W1tb/1dXV/9PT0//R0dH/0NDQ/8/Pz//Pz8//09PT/9ra2v/Y2Nj1kJCQcQAA - ABMAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAEYKC - gl7Ozs7s19fX/9DQ0P/Kysr/ycnJ/8vLy//Nzc3/z8/P/9DQ0P/T09P/1dXV/9bW1v/Z2dn/2tra/9zc - 3P/d3d3/4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/6+vr/+3t7f/v7+//8fHx//Ly8v/09PT/9vb2//f3 - 9//5+fn/+vr6//v7+//8/Pz//Pz8//7+/v/+/v7//////////////////////////////////v7+//7+ - /v/8/Pz//Pz8//v7+//6+vr/+fn5//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/v7+//7Ozs/+vr - 6//q6ur/5+fn/+bm5v/l5eX/4uLi/+Hh4f/g4OD/3d3d/9zc3P/a2tr/2dnZ/9fX1//W1tb/1NTU/9PT - 0//R0dH/0dHR/9bW1v/d3d3/09PT7IKCgl4AAAARAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAD3d3d1HOzs7k3Nzc/9TU1P/Pz8//zc3N/8/P - z//Q0ND/0dHR/9TU1P/W1tb/19fX/9ra2v/b29v/3d3d/9/f3//h4eH/4uLi/+Xl5f/m5ub/6Ojo/+vr - 6//s7Oz/7e3t//Dw8P/x8fH/8vLy//X19f/29vb/9/f3//n5+f/6+vr/+/v7//z8/P/8/Pz//v7+//7+ - /v/////////////////////////////////+/v7//v7+//z8/P/8/Pz/+/v7//r6+v/6+vr/+fn5//f3 - 9//29vb/9fX1//T09P/x8fH/8PDw/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Dg - 4P/f39//3d3d/9vb2//a2tr/2dnZ/9bW1v/V1dX/1NTU/9bW1v/a2tr/4ODg/9XV1eR6enpRAAAADwAA - AAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAEAAAADV9fXzvHx8fL4ODg/9ra2v/T09P/0dHR/9HR0f/U1NT/1dXV/9bW1v/Z2dn/2tra/9zc - 3P/f39//4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/6+vr/+3t7f/v7+//8PDw//Ly8v/09PT/9fX1//b2 - 9v/39/f/+fn5//r6+v/7+/v//Pz8//z8/P/+/v7//v7+//////////////////////////////////7+ - /v/+/v7//Pz8//z8/P/7+/v/+vr6//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Ly8v/x8fH/7+/v/+3t - 7f/s7Oz/6+vr/+rq6v/n5+f/5ubm/+Xl5f/i4uL/4eHh/+Dg4P/d3d3/3Nzc/9vb2//a2tr/19fX/9fX - 1//a2tr/39/f/+Tk5P/Ly8vLY2NjOwAAAA0AAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACiYmJiG1tbWi5OTk/9/f - 3//Z2dn/1dXV/9XV1f/W1tb/19fX/9ra2v/b29v/3d3d/9/f3//h4eH/4uLi/+Xl5f/m5ub/6Ojo/+rq - 6v/s7Oz/7e3t/+/v7//x8fH/8vLy//T09P/19fX/9vb2//n5+f/5+fn/+vr6//v7+//8/Pz//Pz8//7+ - /v/+/v7//////////////////////////////////v7+//7+/v/8/Pz//Pz8//v7+//7+/v/+vr6//n5 - +f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7+/v/+zs7P/r6+v/6urq/+jo6P/n5+f/5eXl/+Tk - 5P/i4uL/4ODg/9/f3//d3d3/3Nzc/9ra2v/b29v/3d3d/+Tk5P/n5+f/ubm5oiYmJiEAAAAKAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABwAAABOZmZlu2tra7OTk5P/d3d3/2tra/9nZ2f/Z2dn/29vb/9zc - 3P/f39//4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/6+vr/+zs7P/v7+//8PDw//Hx8f/y8vL/9fX1//b2 - 9v/39/f/+fn5//r6+v/7+/v/+/v7//z8/P/+/v7//v7+//7+/v////////////////////////////// - ///+/v7//v7+//7+/v/8/Pz/+/v7//v7+//6+vr/+fn5//f39//29vb/9fX1//X19f/y8vL/8fHx//Dw - 8P/v7+//7e3t/+zs7P/r6+v/6Ojo/+fn5//m5ub/5eXl/+Li4v/h4eH/4ODg/9/f3//f39//39/f/+Li - 4v/n5+f/3d3d7Jubm24AAAATAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAA - AA1vb29Az8/Px+jo6P/k5OT/4ODg/9zc3P/c3Nz/3d3d/+Dg4P/h4eH/4uLi/+Xl5f/m5ub/6Ojo/+rq - 6v/r6+v/7e3t/+/v7//w8PD/8fHx//T09P/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//7+ - /v/+/v7//v7+//////////////////////////////////7+/v/+/v7//v7+//z8/P/7+/v/+/v7//r6 - +v/5+fn/+fn5//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/t7e3/7Ozs/+vr6//q6ur/6Ojo/+bm - 5v/l5eX/5OTk/+Li4v/h4eH/4eHh/+Tk5P/o6Oj/6+vr/9DQ0Mdvb29AAAAADQAAAAQAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAkAAAAZqqqqft7e3unq6ur/5eXl/+Li - 4v/g4OD/4ODg/+Li4v/k5OT/5ubm/+fn5//o6Oj/6+vr/+zs7P/t7e3/7+/v//Hx8f/y8vL/9PT0//X1 - 9f/29vb/9/f3//n5+f/6+vr/+/v7//z8/P/8/Pz//v7+//7+/v////////////////////////////// - /////////v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+vr6//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Ly - 8v/x8fH/8PDw/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+bm5v/l5eX/5eXl/+Xl5f/o6Oj/7Ozs/+Dg - 4OmsrKx+AAAAGQAAAAkAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAANYmJiNMbGxqzp6en86+vr/+fn5//l5eX/5OTk/+Xl5f/m5ub/5+fn/+rq - 6v/r6+v/7Ozs/+/v7//w8PD/8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6+v/7+/v//Pz8//z8 - /P/+/v7//v7+///////////////////////////////////////+/v7//v7+//7+/v/8/Pz//Pz8//v7 - +//6+vr/+vr6//n5+f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7+/v/+3t7f/s7Oz/6+vr/+rq - 6v/o6Oj/5+fn/+fn5//r6+v/7e3t/+vr6/zIyMisYmJiNAAAAA0AAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAAAAEZeX - l1nZ2dnO7+/v/+3t7f/q6ur/5+fn/+jo6P/o6Oj/6urq/+zs7P/t7e3/7+/v//Dw8P/x8fH/9PT0//X1 - 9f/29vb/9/f3//n5+f/6+vr/+vr6//v7+//8/Pz//Pz8//7+/v/+/v7///////////////////////// - //////////////7+/v/+/v7//v7+//z8/P/8/Pz/+/v7//r6+v/6+vr/+fn5//f39//29vb/9vb2//X1 - 9f/09PT/8vLy//Hx8f/w8PD/7+/v/+zs7P/r6+v/6+vr/+vr6//t7e3/8PDw//Hx8f/b29vOl5eXWQAA - ABEAAAAHAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACQAAABWoqKht3t7e0vLy8v/w8PD/7e3t/+3t - 7f/s7Oz/7Ozs/+3t7f/w8PD/8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6+v/6+vr/+/v7//z8 - /P/8/Pz//v7+//7+/v///////////////////////////////////////v7+//7+/v/+/v7//Pz8//z8 - /P/7+/v/+/v7//r6+v/5+fn/9/f3//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/v7+//7+/v/+/v - 7//w8PD/8vLy//T09P/f39/Sra2tbQAAABUAAAAJAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABAAAAAoKCgoZsLCwb9zc3Mn19fX/9PT0//Ly8v/x8fH/8fHx//Hx8f/x8fH/8vLy//T0 - 9P/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//z8/P/+/v7//v7+//////////////////// - ///////////////////+/v7//v7+//7+/v/8/Pz//Pz8//v7+//7+/v/+vr6//n5+f/5+fn/9/f3//b2 - 9v/19fX/9PT0//Ly8v/y8vL/8fHx//Ly8v/09PT/9fX1//b29v/e3t7JsLCwbwoKChkAAAAKAAAABAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAKAAAAFZeX - l1TS0tKr6Ojo5vb29v/29vb/9fX1//T09P/19fX/9fX1//b29v/29vb/9/f3//n5+f/6+vr/+/v7//v7 - +//8/Pz//Pz8//7+/v/+/v7///////////////////////////////////////7+/v/+/v7//v7+//z8 - /P/8/Pz/+/v7//v7+//6+vr/+fn5//n5+f/39/f/9vb2//X19f/29vb/9vb2//b29v/39/f/9/f3/+jo - 6ObS0tKsl5eXVAAAABUAAAAKAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAABwAAAA5MTEwor6+vbdjY2Lry8vL1+fn5//n5 - +f/5+fn/+fn5//n5+f/6+vr/+fn5//r6+v/7+/v/+/v7//z8/P/+/v7//v7+//7+/v////////////// - /////////////////////////v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+/v7//r6+v/6+vr/+vr6//n5 - +f/5+fn/+fn5//r6+v/6+vr/8/Pz9djY2Lqvr69tTExMKAAAAA4AAAAHAAAAAgAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAAIAAAAEHZ2djbBwcGA29vbuu7u7uf7+/v/+/v7//v7+//7+/v/+/v7//z8 - /P/8/Pz//Pz8//7+/v/+/v7//v7+///////////////////////////////////////+/v7//v7+//7+ - /v/8/Pz//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//u7u7n3NzcusHBwYB2dnY2AAAAEAAA - AAgAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAA - AAkAAAAQaWlpLpqamlHFxcWK4eHhwOvr69/z8/Pw/v7+//7+/v/+/v7//v7+//7+/v/+/v7///////// - //////////////////////////////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/z8/Pw6+vr3+Hh - 4cDFxcWKmpqaUWlpaS4AAAAQAAAACQAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAABgAAAAoAAAAOCgoKGIOD - gzqurq5fvb29ecvLy5Xd3d2u5eXlxenp6dHw8PDd8PDw5vn5+fT5+fn0+fn59Pn5+fTw8PDm8PDw3enp - 6dHl5eXF3d3drsvLy5W9vb15rq6uX4ODgzoKCgoYAAAADgAAAAoAAAAGAAAAAwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAwAAAAYAAAAIAAAACgAAAA0AAAAPAAAAEAAA - ABEAAAATAAAAEwAAABQAAAAUAAAAEwAAABMAAAARAAAAEAAAAA8AAAANAAAACgAAAAgAAAAGAAAAAwAA - AAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - AAAAAAAA/////////////////////////////+AAAAf///////////////4AAAAAf//////////////w - AAAAAA//////////////gAAAAAAB/////////////AAAAAAAAD////////////AAAAAAAAAP//////// - ///AAAAAAAAAA///////////AAAAAAAAAAD//////////gAAAAAAAAAAf/////////gAAAAAAAAAAB// - ///////gAAAAAAAAAAAH////////wAAAAAAAAAAAA////////4AAAAAAAAAAAAH///////8AAAAAAAAA - AAAA///////8AAAAAAAAAAAAAD//////+AAAAAAAAAAAAAAf//////AAAAAAAAAAAAAAD//////gAAAA - AAAAAAAAAAf/////wAAAAAAAAAAAAAAD/////4AAAAAAAAAAAAAAAf////8AAAAAAAAAAAAAAAD///// - AAAAAAAAAAAAAAAA/////gAAAAAAAAAAAAAAAH////wAAAAAAAAAAAAAAAA////4AAAAAAAAAAAAAAAA - H///+AAAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAAB///4AAAAAAAAAAA - AAAAAAf//8AAAAAAAAAAAAAAAAAD//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//wAAAAAA - AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/wA - AAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/gAAAAAAAAAAAAAAAAA - AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAA - AAAAAAAP8AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA - AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AA - AAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA - AAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAA - AAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA - AAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AA - AAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA - AAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAA - AAAAAAADwAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA - AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAD/AA - AAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA - AB/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAA - AAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//4AAAAAA - AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAP//+AAAAAAAAAAAAAAAAAH///g - AAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAA - H////AAAAAAAAAAAAAAAAD////4AAAAAAAAAAAAAAAB/////AAAAAAAAAAAAAAAA/////wAAAAAAAAAA - AAAAAP////+AAAAAAAAAAAAAAAH/////wAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAAAB//////wAAAA - AAAAAAAAAA//////+AAAAAAAAAAAAAAf//////wAAAAAAAAAAAAAP///////AAAAAAAAAAAAAP////// - /4AAAAAAAAAAAAH////////AAAAAAAAAAAAD////////8AAAAAAAAAAAD/////////gAAAAAAAAAAB// - ///////+AAAAAAAAAAB//////////wAAAAAAAAAA///////////AAAAAAAAAA///////////8AAAAAAA - AA////////////wAAAAAAAA/////////////gAAAAAAB//////////////AAAAAAD//////////////+ - AAAAAH///////////////+AAAAf///////////////////////////////////////////////////// - //////////////////8oAAAAMAAAAGAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAFAAAACwAAAA8AAAARAAAAEQAAAA8AAAALAAAABQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAUAAAAaAAAAPAoKCmAgICCENDQ0nEFBQatLS0uzS0tLs0FBQasyMjKcICAghAoK - CmAAAAA8AAAAGgAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAQAAAAPx8fH4FMTEy/dnZ255qamvu7u7v/0NDQ/+Dg4P/p6en/6enp/+Dg - 4P/S0tL/vb29/5ycnPt3d3fnTU1Nvx8fH4EAAAA/AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAEk0NDSkcXFx566urv/c3Nz/9PT0//z8/P////////////// - ///////////////////////////////////29vb/4ODg/7Gxsf9zc3PnNjY2pAAAAEkAAAAOAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAwKioqlnR0dOu9vb3/5ubm/+/v7//y8vL/8/Pz//b2 - 9v/5+fn//Pz8//7+/v////////////7+/v/9/f3/+/v7//n5+f/39/f/9fX1//X19f/r6+v/wcHB/3Z2 - duwsLCyWAAAAMAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwoKCl1VVVXSpqam/9vb2//k5OT/5ubm/+np - 6f/t7e3/8fHx//X19f/5+fn/+/v7//7+/v////////////7+/v/9/f3/+/v7//j4+P/29vb/8fHx/+7u - 7v/r6+v/6urq/+Hh4f+rq6v/WFhY0g0NDV0AAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATIiIif3Nzc/HCwsL/2NjY/9nZ - 2f/d3d3/4uLi/+fn5//s7Oz/8PDw//T09P/39/j/+/v7/////f///////////////v/9/fz/+vr6//j4 - +P/09PT/8PDw/+zs7P/o6Oj/5OTk/+Dg4P/g4OD/ycnJ/3h4ePEkJCR/AAAAEwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYqKiqRgoKC+sbG - xv/Ozs7/0dHR/9bW1v/a2tr/39/f/+Xl5f/q6un/8/Pw//z89f////r//f38//Dw/P/r6/z/6+v8//Dw - /P/3+Pz////8////+f/39/T/7+/u/+rq6v/m5ub/4eHh/9zc3P/Y2Nj/19fX/87Ozv+Hh4f6LS0tkQAA - ABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAES8v - L5KGhob+wMDA/8fHxv/Ozsz/zc3N/9LS0v/X19j/3d3c/+rq5f/w8O7/1tXu/6mm6v98d+b/Xlfl/0tE - 5f9DO+b/RDvn/0tC5v9VTeX/cGrm/6Ge6//Y1/H/9fXy/+7u6v/j4+P/39/f/9ra2v/V1dX/0dHR/83N - zf/Jycn/jIyM/jAwMJIAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAGJycnen5+fvu5ubn/vb28/7W2vv+ys8n/0tLO/83Nzf/Y2NX/4+Pi/7Kx4P9jYNT/My3P/yQc - 0/8mHdj/KCDd/ysi4P8tI+L/LSPj/ywi4f8qId7/Jx3a/yUc1f80LdL/bWrZ/8TD5v/s7Of/3t7c/9bW - 1v/R0dH/zc3N/8nJyf/FxcX/wcHB/4aGhvspKSl6AAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAASEhJRbW1t7q+vr/+0tLT/ubm4/6iotf84OqL/p6fL/9zc0//Gxtn/YV/J/yMe - v/8hG8X/KCHM/ywk0/8uJdn/Libe/y8m4f8wJuP/MCbk/zAm4v8vJt//LiXb/y0l1v8pIs//IRvI/ykl - xP95eNH/2Njg/9ra1f/Nzc3/ycnJ/8TExP+/v7//vb29/7e3t/9ycnLuEhISUQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVVVVXPoKCg/62trf+vr6//tbWz/6Slsf8hIpr/Kiqn/42N - yf89PLj/Gxi2/yUgv/8oIsb/KiPN/ywk0/8uJdn/Libf/y8m4/8wJuX/MCbm/zAm5P8vJuH/LiXc/y0l - 1v8rI9D/KSLJ/yUfw/8cGLn/SknA/7291//S0s7/xMTE/7+/v/+7u7v/uLi4/7a2tv+pqan/WFhYzwAA - ACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjY2NoyKior/pqam/6enp/+qqqr/sLCu/52e - rP8iI5v/Ghqi/xoZqP8eG6//IyC3/yUhv/8nIsb/KSPN/ywk1P8tJNj/KCDR/yQcxf8kG77/JBy+/yQb - v/8lHcn/KyLW/y0l1/8rI9H/KSLJ/ychw/8lIbv/HBmx/y8vsv+pqcz/ycnE/7q6uv+2trb/s7Oz/7Cw - sP+vr6//kZGR/zg4OIwAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJN2ZmZumenp7/oKCg/6Ki - ov+lpaX/q6up/5eXp/8fH5r/HByj/x8eqf8hHrD/IyC3/yUgvv8nIsf/KCLL/yIbvP8rJaj/Uk6r/399 - vP+bmsr/n57M/5eVx/9ua7b/OjWm/yIcsv8nIMr/KSLK/yYhwv8kIbv/IiCz/xsaqv8sK6r/qKnE/7y7 - t/+ysrL/rq6u/6urq/+pqan/pqam/2xsbOkJCQk3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPj4+lIqK - iv+ampr/m5ub/52dnf+goKD/pqak/4+Po/8dHZn/HByi/x8dqP8hHq//IyC3/yUgv/8iHLj/JyOe/2dl - qf/AwNP/8fHx/////f/////////////////9/fr/39/m/5KRvf80MKD/IRy6/yYhw/8kILr/Ih+z/yAe - rP8YF6P/PD2p/7W1vP+urqz/qamp/6ampv+jo6P/o6Oj/5KSkv9DQ0OUAAAABQAAAAAAAAAAAAAAAAAA - AAAAAAAoY2Nj4pSUlP+VlZX/lpaW/5mZmf+bm5v/oaGe/4aHnv8cHJn/HBui/x4dqP8gHa//Ih+3/yEd - vv9LSLj/sbHA/+Li3v/s7Or/8fHx//n5+f/+/v7///////z8/P/29vb/8fHv/+7u6f/Dw87/Skif/x4a - sP8kILv/Ih+z/yAerP8eHaX/FRWd/2Firf+xsa7/o6Oj/6Ghof+enp7/nZ2d/5ycnP9nZ2fiAAAAKAAA - AAAAAAAAAAAAAAAAAAAwMDBqfHx8/5GRkf+RkZH/kpKS/5SUlP+Wlpb/nJyZ/3t7lv8ZGZb/Ghqf/xwb - pf8eG6z/IB20/yAbuv9DP8n/vr7V/9zc1//i4uL/7e3t//f39//+/v7///////v7+//z8/P/6urq/+Dg - 4P/b29n/wcHF/0hGm/8dGrD/Ih+z/x8dq/8dHKT/Gxue/xwdmv+Mjqz/oqKe/5ycnP+ampr/mZmZ/5iY - mP+BgYH/MjIyagAAAAAAAAAAAAAAAAAAAAdRUVGtiYmJ/4yMjP+NjY3/jo6O/5CQkP+RkZH/mJiU/29w - jv8UFJD/FhWX/xkWnv8bF6X/HRis/x8as/8bFbn/OzW+/7a1zP/f39z/6enp//X19f/8/Pz///////n5 - +f/w8PD/5eXl/9nZ2f/Ozs7/yMjG/6mqsv8wLpn/Hhux/x8dq/8dHKT/HBye/xQVlv9LTaD/oaGf/5eX - l/+VlZX/lJSU/5OTk/+QkJD/VVVVrgAAAAgAAAAAAAAAAAAAACFjY2PdioqK/4iIiP+JiYn/ioqK/4uL - i/+NjY3/k5KQ/2lqg/8aG27/ISJz/yMjeP8lJH3/JyWB/yooh/8yMIz/MCyQ/1ZTn//IyM7/4+Ti//Hx - 8f/7+/v//v7+//j4+P/s7Oz/3t7e/9DQ0P/ExMT/urq6/7m5tP95eZz/HBqh/x8drP8dG6T/HBud/xkY - mP8gIpb/iYqc/5SUkv+RkZH/kJCQ/4+Pj/+QkJD/ZmZm3QAAACEAAAAAAAAAAB4eHkJvb2/3h4eH/4WF - hf+Ghob/h4eH/4eHh/+IiIj/ioqK/4WGiP9+foX/g4SJ/4aGi/+JiY7/jY2T/5KSmP+cnKD/pKSo/6ys - sv/CwsX/2dnZ/+vr6//7+/v//v7+//T09P/k5OT/09PT/8TExP+4uLj/r6+v/6ioqP+hoaD/OTiT/xsZ - qf8cG6P/Gxud/xoal/8UFZP/ZWaW/5KSjv+NjY3/i4uL/4qKiv+MjIz/c3Nz9yIiIkIAAAAAAAAAADo6 - OmV5eXn/hISE/4ODg/+EhIT/hISE/4WFhf+FhYX/hoaG/4eHh/+Kion/ioqK/4yMi/+Pj47/kpKQ/5WV - lP+ampn/oaGg/6qqqv+3t7f/ysrK/+Li4v/4+Pj//v7+/+7u7v/Y2Nj/xMTE/7W1tf+qqqr/oqKi/5yc - nP+dnZj/ZmaO/xoYof8cG6T/Gxud/xkal/8UFZP/Q0aQ/46Oiv+IiIj/iIiI/4eHh/+IiIj/fX19/zw8 - PGUAAAAAAAAAAEZGRn5+fn7/goKC/4GBgf+CgoL/goKC/4KCgv+CgoL/g4OD/4ODg/+EhIT/hISE/4WF - hf+Ghob/iIiI/4qKiv+NjY3/kpKS/5mZmf+jo6P/tLS0/9DQ0P/z8/P/+/v7/+Li4v/ExMT/sLCw/6Oj - o/+bm5v/lZWV/5KSkv+QkI//gYGJ/yUkmP8bGab/Gxqe/xkamf8UFpX/MTON/4eHh/+FhYX/hYWF/4SE - hP+FhYX/gYGB/0hISH4AAAAAAAAAAFBQUI6AgID/gICA/4CAgP+AgID/gICA/4CAgP9/f3//f39+/39/ - fv9/f3//gIB//4CAgP+CgoL/goKC/4ODg/+EhIT/hoaG/4mJif+Ojo7/mJiY/66urv/h4eH/9vb2/8TE - xP+lpaX/l5eX/5CQkP+MjIz/iYmJ/4iIiP+Ghob/h4eF/zQ0fv8REX3/FBR5/xMTdf8PEXH/IyVx/319 - gf+Dg4L/gYGB/4GBgf+BgYH/goKC/1VVVY0AAAAAAAAAAFdXV5SBgYH/fn5+/35+fv9+fn7/fn5+/4B/ - gP+NjpH/kJGV/5CQlP+QkJT/kZGV/4qKjP9+fn7/f39//39/f/9/f3//f39//39/f/+AgID/gYGB/4SE - hP+jo6P/u7u7/42Njf+FhYX/g4OD/4KCgv+BgYH/gICA/4CAgP+AgID/gICA/25uef9iYnT/Y2Nz/2Nj - c/9iYnL/ZmZz/319fv+AgH//f39//39/f/9/f3//gYGB/1dXV5QAAAAAAAAAAFtbW5SCgoL/fn5+/35+ - fv9+fn7/fn5+/3p6fv9AQ5H/NTec/zc5n/85OaL/Nzeo/1pam/+BgX3/f39//39/f/9/f3//f39//4CA - gP+CgoL/hYWF/46Ojv+7u7v/1tbW/6CgoP+Ojo7/iIiI/4aGhv+EhIT/g4OD/4KCgv+CgoL/gYGB/4OD - gv+FhYL/hISC/4SEgv+EhIL/g4OC/4GBgf+AgID/gICA/4CAgP+AgID/hISE/1tbW5MAAAAAAAAAAFlZ - WYuDg4P/f39//39/f/9/f3//gIB//3t7fv8kJoP/ERKQ/xUVlP8WFpj/FBOf/zw7nv+FhYP/goKC/4OD - g/+FhYX/h4eH/4yMjP+Tk5P/oKCg/7u7u//r6+v/+vr6/9HR0f+xsbH/oKCg/5eXl/+RkZH/jY2N/4uL - i/+JiYn/h4eH/4eHh/+Ghob/hYWF/4WFhf+EhIT/g4OD/4ODg/+Dg4P/goKC/4KCgv+CgoL/hoaG/1tb - W4sAAAAAAAAAAFZWVnmDg4P/gICA/4GBgf+BgYH/gYGB/4KCgP8wMoD/FBWR/xkZlf8aGpn/GRif/y0s - pf+Hh5H/iIiH/4uLi/+Ojo7/lJSU/5ycnP+oqKj/u7u7/9fX1//29vb//Pz8/+bm5v/Ly8v/t7e3/6mp - qf+goKD/mpqa/5WVlf+SkpL/j4+P/4yMjP+Kior/iYmJ/4iIiP+IiIj/h4eH/4aGhv+Ghob/hoaG/4WF - hf+FhYX/h4eH/1hYWHkAAAAAAAAAAE5OTluCgoL/goKC/4KCgv+Dg4P/g4OD/4eHg/9DRX3/EhSP/xkZ - lf8aGpr/Gxqf/xsap/95eaT/lJSP/5SUlP+ampr/oaGh/6ysrP+7u7v/z8/P/+bm5v/6+vr//f39/+/v - 7//c3Nz/ysrJ/7y8uv+xsa7/q6um/6amof+jo53/pKSd/6Kinf+hoZ7/oaKh/5aWlv+MjIz/i4uL/4qK - iv+JiYn/iYmJ/4iIiP+IiIj/iIiI/1NTU1wAAAAAAAAAAD09PTZ+fn71hYWF/4SEhP+FhYX/hYWF/4uL - h/9iYn7/FBaK/xkalv8aGpr/HBug/xkWpv9MTLH/pKSi/56dnf+lpaX/r6+v/7u7u//Kysr/3Nzc/+7u - 7v/8/Pz//v7+//T09P/m5uX/z8/T/7W1yv+trMv/m5rG/4uLwf99fb7/c3G6/2Rjtf9VVLD/REWp/3Jz - mf+VlZH/kZGR/4+Pj/+Ojo7/jIyM/4yMjP+MjIz/h4eH9T09PTYAAAAAAAAAAAwMDBR+fn7Wi4uL/4eH - h/+IiIj/iIiI/4uLiv+Bgof/IiSA/xgYl/8aG5r/HBuh/x0bp/8fHa7/i4u6/7Gxq/+wsLD/u7u7/8fH - x//V1dX/5eXl//Pz8//9/f3//v7+//f39//u7uz/09PY/1lXqf8jHbb/JyHJ/yIdwf8dGbn/Ghax/xgW - qf8XFqP/EhKb/19glv+dnZj/lZWV/5OTk/+SkpL/kZGR/5CQkP+Tk5P/hYWF1gwMDBQAAAAAAAAAAAAA - AAF3d3egkpKS/4qKiv+Li4v/jY2N/4+Pj/+UlZH/TU5//xQUj/8bG5v/HBuh/x4cp/8dGa3/ODW5/7Oz - xv/Cwrz/xMTF/9HR0f/e3t7/6+vr//b29v/+/v7//v7+//n5+f/w8PD/6Ojn/9HR1f9iYKT/IBur/yQf - wf8jH7n/IR6y/x8dq/8dHKT/FRad/19gmf+kpJ7/m5ub/5iYmP+Xl5f/lZWV/5OTk/+cnJz/fX19oAAA - AAEAAAAAAAAAAAAAAABkZGRUkpKS/o+Pj/+Pj4//kZGR/5KSkv+Xl5b/hoaP/yAhgP8ZGpv/HByh/x4d - qP8gHa7/HRm1/0hFxP/AwNT/2NjS/9nZ2P/k5OT/7+/v//j4+P/+/v7//v7+//r6+v/z8/P/6urq/+Tk - 4f/j49r/dnTE/yAcv/8jILr/IR6y/yAdq/8eHKX/FRad/11dm/+oqaT/n5+f/52dnf+bm5v/mZmZ/5iY - mP+ampr+bW1tVAAAAAAAAAAAAAAAAAAAAAAzMzMUj4+P15iYmP+Tk5P/lZWV/5iYmP+ampr/oqKe/2Bh - h/8VFYv/HByj/x4dqP8gHa//Ix+2/x8avP9APMr/tbTf/+vs5v/w8Or/9PTy//r6+v/+/v7///////z8 - +//4+Pb/9/fw/+jo7P+joeL/RkHO/yMewf8kILr/Ih+z/yAerP8eHaX/Fhed/1lanf+tran/paWl/6Ki - ov+fn5//nZ2d/6Kiov+Xl5fYJCQkFQAAAAAAAAAAAAAAAAAAAAAAAAAAgoKCe6Kiov+Xl5f/mpqa/5yc - nP+fn5//o6Oj/6SkpP9BQoL/FhaX/x8eqv8hHq//IyC3/yUgvv8jHcX/LSbM/3Rw3v/Bv+3/7+73//7/ - /P////////////3+/f/o5/f/rqvs/1VP3P8lHs7/JB7I/yYhwv8kILr/Ih+z/yAerf8eHab/Fhee/1VW - n/+ysq7/qqqq/6enp/+lpaX/oqKi/6ysrP+IiIh7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/HJ2d - nd+hoaH/np6e/6Ghof+kpKT/qKio/6+vrv+hoaj/NDSD/xgXnf8hHrH/IyC3/yUgvv8nIsb/KCLM/yQc - 0v8sI9j/TEXi/21n6v9/eu7/enXu/2Nc6f9COuL/KSDa/yge1P8qI8//KSLJ/yYhwv8kIbv/Ih+0/xsa - oP8ZGZr/Fxef/1BRoP+2trP/r6+v/6ysrP+pqan/rKys/6Wlpd8/Pz8cAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAIyMjG2urq7/oqKi/6Wlpf+pqan/ra2t/7Gxsf+6urj/pKSu/zc4h/8ZF5//IyC5/yYh - wP8oIsb/KiPN/ywk0/8tJNn/KiLd/ygf4P8oHeL/KB7j/yog4f8sI9//LiXb/y0k1f8rI9D/KSLJ/ych - xP8jH7r/GRia/0ZGjf9ERYn/ERGN/0tMof+5ubf/tLS0/7CwsP+urq7/t7e3/5GRkW0AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwqlpaW5tLS0/6mpqf+urq7/srKy/7a2tv+6urr/xcXD/7a2 - vP9QUJH/GhiY/yMeuv8oIsj/KiPO/ywk0/8uJdn/Libe/y8m4f8wJuP/MCbk/zAm4v8vJt//LiXb/y0l - 1v8rJNH/KSLL/yEcuv8hHpb/b2+g/8rLy//CwsT/TU6K/z0/jP+9vbz/ubm4/7S0tP++vr7/ra2tuTMz - MwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzc3MqtLS047a2tv+ysrL/t7e3/7u7 - u//AwMD/xcXF/8/Ozf/Pz87/hIWs/y8uk/8dGKr/Jh/G/ywk1f8uJdv/Libf/y8m4v8wJuT/MCbl/zAm - 4/8vJuD/LiXd/ywk1/8mH8j/Hhqp/z49mP+iorz/3d3a/9TU0//Q0M//wsPF/4GCn/+8vL7/vLy8/8DA - wP+8vLzjc3NzKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk5OTUb+/ - v/a7u7v/urq6/7+/v//FxcX/ycnJ/8/Pz//W1tX/4eHe/8nJ0v9+frD/PDqe/yMeqP8iG7v/Jh7N/ykh - 1v8rIdr/KyHa/ykg1v8mHs3/Ihu8/yUfqf9CP6H/jIu4/9na3f/n5+P/29vb/9bW1v/R0dH/zs7N/8zM - yv/ExMT/xcXF/8fHx/aamppRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAKmpqWjHx8f6xMTE/8PDw//Jycn/zs7O/9PT0//Y2Nj/3t7e/+fn5v/w8O3/4eHm/7W0 - 0P+Egrz/YF2w/01Jrf9HQq7/SUSv/1NPr/9kYbL/iojA/7u61P/m5ur/8/Pw/+rq6f/j4+P/3t7e/9nZ - 2f/V1dX/0NDQ/8vLy//MzMz/z8/P+q6urmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvr69kzs7O88/Pz//MzMz/0dHR/9bW1v/b29v/4ODg/+bm - 5v/r6+v/8vLx//v7+P////z////9//b2+f/y8vf/9PT4//v7+/////3////9//z8+f/09PP/7e3u/+rq - 6v/l5eX/4ODg/9zc3P/X19f/09PT/9fX1//V1dXzsrKyZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr6+vTdPT0+Hd3d3/1dXV/9nZ - 2f/e3t7/4+Pj/+jo6P/t7e3/8vLy//X19f/5+fn//Pz8/////////////////////v/7+/v/+vr6//f3 - 9//z8/P/7+/v/+vr6//n5+f/4+Pj/97e3v/b29v/4+Pj/9jY2OGysrJNAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyc - nCfS0tKz4uLi/+Pj4//g4OD/5ubm/+rq6v/u7u7/8vLy//f39//6+vr//Pz8//7+/v////////////7+ - /v/8/Pz/+vr6//f39//09PT/8fHx/+3t7f/o6Oj/5eXl/+jo6P/m5ub/1dXVs5ycnCcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAExcXFYuLi4tjv7+//7+/v/+3t7f/w8PD/9PT0//f39//6+vr//Pz8//7+ - /v////////////7+/v/8/Pz/+vr6//j4+P/19fX/8fHx/+/v7//y8vL/8vLy/+Xl5djIyMhiAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJGRkRXW1tZx5+fnzu7u7v38/Pz//Pz8//v7 - +//7+/v//Pz8//7+/v////////////7+/v/8/Pz//Pz8//v7+//9/f3//v7+/+/v7/3p6enO1tbWcZGR - kRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzCsnJ - yUPh4eGT7Ozsz/Pz8/H7+/v//////////////////////////////////Pz8//T09PHs7OzP4+Pjk8nJ - yUMzMzMKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAHBwcCbW1tSbOzs5K3NzcZuPj43jt7e2B7e3tgePj43jh4eFmzs7OSrW1 - tSYcHBwJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///wD///AAD//wAA//8AAP/8AAA//wAA//AAAA// - AAD/wAAAA/8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAfAAD4AAAAAB8AAPAA - AAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAAB - AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA - AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAADAAAAAAAMAAMAAAAAAAwAA4AAAAAAH - AADgAAAAAAcAAPAAAAAADwAA8AAAAAAPAAD4AAAAAB8AAPwAAAAAPwAA/gAAAAB/AAD/AAAAAP8AAP+A - AAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/4AAAf/wAA//4AAH//AAD//8AD//8AAP///////wAAKAAAACAA - AABAAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAoAAAAKAAAABgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAA2MjIyb1lZWZ1xcXG4goKCxIKCgsRxcXG4WVlZnTIy - Mm8AAAA2AAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsiIiJaaWlpu6Ojo/LU1NT/8fHx//39/f////////////// - ///z8/P/19fX/6ampvJqamq7IiIiWgAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4X19fuLCwsP/n5+f/9PT0//f39//6+vr//f39//// - //////////////z8/P/6+vr/+fn5/+zs7P+0tLT/YmJiuAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkYoWFhezS0tL/4uLi/+Tk5P/q6ur/8vLx//v7 - +P////3///////////////7//v/6//b29f/v7+//6urq/+jo6P/Z2dn/ioqK7CcnJ2IAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMXGQkJD80dHP/9LS0f/X19f/4eHf//Dw - 6v/u7vH/19fz/7278/+qp/P/qqf0/7e19P/U0vT/8fH1//X17v/n5+X/3t7e/9nZ2f/X19f/lpaW/DMz - M3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKytdi4uL/MPDwf+xssL/y8vO/9nZ - 0//U1N//kY/b/1BL1v8yK9j/KSDd/yge4v8oHuP/KB/f/zAn2v9RS9n/nJrg/+Dg5f/f39v/0dHS/8zM - zP/Ly8v/kpKS/C4uLl0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFMHd3d+m0tLT/vLy3/2pr - qP9qarn/qqnP/0A9wP8eGcL/JR7N/ywk1/8vJuD/LyXl/y8l5v8vJuL/LSTb/yYf0P8gGsX/TEnG/7m5 - 1v/U1M7/xMTE/76+vv++vr7/fX196QUFBTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVaWlqxpKSk/6mp - qf+0tK//ZGWk/xUVof8jIa7/Hxy3/yciw/8pItD/Jh7R/ycfyP8vJ8P/MSrD/yoixf8lHc//KiLS/ygi - x/8fG7r/LCq0/5ycxv/ExMD/tra2/7Kysv+tra3/YGBgsQAAAAUAAAAAAAAAAAAAAAAAAAAAKysrTIKC - gv6goKD/oaGh/6ysp/9cXZ//Fxeh/x8drP8jILj/JB/A/ygis/9iX7b/razS/9XV5v/c3Or/wsHc/3t5 - v/8wK7T/Ix3E/yUhvP8dG6//JiWp/56euv+zs6//qqqq/6mpqf+JiYn+Li4uTAAAAAAAAAAAAAAAAAAA - AABcXFyulpaW/5aWlv+ampr/o6Oe/1RUm/8XF6H/IB2s/yEduP80ML3/qqrC/+jp4//6+/b///////// - ///+/vv/9PTu/7q6y/8/Par/Hxu4/yEfsP8YGKP/PD2l/6enrP+jo6L/n5+f/5+fn/9gYGCuAAAAAAAA - AAAAAAAADQ0NJXNzc+2RkZH/kJCQ/5KSkv+ampb/RkaR/xAPmv8ZFqT/Gxev/yEbvP9+fMn/29va/+7u - 7f/8/Pz//v7+//T09P/k5OT/2dnW/6+wuv8yMKT/Hhuw/x0dpP8VFZr/a2yi/6Cgm/+Xl5f/mJiY/3h4 - eO0NDQ0lAAAAAAAAAAA/Pz9ZgYGB/4mJif+Kior/jIyM/5GRj/9RUn7/NDR7/zs6g/8+PYr/RUOT/01K - nP+rqsD/6Ojm//n5+f/9/f3/7u7u/9jY2P/ExMT/vL23/3x7oP8cGqb/HRyk/xcXmv8zNZj/k5SW/5GR - kP+QkJD/hoaG/0RERFoAAAAAAAAAAFRUVIiGhob/hYWF/4WFhf+Ghob/h4eH/4qKiP+Njov/kZGO/5WV - kv+dnZr/qaml/7e3t//U1NT/9fX1//z8/P/i4uL/xMTE/7CwsP+lpaT/m5ua/zY1mf8aGaX/Ghqb/xwd - lf96e4//jIyJ/4mJif+Kior/WlpaiAAAAAAAAAAAX19fpYWFhf+BgYH/goKC/4KCgf+CgoH/g4OC/4OD - gv+FhYX/iIiI/4qKiv+QkJD/m5ub/7Ozs//n5+f/9vb2/8TExP+np6f/mZmZ/5KSkv+Sko3/VlWM/xIR - mv8UFZL/DxGL/2Jkhv+JiIX/hISE/4iIiP9hYWGlAAAAAAAAAABkZGSxg4OD/39/f/9/f37/goKE/4iI - jf+IiI3/iIiO/4KCg/+AgID/gICA/4GBgf+CgoL/h4eH/62trf/AwMD/j4+P/4aGhv+EhIT/goKC/4OE - gv9xcX3/R0h0/0hIcv9FRm//a2t5/4KCgf+AgID/hYWF/2ZmZrAAAAAAAAAAAGlpabCDg4P/fn5+/4GB - fv9hYoT/LC6Y/zAxnf8yMqX/bW2M/4KCfv+AgID/goKC/4SEhP+NjY3/vLy8/9DQ0P+ampr/jY2N/4iI - iP+FhYX/hISE/4SEg/+Hh4P/h4eD/4eHg/+Dg4L/gYGB/4GBgf+Ghob/a2trrwAAAAAAAAAAampqoYWF - hf+AgID/hISB/2Bhf/8SE43/FheX/xUToP9eXZr/jIyG/4uLi/+SkpL/n5+f/7u7u//t7e3/+Pj4/83N - zf+urq7/np6e/5aWlf+RkY//jo6M/42Nif+Li4j/h4eH/4aGhv+Ghob/hYWF/4qKiv9tbW2hAAAAAAAA - AABpaWmAiIiI/4ODg/+GhoX/dXWB/xsdiv8ZGZj/GBeg/0FAqf+Zmpn/m5ua/6ioqP+7u7v/2dnZ//f3 - 9//8/Pz/4+Pj/8fHyf+3t7v/qKiw/52dq/+UlKn/iIin/4aGn/+Pj47/jY2M/4uLi/+Kior/j4+P/25u - boEAAAAAAAAAAGBgYE+JiYn/h4eH/4mJif+Li4n/MzSE/xYXmP8cG6D/Hhys/4aGtP+zs6z/u7u7/9DQ - 0P/n5+f/+/v7//39/f/x8u//tbTL/0pGuP87Nsb/Mi+9/yglsf8cG6f/PT2a/5mal/+UlJT/kZGR/5CQ - kP+RkZH/Z2dnTwAAAAAAAAAAMTExGoeHh+eOjo7/jo6O/5aWkv9oaIj/FhaR/x0cov8cGav/NjS6/7Cv - x//T08z/3d3c/+/v7//9/f3//f39//Pz8//n5+T/o6LA/zItuf8gHLv/Hx2v/xkYpP86Opv/oaGf/5yc - nP+ZmZn/mJiY/5CQkOc6OjoaAAAAAAAAAAAAAAAAh4eHoJqamv+UlJT/mZmZ/5ycmv87PIj/Fxeg/yAe - rP8eG7b/PDjG/7Cu3P/t7en//f31/////v/////////4/+zs7v+qqOH/OzbI/yIeuv8hH6//Ghql/zg5 - nf+np6f/pKSj/5+fn/+lpaX/j4+PoAAAAAAAAAAAAAAAAAAAAAB2dnY4mpqa+52dnf+goKD/qKim/5WV - oP8pKY7/Gxms/yMguP8iHcL/LCXO/2Zg4P+no+//xsT3/8PA9/+em+//WFLg/ycf0P8lH8b/JSG8/x4c - rv8WFaH/NTaf/6usr/+sq6v/p6en/6Ojo/t6eno4AAAAAAAAAAAAAAAAAAAAAAAAAACbm5udrKys/6am - pv+tra3/ubm2/5eYqf8tLZX/HBmz/ycixf8pIs7/Jx7W/yce3f8tI+P/LCLj/ycd3/8pINj/KyPR/ygh - yf8dGbP/PTya/0pKlP8rLJT/r6+1/7Ozsv+4uLj/pKSknQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZm - ZhmsrKzctLS0/7S0tP+7u7v/ycnG/7Ozvf9RT6H/IBuu/yMdyv8sI9n/Lybg/zAm5f8wJub/Lybi/ywj - 2/8kHcz/Ix6v/2Niqf/Gxsr/y8vJ/3FynP+vsLf/wMC//7S0tNxwcHAZAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJmZmT+5ubn1wMDA/8LCwv/Kysr/19fV/9ra2f+iosP/WVey/zMtuP8oIMT/Jx7N/yce - zf8pIcX/Ni+5/19btf+vrsr/5OTh/9zc2//T09P/zc3L/8jIyP/BwcH1nZ2dPwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKurq0/FxcXzz8/P/9DQ0P/Y2Nj/4eHh/+/w7P/y8u//3Nzn/8HA - 3P+wrtj/tLLZ/8TD3v/f3+n/9fXy//Ly7//l5eX/3d3e/9bW1v/X19f/zMzM87GxsU8AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6urjzQ0NDa4eHh/97e3v/k5OT/7Ozs//Pz - 8v/8/Pr///////////////////////z8+//09PT/7u7u/+jo6P/j4+P/5+fn/9TU1Nq7u7s8AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIuLixbU1NSW4ODg+fPz - 8//y8vL/9fX1//n5+f/9/f3////////////9/f3/+vr6//b29v/09PT/9vb2/+Tk5PnW1taWi4uLFgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADMzMwy4ODglurq6uL4+Pj/////////////////////////////////+fn5/+zs7OLi4uKWzMzMMgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAqqqqEtLS0kXk5OR17e3tlfLy8qTy8vKk7e3tleTk5HXS0tJFqqqqEgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//D///8AD//8A - AP/+AAB//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADwAAAA4AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA - AAGAAAABgAAAAYAAAAHAAAADwAAAA+AAAAfgAAAH8AAAD/gAAB/8AAA//gAAf/+AAf//4Af//////ygA - AAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAbS0tLM0tLSzMAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVV - VUiioqK1zMzM7OPj4Pvj5OH7z8/O7KamprVVVVVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnp6 - eY3GxcP/9vbx//r6+//v7v//7+7///z8/v/8/Pb/ycnJ/35+fo0AAAACAAAAAAAAAAAAAAAAAAAAAHR0 - coqwsLr/t7jN/5eW1P9UTtr/OC/j/zct5P9TTd3/n53a/9ra2f/GxsX/eHh4igAAAAAAAAAAAAAAAFVV - VUKbm5j/lpar/ysrqP8gHLv/MCnG/2Ne0/9qZdX/My3I/xoWvv9oaLr/vLy7/6CgoP9VVVVCAAAAAAAA - AAB0dHStnp6b/4GCmf8WFZ//Hhm0/5+dzP/+//b////7/8fH1f9CP7L/FROn/3N0pP+oqKT/enp6rQAA - AAAaGhoTeXl55oyMi/+AgIf/W1uG/2Fgk/+Uk7D/7u7s//T09P/Ly8b/jo2k/xkYov8wMJj/kZGS/39/ - fuYaGhoTVVVVJ3h4ePeBgYL/gYKI/4iIiP+KioT/jY2K/7W1tv/CwsL/kZGR/4mJiP9DQ4f/NTaB/319 - g/97e3r3VVVVJ1BQUCZ6enn3eXqA/ywtk/8/P5v/hoaF/4yMi/+8vLz/ycnJ/5qal/+Skov/j4+G/4eH - g/+EhIT/fHx891BQUCY/Pz8QgIB/5ImJiP8vMIz/HBuk/42NqP/Cwrv/7+/v//f39P+hoMP/Yl+1/1FQ - p/+BgZb/lJSR/4eHh+Q/Pz8QAAAAAIiIiKaenpr/bW6R/xQToP9CP77/v77b//z8+f////v/p6bb/yIe - vv8REKf/fX2h/6mppf+RkZGmAAAAAAAAAACLi4s3oaGh/LCwrf9lZaT/Gha0/y4n1P9fWOn/XVXq/y0l - 1v8lILj/Pj2g/4aGqv+xsa38mZmZNwAAAAAAAAAAAAAAAKysrHvFxcX/z9DM/56dxf9XUsf/OTHS/zsy - 0/9aVcn/qKjM/9HR0P/Bwcf/tra0ewAAAAAAAAAAAAAAAAAAAAAAAAAAw8PDedXV1fz39/P/+vr2/+/v - 9v/w8Pb/+/v4//r69v/b29r8zMzMeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOzs415eXlofPz - 8+D///v0///79PPz8+Dn5+ehzs7ONQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACwsLAN2NjYIdjY2CGwsLANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/D81e/APAADAAwAAwAPmE4AB - //+AAf//AAD//wAArQAAAP//AAD//4AB//+AAUIAwAOK/+AH///wD////D8AAA== - - - - - iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAP1VJREFUeF7tnQeU - VUX27t+b4Lz/rKWjo5JzDmNAERMGVMxZUdExowgIqICCCKMgQaKERglKE5WMLYqCKKMIIsEhqKgjgtkx - B0zjUO/7VZ/dFodz7r3dBBn/3LVqdfftG86p79vf3rVrV9X/+T+7H7t7YHcP7O6B3T2wuwd+FT3wf3UX - tN+q7aH2/9T+qLan2p/U9lbbR23fqO2nnzT7m//xGl7Le3gvn8Fn8Zn2+b+Kzvo13EQINmDt9cc//rFM - z549j5o5c+aVCxYs6LJs2bK8N998c+Z77733/EcffbTqiy++eFPt/R9++OGbsPEc/+M1vJb38F4+g8/i - M/lsviMiRkiKX0Nf/tfcA6D/Tu1/sNZWrVodOGrUqPOef/75fhs3blz48ccfv/X1119/sXnzZpfUXIZH - 2nt4ns/ks/kOvovv5LsjxeBauCaubfdjB/SAgY4c733rrbc2+vvf/37nG2+8Me+zzz774N///reLt59+ - +slZC4HNlQDh+/k96Tv47n/+85/zuBauKSID17ibDNuBBID+G7U/ILtnnnlmnVmzZrVdt27dvK+++mqT - 5NvF248//uif46cBBnjbQgD7HD7TWvi99pwUYhPXxjVyrZGr4Nq5h93KUAxCmLXj0/e/7777Lly9evW0 - Dz/88P1vv/3W0TZt2uS++eYb/5Nmz3/33XeJBAhJUFwFCAlgwPM9dh323fzkeRrXqmuezrVzD1HMsFsV - spCgCHgFW2Vnz57dXvK61MCW1bsvv/xyi8ZzRgQDIEkBdiQB+H6uw64vfk3r169fyr1wT7uJkMwAi+QJ - pPZ/+OGH26rTVtORisrdp59+6tsnn3ziG7/zPGTIRABzA/E4YFsVwKw8VCIDn+v6/PPPixp/2zW+9dZb - q2fMmNE2UgTu1YaVxRDHX99LzcfvI7ls/tprr62kAwH5X//6l/vggw+QU9/42wjAa4wEaQqwPQkQ+n6T - /0wE4Do1YihqIWkVuK7kXgUlOQeLEX59yOYo93tec801DRcvXjxd4++f6DRA1zjcvfvuu/7n+++/75+D - APyfzg0JkM0NbA8FSCJA3DWZ9Ztaca1cM+Tl+mk8x//186cXXnhhOveufiLh9L8qPsDqkcCyU6dO7S65 - /4iOAuy3337bbdiwwTd+hwRGADrSCEAnQoJsboAA7pciQAg+98D9WeNeILLu86Pp06d3py+iPqFvfrUP - C/L2bN++/fEvvfTSEjoCkAFcAZ9vysD5v5Vw8SQwFTA3YFaUixso7lAwHC6GY38bXhJghiMACwAhosUr - Jv9GAAOf++R+uC8afxup//GPfyyhT37NagD4+Lt9R44c2e7111//hA4AbP3u5Pt9k3/0JFDAlKgCmdyA - DQfThoK55AKyESAEn++LB3+h/Jv0GwEMfMjN/VnjedyD+uKT0aNHt6OPor761eQOkLU/1qpVq+pjjz02 - HuC5eQB/+eWXfXvllVfcq6++6skACSAGr0lTgTAYTHIDNl4vbiBoBDC3Ec8BZLJ+FClu/WE8Y+6N++L+ - IHp4v/QLr3/yySfH01fRkPG/2iUUSf6VV1559JIlS5bBfm56zZo1btWqVb6tXbu2iASQgv/nogIWB4RD - rTQVyDUOSCJALgGgjVxCAgBmkvUb+BCde4X4Rn7IARE0CbXs2muvPfq/2SUY+H+67bbbzlu5cuW7gArY - 8v1uxYoV/qd8XxEJiqMCYTAY5gR2NgHM94cECIM/G83Erd/Ah/DcNypI3/A7pMBQ9Ny7t99++3kiAVPT - /1WjBMD/PePcHj16XCHwP4HhgP3iiy+6pUuXwvAtSIAimCsIVcACwviIwGKBpNFAUkZwWxUgW/AXl/9s - 1m9xD/0C6IAfqiLPce967hP6MMoZ0Ke7fFxg4O87aNCgm5UP3wSwAC4X4JvGv54IPCdyeCUIXQGdYgFh - UixgyaF4TiCeD8g0KZSWDUxzAZkIUBzrRwVD6TfrN/AxEvqDxnMQRRNMm+69996bo+BwlyYB4FMksZ8i - /W66iR8AFsAXLVrknnvuOad5dE8CVAAS4AogQZorCIeFSSoQTw1nmhf4bP1b7r1ly93KB8a6FaPH+LYy - aG/Om+//T/u3hnvZAsC4/IeJn7jvjwd+cemnnwx8+gTjoPEcBiEj+oE+pW+jPt7llKDI8gcOHNhFoP4E - sAD+zDPPOM2Xu2effXYrEuTqCuIjgjAzGHcDxAEfrnvNvTBqtJvZspUb3fQU1792PXdPtVquv9rgqrXc - kGq1fRsaNX4frDZQ/+M1vHbwgQ3chHMvcHNv6+JWT5vuPlMyx9K/4fAvaehnvp9RDP48DPwAPwK1SPoN - fPqMPjFXiaFACFyE2k9DhgzpsisqgQV8f7777rvb6aJ/5CYA/amnnnIqqXJPP/10EQlQA4iBMsTjASzB - 4oH4sDCeHQznB5DhVXMec9NuvNENPvwI17tqDdevak03RICOELCj1PKr13GTa9R102vUc7Nq1PdtdtRm - Vq/nn59cva6bqDZWrx2tlgdR9Bn9qtV0vavUdPed2NQ93r27e2vFSp+FNPnPxfrj0m9+PwQfsA18+od+ - otFP9Itc6o99+vRpH5FglwkMuZC9b7rppssk899wsVj9vHnzfJs/f35OJMjmCpJU4E1J5Ow7urp+DRu5 - nlWqu/5VarhhAn6MgJtcrY57VKAuqFnfLarxF/dizQPcSrXVNQ90axMaz69SW6G2TK/jPfNFkAKRYxKE - 0OcNgwwi1936nqFNTnALh+W5D99516eoLfGTZv0W+MX9Pv6ee4+Dj6s014n7hBC8Vsb1zS233HIZfR6N - Dn7R1DGJij3PPvvsJgL7Qy4ai3/88cd9e+KJJzKSICkoxCLiowJLDlmKePXChW7sVVe6blWrC4xqbpAA - GSXgpwn4J2TBz1Wv714UgKsE5GsC9I1aB7q3ah3kNqhtrHWweydq7+pn2Hie/2/U69arrdN7V+szltX8 - i1tU/S9ursgwRWQYJSIMEhF6iXS96v/FPXrnne49SX3o+y3jZ4FfXPrN7xv4qCbGA9Ah+LhO1BSjQg14 - vZ778Pzzz28S5Ql+sWQR0v/HPffcs6aqZv8BW5F8ZfvcnDlz/M9MJIDVvCckQZgfiLsCOnL5/Hnu/ubN - 3e0VK7uelau6oZWru3ECo6B6bfe05P1FWfxqgfWqQAO81wX8m2rrax5UbAJAFt7H+/kcPm+NSLVMivKM - vqdAipAPEUS+npWruV6HHOLmjxjhEzmh70+S/qSgLw18gMeFmiulz+gn9fEq9X2tKGO404NCy+2XHTFi - xETABPxHH33UqfrFFRQUZCSBBYYhCZLiAUuOvLzqHy5f/r1L1arurkpV3CCBP14WP0cWv7BGHfeiLHOl - 5HqN2is7iAAoCcTi81eLCMtFgoVSm0d1DWN1Lf1Fgm66tv7HN3FL5zzqU9mW7rWoP+73LeLH72P5zz2z - 0A1u2cIHy1h+CD79a+4UEqAYDzzwwCQRgJlE5ll2Kgnw+/uqErajLvI/Br6UwKkosogEECJNCUIShMND - yw/Y0HDu6NGu+0EHu66y+v6Vqrqxkt3ZCsqeVscvqVbXLRP4KwTGP3YiAVCCVfq+lfrepcQZcgszdE33 - 4RIqV3GdRdDJHTu416OcRprft4gf8J95Yq67tfGRrtMRhyWCTzyFS507d64nAiRQHcV/unbt2jEICndK - POD9vipfT5MMfQb4WLzmtX1T2ZODCKYEIQm4+DAwjJMgHBkskz8cce3VrkOFiq5HxUour0pVN01y+4Ss - 7dmqtd1iSfDSBAKs3cEKwOeHBICAXMdzup7H5RImigQDRFQIe89JJ7hlf19YlOpF+i3oC8GfN2um63DI - Qa512TKu94nHb2X5IfgWXxkJ9POzc88997SdFQ8gM//zhz/8ofrEiRNXGvhTpkxxquVz06ZN24IEqAHk - gATEBVx8EgnCHAEkePqRAndn46PdreUrunsqVXb5ktfZCrqeUgcv1Bh9UZwAAsEU4JciwBIR4DldF9c4 - XUTNkwrcWaGy61y7tisYPtRnO1G1eMT/6MQJrl3d2q69wL+zfDk34szTinw+IMfBtxiL/qT/cRcqrFkJ - JmCzo10BqchS3bt3H4gcASzAT5482T300EP+d8gAEUwJzCXkQgJkbUbeMHdzzequS/kKbpCsaJKi/Dnq - 0Hmy/KcDAjwfKsAvQQCNNFbqe00BIADEfFYEhQQQdrSI21PqhYoNv+Jyt0zkDod70/OGu7Y1qroO5cq6 - PhXKu3vVxlxwrgc2Dr4BTz9iVCgsv/M6Rgm9evUaCDZqYLRDHkj/XqeccsoZAvcrGAjYEyZMcJMmTUok - AS4hjAuykWBcjx6uXcWK7o7y5V2ewJ8i2Z+jod4TIsD8HAiwWqCslX/eEaMACwKLXECMALgkIwBEhbAF - cgf5UoJ7RIJOInTXhoe6eVOn+uHexN693I2VKrpbBX7/ChXc/RUruBH6mX/FpUXgo5aoZhL4GBZ9S59G - o6+vTj/99DPASG27Dw0t6q88bNiwhXwpVg7448aN8z/lErYiQugSwuDQhomhO7jv5vaurSTwToF/v2R/ - qjquQBb0mDrxCbWQAEhtkgLsFAKIYKuVE1iVhQBPiQAQt0AEnqh7Qc1QtXZVKrs+Z5/l77Wr2mCBPkqk - HxMRYNy1VxYFe5nAR2GtQRBIoIqihQK/8o4YFVDDvu9VV13VWl+6mS8G9LFjx7r8/PwiEqSpQVJwGJIg - r31b18b7wPJupKxliiLp2QqktiRADbmAmj4GeE4W9rxGAUVBYOQCdkUCPC7yFsiNTZaa5eneugvwTgL+ - Lt3rcAE/NmoPiAB5em58q+t9nAT49FEo+Wb19D99ioGhwvweBYebr7/++jbRqADMtsvDJ3zUaufl5b3K - l2PtGoP69uCDD25FhFAN0uICCw5H3NqpEPxy5SSDldxkWf8MjadnxQkga4IAz2xBgDrywXXdijgBamz/ - RFCRC4gUgKAzjAFwASgTMQAuwBTgMSnAHBFgltRsipRgVOXKbphAh+jj1MbHCDCxXZtUyTfgQ/DpXxr/ - QwmEyat77LFH7Qiz7ZIbYMy/v5h1h9i2mWAP4CU3bsyYMYkkMLcQjw3MJVhcMLpnT9dawHdXu08dMVHg - TxP4aQRYoAmZZ9S5PyvAzwRgTF6kADECvPWXhu69c5u5jzve6r4YOcZ9nT/ebZpd4H5Y+ZL7RjN9/P21 - pok/7Xibe/+sC9zbBx3u08ZhJtATQJ9LjIELSCMACgVRn1IQiOvChUGA2SLATJEadZuk+5wklzAxIAAu - YLgUYFLnTt7yLdBLs3pABwsCcAvCCQwfeeSRzW3atOkKZmpgt00Pb/1iVD35/tf5Uixec9NO6+N9y0SE - MDYIRwkwOH/oUNeqUiV3e9myLk+yOEGd8VBEgOkpCpBGgOU+E7glAV6rd6h7++oW7ouZs92PX329xfqA - XApCNj2/2P3rbz3cW0cd71PBWxKgvgigBJQfBdSVK6qjvERtT8wkAjzKMFbWP1P3NU0EmOIJUEkEqBgp - QAUfAwwTASbfcftW4CdZvIGPkaG49DXuAOIInzfAbHuogLf+q6++uhss40sAX0ubfDMiQIJsRAjVYLIu - uP2B9V0ngc/QJ18dQYdAgKnqpCQCzJML2IIAkluGXi8KgJAAb1xwkftYVr3p0898Db9VBoUVwlT+xB+Z - qoE+l7SuP+u8QAFyIABJq0gB0ggwIU4A9cVDPe702VRUMu7rQ6s34A18U10beUmxKSDZJhUw6697zz33 - rAF8JF9xgG+aA0gkQppbMDWASLefdoprX6a0GyDGP4D1a5zsCSBZTCLAXHVkNgK8fNqZ7kOlS8PSMCqE - rEoIMhgJDOyQBDxni0HCZeDhYtBPNOZ+/fSzvKtJVQCpAER9KkaAWQkKECfAEAjQ+24PftzqQ4sPrR7g - CcRpBOX8D+KoeGSNVKDutqiAj/yV8m0pUDfz4YAuV+CGDx9eYiL0a9fWtSpVyvVSJDxSw6J8I0AFBYAQ - oKIUQM2CQPxnEgEYcy+pqhig3sHujUGD/Zq7cGEphaM8R+EGJKCaB2BtuVhcBeIE4PW8z5akG7H4+b6k - 9uXjTvIuAAXyLkDX411ARID5CQQgtgldAAQYJ+kfq4YLQA0fGjQwI/ihxYfA45qJzXguIstmpYhv2JYR - ATNMVVWavMD8/lD5bWtGBCODKQJuIXQNoSKMkdtoVb2K66qofxhZLxIfEQEmSgUmSwWmigSeAGoFCprm - yH/GCfCsOhkCLD/+RPeuavisIMOWXVGUYevvbN1ArgSwZWBGAFvyBaFotiTtMxWBrB823C0/tJF3Rc9v - BwIMVp9MGT7M+/Ikube8SxLwgE9f03gdJNDGVk+DYZQXKFYwiPz/qV69eqdKSr7iQwFc1alIi28lIcJt - p57ibildyg2U9Y/SzSL/EGC8wE8iALkATwDN+89TWxANBSHAi5Lid1Q1SxEG066UkDH3zjSsLbeCGACG - 1VIrmIsCQABk35Z+Wck3hLIFrMz5W2n6h/q+VZdfmUgAiMsogBgAF4ACTA2CQFMA+gFjGKQ+mTwiryi6 - zyT1ZvEGvMVhBOY8h1LIEL868MADTwVLtWINCQn+ympFzyCsGesG/MGDB/vG73EyQJDQPYSKwEUN6t7N - 3SDw71bq8z4RYHQWAsyUAsQJ8FTlwlzAsmuudhuj5WNMsNAoP2feHTKgBIAVugEAtTjAdgyJxwC4h5AA - yH+0nNsv2woXsvJdFHtCwI3Pq+pZrgBihi4gkQAiAbHOJLk8Yh9cgBFgIMPAUSO9H88m9SHwNiIz9eWn - JegUDA4Cy+IOCX3i54477ljFhwHsgAEDnGr9fTMiGBlCVUgjQrtDD3adFfgNFvj3Q4AoAExTgDgBiKgh - wIvt2hetLbQSc2bYmG2zlTVxFUDGLQ4A4DgBLCiEAKhEKP+Unpv1Qyxb0Mp3UbX0TP44N+OAQ9wCgQ8B - yFMQBM7X9UIAFAxXNov8hkhNkJtEgNFSAILih8fle/AJ7izAI/4yizeZx+LjwDMyw/Bo/B8SyA2sAsso - GMzJDSAV+zRo0OACgf4jET9A9+/f3zeIkESGUBVwDyER+pLtK7W/6yvrzyP4U+LHE0BB4FhcgKZ9zQVM - kXWQDAoJ8LjkHwIsbnGdl3ksnloCpkIhARU1tpgCV5CkAriBMA4Ig8CkAJDXI/+2aYVZP9/Pd1DdM/Pu - Xr4ucEzFapr8MQIUjgDm65pxXVsToLIIoByArD9UACPAQxolpQEfyrxZuw3JAd1GaDZKgzSK0X5s2LDh - BWCaqxtA/iv89a9/zTPL7tevn7NmRMhGhjBOaNfwEAV+pd29ZZXxE/hGgDEQQM0TQG2yZHGK5tCnyVKM - APhPCPD0WWe6VyXzzKQxFc00aEgCW0hhrgBLtVgAK0bOwzggjQDm/03+bfMKs36kf60sf1zLlu5uXWde - Jfn3KEPpFYAhoJSKmCUkAEmgQgX4mQDEPuYCcIkDNTtocyyhxWezdgOegJxmrtiCce1EMgJMc3UDFBXU - adu27WJARPL79u3rlAsoamlkiLsIVKGXrL91qf0KrZ+Ub0SAUVKAOAHwi0UEqKAYoGJV96jk8/EDVLK9 - qHBlkdUbWmmUkYBCEubazRVgqVTm4qMtGMQNADBSn0QA8/+8DrcBccz341Yo7V6tWry80053fXVtYyop - yPOWX1ujEv2skpkAjG4yEWBwjep+LJ/m30OJTwId4C04Bzteg5vQAt0lYKoGthkfyP/eVatWbaqij0/5 - EMDWYgRPAmuZyBB3ETc3OdZ1KVPKDVLWb0QGAkyQAkySRUwRCabJDWAtNhRccv/9Xuoty0XOm3x5SAKK - SVAH4gF8MzJtKoAPJ5gzN2BxgAWB5gJ4Hjdh8m/WbzuYLHtynht0+FFuYEVN8eLno8qkxVWSCYBymQtA - AZIIkB8FgRjEvfXr+WGcWXwo86HEh5YeB91UG+Pjf5Cmd+/en4Ip2GZzAyR/Sh9zzDE3AjJgAro+wJPA - WkiGUB3iytCvbx/XSmP+XuU07pcCGAHuFxFGKRYYo5seyxSo3EAaAZ5sdqGvgLVxMWNkMl2ZSEA8gCuw - pdamAsg6AKcRgAAQN8HrzPpxIxDp2YmTXN869d0wWf0MAb8wqkhaqmSUEWBhTAEgAC6MIBCXBgGIcR4S - yYkBcH0EwcRCEGBog4O8xVq63QI6LDkb6BaDxUdrvA9SNGnShC3qSqtlnCZmcWflZs2ajYUAAKpSI98g - QdjSCGHqwHu7/PUy17H0/m6gCDDcE0CtfFkXJ8A4kkGBApAM8gpQs5Z7QXPjWL7lukklQwaeI2fOfLkp - AaVRuAmLB4jUCQgB0ZI4FgcwEggVwEYA/B/5x20wlMT61+lz8i+8yE069ng3/5gmmvjR/EO1em55VWUB - tyCAytYUAD4V5S0eV3yAC8OVhQQg1iHmMQLgCkdCgCMbeYuNW7sF1KG8A6qBHo7KzA3zEwPmPbz28ssv - Hwu2amCc+mD4V0e7YK8ASKxb6/18MyIkESKNDDcdeZi7S0O/ez0ByigGyE4ArMMI8GTbG31RJJKIX8Q/ - QgTGyWS6mF62sigKIqw+DncBCXAFBG0WC2DVyDtxQBIBeJ7/4y5wGxDHkkwoig0vCQj5fd2TT7pXHnnE - rZFsr5RCLv/b39ziq692i666yi04oYmbd8yx7jGtHJodBbXTKXOj5iGBAPeLAENUFm7WXhLQzf3y04J1 - yAEB2rVrtyKKA8A48YH/3+t3v/tdI609+8CkX+PIIhIYGXIhRG+pRtsK5VxvRf/DypXemgByA7iAB9TG - mQuQVXgCMBKoXsM9N+9J7xOxCqSR34mOGd8SLaMGuARIQHAYJwHxAMAREJoKmBsIA0FiAP7GPfB/s37b - ywgi8Vl+8YaGnqzUIfhktY4t3bKFnLbsPVzrz3tfRJ1UAbxownj3VLc73JPduroClb3Pan6Rm3LmqW6c - jGVU82beb4eWnsnKkwA34M0dowR8RufOnT8AW2GcmhWEAPvVrVv3Yi34+AarxtohQFILyZBEiNuvv951 - kvz3F/jDIIFiAa8Aat4FQIByIoCaEQBZfKg8BKjkCq6+ysu8DWmQRRvWQIRQDawihrjASAAwtqCSgBAw - iegZ2yPzcQIQF/A8/zfrhzgQiJiCANPAR5WovoF0NnNn1dGWxLFMHCS1Kmkrg4NANK7PGqrF8DZJ2k3W - 0wAPh+n8HgbpEIL3K6j/Rql9dihlj4HEtDDBQdnGjRvfrgzgZvw9wGuLkq1aLoS45fSTXXeif7mAIUYA - PxL4mQCjEwlQqALzJ030lmAp5zgRzC2YGuASIAwkABzcASQAOIaGBISoANbNMA/AbSjITwJAnsdN4PsJ - /IghQvCxeEACSL6HYBQF4rtxS5bAQaXi0bz59TCYM0uH2JbkQbKLA3gItrnt+IgNEgjHzccff/ztwric - WmKlkA8AVfY9TGzxsn/XXXcVtSQihM/FSXFLw4Pd3SR/ciJA4UigUAEquoePPtJ3rCWbLP1sySU60RSB - jqPDLTbgfQSHRgKslngASwZUVACZB3AjAPEA/p/nCRbx8cQOEAdJ5zMAn2CToJPPx6qxeoDHHUFEAz4e - yYd+3YKyuLTHQY9Ledyyk8AOYzH7HUO2WO7UU08dJoyrpAWCnHRRU8uOp0EAAA0JkPZ7GjE6VK3k+hIA - phDAZwMjBciPhoI+G6g288bWXgptJBInAp1HR4ZEMLcAGACDNGOptoQKP4wrQAUI8vD3Fgjyk7+Rf6yf - wA+/b+BTco1rQfLN6q1CCuAtcWPAh9ZuPt2k3SL24gIeH3rHwY6P0uIjNvDU6G4aGKuB9VYPosN6zZs3 - fxYCAOydWvcetlwIwWu6d+lc6P8zKEAaARgOztCKmTD3YLkGrCAkQ+ge6HSbCkUNAAiXYKtnCNIIzAAX - K8ffGwGIB/gb9xBt0eZVw1Y9oyZm9XHgUSAbt6dZepKsxy08lPIQ7FyBjo/Swr/NnSu9/6wwrq+WOBJg - 1+oDNQW8Ko0AcUKkEaTLDTe4rvL/A0WAwcVUgPxatXyAFwaWxmbLSMaVwYY6WJsRATkOCyVRAgItXAEq - gNwDPA9+8jfWj/SjFoBPsAeBsHpUhQDPLD60dsu/W8wSWnk4JLNgzcAuLtBpIMcD8vjf9B8GrXUdzAxy - 0BVYb/VgeHCoCkDXd+vWzct/NsDT/n/bZc39+H9QCgHuUyCYpgDjjj/OJzC4YIsr4rkIUwfrQFMGG/IY - EWxKlCCNoA0SEBQSEGLtBII8iAcI/ogRCPoAn2CP9xBT4OcBHjcD8JDMQA+l3ZIvoXVnAzsu3UkgZwI4 - bZQWPs9n0p8tWrR4UxgfEg0FtyLA3nqmkQoI/gUBABclyLWFZOh60YWuJ3P/UYuPAtIIQGZsfPNLMgaf - SaQICQEZIBBWiEUClpVJERdAAiwcFcDv8+An1o/fB3z8PVaP3BvwyDwSD7kA3WTdLDy0biNmGIiFQMdB - TgM4F3DTRmrxAB2DVoLvIzBWA+utHn/WM0e2bNnyi5IQYAuinH+u65WoAGU0DCyjGcFkBWBq+MFWLROV - Jx5/JI1AzG1Y5GtkADCIgFvAoiEBrgDZ58FPpB/wbcUzwJu1WzkcoIeAWySeBHQIchzgbMBmG3HF/58t - NrN4TgT4AozVwHqrB9uUH6UXbVIeIGfLT1KIu7TEuXeOBCAZZKMAcuIjbmq/1Xdnc0VJw1XLYAIEAEEG - AIQIxAaQABXggfUDPlYP8FYFZYDbEAzL5rPMmg3kEOAkcLMBmg3AXP6frY8w6tatW28CYzWwTiRA4xtu - uOH7bSVA/zat3ajzz3b5URt/wdmONuGCc9zEC89xk3w71z10wXnuYbVpF57npl94vpvc7Hw3jFFEMVxP - 0muTglOLKQANQCECJOAB+ABvpW9YtgHN6wE4BLa4FpgNnJ3xfzAVAb4X6o0zEeAYuYDvte+MgzElBYLg - i7FzSRp+u6Tfu/t9yTEbWKq83ym++1bgH5ORAHrRpi5dumwTAbYHENtiFWkuwdwBfhz/TnaPB8Ukv2YF - AA8IoFHA19kI0FjDwC81c5RKgG0BpqTvzeQDswWDSLkVt6AuAE90D/gWA5AehgSMEsIYgESTBX1hwFfS - GOC2y/7qrtx/P3eF2l/3289dtt++7lK15vvu6y5Ru3jfP7uL1JqpXbjvPu4CtfOj1uqUphkzs5n6FgJg - 1KoNJAjM6AKOUuHAx6oh8zJcUsCyvS+XoIbXZJuICvMDYbLIEkWAZ6VRAE+GkEAP8BkFUPjBgxoAZv4g - Aeljkj4QAVdmy+Fs6Jc0CrDgMClAtBiCa+3YtKm7Ucvi2u6/v2uj1lqtlcjQUmS4Xu06keBagX/Nfn92 - V6tdRdPfl4sE7c4+I7E/6KNs/QkeGLWSfB9nCgL9MPCSSy7ZoOlgrwDZgLT/Z7uA4s4jxCPppDqEpFSx - pYktB2BFkWQWsXoSO4BPsifMAzARhApACkjApA9qkCkPYKVX8UxfmPgJ07hc752qjh6kkQ77AAzR6Ode - zYcMUuuv1k/tHs2W9mGrOLW7fSvtemg01bVsKdfv+hapU/PZRhlGAKX5NwjjI9KGgSQHGmky6OWOHTt6 - BSgpsGnWm2n2MKnwJF59FNYkZkoHG/BM0lg6mPE94DPBY5lAMoA8yAgyEcQ8ADOAkIA0MJM/zPpZJpDP - Q0koULGkUJj+tUxgYnKIsjrVAY5lJbQvB6ugOojCmkgmxaiPoE6C6fI8EYH6CRJoTKb10c8BN7ZKLMyJ - j1CShqHggVFrMmgtGKuB9VYPnwo+44wzlqgiyCtArr43jYG5FpMk5f2TLDwJdJsZDOcBAMomhJB8ZB3w - Kb6wuQDkP5wLwA2gArgCFML2Pua9qIFN/dpcgE0C2cxf0qxfSIgeLVq4wQLa1z4WEYB1EekEoJDmXjWq - qoZoaV2mCZ9M6WJw7NSpk9NKb8rDD1UD660efjLoxBNPLLj55pu9AmSTljBfnyvYudQWhuXnludPmgUM - p4StZAy5Z9LGpoSZyQN8JoKwbmYDqfih+MMIYNPBzAdQC8C0MeliSGC7n+M+mF1kXsEmhcL5fyvmDCeG - wnmC7scdpyVxLH4pJABEoBIKApAM20IBpALUUFJKBwF6qY0YOqSoKjtt6jeNIODUoUMHd9JJJxWAsVri - ZBBThPWPOOKIB3SKpSNxEEp5tvRlEgNzATtccxBWFIdL0awgJLR2W/4UAm91gsi2lYcBIFPBWDXp3qR6 - AApDiANQhegQR68ULDQxElgxCGpAOpn4IE6EtKnhISrJ6qHNofLZBEPVTlsRQCQoIoCqpimdCwnQr7bO - QdAcRKbZwzAAjc87gCOqrmqvB8BYLXE62BeEHHDAAX2UDdxMMijJwtOkJhPYaesKQsDDuX5bexguPrX1 - hgAfLxJF7s3qkXx8N4ABvm2vblW9AAzQYWWwlYThBpglhCS4AiaHqAvgM6jhC8vBUAOrAwwrgmwDLYsV - cBF9r2vhBpRTxZOKXSEAKuAVQOXwY9knAQKwaJYYQAQgDigkQBk3WLHA8KbH++FoSaqCfPCpUYCygJvB - FozVEgtCKAmrUq5cuVYaLnzLsAEC5GLZJV03kCvotgmFAR+vBwyrg22dgIFP0GcncFlNIECHJWEQICwK - hSQEhGFZmJEgXhCaVBoWLu+CCH9rcLDfAo9FIYVl4T8TID9GAJbOsYCGdRQQYJDagzdcW5SPKG6pGARA - zZUD+LZixYqtwFgtcW0ARaHlfvvb355+8cUXf0zQgHQk+ZVMi0TSlpHFVw2FS8jCfQes7i8sAo0Dn7Q+ - wBaJYKWAT36fuX87eYuqYFYIUQ5G9U+8KDQsC6diiNXAxAsUhtqZh5CAcnDmEJgytvrAeHGoKQLXOVSx - VK+yqnkU8Cx5CwnASCAbAQaIAJP79y1WoWioFGBFEuiyyy77GGzBWC2xKNSXhas1Puuss14mEEQ6kgKO - eJlSSdYNpoEO8OEmVLYVXbgwBLk3qw+XiYXgW0k40h+uDkL+mf9PWhcQLgxBBQgI46XhRgLmOXAzViFM - bGBqwLVZsehdjRtrSbzWPPqtb+IEKFwaxiwoS8MokokrwIDKihtUkBIu+cqlchilsJVdGDPDe7CNME4s - C/fbwqgdcvTRR8/W6mA/ErD8ebalYDZEy2TpBHNdLrvUXVu3lmuhLdJbH3aou6nJce7mE45zt2if/A4n - NnGdTjzB3Xriia7zSSe5LsqcdT35ZNftlFNcd+0sdtfpp7oeZ5zuBl1zrRvaurXLa9PG3afrHHXTTW6M - gpxxnW51E8X2qd3/5l7UkC/TyqA4ARgJWGk4OQFTgfjiEFQlJAGkszUCqBCENCKM0obQPeT7x2llEEvd - CglQOXFlEPslJBFg9Nmn+zqGcNFnWkVxOOy0mAEXjjEfe+yxs8E2wjh1uxiiw7o6vfpuBYKOQBACpC0G - DUHPtm+AXXRnFYtcrfRnCy0Zb6FNI65TOvR6pUdbqrF7WJtSpZUuLe3alS7j2qvdXKaM61CmnOtUpry7 - jaYhU2d1audyFd3tanfIurqVr6y9+au4Hmq9tB7vkXv6+SGfbRaB72foB7BpS8QhgK0ODheHogK2PMxW - CBkJWIuIuyEuMJfA6MMWi/RsdJiyflroElscmrQ0LIkAQyT/s/v1KUo6Ja0EzrRyCExQ8Rt13A6Ygm3a - CMCSAn5twN57732F0oZfIB0wKGk5eDg+z2WzCPPtdza/2HUW8N0FdreodS9d2t0lsHuo9VLrXbqsu0eg - 95PvHCDAB5XVFmoCe7hanjp0eLnK6tgq2l69irtfbWSFam60gB+rZdtPKHC1PYPiq4OR/3BxaLhHQEiA - pOXhuALiAYjF8DCJBOYSGIXc36mDVkUr8mdxKASIlof71cHRDiHh6uAkAgzVWQKPFcwu2vmjuCuEwQgj - VjXwl2CaKQA0Avjl4WpNtPf8aqSD8X9Jdgixku34bmK9r7rc9RXwQwQ6bZhankC/T6CPFOhjSis9Kksf - L9AnCPBJalPKKYCSlc8U6LMEeIEAf1TbsjyupdpzK2k3joo13YLK2jrurh5+vM/2LbaJk1m/7RkYLg+P - bxKBWyAOsA0ibHsYWyLOZxJTQDBIYMfimhIQHEKCWYpR/lajpjaE1k4nbHodECC+QYTtD8AOISM1FGQD - rRFqeRoOTtbW8SSekraByUYGW1dBClgx3RowjbDNuDzcbxChduiRRx45VZsOewmJZ+Oy7REURvLxncP6 - tbjG9RMB8gT8fQJ+pNqYMmXdAyJAvoCfoDZJ4E8pW9FNE/gzZfEFsvg5An9uhaoCu5pbUKG6e0bW/pzA - f17AL6msTSO7dffZu/gOIbZbmG0Xl7ZTmC0QDfcIsFXCtkzcXAEEiw5x3IIE5AogQd9jj3MDNea3Mw8y - ESDcIiYkwDAtrF34yCy/6MRK0JP2DUjbOwAMCOB1oCcJoKnCtGGEbdbt4thGpHapUqVuUh35vxlCEANk - 2iUsydrTtowbcGObiABYfUQAgT9W1j9Okj9BbZKkcwsCCPw5svwiAgj8Z2T9z1Wq6QmwuHMXb5Gh9Ic7 - hZHitZ3CbIuYcHk4E0IhAcJdQkIV4DPNFRAPJJFg1A0ttQuqtoCT1bM5RO6bRBUqADuoMRIYf+6ZPq7I - tF1Mpi1jGCkQxKsI5N9ly5a9CUyz+X9zA36TKLXTNHnwJm4AJlmpddo+gZapM2kKh3Lh7uKDbm4nAii3 - LfDvhwAK8sZo9ssIMFEEmCwCTJUCTJf0z5QlFYQEkK9f4Amg5eOVRQDVLpCtM+lP2yUs0yZRRgCLA0I3 - kLZNHK4AtbEDn3EHDytgvkvgj2Fvo9Rt4gpjgPg+gewSxiYRngD6/e9TCxecMgKIbxiVtIVMuLEEGBCX - If/aLpa1AJwqlvMmUUgEtQGHH3rooQ+rStgnhGzRRdJOoWn7ByduK6+Ygr0CS7xRpPbmKdwqtpZb2/UO - X9FLsIdFpu0TaPKftk1cEgFsq5ikreJwBRYPGAlmke8X6PexJ6DfJ7hG4T6B2uvY7xSq57PtE0guAAJM - uaSZTziF28XlslegxQoQgGG7NoVwjRo1ehgsI0yzyr+pgN8oct99921z6aWXfkuFEIyKbxEbl/n47qCJ - 5wn0U1YrRgD2y8tlq1j232OnUAiwvPmlRUu5ACFpp9Bwv+Bwo8j4LmEhAcLNIhkN2G5h8c0iw/0CZ7CS - WlF+XgT+fL9RZCEBttoqVq+z8wLiO4X6ZJD2Ul6qI3LtZJZwf2BIkAsRwIXpfFL6YFgc+Q/dACnDppoe - fgkm4QbSZD4n4KPzhfIHDhQBNAfO5kjF2iyavYILTwxhO9a5tXSGrzp+peSfoCy+VzBp3+JuFRtuFx/u - Fk4wyGfFt4tFeaYxaaZof4TfL7DwbMPCnUJTCJCwV7DfLZzDo9Qvc3t09/saJB0IkaYI8TgBtaaoR8vB - XwJDtdT0rwEe/2lZwQbaXqy/Agk/oUCwF+4OXhzgi46R0ZZv7IkbJwA+Mdft4iEBhzMOlq/tc0hDVyB1 - AgzW9tk+wWb94WbR2fYKNgLE9wtO2jD6dZEuX3sB9fLnAGk3MDvWbhu2i59yzhnelZFRLOmO4bgBcje4 - 7mrVqvUXsA3Uir1ZNITw28VrAuH80047bQPBIMPBtOAu24khdpDUww+M8QSA8aECFOfACBTgMW3J9qA6 - vr8sr4ekd1DjY9zCceP9VG5o/eE+wdl2C7eRQHzH8HDLeFTgmftHunsObqBTTZV8krXP5RwjOzKmhATI - r1/HrVq8xGcWLZ0cJ4HNMaRtJI0SoNK4bI39N4AdGEZYphl76vP+wAi1I7Vv0IPXXXedDwZRgLQzg7Kd - IoasTdEmSQOjswI8ASR/bJte3CNj2J3zKXX6TB3SNEajgYEiQy+1ESc1dUv1PQzfintgRLhhZLhpNCMI - VOANTS2PPvts11vfM0wKNIXTwfx5QVueGVTcE0M4Mm7xuLF+NEMq2eYUMp0aAgniRKD/Cf409+809/8g - 2EUYlugIOTsuruZvfvObSzQkfJ+qEvyL7WljO1dnAz48WnaGCikGRATA98UJwEbROR0aFZ0ZxAGST6vN - io5xHyxg+gigvBNOcgvlsj58c71P/4ZHxqRtF5+0afRnsvglY3QSh/YJ7COy8fnjUSBOCtV+gUvTDo3K - 4cwgOzTqsRuu9yMY24XESFCcc4NwsagzdRwa+r0PZgKf4g8C+pyj/7gc+EOj1BrXqVNnLCpAkQh+JtuR - cSb58TOFYffASoVHpEAAMmGhApTk2DgOjVqq9qwAmSNgAGi4Wn/55T6S6PxzznMLet7t1s6a7T4VIZII - EI4EPtQYf80MFYJeernrX7ue/5yh+ryxIkCBjop/Vt+1XOcGFZ4aVnh6eOG5gbmeGlbFxzscGzfz1JP8 - RpSkk9MOi0w6PCp+ogijAxJ2ZG/r16+fD2YRdtt0dJypQC0YpYrh94gFSAbZ/Hz89NBcjpAdXJ0t1otP - gEwHR3JsnD/LT+15tScEzDSB9aCUYYTaEIE3QK0fP2vVcw82PdWNPfm0LRrP3VOjjuuv1wyCRHrfGAH7 - sD7nMX3ecwJ9ec36OjY2+ejYTAdH2rmBhWcGFRJgxlFHuNdWFZ4ozoxieFZwLieGGglIGGGU+P5zzjnn - vcj6a22r9YdDQlTgKEWVeRpbbibFiBuwypzwfEDbxTM8MdSOjrXzg4fWrbMFAZBCiwFMAbY6OjbLyaHh - uYGv6IDHNWor1RbroMenRIgCATi1Rl03XpL9oAAdldLG6PkJatNFqLl63yK9f3lNHRbJoZE1fz44Mtez - gzk61h8cqTZTIwYjwIxGDd1ry1700m9zCHZUfNqZwXGXYHUHyD/DdI3WNlevXj0PrLaH9RsBTAVq6Inz - tdfcyxSLEAvYPjxJVp/pGPmhB9R3o4sUQEmgFAKQQfv58OhinB0cnBzKoY/rdOrnGv1cJQCXqy1Vey6h - LYr+t0I/ee0reh/vLzo4EgKIDGtEihIToIpmM488wr2+fJmfV7DNJ4n+qTIyEqAGmU4NN7eAiyUwJz5T - 2TdVP0T+YLVNvj8eC9iI4LD99tuvm1aYfMckEbJj5VlxXx8eGI3l21nBlFDlHX5opAAcmAABCnMAdnLo - DObQBf6jshrO3o0fH7+tp4dvqHWwW0+rWXg8bFHTc2+pbdSxsYlHx24HAjyuyqf1mk4mZ8FaBQiA/7et - ZyEBM4pUGsWPj48fJ+tPYNUaRmZsVfP3HdgIOFb+MHorUeSfNiYsOj5eLzhNQ4wCkkPIjq27yyT5Bj6M - Rt7yjmgUKcCWBJhx0EFugQpGZkgqjQBIaJwAHBn3ix0fHyqA3IQFgRwdx3WFh0dz2GXoAp699hr3joCn - 4phqZQhAeVlxSGCxAUaF0aHEDPsOPvhgFn0w6bNDjo+HGL9R20vtLwoyrmjatOlGXAHZQfx+muTHwYfZ - 9x/f2I3yLuBnAkw7+CD3uk7felud8/Sll+yyBHjFCOADztwI8HgtJXmG3utTyWQq/ebRIgAziEkkICYw - JUiLC4gHUGCkX4m6jWACNhFGYLVDHr/Xp5YiyNAkQ4/zzjtvE5Enkz62IbKdDM5Y1o53McsHfG5o5Mkn - egJwZjAuYJqKQ1+XNWAZpHTfUSc937aNdwFpCsCwi+EXFmjHx68RKPjoVyXV+H1895tqSPxbkaxvlMS/ - E7V39TNsPM//M7mAJAJwemiaAjzVqJFbr5k95hKoJ6BmwaaQi0sCcwmoAIE36Xm54037779/jyjwAxsw - 2mEPXAEFI1WQm5o1a05UvdlmcgO29j7u7+Pgw+xR2kh6ZESAqUcc5gMiOoeiDjrF9vRdJ2WZJ7eAlM63 - XLuGaEjtLkMAqUASARboel+4tLnjYEnA557I8zNzSe1CriQgOCQmCJUAtWXMr808NqvYc2Ik/WACNiVO - +uTKGnMFHE/e7PDDD1+ifYW8LyIOwPJhqG2NDmvN8gGfGxqrDaJGKhk0RQck/HPlCg8+aVDba58OosOY - 0HlX4+QXtHdgRgJEOYBfRAGMABo6LlLegBhgUaMj3PopDxcdOmkLTJiyhgR2lgCE574pMM3kDsIRAv3L - dC+VvlrHyWrfZmpggXveYdIfJwfZJSLNhr///e+vO/nkk99hQSmzgwxPIACWnwQ+0W6+DkaYcNTh7p8C - F6ABnkZnYBl0kC3nslm9jTqd44WTT9VZPQkKEBAAid6ZLmB5QIDF9Q5yr+owiM/ef8/XEXDtdtAk09WM - +Zm6LgkJbMNqht5Ua8vvv0Pfg0GExTZl/HK1fnudjQo4kvSYffbZ507NFXzFhZEhtPV5ccsHfIY8U25p - 79YtfcHX2wM8FmDgY/3IJB1lFT62pMtv4jB1invp3PO9C0B6lwmAFb8wAZbVPdC9dksH9/mGt4pOHOOa - UTYIwHif2AYSoALcG/do8UAuSoAbINimzFux11eKwe6k79XAgJnbHS79cZJYggjfc4oKD/MUkHzPblQE - KCgAfstk38Cn2OHltWu2Ap9OMPCxEDqKDqP0ig4kerbiTn+sy/Ll7o2OndyKBg13GgHW+eRQlAhSwLm6 - 4ZFuY7/+7iuVpdlh03bgBNPSBLWQAKJzD9wLpDZXECeBGUPcHTAqwO8zG6stfL7XIk+yfadEsdh2TfgU - VwnwOWw2QMXpOUoVT7rooot+ohyJGUBbqxeCz7jX9uLH8kO/b9Jv1k+HYTl0IB0JCezYF0q8aHT8vxRn - bOjS1b165HEeoB3lAiDAqwc0dBtatnYfPzrHzzCGJ41a1RB1iiwu5XohASrAPXAvSSSwoNCC4DAmQDFx - qxR5qDzvJ6V6J9HXUZ/T9zvN76eRA9+ztxobDzTTBc4QS//DfAEksJO8sHwSHmzWYIc+G/jm90Ppx/rp - MCyHDqQj6VA61go+bKUP5VsA4df2vfa6+2Tyw+4DEWLjWedt8zBwfd1D3NvnXug+6tnbfTFvvvshWlls - 9QJ2yhj1B0YAro/rTFIBcwVJ8UA4MrCVRwyrAV+jrf8o4p9BH0d9TZ/vVL+fRgBcgQWFbD9ysYaHj2g1 - 6k+MUyEBbgACGPhIXBj0ZZL+0PrpUKyLDibAotPtXGBb80c1D43iTppf9Llxg/tOAeYXY8e5z/oPdJ92 - vM23z2LtC/3vq/zxvm2a+6T7ft1rfr0AnxEvF+P7cEVWLcR1QACuC5VKUwFzBWE8EAaFliRCKbF8Vmah - qgL/EfpWjT4mAKfPd7rfz0QCEhBc2MFql6iWcKqClR+JCQhe8GMQIAl8k358I5YRSn+S9dPBdLZV/RAc - AgbWiEuw5V9GADsePlwK5rcHy/Cw9xj4kMqsnu8ICWA1g3EVgASQ1s4ZTHMF8aCQfiLPj4pecMEFP9ao - UYOVPRR40Lf0MX29y4BvpOCCWFzKHgMHIVUKDB/UGsNNLFBg0siOSiPit6AP8DNJv/n+uPVDAKyOsi+s - ME4AcwmmBgakAZuGfRx4SGTg85mQywgA4axcjOtIU4FsriDMDwA+AR/Rvub2N5UvX57SLmSfPqVv6eNd - DvyQBKYEB+jJ88uUKTNceYIvWaNGFRHuAPkP/b5F/XHrB/y47w+tnw7H+owAFhSGMcHOIADfn4sKhAFh - 6Aps1TGyzwiKkm4Zzpf0HX2oRl/uspYfdwuwExLso8Z69LOUJ+ijDQre00bUvmqV0YGd7xuCHw/8crH+ - UP53JAHSVMDiAK4jVxWI5wZwAYyUmNxhZu+44457jz6j76I+pC93SdmPgx8qAUEK9egUJp6yxx57dDzk - kENWKZr1gQ3RrR3qGB/zW+CHxSCfRNT4U6w/DP7i8m8ECOU/VIBcYoEkF5CLGwiDwUyxQJgbINbBBZI2 - p5pX1VauYcOGq+gr+izqO/pwlwr40kBPUgIunLEqtenHqbXQMHGO0pjfUVtI1pBxru3mYWN+LCST9YfB - Xy7yX5xgMCSJRf65EsBUwAgQHxFYQMj9AT7DYZN81Vt+p2BvDn0U9RV9Rt/9V4IfkoFEBdmq8mqHqV0i - eRusNetvX3HFFX4LGiY4CArplGzWHwZ/ucr/9iZAPBhMcgNJKoCSQWwIT2EMC220BJ/9e96mT+ibqI/o - K/rsF0/y5Grt2V5ncwdEsSSMqFxpq7HtE1q/9g0zWxSZ4gdtQ0eGTmHkHw/+0uQ/KQDcFgKE43+GgbS0 - 0UBSMGgqAPi2JT3KR1AsJfxG5fZP0BdRn9A39NEvktvPBuK2/t8SRkxbVlGjcrX5n/70p77ye2uVONpM - nSGJI6TRjnwPfX987B8O/0L/n20ImCkfEHcBIQGyDQeNABYM2uYS+H0UjuFdVMSxWdPoa7l3+iDqC/qE - vvmvl/xMRIEEyBqFC1SvwPiT1a7TDqXjmjRp8oGKG32RI53FSME2eIwHf7nIf9oQsCQEyBQHQD5bSh7G - ASgYQR4BL4GvDuNwWm39QYUKFSZwz9G90wf0BX1C3+yyY/xtVYDw/aYGBDnsXMGc9rlq7RQIzVYnfcRo - wSaVyB4SG+AGLABMsv64/Bc3B2Crg3IZCSS5AdtLAPdlFs8MHsArF/IR98Y9RvfKPXPvv4pAr6TkgPH4 - O3Ykqa6GW2imAscOGi0UnHDCCe9p21q/1TljZDvwEbdgCz+xvEzjf/P/thwsl3RwNgLE4wCCQBSKIJbq - HVZKUxuhrfaw+Pc0N1LAPXFv0T1yr9wz9/6rCfRKSgLUgBp2ol5WILGkiXVtdFZ7pZPHa+fSdWefffa3 - 2vDYz4kzdGL4SOIIVbD9fzIFgNuLALZ0HNIRkzB0ZZaT2IVZO8rltTjzW41y1smtjeceonvhnrg37pF7 - 5Z7/V8h9rsQwt2BEIIHE8mbmvq/fa6+9+tWrV2++VOEdFZ78REczWUJETekZkmt1hBAivhq4JAQI9wsA - cNwPMQmzl2QzKc+CkCyaZcZO1v6O1kzM51q55ujauQfuxYD/VQd5uYKd6XUhEch/kxBpoHaSGuPkdhoz - D1FHP6OgcT2l6cQL7IhB8IirYCaNiSeCSIaVEIMpZJs6ts2ibOo4Prdv5VwoDMRieGp1+FRAk67Fr/Pd - XAPXwjVxbdE1cq1cM9fOPUDq3cAXkx3mGvCTpEOpfaPyiKVPpEkZPrVmKCWpnaCVMYtkgRu0M8bnssbv - STKhEnb6CWXUbHJFvoESdlbVsJaBxu88x/oG5ip4LcM1xup8BilaxSLfyw19rvV3Gxo0aLCISD4axrWO - roVr4tq4Rq6Va+bad0t9MYFPenmoCkyMED3T0UTSTdRwE5dDCLXOKpgcyhw6cnzYYYctPeaYY16lclnp - 1o/knz+/8MILv1GA9mPYeI7/8Rpey3u0xdpSPoPP4jP57Og7+C6+k+/mGrgWrolr223t2wHwTB8RkmFv - vZC9jVkPV0cN2T1ajdwCAOEyrlLDH9+odpMaEy0AebvaHVHjd57jf7yG1/Ie3stn8Fl8Jp/Nd/BdfCff - vbfabtDVCb/Ew9wERRKAQCYNn4sEV1Ej+CLRQhkVx6Uh0RycyHCTqJyyahq/8xz/4zW8lvfwXj6Dz+Iz - +Wy+g+/iO3fLuzphV3pAiJAUHI4EWCRb8Ml7qyHTAEkj706zv/kfr+G1vIf38hkh2LuHbrsS4ruvZdt6 - 4P8D1FQWc8pO1OcAAAAASUVORK5CYII= - - - - - AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAcAAAAUAAAAIwAAAC0AAAAwAAAAMAAAADAAAAAwAAAALQAAACMAAAAUAAAABwAA - AAEAAAAAAAAAAAAAAAwAAAAuAAAAVwAAAHYAAACJAAAAjwAAAI8AAACPAAAAjwAAAIkAAAB2AAAAVgAA - AC0AAAALAAAAAAAAAABDBQAvgQcCrKMJBefGQwD/y3EA/9B/AP/bjgD/954A//+iLP/QgkHuejsn1BMB - AKUAAABpAAAAIAAAAAAAAAAAwQoG5cwdAP/CWQD/wmEA/79sAP+/eAD/yoUA/9mVAP//vhX//9Ri///t - u//gqGvyAAAAiAAAACwAAAAAAAAAAMUJCf/44OD//IgT/8JjAP+8cAD/wXsA/86JAP/bmAD//85M///r - qf//8cH//89S/wAAAHcAAAAkAAAAAAAAAADFEATD//Xr///MlP//lgL/9acA/92eAP/bmwD/2pgA///P - Wf//5Jb//+F9//B1CfIAAABOAAAAEAAAAAAAAAAAvgkJQuWKgP///fj//9dw///LK//1vQD/46gA/9iU - AP//3p7//9GH/9ZqAP9UBASUAAAAJwAAAAMAAAAAAAAAAAAAAADGHh7D+vHx///jmP//yiX/8rsA/+Gm - AP/onwD//9uc///Lh//ATCzfAAAAQgAAAA8AAAAAAAAAAAAAAAAAAAAAvgkJQt14eO/69uz0vat0z+zL - VtP5zFPQ68qG0fTkv+y/fnnbZBwchQAAAB8AAAADAAAAAAAAAAAAAAAAAAAAAAAAAADDERG6+e3r+Kie - ib+UhWS8o49hru/FZs3ovn7bszojzQAAADoAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvgkJQuF5 - a+/u37HgxKI82L+SBc7/vwnV3GMA6TsDA2sAAAAiAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADHMAC0///////////awnHpgmUAvaosAMYAAABGAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACwhoAuf//////////7OK79X1gAMWRLAC8AAAATwAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAB7cJCc3//////////+/kvfJ8YADGhykAyQAAAGkAAAAiAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAP/EFDfSZADl+4oA/8BgAP/AYAD/vWIA9KtRANwAAABZAAAAHgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAD/ngNCzWwA5/OFErzvoT+c9KQ8me9+AMy8dADkAAAAHgAAAAoAAAAAAAAAAAAA - AAAAAAAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAMADAADAAwAA4AcAAOAHAADwDwAA4A8AAOAP - AADgDwAA4A8AAA== - - - - - AAABAAEAGBgAAAEAIACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAACAAAABQAAAAgAAAAKQAAAC4AAAAwAAAAMAAAADAAAAAwAAAAMAAA - AC4AAAAnAAAAHQAAABIAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAoAAAAiAAAAPQAA - AFgAAABwAAAAggAAAIwAAACPAAAAjwAAAI8AAACPAAAAjwAAAIsAAAB9AAAAagAAAFQAAAA6AAAAHwAA - AAkAAAABAAAAAAAAAAAAAAAAAAAACwAAADQyAwB+cwgAwZoJA+K2JgD1yF0A/89tAP/PfAD/3JEA/+ae - AP/tjgD//38D/95xFPOoSBnkXgYAyyUDAK0AAACOAAAAZQAAADAAAAAKAAAAAAAAAAAAAAAARQUALq4K - AtrGCgb/zBQA/8VJAP/AYAD/xGcA/7xvAP+9dgD/w30A/8qGAP/alQD/9q0A///AHf//0Vv//+Wt//us - fv+dSz3lEwEAqgAAAGgAAAAfAAAAAAAAAAAAAAAAwhoA2MUJCf/KLAD/wV0A/8BgAP/CYQD/w2kA/7tw - AP+/eAD/xYAA/82JAP/YkwD/25sA/+CjAP/ztAD//9t6///nnf//+/L/zGgZ7gAAAIkAAAAtAAAAAAAA - AAAAAAAAxQkJ/8woKP/607X//JIn/8BgAP/DYwD/wGsA/7pyAP/AegD/xoIA/9CMAP/alQD/3JwA///G - Kf//3nX//+eZ///ebv//1lP//8Yx/wAAAIYAAAArAAAAAAAAAAAAAAAAwwkJ8emQfP///////syd/8Bg - AP/EZgD/vW0A/7x0AP/CfAD/yYQA/9OOAP/bmAD/3Z8A///IKv//77v//9RG////////7rr//7I6/wAA - AGgAAAAcAAAAAAAAAAAAAAAAvwkJg+doLv///////////9RrAP/thwD/7pkA/+2kAP/enwD/3J0A/9ub - AP/bmQD/2pkA///TXf//55n//+SJ///gev//yyr/sTsC1QAAAD8AAAAKAAAAAAAAAAAAAAAAvAkJEcoU - APH+17H////////quf//1Gr//89E///JG//3vwD/67IA/+GlAP/cmgD/0o0A///fnv/5mQD//+TE//uw - AP/8gAD/NQMDdQAAABwAAAABAAAAAAAAAAAAAAAAAAAAAL8JCYPznX/////////67///1Gf//85A///I - GP/1vgD/6rEA/+CjAP/bmQD/0IwA///y1///tDf//6M7/8NaAP+NGgLCAAAANwAAAAcAAAAAAAAAAAAA - AAAAAAAAAAAAALwJCRHOKBzx//nu////////3H7//808///IE//zvAD/6a8A/9+iAP/bmAD//7os///F - Xf//26L/6YEA/9hQIvghAgJgAAAAGQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/CQmD1oGB0f// - ////7sL7/9FD8f/PLvr/yA7//8EF//+9Ev//thb//9R7+v7IZfLgxp/lxopx2ZgzM7EAAAAsAAAABgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8CQkRxRgY3+jo6Nn5+fn7jo6OyZOTk7GoqKibsLCvlLGx - rpStrKmX9tuk3ODXxtyjlpC8xFVQ4wAAAEYAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAvwkJg85bWdH/////u7q02pCKfLqmnoqitKiPl7aoi5bIsYCn6cd+zdvGmdHLbU3cew8OnQAA - ACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAkJEcUQDujs2czg6ubd75h9 - QMOpiD6xs443qrmQLKj9xEDL9MhZzNaNEMDDKA3lAAAAQwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCYPbWCXT/////7yRCc/HnxnQxZ0T0oFkAMPhqQDJyJkArspW - AOlbBASKAAAAKAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwJ - CRHHDwf39uvC6+/lvfL//////////9zDcuiHaAC2uHEAxbIPBNkAAABSAAAAGwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBCQnk9+zE6vjy3/j//////////9zD - cuiHaAC2tXYAvpAHB64AAABFAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAC8CQnI+O3E6f///////////////93EcueHaAC2sHcAuJMHB6sAAAA4AAAADwAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7CQnJ78+Q4P// - /////////////93EcueBZAC+p3EAwlkEBI0AAAA+AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy1CQnQ5KZ+7v/////z6s329/He+d7Fc+Z7XwDHmmgA0kkD - A6wAAABiAAAAIgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJt4 - ADTJSADq1HYA+8FhAP/AYAD/wGAA/8BgAP/AYAD/uWIA9IM4ANUAAAB8AAAANAAAAAcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPytAMPMeQD/024A6dx0AdPgdwDP4ncAzeF4 - AMzXbwDax20A9MBuAP9hNQCBAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAALpdAFLHYwDJ8oEOxOmUPqznp2aa6adlmOqoZJjyiBm73YAAwrV0AKxWOQAnAAAACQAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAA8AgAADAIAAAwCAAAMAgAADAIAAAwCAAAMAgAADAIAA - AwDAAAcAwAAHAOAADwDgAB8A8AAfAPAAPwD4AD8A+AB/APwAfwD8AH8A+AB/APgAPwD4AD8A+AA/APgA - PwA= - - - - - AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAADgAAABkAAAAiAAAAKgAAAC4AAAAwAAAAMAAA - ADAAAAAwAAAAMAAAADAAAAAwAAAALgAAACgAAAAgAAAAFwAAAAwAAAADAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAATAAAAJQAAADgAAABMAAAAYQAAAHQAAACDAAAAjAAA - AI8AAACPAAAAjwAAAI8AAACPAAAAjwAAAI8AAACLAAAAfwAAAHAAAABeAAAASAAAADIAAAAfAAAADgAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAALAAAAKQAAAFMZAgCBWQYAs3sJAM6iHADptCMA9chE - AP/JVwD/zmMA/9RuAP/XdAD/23oA/+B9AP/oewD/41QA/8pHBfOfGQPodggA10MFAL0AAACbAAAAiwAA - AG4AAABIAAAAIQAAAAcAAAAAAAAAAAAAAAAAAAAAAAAACgAAADRyCACmrwsA7ccLA//GCgb/yiwA/8VJ - AP/EZgD/x3EA/8R3AP/DfAD/x4MA/8yJAP/RkAD/4KAA//izAP//uQv//8g7///Ua///0n3//7Vq/+xv - Q/+gKBjqQQUAwwAAAJQAAABjAAAAKAAAAAcAAAAAAAAAAAAAAABHBQAttgsC48YKBv/FCQn/zB0A/8RR - AP/AYAD/wGAA/8RjAP/DaQD/u28A/7t0AP+/eQD/xH4A/8mEAP/QiwD/2JIA/9yZAP/cnQD/4KMA//++ - Bv//3IX//+m8///w0P/0sZf/kyoi5QAAAKAAAABeAAAAGQAAAAAAAAAAAAAAALwLA8rFCQn/xQkJ/8ky - AP/AYAD/wGAA/8BgAP/AYAD/xWYA/8FrAP+6bwD/vHUA/8F6AP/FgAD/yoYA/9ONAP/alAD/25kA/92f - AP/hpQD/5qwA///MN///11v//9xo///57f//7c//lToA4QAAAIUAAAArAAAAAAAAAAAAAAAAxQkJ/8UJ - Cf/TKQv//rBi//ymT//AYAD/wGAA/8JhAP/EZwD/v20A/7pxAP++dwD/wnwA/8aCAP/NiQD/1ZAA/9uW - AP/cmwD/3qEA///MPf//01H//993///ZV///yQ7//9I7///RQ///vyz/AAAAjgAAAC8AAAAAAAAAAAAA - AADFCQn/xQkJ//e4kv///////+vX/8BgAP/AYAD/w2IA/8NpAP+9bgD/u3MA/794AP/DfgD/yIMA/8+K - AP/WkQD/3JgA/9ucAP/fowD//9Zg///ml///xAH///fd////////66j//886///OQf8AAAB9AAAAJwAA - AAAAAAAAAAAAAMEJCcPMHQD//tex/////////////JIn/8BgAP/FZAD/wWoA/7twAP+8dAD/wHoA/8R/ - AP/KhQD/0YwA/9mTAP/cmgD/3J4A/+GkAP//yiz///////C5AP//7Kv///zw///XV///3HP//4EB+QAA - AFYAAAAUAAAAAAAAAAAAAAAAvgkJQswUAP/+sGL////////////+zJ3/wGEA/8VmAP/miQD/24sA/++m - AP/joQD/250A/9ydAP/bnAD/3JoA/9uZAP/bmwD/3J4A///jk///66r/8boA///87v//1kz//8oj//++ - Kv96GgSrAAAAKwAAAAQAAAAAAAAAAAAAAAAAAAAAwgkJwsVJAP//69f/////////////y27//9Zx///S - Wf//zTz//8kf///GBP/xugD/67IA/+OoAP/dnwD/3JkA/9WQAP/KhQD///jr//+zKf//w0L//+2+///J - FP//yyn/0UcA7AAAAEwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAC9CQkhzBQA//+7eP/////////////s - v///1W///9JX///NOv//yRz//8UB//C6AP/qsQD/46cA/92eAP/bmAD/1I8A//+xGf//8Nf/vXUA///n - wv//jhT/130A//uEAP9UBASVAAAAJQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADACQmj731T///9 - 9f////////rv///Vbf//0VP//8w3///IGf/+xQD/8LkA/+mwAP/ipgD/3J0A/9yXAP/TjQD//9F5///M - dP//pA7//9yw/8RmAP/CXQD/qg0D4wAAAEIAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL0J - CSHKGBL//+Ky/////////////+CX///RUf//zTT//8kW//rCAP/wuAD/6a8A/+GlAP/cnQD/25YA/9KM - AP//6b//6ZMA///Zm//mhAD/3HEA/95PIf83AwNzAAAAHQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAMAJCaPTYFPb8vDq8P//////8tH//9BN///MMP//yRP/+MEA/++3AP/orgD/4aUA/9yc - AP/alQD/+qgA///jrf//qxj/+d2z9uWjSuHUjGnhoUBAvwAAADQAAAAIAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAvQkJIcYPD/fIqanC///////////DtIzfyrZ2z//TQdH/0znN/9A1zv/L - Mc7/xy3O+shLzvLCWs7/2YXp3caY2OPax+Krqqm1oZaWrsxRUfEjAgJYAAAAFwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwQkJo8M2NtLn5+fl/////8jIyOSHh4fBnp6epa6u - rpWwsLCUsLCvlLGvrpSxr66Ur62rlvjboNysp5q44NnG256ak6fIcGnghQ8PqAAAACwAAAAFAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8CQkRwwkJ8b+cmbP/////8/Pz+IWD - fMaXk4qwraibmbSun5S1rpuUtqyYlLeslJS9rouf/daE3dTEoMq2poK0uIRkwcMoIe4AAABGAAAAEAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/CQmDxiwm2ePf - 1+D/////t66b15eFYrqwm22gwKdwlMKna5TEpmWUxaZflOq/XrrSqlC2782G0rmLOa7aSiL1WwQEigAA - ACQAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwJ - CRHDCQnxzH1UwPv59fvl3cntoHwowrKKJLDBkx2lw5MTpciVCaTQmwCf/8g4zu65JbfiqgCt0GkA264P - CN0AAAA/AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAL8JCYPNJAXh6dKE1/////+9kgLQgmQAx4FjAMV9YQDHfmEAxIhpALT8uwDDo34Al6p2 - ALPSIwD/NgMDdAAAAB8AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAvAkJEcMJCfLLXwDO/////+vbq/D////////////////t4rv0gWMAv5l2 - AKGmgACUzEkA7o8HB8UAAABFAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvQkJx7lIAND//////////////////////////+3i - u/SBYwC/mXYAoaaAAJTSIwD/QgMDjgAAADQAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC+CQnGvEkAzf/////38d75//////// - ////////7eK79IFjAL+ZdgChpoAAlNIjAP8AAABtAAAALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALQJCYu9SgDM/////+/k - vfL////////////////t4rv0gWMAv5l2AKGmgACUziYA+QAAAGIAAAAoAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAkJi8BB - ANP/////8OW+8f///////////////+3iu/SCZAC9mncAoKaAAJTJRQDmAAAAVQAAACEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACzCQmMxicA5vLnv+/v5b3y////////////////7eK79H9iAMKObgCtlnQApLJIAM0AAABaAAAAIwAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAACqQICJnCJgDq8OW+8erbq/Du47zz+9qz/P7Xsf/jzobpel4AyntfAMd9YQDEnEMA1gAA - AIEAAABGAAAAEgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAfoUIAvcg+APu0bgD1wGAA/8BgAP/AYAD/wGAA/8BgAP/AYAD/wGAA/7Ji - APGyUwDwIhEAsgAAAH4AAAAxAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/GCtbgoAD/y3oA/7BfAPHAYQD/rVcA5ataAMSuXQDAq1cA0cBg - AP+6XQD2u2AA975oAP/AYgD/KhUAkgAAADcAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1nYA/8BgAP/WfSDJwI1Os6+edp+1oXebu6V4lsGp - eJPDqnSSv6ZvlcGbW6DWiyi7xnsA88V/AP9vRgB2AAAAGwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5XQBCul0ApM5nALXzegHN7oUdve2M - K7Tmp2aa6alnme2XP6rwhh278YEOxdZ4AL2ybwC6qG0AcgAAABEAAAAEAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAA+AAAf+AAAA+AAAAHgAAAA4AAAAOAAAADgAAAA4AAAAOAAAADgAAAA8AA - AAfAAAAH4AAAD+AAAA/wAAAf8AAAH/gAAD/4AAB//AAAf/wAAP/+AAD//gAB//8AAf//AAP//wAD//8A - A///AAH//gAA//4AAP/+AAD//gAA//4AAf8= - - - - - AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAADwAA - ABgAAAAfAAAAJQAAACsAAAAvAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAALgAA - ACgAAAAjAAAAHgAAABYAAAANAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAATAAAAIAAA - AC4AAAA8AAAATgAAAGAAAABuAAAAegAAAIYAAACOAAAAjwAAAI8AAACPAAAAjwAAAI8AAACPAAAAjwAA - AI8AAACPAAAAiwAAAIAAAAB2AAAAawAAAF0AAABJAAAANgAAACgAAAAbAAAADgAAAAQAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAOAAAAIgAA - ADsAAABVAAAAcCoDAJVXBgC2ewgAz5kLAOSiCwDrvg0A+scOAP/HDgD/xS0A/8Q3AP/FOAD/xjkA/8c7 - AP/HPAD/xykA/8cOAP/HDgD/qgwA86ELAO2MCgDidwgA1kMFALwUAQCiAAAAjwAAAH0AAABlAAAASwAA - ADEAAAAaAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACgAA - ACUAAABJMQMAgmcHALmaCwDivg0A+sgMAP/IGgD/yR4A/8VXAP/FYwD/yXoA/8t+AP/SigD/05AA/9WV - AP/ZmwD/3qEA/+y0AP/xugD/+cEA///HDf//ySD//8ov//+uKv//rDD//n0d//FgEP/aNhL/qgwA84AJ - AN9RBgDFAAAAnAAAAIYAAABjAAAAOwAAABkAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAANAAAANVcGAJKdCwDfyAwA/8cLA//GCgb/xQkJ/8sjAP/FTgD/wGAA/8BhAP/FZAD/w2kA/8Bs - AP+6bwD/unIA/712AP/AegD/w30A/8aBAP/KhQD/z4oA/9eSAP/spQD/86sA//+8Fv//xDL//9Jh///a - g///3ZL//+Ge//+3c//rcEb/yCoV+38JAOAjAgCzAAAAiQAAAFgAAAAlAAAABwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAkzAwA/rAwA3ckUAP/GCgb/xQkJ/8UJCf/LIwD/w1YA/8BgAP/AYAD/wGAA/8Jh - AP/FZgD/w2kA/75tAP+6cAD/u3MA/753AP/BegD/xH4A/8aCAP/LhgD/0IsA/9WQAP/ZlAD/3ZgA/9ua - AP/dngD/4KMA//e1AP//yTT//92O///msf//6r7//+7L//evi//OSTj7aAcA1gAAAJwAAABiAAAAIgAA - AAQAAAAAAAAAAAAAAAAAAAAAAAAAAEwFACq3CwDiyhAC/8UJCf/FCQn/xQkJ/8dEAP/AYAD/wGAA/8Bg - AP/AYAD/wGAA/8NiAP/FZwD/wmsA/7xuAP+5cQD/vHUA/794AP/CfAD/xH8A/8eDAP/MiAD/0YwA/9aR - AP/alQD/3ZkA/9ucAP/doAD/4KQA/+OoAP/nrQD//9NY///ouP//7MX//91w///13v//+ez/6JWL/48a - EeUAAACXAAAATgAAABEAAAAAAAAAAAAAAAAAAAAAAAAAALULALDFCgj/xQkJ/8UJCf/FCQn/xUkA/8Bg - AP/AYAD/wGAA/8BgAP/AYAD/wGAA/8RjAP/FaAD/wGwA/7tvAP+6cgD/vXYA/8B5AP/CfQD/xYAA/8iE - AP/NiQD/040A/9iSAP/clwD/25oA/9udAP/eoQD/4aUA/+SqAP/orgD//8UR///VVv//1U///84h///0 - 1v//+/L////+//+7NP9OBQDKAAAAdgAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAMYLBf/FCQn/xQkJ/8UJ - Cf/FSQD/6HQA//ySJ//AYAD/wGAA/8BgAP/AYAD/wmEA/8VkAP/EaQD/v20A/7pvAP+7cwD/vncA/8B6 - AP/DfgD/xoEA/8qFAP/PigD/044A/9mTAP/cmAD/25sA/9yeAP/xrwD//8s8///OPv//z0H//8oh//C5 - AP/xuwD/+cEA///JFv//33j//9po///MMP/ngwDzAAAAiwAAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAMUJ - Cf/FCQn/xQkJ/8kyAP/+uHX////////16//UagD/wGAA/8BgAP/AYAD/wmIA/8ZmAP/CagD/vm4A/7pw - AP+8dAD/vngA/8F7AP/EfwD/x4IA/8uGAP/QiwD/1ZAA/9qUAP/dmQD/25sA/92fAP/gowD/9LUA///B - C//7vgD//993///33f//7Kz//9pf///KG///yRj//8om///NNP//xzr/AAAAjwAAADAAAAAAAAAAAAAA - AAAAAAAAAAAAAMUJCf/FCQn/xQkJ//WSRP/////////////////8nDv/wGAA/8BgAP/AYAD/xGMA/8Ro - AP/BawD/u28A/7pxAP+8dQD/v3kA/8J8AP/FgAD/yIQA/82JAP/SjQD/15IA/9uWAP/cmgD/25wA/96g - AP/hpQD//8AI////////1VT/7rcA///VRv//////////////////6Jz//884///MOf//z0X/AAAAgwAA - ACoAAAAAAAAAAAAAAAAAAAAAAAAAAMEJCcPFCQn/zB0A//6wYv/////////////////+4cX/wGAA/8Bg - AP/AYQD/xWQA/8RpAP/AbAD/u3AA/7pyAP+9dgD/wHoA/8N9AP/GgQD/yoUA/86KAP/TjgD/2JMA/9yX - AP/cmgD/3J0A/9+hAP/ipgD/5aoA////////+u7/77gA//G7AP/////////////11P//3nT//+ux///N - PP//rir/AAAAYAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAL4JCULFCQn/yTIA//ymT/////////////// - ////////+34A/8BgAP/CYQD/xWYA/8NpAP++bQD/unAA/7tzAP++dwD/wXoA/8R+AP/GggD/y4YA/9CL - AP/VkAD/2ZQA/92YAP/bmgD/3Z4A/+CjAP/ipwD//8EK////////66r/8LkA///HA/////////jh///M - Jf//yiT//9A////IOP+WLAXDAAAANwAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCCQnCyyMA/9Rq - AP//9ev//////////////////sKJ/8BgAP/DYgD/xWcA/8JqAP+9bgD/2osA/9eMAP/ZkgD/46EA/9yd - AP/bngD/3J0A/9ycAP/cmwD/3JoA/9yaAP/bmwD/25sA/9+iAP/jqAD//+GE////////00X/8boA///d - aP///////9I7///IGv//yyj//8w3//hyAfkfAQFlAAAAFwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAC9CQkhxQkJ/8RRAP/+sGL///////////////////Xr//+NBv//pCH//79F///OVv//0E7//807///L - KP//yRT//8YD//O9AP/vuAD/67IA/+asAP/hpQD/3Z8A/9ybAP/blgD/1ZAA/86KAP/IgwD//+3G///4 - 6//cngD/6rEA///43f//6qL//8gQ///JHv//yyz//64e/3kGBrYAAAAuAAAABQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAwAkJo8sjAP/UagD///Xr///////////////////ptP//2Hz//9Vu///S - Xv//0Ez//805///KJf//yBP//8UC//K8AP/vuAD/6rEA/+WrAP/hpQD/3Z8A/9yaAP/blQD/1ZAA/82J - AP/unQD////////Lc/+8dAD//6Yg////////sw///8kU///KIv//zDD/zzcE8gAAAE4AAAAQAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvQkJIcUJCf/FTgD//8mG///////////////////3 - 6P//2Hv//9Vs///TXf//z0r//8w3///KJP//yBH//8UA//K8AP/vtwD/6rEA/+WqAP/hpAD/3Z4A/9ya - AP/alQD/044A/82JAP//wlH///////udAP+7cwD//9+t///Iif/FZAD/zG8A//+9E///fwD/VAQElgAA - ACYAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAJCaPPJh7//+i5///9 - 9f//////////////////3Ir//9Vr///RW///z0j//8w2///KIv//yA///cQA//G7AP/utgD/6bAA/+Sq - AP/gowD/3J4A/9yaAP/ZlAD/044A/82IAP//3Z7//+nD/794AP/jjQD//////+p/AP/FZAD/wGAA/9Bo - AP+lCAjkAAAARgAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL0J - CSHFCQn/+Zll///uzP//////////////////7sL//9Rq///SWf//z0f//80z///JIP//yA3/+sIA//G7 - AP/utgD/6bAA/+SpAP/gowD/3J0A/92ZAP/ZkwD/040A/8uHAP///////7Y5/753AP//0Yb//8yI/8Np - AP/EYwD/wGAA/8sjAP9HAwOFAAAAIAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAADACQmjzycb///kqv//+e7//////////////Pb//9Ro///SV///z0T//8wx///J - Hv//xwz/+MEA//G6AP/ttQD/6K8A/+OpAP/fogD/250A/9yZAP/ZkwD/0o0A//+4Kv///vv/1YcA/9KD - AP//9+v/5YUA/8NpAP/EYwD/3VAA/5kWFtEAAAA6AAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9CQkhxQkJ/9pzWej/6Lb3/////////////////+Se///R - Vf//zkL//8wv///JHP//xwr/98AA//G6AP/ttQD/6K4A/+OoAP/fogD/25wA/92YAP/YkgD/0YwA///V - gP//0n//wXsA//+7S///1ZX/9o4A//6UG/rklFDs019a9yACAmMAAAAZAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAkJo8UPD/iYiIi16enp7f// - //////////TY///UYf//zkD//8wt///IGv//xgj/9sAA//C6AP/stAD/564A/+OnAP/foQD/3JsA/9yY - AP/YkgD/7qAA///pvP//vUT//64h///y2v/esm/fyqVzwaKioqDMdnblkSEhtQAAADIAAAAHAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvQkJIcMJ - CfG5RUXOsrKyyf///////////////5yYj9q+rn/L7cxlxP/US83/1ELN/9M72v/SPOf/0Djn/8015//K - Muf/xjDn/8Q24fLEWs/xwVvO98hs3f/tw/W0oHm/w8K9xOLg2OGdnZ2mqKiom7aJicLEPj7uIwICWgAA - ABUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAL8JCYPFDw/3mYmJtOPj4+n//////////8vLy+yFhYXEnZ2dpq6urpWwsLCUsLCwlLCw - sJSwsLCUsLCwlLCwsJSwsLCUsLCwlLCwsJSwsLCU4c+oyt/NpteZmZmq8urb6ayrp7WkpKKfqZ2bptRb - Wfp1BgahAAAAKQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAALwJCRHDCQnxuzw81KCgoML///////////j4+Px/f3/NkpKSsqmp - qZqwsLCUsLCwlLCwr5SwsK+UsLCvlLGvrpSxr66UsbCtlLGwrJSvrKiW/+Gm7q2lkrivqZ+06N/J36Ge - lKSoo5eexXFp26wWFt8AAABHAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/CQmDxQkJ/5x7e7rc3Nzl//////// - //+0srLjioiFvqOhnKGyrqiUsq+nlLKuppSzr6SUs66jlLStoZS1rp+Uta2dlLWtmpS6rZGg/92S6aGX - gKnt37retqmNsqyfgKC6h2290jIq/1kEBI0AAAAkAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8CQkRwwkJ8b00 - MNuhnpXC///////////k4+HzhoBxyJ6Wg6q0qZGXuKySlLisj5S5q4yUuquJlLuqh5S7qoSUvKmBlL2o - fpTqxnbC475xyLSeb6zu1aHYsZhioreSXajXUTX2oAgI1wAAAD8AAAALAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAvwkJg8UJCf+ieGC708y/3P//////////mo5y1JuIYba0nm6cwKZxlMGmbpTDpmmUw6VmlMSl - YZTGpV2Ux6NZlMajVJX/zmPVtZJDpuvIfczLplCuvpY3odNuKNbKFA7/NwMDcgAAABwAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAvAkJEcMJCfHBKB3hpYxZv/v59fv/////zsOp5pp9O8K3kkGly6JDlc6k - PpTQozmU0qMzlNOjLZTWoyaU2KMflNWhF5f/yknVzZgHoP/QXs7NmQCdy4QAt90yBP+EBga+AAAANgAA - AAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCYPFCQn/uF4cxNvJnN3/////9vLp+KN6 - CMm6iQKzyJUAo8SSAKK7jQCktIkApa+GAKSvhgCfsokAmfO2ALLdqACv1qQAptilAKSdegCezlkA8b4J - CfggAgJhAAAAFgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwJCRHECQnwySQC5rCH - AMD9+e/7/////9CuO9qBZADDhWcAu4FkAL99YADFe18Ax31gAMWFZwC5lnQApPO3ALijfgCXpX8AlaJ9 - AJi4bgDPzhYC/28FBaoAAAAtAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAC/CQlixQkJ/6hSANHcvE7X/////+3drO7r3Kzv7+W98v///////////////+zhu/XHnAvTj24ArKJ9 - AJimgACUpoAAlKl5AKnPLAD6tgkJ8QAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAxQkJ/8ImAOrUrCPO//////DlvvHv5L3y//////////////////////// - ///KoyHZjm0ArqJ9AJimgACUpoAAlMlYAOHFCQn/TAQEpAAAADYAAAADAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAkJyMMmAOrVrCPO//////DlvvHv5L3y//////// - ///////////////////KoyHZjm0ArqJ9AJimgACUpoAAlMJaANTFCQn/AAAAfQAAAC4AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAkJyMImAOrSqiLQ//////Dl - vvHv5L3y///////////////////////////KoyHZjm0ArqJ9AJimgACUpoAAlMBiAM7FCQn/AAAAcgAA - ACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAkJyMYW - AvXRqSLR//////DlvvHu5L3z///////////////////////////KoyHZjm0ArqJ9AJimgACUpoAAlMBi - AM2xCAjmAAAAaQAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAvQkJx8UJCf/UqyPP//////DlvvHu47z0///////////////////////////KoyHZjGwAr6F8 - AJmmgACUpoAAlMFiAMyrCAjbAAAAYwAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAugkJqcUJCf/ClQDD//////z47/zt4rv0//////////////////////// - ///IoiHbiWoAs597AJumgACUpoAAlLVmALitCAjZAAAAWQAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAkJi8UJCf+EZgC6///////////t4rv0//////// - ///////////////////XvF7kh2gAtp15AJymgACUpoAAlLZ7ALKnCAjOAAAATwAAABoAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtAkJi8UJCf+DZQC8//////// - ///u47zz///////////////////////////fxnTkiGkAtZt4AJ+lfwCVpoAAlLd8ALGQBweuAAAASQAA - ABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQkJi8UJ - Cf+TXADL///////////v5L3y///////////////////////////hyHXigmQAvYxsALCTcQCnlnQApK52 - ALqNBwexAAAASAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAJqAgIlcUJCf+UVgDV7+W98vDlvvHdpTLl3psd5N6bHeTemx3k3psd5N6bHeTemx3kkGEA1n1h - AMV/YgDBgGMAv4pnAMGBBgbDAAAAZQAAADIAAAAOAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAoAAAAtfhwAn8UJCf+5ZwD2uGwA+cJhAP/AYAD/wGAA/8BgAP/AYAD/wGAA/8Bg - AP/AYAD/wGAA/8BgAP/AYAD/sWEA8qVgAOltHgDNAAAAlgAAAG8AAAA3AAAADQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1UACfHmADB4JwA/9eFAP/AfQD6nF8A55lPAN6iUQDjo1EA4qNS - AOGkUgDgpVMA3qVTAN6kUgDgo1IA4aNRAOKiUQDjuVwA+cBgAP/AYAD/plMA7zUbAKwAAABcAAAAGQAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/HGbjpqwD1vngA9LJhAPWxWADywGAA/8Jj - APTGZwDoxWcA6MhsANvKcgDPynMAzsdqAODFaADnxWcA58JjAPPAYAD/uWAA7aliAOenYADsr1wA9ZVL - AOEAAABdAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM5yAKbAYAD/wGAA/81q - AOrDeCDMrpNWp7aZWaC4mVifuZpWn7ubVZ28m1OcvZtRnL6bT5y9nE6cvZpLnbyYSZ/Dkzyl2IUUvst6 - AOS/eAD/xYEA/4lXALwAAAA9AAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALtd - AGK/YADwwGAA/+R+Fse+nXqjrKihmqmnn5ynpJuep6OanqqnnJutqZ2araedmq2onJqtp5uarKWYm6mi - k56qopOex5dUrtSCAODAegD/w4AA85VkAG4AAAATAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAuV0AQrdcAIW4XAC3wmEAv+BwANDodADW7YQdvu6FHb3vhR2974Udve+F - Hb3vhR296XQA1t9wANHCYQDAtmQAuqdmAI+YYABRAAAADAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4AAAD/8AAP4AAAAB/wAA+AAAAAA/ - AADgAAAAAB8AAMAAAAAADwAAwAAAAAAHAADAAAAAAAcAAMAAAAAABwAAwAAAAAAHAADAAAAAAAcAAMAA - AAAABwAAwAAAAAAHAADAAAAAAAcAAOAAAAAABwAA4AAAAAAPAADwAAAAAB8AAPAAAAAAHwAA+AAAAAA/ - AAD4AAAAAD8AAPwAAAAAfwAA/AAAAAB/AAD+AAAAAP8AAP4AAAAA/wAA/wAAAAH/AAD/AAAAA/8AAP+A - AAAD/wAA/4AAAAf/AAD/wAAAB/8AAP/AAAAP/wAA/+AAAA//AAD/4AAAH/8AAP/wAAA//wAA//gAAD// - AAD/+AAAf/8AAP/4AAB//wAA//gAAH//AAD/+AAAf/8AAP/4AAB//wAA//gAAH//AAD/+AAAf/8AAP/4 - AAB//wAA/+AAAB//AAD/4AAAH/8AAP/gAAAf/wAA/+AAAB//AAD/4AAAH/8AAP/gAAAf/wAA//gAAH// - AAA= - - - - - AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAGAAAADQAAABYAAAAcAAAAIgAAACYAAAArAAAALwAAADAAAAAwAAAAMAAA - ADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAALgAAACgAAAAkAAAAHwAAABkAAAASAAAACgAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAMAAAAMAAAAGAAAACQAAAAwAAAAPAAAAEsAAABbAAAAaAAAAHMAAAB8AAAAhgAA - AI4AAACPAAAAjwAAAI8AAACPAAAAjwAAAI8AAACPAAAAjwAAAI8AAACPAAAAjwAAAIsAAACAAAAAdwAA - AG4AAABhAAAAVAAAAEUAAAA0AAAAJwAAAB0AAAASAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAGAAAAEgAAACEAAAAyAAAASAAAAGAAAAB3KQMAmUgFALB7CQDOhAkA2KML - AOqiCwDrvg0A+scOAP/HDgD/xw4A/8cOAP/HDgD/xw4A/8cOAP/HDgD/xw4A/8cOAP/HDgD/xw4A/8cO - AP+qDADzoQsA7ZcKAOd2CADXXwcAyUUFALkAAACaAAAAjgAAAH0AAABqAAAAVAAAAD0AAAArAAAAGgAA - AAsAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAoAAAAeAAAANwAAAFQAAABxTAUAqHwJAM2jCwDpxw4A/8cO - AP/HDgD/xSsA/8YxAP/GRgD/yVMA/8hfAP/McQD/znYA/855AP/TggD/2YsA/9qZAP/enQD/4pcA/+Sb - AP/mnwD/6qIA//WmAP/4pAD/9YgA//1/AP/1bwD/50UD/9s2AP/HDgD/xw4A/6oMAPOLCgDkXgYAyyUD - AK0AAACUAAAAgAAAAGQAAABFAAAAKgAAABMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACAAAAB0AAAA/HAIAc2gHALebCwDixw4A/8cO - AP/HDAL/xgsF/8oXAP/KJQD/xz4A/8RfAP/EcwD/x3cA/8p6AP/KfgD/y4EA/8uEAP/KhwD/zYoA/8+O - AP/SkgD/1ZUA/9iZAP/bnQD/4KMA//C0AP/7vAD//8EM///LKP//zDj//89H///RVv//02T//9Zv//+6 - T///mT//+Hw0/+BEHP/OGgb/tAwA94AJAN8zBAC5AAAAlwAAAH0AAABVAAAALQAAABAAAAADAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAADQAAADA1BAB3lQoA1ccO - AP/IDAD/xwsD/8UKCP/FCQn/xQkJ/8osAP/FTgD/wGAA/8BgAP/AYAD/w2IA/8ZmAP/DaQD/wGwA/7xu - AP+6cAD/u3MA/712AP+/eAD/wXsA/8N9AP/FgAD/x4MA/8uGAP/PigD/0o0A/9aRAP/ZlAD/3ZgA//ev - AP//ugv//8Ms///MTv//2X///9yK///elf//4Z7//+Oo//+3eP/rcUf/0ikV/7QMAPdbBgDQAAAAoAAA - AHwAAABJAAAAGwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACy8D - AEOSCgDDxw4A/8cLA//GCgb/xQkJ/8UJCf/FCQn/yyMA/8JZAP/AYAD/wGAA/8BgAP/AYAD/wGEA/8Rj - AP/FZwD/w2oA/79sAP+7bwD/uXEA/7tzAP+9dgD/v3kA/8F7AP/DfgD/xoEA/8iEAP/MiAD/0IsA/9OO - AP/YkgD/2pUA/9yYAP/cmgD/25wA/92fAP/fogD/4aYA///CGv//0Fb//+Gj///krf//57f//+vA///v - yv/4r4f/2Ug0/7QMAPdABADGAAAAkQAAAFUAAAAeAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABjcEADm0DADlyRQA/8kQBP/FCQn/xQkJ/8UJCf/JDwX/xU4A/8BgAP/AYAD/wGAA/8Bg - AP/AYAD/wGAA/8JhAP/FZAD/xWgA/8FqAP++bQD/um8A/7pxAP+8dAD/vncA/8B5AP/CfAD/xH8A/8aC - AP/KhQD/zYkA/9CMAP/VkAD/2JMA/9uWAP/dmQD/2poA/9ydAP/eoAD/4KMA/+KmAP/kqgD/564A///L - Mv//5bH//+m6///sxf//6rL///PY///24f/3v6v/zyoe/1oGANIAAACVAAAAVAAAABgAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABa4DQDgyhEB/8UJCf/FCQn/xQkJ/8UJCf/JDwX/w1YA/8Bg - AP/AYAD/wGAA/8BgAP/AYAD/wGAA/8BgAP/CYgD/xWYA/8RpAP/BawD/vW4A/7lvAP+6cgD/vHUA/754 - AP/AegD/w30A/8WAAP/HgwD/yoUA/86KAP/SjAD/1ZEA/9mTAP/cmAD/3ZoA/9ubAP/cngD/3qEA/+Gk - AP/jpwD/5asA/+iuAP//zkH//+e2///qv///7cn//9RH///jiP//+Ob///rw//3v6f/caV//WgYA0gAA - AIsAAAA9AAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACtDACTyhEB/8UJCf/FCQn/xQkJ/8UJ - Cf/JDwX/w1YA/8BgAP/AYAD/wGAA/8BgAP/AYAD/wGAA/8BgAP/AYAD/xGMA/8ZnAP/DaQD/v2wA/7xv - AP+5cAD/u3MA/712AP+/eAD/wXsA/8N+AP/FgQD/x4MA/8uGAP/PigD/040A/9aRAP/alAD/3ZkA/9ya - AP/bnAD/3Z8A/9+iAP/hpQD/46gA/+asAP/psAD/7LMA///JIf//zCX//8ob//W+AP//44z///nq///9 - 9P////7//996/+5lAP8jAgC1AAAAZQAAABsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwgwC5cUJ - Cf/FCQn/xQkJ/8UJCf/JDwX/w1YA/8BgAP/AYAD/wGAA/8BgAP/AYAD/wGAA/8BgAP/AYAD/wmEA/8Rl - AP/FZwD/wmoA/79tAP+7bwD/uXEA/7t0AP++dwD/wHkA/8J8AP/EfgD/xoEA/8iEAP/NiAD/0IsA/9OO - AP/YkgD/2pUA/92YAP/bmgD/25wA/92gAP/xsAD//8s8///JLP/4ugD/6rAA/+y0AP/vtwD/8boA//G7 - AP/4wQD//8YD///bYf//7bL//+us///LK///xi//mysA5AAAAIAAAAAoAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAMYKBv/FCQn/xQkJ/8UJCf/FCQn/w1YA//yIE//+zJ3//////+h0AP/AYAD/wGAA/8Bg - AP/AYAD/wGAA/8JiAP/FZAD/xGgA/8FrAP+9bQD/um8A/7pyAP+8dQD/vncA/8B6AP/CfAD/xH8A/8aC - AP/KhQD/zYkA/9GMAP/VkAD/2ZMA/9uWAP/cmQD/25oA/9ydAP/eoAD/4KQA/+KnAP/2uAD//89A///d - dv//66n//+SI///VRv//xwT/+sMA///GBv//yA///8kY///KI///yy7//8w4//+eA/cAAACMAAAALgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFCQn/xQkJ/8UJCf/FCQn/yTIA//ycO/////////////// - ///+sGL/wGAA/8BgAP/AYAD/wGAA/8BgAP/DYgD/xWYA/8NpAP/AawD/vG4A/7pwAP+7cwD/vXUA/794 - AP/BewD/w30A/8WAAP/HgwD/y4YA/8+KAP/SjQD/1pEA/9mUAP/dmAD/3JoA/9qbAP/cngD/36EA/+Gl - AP//vgf//9di//q8AP/rsgD/7bYA///omf/////////////xv///22X//8sh///JHP//yib//8wx///N - O///yD3/AAAAjwAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxQkJ/8UJCf/FCQn/xQkJ/+lr - AP///////////////////////+vX/8BgAP/AYAD/wGAA/8BgAP/AYAD/xGMA/8ZnAP/DagD/v2wA/7tv - AP+5cQD/u3MA/712AP+/eQD/wXsA/8N+AP/GgQD/yIQA/8yIAP/QiwD/044A/9eSAP/alAD/3ZkA/9ya - AP/bnAD/3Z8A/9+iAP/hpQD/5KkA///33P//+u7//8oh/+63AP/xugD///C8///////////////////8 - 8P//4YH//8sp///MM///zj7//89J/wAAAIkAAAAtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEK - CMPFCQn/xQkJ/8wdAP/8iBP////////////////////////////8kif/wGAA/8BgAP/AYAD/wmEA/8Vk - AP/FaAD/wWoA/75tAP+6bwD/unEA/7x0AP++dwD/wHkA/8J8AP/EfwD/xoIA/8mEAP/NiQD/0IsA/9WQ - AP/YkgD/25YA/92ZAP/bmwD/3J0A/96gAP/gowD/4qYA/+SqAP//7bn////////rqf/vuAD/8boA///X - Rv//////////////////9dX//+ie///vvf//zDf//85B///AO/8AAABuAAAAHwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAC+CQlCxQkJ/8UJCf/IOQD//IgT/////////////////////////////syd/8Bg - AP/AYAD/wGAA/8JiAP/FZgD/xGgA/8FrAP+9bgD/uW8A/7pyAP+8dQD/vngA/8B6AP/DfQD/xYAA/8eC - AP/KhQD/zYkA/9KMAP/VkAD/2ZMA/9yXAP/dmgD/25sA/9yeAP/eoQD/4KQA/+OnAP/lqwD//+65//// - ////66r/8LkA//G7AP//10b/////////////8sT//8wo///KJP//0kn//914///OQ//JSAfjAAAAQgAA - AAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMEJCcPFCQn/xz4A/9RqAP////////////// - ///////////////////UagD/wGAA/8BgAP/EYwD/xmYA/8NpAP+/bAD/vG4A/7pwAP+7cwD/vXYA/794 - AP/BewD/w34A/8WAAP/HgwD/y4YA/8+KAP/TjQD/1pEA/9qUAP/dmAD/25kA/9ucAP/dnwD/36IA/+Gl - AP/jqAD//8EK/////////////9dW//C5AP/xuwD//+WK////////9NL//8si///JHf//yyf//8wy///N - PP//jBH/NAICeAAAAB0AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9CQkyxQkJ/8ky - AP/AYAD//sKJ/////////////////////////////KZP/8BgAP/CYQD/xGMA/8VnAP/CagD/v20A/7pv - AP+5cQD/yYAA/9WNAP/TjQD/1pIA/9yeAP/bngD/254A/9ydAP/bnAD/25wA/9ybAP/bmgD/3ZoA/9ya - AP/bmwD/3Z8A/+CjAP/ipgD/5KkA///XYv////////ru/++3AP/xugD/8bsA///43v///////9I6///J - Ff//ySD//8sr///NNf//yDf/lBkGywAAADkAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAMAJCaPFCQn/wlkA/+h0AP//9ev////////////////////////r1//AYAD/wmEA//KF - AP//ng///7Mn//++MP//yj///806///LLP//yR3//8gP///GAv/0vgD/8boA/++3AP/rsgD/560A/+So - AP/gpAD/3aAA/9ucAP/cmQD/2pUA/9WRAP/QjAD/0I0A/86MAP//5aP////////jh//vuAD/8boA///a - V////////+qi///ID///yRj//8oi///LLf//zDj/5lMD+R4BAWcAAAAZAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9CQkhxQkJ/8kyAP/AYAD//rBi//////////////////// - /////////8l1///Zgv//13j//9Vt///TY///0VX//89I///NOf//yyr//8kc///ID///xQL/9L4A//G6 - AP/utgD/67IA/+etAP/jqAD/4KMA/92fAP/bmwD/3ZkA/9qUAP/VkAD/0IsA/8qGAP/GggD///////// - ///6nAD/wnwA/8+LAP//7Ln////////OKP//yBH//8kb///KJv//zDD//6MZ/4MGBsAAAAAxAAAABgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAJCaPFCQn/wlkA/9Rq - AP//9ev////////////////////////y0///2YH//9d2///VbP//0mH//9FU///PRv//zDj//8sp///J - Gv//xw3//8UA//O9AP/xugD/7rYA/+uxAP/nrAD/46gA/+CjAP/dnwD/25oA/92YAP/alAD/1ZAA/9CL - AP/KhgD//7Up////////6cP/vXcA/7pzAP/2lAD////////Pjf/nmQD//8UP///JHv//yyn//8Us/8Yo - BfMAAABUAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAC9CQkhxQkJ/8sjAP/QaQD//9Of/////////////////////////////9uJ///Xdv//1Wz//9Jg///R - Uv//z0P//8w2///KJ///yBr//8cM//7FAP/yvQD/8LoA/+21AP/qsQD/5qwA/+KnAP/fogD/3J4A/9ub - AP/cmAD/2ZQA/9WPAP/PigD/yoUA///Wiv///////7xM/712AP+6cgD//86G///////rfQD/xGUA/8dn - AP//sQP//8ss//pwAP9vBQWpAAAAKgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAJCaPFCQn//Z1V///qvf///fv////////////////////////p - tv//13T//9Rq///SX///0VH//85D///NNf//yib//8kX///HC//9xAD/8r0A//C5AP/ttQD/6rAA/+as - AP/ipwD/36IA/9yeAP/bmwD/3ZgA/9mTAP/TjgD/z4oA/8qFAP//8dj//////9OFAP+9dgD/zn0A//// - ////yoj/xWgA/8RjAP/AYAD/wGAA//uQAP+lCAjlAAAASQAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9CQkhxQkJ/9lEMP//6Lf//+7N//// - ////////////////////9+f//9d0///Uaf//013//9BP///OQf//zDP//8ol///JFv//xwn/+sIA//G7 - AP/wuQD/7bQA/+mwAP/lqwD/4qYA/9+iAP/cnQD/25oA/9yXAP/YkwD/044A/86JAP//qgT////////b - nP+/eQD/vXYA///BXv//////6YAA/8VoAP/EYwD/wGAA/8BgAP/MHQD/VwQEkAAAACIAAAADAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAJ - CaPFCQn//7d8///krf//+/T////////////////////////ejP//1Gn//9Fc///QT///zkD//8wx///K - I///yRX//8YI//rCAP/xuwD/8LkA/+y0AP/prwD/5aoA/+GmAP/eoQD/250A/9yaAP/blgD/2JIA/9ON - AP/NiQD//8RR////////sSb/v3gA/7x1AP//79b//8yH/8FrAP/FZwD/w2IA/8BgAP/HPgD/kwcH1QAA - AD8AAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAC9CQkhxQkJ/9U0JP//5Kz//+7G////////////////////////78n//9Nn///R - Wv//0E3//84+///MMP//yiH//8gT///GBv/4wQD/8bsA//C4AP/stAD/6a8A/+WqAP/hpQD/3qEA/9ud - AP/cmgD/3JcA/9iSAP/SjQD/zYkA///lr///8Nf/wnwA/794AP//tDX//////+aFAP/CagD/xmcA/8Ji - AP/CWQD/xxYW/zUDA3UAAAAcAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAJCaPFCQn/7I5i9v/jpv//+ez///////// - //////////31///Wb///0ln//9BL///NPP//zC7//8kg///IE///xgX/9sAA//G7AP/vuAD/67MA/+iu - AP/kqQD/4aUA/96gAP/bnAD/3JoA/9uWAP/XkgD/0owA/96TAP//+/L//81v/8F7AP+/eAD//+Ct///O - hf++bgD/0nIA//R/AP/ziiH243Nb/44wML0AAAA2AAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC9CQkhwwkJ8cIW - FvOfmo/H2M602v//////////////////////5J7//9JY///PSv//zTz//8wu///JHv//yBH//8YE//bA - AP/xuwD/77cA/+uyAP/orgD/5KkA/+GlAP/eoAD/25wA/92aAP/alQD/1pEA/9CMAP//vTb///jo/+mX - AP/BewD/9poA///+/f//rjT//6cv/+ynU+POonLGun9/0stCQvciAgJdAAAAFgAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAL8JCYPFCQn/qFNT0ImJib7s7Ozq//////////////////fh///VZ///0E3//806///L - LP//yR3//8gP///GAv/0vgD/8boA/++3AP/rsgD/560A/+OoAP/gpAD/3aAA/9ubAP/cmQD/2pUA/+Wa - AP/uoAD//9V+///rwv//sST//7pA+v/js/rm2MHpwKJ2v6mpqZmtra2WrJiYrdViYvp0Dw+mAAAALAAA - AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8CQkRwwkJ8cIWFvOMfn7EsrKyyf////////////////// - //+ZmZnasqWDx9LAibj+1VnF/9VNzf/VR9T/zyrn/84g5//MHuf/yRzn/8gZ5//FFuf/whPn/8Uq5//F - L+f/wi/n/8dI5//GTufvv1rP7rxZ0P/vyv/Yw5fdpp6Qrq2srKX49Ov1oaGfsqampp2vr6+UqKiom8t1 - dea9IyPwAAAASwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCYPFCQn/r0FB2oeH - h8Ds7Ozq////////////////0tLS8ISEhMWdnZ2mrq6ulbCwsJSwsLCUsLCwlLCwsJSwsLCUsLCwlLCw - sJSwsLCUsLCwlLCwsJSwsLCUsLCwlLCwsJSwsLCUsLCwlMS7qq//7MP6nZyXt6KioqDX1MrL1tPL1p6e - nqStra2XrKysl7WJh8PSQUH/VgQEkgAAACYAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAC8CQkRwwkJ8cQPD/mMfX3EoaGhv/////////////////j4+P1/f3/NkpKSsqmpqZqwsLCUsLCwlLCw - sJSwsLCUsLCwlLCwsJSwsLCUsLCwlLCwsJSwsLCUsLCwlLCwsJSwsLCUsLCwlK+vr5To06XQ7tWj4pmZ - mKqlpKKe+O/c76Shnq+npqKcsK2qlaqdmaXWYV/6qQ8P4QAAAEYAAAANAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCYPFCQn/r0FB2oeHh8Hh4eHg////////////////srKy5ImJ - ib6hoaGhr6+vlLCwsJSwsLCUsLCwlLCwr5SwsK+UsLCvlLGvrpSxr66UsbCtlLGwrZSxsKyUsq+rlLKv - qpSvrKaX/+Gl7r+wkcWhn5ak0Mi1vdzUvtSjnpSjsauel62nmprGeG7cyyEf/0gDA4IAAAAgAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8CQkRwwkJ8cQPD/mMfXzFoKCgwf// - /////////////+Li4vWCgYDJmZiVq62sqJeyr6uUsq+rlLKvqpSysKmUsq+olLKwppSyrqaUs6+klLOu - o5S0rqKUtK6glLWun5S1rZ2Uw7STp//goPSdloOsqaCKoPPlwuKtooqsr6OJnLWpjZa6iXG81T81/5cH - B9AAAAA6AAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8J - CYPFCQn/sjk334eFgMPb2tjb////////////////ko+J15GMgrippJedta6flLWunpS1rpyUta2blLat - mZS2rZeUt6yVlLeslJS4rJKUuKuQlLisjpS5q4yUuquKlOfGfsLuyXvVqZl1pcCvhqvm0qbSr5xyobqk - d5eznW+e2l5D9sAPDfgeAQFoAAAAGQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAC8CQkRwwkJ8cUJCf+TcGXKmZSFvvv7+fr//////////8zJwu2Lgm3EpZl/preq - ipW6q4qUu6uIlLurhpS8qoSUvKqClL2pf5S9qX2Uvqh7lL+oeJS/p3aUwKdzlL+lb5X/13vhv6BhtLOY - X6Hz153Vup9iqb2dWpu/nlmZ0HRB1s4gFv+DBga/AAAANAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCYPFCQn/uDEo446BZcPY0sTX//////// - ///4+Pb8iXlXzZ+LY7K3oG+awKZxlMGmb5TCpWuUw6VolMOlZpTEpGSUxaRflMajXZTHo1qUyKRWlMij - U5TDn06Z/9Bl3beSQqTHoUul7cp6ysKYOZ7KnjeYyoYttNk2GP+2CQnyIQICXwAAABUAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8CQkRxAkJ8MUJ - Cf+dbEfIo41fv/z6+Pr//////////7uukeSbgES+uJZNocijUZTKpE2Uy6NKlM2jRpTOo0KUzqM/lNCk - OpTRojaU0qIylNOjLpTVoymU9r43u/W9NsfLmRef9cdYwNejGqTWngia05wBneFaBuzFCQn/cAUFqAAA - ACoAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAL8JCWLFCQn/vicX55t7MsTez6vY///////////n4ND0nHgiybiNJarRnyWX16MglNmk - GpTapBWU3KUPlN6lCpTgpQSU3qUAlNqiAJTVoACU0JwAlP/HMs60iQCjuY0Am//JM720iwCXrYYAmcB1 - AM/QGwP/pQgI5AAAAEoAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwwkJ4sUJCf+wWg7QrIAJvvn26PT//////////7CL - H9WqfwC3vpAAn7+RAJu2iwCfr4YAoKuDAKGngAChpH4AoKR+AJ6mgACaqIIAlaeBAJX/xB/MnXkAnKJ9 - AJimgACUpX8AlaV2AK3RQAD7xQkJ/1YEBJIAAAAkAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCWLFCQn/xRwE8Ilp - AMbiwlfQ///////////ZwnXpgGMAw49uAK6LbACwhGYAu4JkAL6BYwC/gWMAv4JkAL6FZwC4kG8Aqp97 - AJrJmgCi2aQAqaR+AJalgACVpoAAlJ56AJvGYADnxQkJ/50HB9wAAABBAAAACwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAwwkJ4sUJCf+hTgDagGMAwPv14vX/////9vHe+ph1AM3nzXfd6dib6e3jvPTt4rv07eK79O3i - u/Tj05jv0rNL4YNlALyZdgCgpoAAlKaAAJSmgACUpoAAlKR/AJWzdQDB0RwA/8UJCf80AgJ5AAAAHQAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8JCWLFCQn/xBUC93xgAMb268Pr///////////KoyHZ//////// - /////////////////////////////+zhu/V9YADFlnQApKaAAJSmgACUpoAAlKaAAJSofQCe0kAA+sUJ - Cf+IBgbPAAAAPQAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxQkJ/8UJCf97XwDI7dJ71/// - ////////yqMh2f//////////////////////////////////////////e18Ax5VzAKWmgACUpoAAlKaA - AJSmgACUtnsAssUJCf/FCQn/FwEBhgAAACgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMUJ - Cf/FCQn/e18AyevRetj//////////8qjIdn//////////////////////////////////////////3tf - AMeVcwClpoAAlKaAAJSmgACUpoAAlLd8ALHFCQn/owgI5gAAAHcAAAAkAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAADFCQn/xQkJ/4hcAM7pz3na///////////JoiHa//////////////////////// - //////////////////97XwDHlXMApaaAAJSmgACUpoAAlKaAAJS5fQCvxQkJ/6QICOUAAAB0AAAAIgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwQkJ5MUJCf+VVwDU6c952///////////0rNL4f// - ////////////////////////////////////////e18Ax5VzAKWmgACUpoAAlKaAAJSmgACUpoAAlNEc - AP+lCAjjAAAAawAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwJCcjFCQn/lVcA0+nP - edr//////////9zDcuj//////////////////////////////////////////3tfAMeVcwClpoAAlKaA - AJSmgACUpoAAlKaAAJTSIwD/lAcH1AAAAGMAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAC8CQnIxQkJ/5VXANTpz3na///////////cxHLn//////////////////////////////////////// - //97XwDHlXMApaaAAJSmgACUpoAAlKaAAJSmgACU0iMA/4EGBsMAAABeAAAAGAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAvAkJyMUJCf+UVwDV2a8jyv//////////3cRz5v////////////////// - ////////////////////////e18Ax5VzAKWmgACUpoAAlKaAAJSmgACUpoAAlNIjAP+EBga+AAAAVgAA - ABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL4JCcbFCQn/q0MA4teuI8z//////////86s - N9z//////////////////////////////////////////3tfAMeVcwClpoAAlKaAAJSmgACUpoAAlKaA - AJTFJwDnhwYGugAAAEoAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3CQmaxQkJ/6xD - AOHXriPM///////////IoiHb//////////////////////////////////////////97XwDHlXMApaaA - AJSmgACUpoAAlKaAAJSmgACUyEUA52QFBZ0AAABCAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAtAkJi8UJCf+sQwDh1q0jzf//////////17xe5P////////////////////////////////// - ////////e18Ax5VzAKWmgACUpoAAlKaAAJSmgACUpoAAlMlFAOdXBASPAAAAPAAAAAsAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAALQJCYvFCQn/q0MA4dSsI87//////////9/Gc+X///////////// - /////////////////////////////39iAMKUcgCmon0AmKN+AJelfwCVpoAAlKaAAJTGRgDgXAQEiAAA - ADIAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2CQmKxQkJ/7U1AOnQqSLS//////// - ///hyHTi//////////////////////////////////////////9/YgDBiWkAtI5tAK6PbwCrk3IAp5Z0 - AKOZdgCguEgA0kwEBHwAAAAnAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEsAgIj8UJ - Cf+9JQDxeFwAze3dre3fxnPl1psc5I1fANuTYADbomIA46JiAOShYgDkoWIA5KFiAOShYgDkj2EA1o9h - ANeOYADYeV4Ay3tfAMh9YQDEgWQAvq9KAN0AAAB6AAAAQgAAABYAAAAGAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAALAAAAKWIFBYDFCQn/xC8A+KxwAO+4awD4wmEA/8BgAP/AYAD/wGAA/8BgAP/AYAD/wGAA/8Bg - AP/AYAD/wGAA/8BgAP/AYAD/wGAA/8BgAP+9YAD8sWEA8qFiAOSyWgDrAAAAoAAAAIUAAABaAAAAKgAA - AAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAHAAAALopoAKLCfQDr1F0A/816AP/BewD/u3AA/8NlAP/AYAD/wGAA/6JR - AOKiUQDiolEA4qJRAOKjUQDio1EA4qJRAOKyWQDxwGAA/8BgAP/AYAD/wGAA/8BgAP/AYAD/wGAA/7BY - APR0OgDUAAAAmAAAAGMAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlXEAH+24AN3ttQD/4qYA/7R+AOmWYwDcjlUA2oxN - ANiGRADNf0AAwJVLAM2mUwDdplMA3aZTAN6mUwDdp1MA3KZTAN2mUwDdplMA3oNBALuDQgC7nU8A1n4/ - AMKaTQDcjUcA2bBYAPPAYAD/wGAA/51OAOoAAACCAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/HHIj/wQT0s3cA5p5U - AO2vWAD1wGAA/8BgAP/AYAD/xmcA6chpAOLNcwDPznMAzs50AM7OcgDO0X4Au893AMfNcwDNy3MAzstz - AM7JcADUxWgA58RlAO3AYAD/xWcA/75tAP+kZQDqnl4A6aZaAPHAYAD/AAAAhgAAACwAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAC+bQBKxmcA/8BgAP/AYAD/wmIA+ctwCdvAhC26u5pQnsOfU5jIo1SVyaNSlMmkUZTKo0+UyqNOlMuk - TJTLo0uUzKRJlMyjSJTNo0aUzaJFlM6jQ5TOo0KUzKE/ld6IDbrOfADcu3QA/8B6AP/FgAD/uXcA9AAA - AG8AAAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAu14Ac8BgAP/AYAD/wGAA/7V/QMiVjXy1nJSBraOZhKannYWjqp+GoKuf - hqCpnoShqp2CoaqegqCsoIGfrqCBnq6ff56tnXygrJx7oa2ceaGtnHihrp14n62cd6CqmXKkpZNtqsp+ - AOzBewD/xoEA/8iFAPUAAAA2AAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5XQBCu14AtMBgAP/AYAD/4nEA3NWI - Ob3Bl2urp6ennKSkpJ6ioqKgoaGhoqCgoKKhoaGipKSkn6enp5ympqadoqKioaGhn6KgoJ+joaGfoq2e - jKXGjlW16oME08Z3APK9dgD/vHcA5rBzAKJ5UAA2AAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAuV0AQrZbAHayWQCJul0AxrhcAMfEYgDc4HAA3+BwAN/gcADf6HQA1+2EHb7wgA7F4HAA3uBw - AN/gcADf12sA57ZbAMm3XADJtVwArK1gAI6bXQBghVMALQAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAA//+AAAAH////+AAAAAA///+AAAAAAAf//gAAAAAAAf/4AAAAAAAAf/AAAAAAAAA/8AAAAAAA - AB/gAAAAAAAAD+AAAAAAAAAP4AAAAAAAAA/gAAAAAAAAD+AAAAAAAAAP4AAAAAAAAA/gAAAAAAAAD+AA - AAAAAAAP4AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAf+AAAAAAAAB/4AAAAAAAAP/wAAAAAAAB//AAAAAAA - AH/+AAAAAAAA//4AAAAAAAD//wAAAAAAAf//AAAAAAAB//+AAAAAAAP//4AAAAAAA///wAAAAAAH///A - AAAAAA///+AAAAAAD///4AAAAAAf///wAAAAAB////AAAAAAP///+AAAAAA////4AAAAAH////wAAAAA - f////AAAAAD////+AAAAAf////8AAAAB/////wAAAAP/////gAAAA/////+AAAAH/////8AAAAf///// - wAAAD//////AAAAP/////8AAAA//////wAAAD//////AAAAP/////8AAAA//////wAAAD//////AAAAP - /////8AAAA//////wAAAD//////AAAAP/////4AAAAf////+AAAAA/////4AAAAD/////gAAAAP////+ - AAAAA/////4AAAAD/////gAAAAP/////AAAAA//////gAAAf//8= - - - \ No newline at end of file diff --git a/PROMS/xxxSync/Sync/Properties/Settings.Designer.cs b/PROMS/xxxSync/Sync/Properties/Settings.Designer.cs deleted file mode 100644 index 06191e8a..00000000 --- a/PROMS/xxxSync/Sync/Properties/Settings.Designer.cs +++ /dev/null @@ -1,107 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.18408 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace Sync.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.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; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string DevelopmentFolder { - get { - return ((string)(this["DevelopmentFolder"])); - } - set { - this["DevelopmentFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string SourceSafeFolder { - get { - return ((string)(this["SourceSafeFolder"])); - } - set { - this["SourceSafeFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string MailBoxDevelopmentFolder { - get { - return ((string)(this["MailBoxDevelopmentFolder"])); - } - set { - this["MailBoxDevelopmentFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string MailBoxSourceSafeFolder { - get { - return ((string)(this["MailBoxSourceSafeFolder"])); - } - set { - this["MailBoxSourceSafeFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public global::System.Drawing.Point Location { - get { - return ((global::System.Drawing.Point)(this["Location"])); - } - set { - this["Location"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public global::System.Drawing.Size Size { - get { - return ((global::System.Drawing.Size)(this["Size"])); - } - set { - this["Size"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public global::System.Collections.Specialized.StringCollection Widths { - get { - return ((global::System.Collections.Specialized.StringCollection)(this["Widths"])); - } - set { - this["Widths"] = value; - } - } - } -} diff --git a/PROMS/xxxSync/Sync/Properties/Settings.settings b/PROMS/xxxSync/Sync/Properties/Settings.settings deleted file mode 100644 index 258fd349..00000000 --- a/PROMS/xxxSync/Sync/Properties/Settings.settings +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/xxxSync/Sync/Resources/iSync-128x128.png b/PROMS/xxxSync/Sync/Resources/iSync-128x128.png deleted file mode 100644 index b6293d16..00000000 Binary files a/PROMS/xxxSync/Sync/Resources/iSync-128x128.png and /dev/null differ diff --git a/PROMS/xxxSync/Sync/Resources/iSync.ico b/PROMS/xxxSync/Sync/Resources/iSync.ico deleted file mode 100644 index af4a5cb4..00000000 Binary files a/PROMS/xxxSync/Sync/Resources/iSync.ico and /dev/null differ diff --git a/PROMS/xxxSync/Sync/Resources/wi0124-16.ico b/PROMS/xxxSync/Sync/Resources/wi0124-16.ico deleted file mode 100644 index bdc5fedf..00000000 Binary files a/PROMS/xxxSync/Sync/Resources/wi0124-16.ico and /dev/null differ diff --git a/PROMS/xxxSync/Sync/Resources/wi0124-24.ico b/PROMS/xxxSync/Sync/Resources/wi0124-24.ico deleted file mode 100644 index d2d7b27c..00000000 Binary files a/PROMS/xxxSync/Sync/Resources/wi0124-24.ico and /dev/null differ diff --git a/PROMS/xxxSync/Sync/Resources/wi0124-32.ico b/PROMS/xxxSync/Sync/Resources/wi0124-32.ico deleted file mode 100644 index ef130ac0..00000000 Binary files a/PROMS/xxxSync/Sync/Resources/wi0124-32.ico and /dev/null differ diff --git a/PROMS/xxxSync/Sync/Resources/wi0124-48.ico b/PROMS/xxxSync/Sync/Resources/wi0124-48.ico deleted file mode 100644 index 9a475063..00000000 Binary files a/PROMS/xxxSync/Sync/Resources/wi0124-48.ico and /dev/null differ diff --git a/PROMS/xxxSync/Sync/Resources/wi0124-64.ico b/PROMS/xxxSync/Sync/Resources/wi0124-64.ico deleted file mode 100644 index 3cb97438..00000000 Binary files a/PROMS/xxxSync/Sync/Resources/wi0124-64.ico and /dev/null differ diff --git a/PROMS/xxxSync/Sync/SevenZipSharp.dll b/PROMS/xxxSync/Sync/SevenZipSharp.dll deleted file mode 100644 index f588f8a2..00000000 Binary files a/PROMS/xxxSync/Sync/SevenZipSharp.dll and /dev/null differ diff --git a/PROMS/xxxSync/Sync/Sync.csproj b/PROMS/xxxSync/Sync/Sync.csproj deleted file mode 100644 index 3deece84..00000000 --- a/PROMS/xxxSync/Sync/Sync.csproj +++ /dev/null @@ -1,121 +0,0 @@ - - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {400F2DAC-E405-4C1B-A388-5120FCF59DF0} - WinExe - Properties - Sync - Sync - Resources\iSync.ico - "%24/PROMS/Sync/Sync", KEEAAAAA - . - - - MSSCCI:Microsoft Visual SourceSafe - v2.0 - - - - - 2.0 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - - - - - - - - - - - - Form - - - frmSync.cs - - - - - Designer - frmSync.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/xxxSync/Sync/Sync.sln b/PROMS/xxxSync/Sync/Sync.sln deleted file mode 100644 index aa4d02a8..00000000 --- a/PROMS/xxxSync/Sync/Sync.sln +++ /dev/null @@ -1,26 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sync", "Sync\Sync.csproj", "{400F2DAC-E405-4C1B-A388-5120FCF59DF0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SyncMany", "SyncMany\SyncMany.csproj", "{256A41AF-440F-42FE-A9B1-2CE36F1261A2}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {400F2DAC-E405-4C1B-A388-5120FCF59DF0}.Release|Any CPU.Build.0 = Release|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {256A41AF-440F-42FE-A9B1-2CE36F1261A2}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/PROMS/xxxSync/Sync/app.config b/PROMS/xxxSync/Sync/app.config deleted file mode 100644 index 6787e77e..00000000 --- a/PROMS/xxxSync/Sync/app.config +++ /dev/null @@ -1,24 +0,0 @@ - - - - -
- - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/xxxSync/Sync/frmSync.Designer.cs b/PROMS/xxxSync/Sync/frmSync.Designer.cs deleted file mode 100644 index e15c8dfd..00000000 --- a/PROMS/xxxSync/Sync/frmSync.Designer.cs +++ /dev/null @@ -1,511 +0,0 @@ -namespace Sync -{ - partial class frmSync - { - /// - /// 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(frmSync)); - this.panel1 = new System.Windows.Forms.Panel(); - this.btnBrwsSSMail = new System.Windows.Forms.Button(); - this.tbSSMailBox = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.btnBrwsMail = new System.Windows.Forms.Button(); - this.tbMailBox = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.btnBrwsSS = new System.Windows.Forms.Button(); - this.tbSourceSafe = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.btnBrwsDev = new System.Windows.Forms.Button(); - this.tbDevelopment = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.fbd = new System.Windows.Forms.FolderBrowserDialog(); - this.dgv = new System.Windows.Forms.DataGridView(); - this.cms = new System.Windows.Forms.ContextMenuStrip(this.components); - this.compareToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.compareSourceSafeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.compareMailboxToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.selectAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.selectNoneToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.mailboxToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.clearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.buildToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.findToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.checkedOutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.differentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.contentDifferentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.sourceSafeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreUnchangedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreSelectedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreReadOnlyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.listToClipboardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.differentAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.panel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv)).BeginInit(); - this.cms.SuspendLayout(); - this.menuStrip1.SuspendLayout(); - this.SuspendLayout(); - // - // panel1 - // - this.panel1.Controls.Add(this.btnBrwsSSMail); - this.panel1.Controls.Add(this.tbSSMailBox); - this.panel1.Controls.Add(this.label4); - this.panel1.Controls.Add(this.btnBrwsMail); - this.panel1.Controls.Add(this.tbMailBox); - this.panel1.Controls.Add(this.label3); - this.panel1.Controls.Add(this.btnBrwsSS); - this.panel1.Controls.Add(this.tbSourceSafe); - this.panel1.Controls.Add(this.label2); - this.panel1.Controls.Add(this.btnBrwsDev); - this.panel1.Controls.Add(this.tbDevelopment); - this.panel1.Controls.Add(this.label1); - 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(759, 117); - this.panel1.TabIndex = 1; - // - // btnBrwsSSMail - // - this.btnBrwsSSMail.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsSSMail.Location = new System.Drawing.Point(672, 86); - this.btnBrwsSSMail.Name = "btnBrwsSSMail"; - this.btnBrwsSSMail.Size = new System.Drawing.Size(75, 23); - this.btnBrwsSSMail.TabIndex = 14; - this.btnBrwsSSMail.Text = "Browse..."; - this.btnBrwsSSMail.UseVisualStyleBackColor = true; - this.btnBrwsSSMail.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbSSMailBox - // - this.tbSSMailBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbSSMailBox.Location = new System.Drawing.Point(120, 88); - this.tbSSMailBox.Name = "tbSSMailBox"; - this.tbSSMailBox.Size = new System.Drawing.Size(546, 20); - this.tbSSMailBox.TabIndex = 13; - this.tbSSMailBox.Text = "E:\\Mailbox\\SourceSafe\\Proms"; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(12, 91); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(92, 13); - this.label4.TabIndex = 12; - this.label4.Text = "SS Mailbox Folder"; - // - // btnBrwsMail - // - this.btnBrwsMail.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsMail.Location = new System.Drawing.Point(672, 60); - this.btnBrwsMail.Name = "btnBrwsMail"; - this.btnBrwsMail.Size = new System.Drawing.Size(75, 23); - this.btnBrwsMail.TabIndex = 8; - this.btnBrwsMail.Text = "Browse..."; - this.btnBrwsMail.UseVisualStyleBackColor = true; - this.btnBrwsMail.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbMailBox - // - this.tbMailBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMailBox.Location = new System.Drawing.Point(120, 62); - this.tbMailBox.Name = "tbMailBox"; - this.tbMailBox.Size = new System.Drawing.Size(546, 20); - this.tbMailBox.TabIndex = 7; - this.tbMailBox.Text = "E:\\Mailbox\\Proms"; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(12, 65); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(75, 13); - this.label3.TabIndex = 6; - this.label3.Text = "Mailbox Folder"; - // - // btnBrwsSS - // - this.btnBrwsSS.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsSS.Location = new System.Drawing.Point(672, 34); - this.btnBrwsSS.Name = "btnBrwsSS"; - this.btnBrwsSS.Size = new System.Drawing.Size(75, 23); - this.btnBrwsSS.TabIndex = 5; - this.btnBrwsSS.Text = "Browse..."; - this.btnBrwsSS.UseVisualStyleBackColor = true; - this.btnBrwsSS.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbSourceSafe - // - this.tbSourceSafe.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbSourceSafe.Location = new System.Drawing.Point(120, 36); - this.tbSourceSafe.Name = "tbSourceSafe"; - this.tbSourceSafe.Size = new System.Drawing.Size(546, 20); - this.tbSourceSafe.TabIndex = 4; - this.tbSourceSafe.Text = "E:\\SourceSafe\\Proms"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(12, 39); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(98, 13); - this.label2.TabIndex = 3; - this.label2.Text = "Source Safe Folder"; - // - // btnBrwsDev - // - this.btnBrwsDev.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsDev.Location = new System.Drawing.Point(672, 8); - this.btnBrwsDev.Name = "btnBrwsDev"; - this.btnBrwsDev.Size = new System.Drawing.Size(75, 23); - this.btnBrwsDev.TabIndex = 2; - this.btnBrwsDev.Text = "Browse..."; - this.btnBrwsDev.UseVisualStyleBackColor = true; - this.btnBrwsDev.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbDevelopment - // - this.tbDevelopment.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbDevelopment.Location = new System.Drawing.Point(120, 10); - this.tbDevelopment.Name = "tbDevelopment"; - this.tbDevelopment.Size = new System.Drawing.Size(546, 20); - this.tbDevelopment.TabIndex = 1; - this.tbDevelopment.Text = "E:\\Proms"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 13); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(102, 13); - this.label1.TabIndex = 0; - this.label1.Text = "Development Folder"; - // - // dgv - // - this.dgv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dgv.ContextMenuStrip = this.cms; - this.dgv.Dock = System.Windows.Forms.DockStyle.Fill; - this.dgv.Location = new System.Drawing.Point(0, 141); - this.dgv.Name = "dgv"; - this.dgv.Size = new System.Drawing.Size(759, 283); - this.dgv.TabIndex = 2; - this.dgv.ColumnWidthChanged += new System.Windows.Forms.DataGridViewColumnEventHandler(this.dgv_ColumnWidthChanged); - this.dgv.MouseDown += new System.Windows.Forms.MouseEventHandler(this.dgv_MouseDown); - // - // cms - // - this.cms.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.compareToolStripMenuItem, - this.compareSourceSafeToolStripMenuItem, - this.compareMailboxToolStripMenuItem, - this.restoreToolStripMenuItem}); - this.cms.Name = "cms"; - this.cms.Size = new System.Drawing.Size(188, 92); - // - // compareToolStripMenuItem - // - this.compareToolStripMenuItem.Name = "compareToolStripMenuItem"; - this.compareToolStripMenuItem.Size = new System.Drawing.Size(187, 22); - this.compareToolStripMenuItem.Text = "Compare"; - this.compareToolStripMenuItem.Click += new System.EventHandler(this.compareToolStripMenuItem_Click); - // - // compareSourceSafeToolStripMenuItem - // - this.compareSourceSafeToolStripMenuItem.Name = "compareSourceSafeToolStripMenuItem"; - this.compareSourceSafeToolStripMenuItem.Size = new System.Drawing.Size(187, 22); - this.compareSourceSafeToolStripMenuItem.Text = "Compare Source Safe"; - this.compareSourceSafeToolStripMenuItem.Click += new System.EventHandler(this.compareSourceSafeToolStripMenuItem_Click); - // - // compareMailboxToolStripMenuItem - // - this.compareMailboxToolStripMenuItem.Name = "compareMailboxToolStripMenuItem"; - this.compareMailboxToolStripMenuItem.Size = new System.Drawing.Size(187, 22); - this.compareMailboxToolStripMenuItem.Text = "Compare Mailbox"; - this.compareMailboxToolStripMenuItem.Click += new System.EventHandler(this.compareMailboxToolStripMenuItem_Click); - // - // restoreToolStripMenuItem - // - this.restoreToolStripMenuItem.Name = "restoreToolStripMenuItem"; - this.restoreToolStripMenuItem.Size = new System.Drawing.Size(187, 22); - this.restoreToolStripMenuItem.Text = "Restore"; - this.restoreToolStripMenuItem.Click += new System.EventHandler(this.restoreToolStripMenuItem_Click); - // - // statusStrip1 - // - this.statusStrip1.Location = new System.Drawing.Point(0, 424); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(759, 22); - this.statusStrip1.TabIndex = 3; - this.statusStrip1.Text = "statusStrip1"; - // - // menuStrip1 - // - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileToolStripMenuItem, - this.editToolStripMenuItem, - this.mailboxToolStripMenuItem, - this.findToolStripMenuItem, - this.sourceSafeToolStripMenuItem, - this.listToClipboardToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(759, 24); - this.menuStrip1.TabIndex = 4; - this.menuStrip1.Text = "menuStrip1"; - // - // fileToolStripMenuItem - // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.exitToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "&File"; - // - // exitToolStripMenuItem - // - this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.Size = new System.Drawing.Size(92, 22); - this.exitToolStripMenuItem.Text = "E&xit"; - this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); - // - // editToolStripMenuItem - // - this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.selectAllToolStripMenuItem, - this.selectNoneToolStripMenuItem}); - this.editToolStripMenuItem.Name = "editToolStripMenuItem"; - this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20); - this.editToolStripMenuItem.Text = "&Edit"; - // - // selectAllToolStripMenuItem - // - this.selectAllToolStripMenuItem.Name = "selectAllToolStripMenuItem"; - this.selectAllToolStripMenuItem.Size = new System.Drawing.Size(137, 22); - this.selectAllToolStripMenuItem.Text = "Select All"; - this.selectAllToolStripMenuItem.Click += new System.EventHandler(this.selectAllToolStripMenuItem_Click); - // - // selectNoneToolStripMenuItem - // - this.selectNoneToolStripMenuItem.Name = "selectNoneToolStripMenuItem"; - this.selectNoneToolStripMenuItem.Size = new System.Drawing.Size(137, 22); - this.selectNoneToolStripMenuItem.Text = "Select None"; - this.selectNoneToolStripMenuItem.Click += new System.EventHandler(this.selectNoneToolStripMenuItem_Click); - // - // mailboxToolStripMenuItem - // - this.mailboxToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.clearToolStripMenuItem, - this.buildToolStripMenuItem}); - this.mailboxToolStripMenuItem.Name = "mailboxToolStripMenuItem"; - this.mailboxToolStripMenuItem.Size = new System.Drawing.Size(61, 20); - this.mailboxToolStripMenuItem.Text = "Mailbox"; - // - // clearToolStripMenuItem - // - this.clearToolStripMenuItem.Name = "clearToolStripMenuItem"; - this.clearToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.clearToolStripMenuItem.Text = "Clear"; - this.clearToolStripMenuItem.Click += new System.EventHandler(this.clearToolStripMenuItem_Click); - // - // buildToolStripMenuItem - // - this.buildToolStripMenuItem.Name = "buildToolStripMenuItem"; - this.buildToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.buildToolStripMenuItem.Text = "Build"; - this.buildToolStripMenuItem.Click += new System.EventHandler(this.buildToolStripMenuItem_Click); - // - // findToolStripMenuItem - // - this.findToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.checkedOutToolStripMenuItem, - this.differentToolStripMenuItem, - this.contentDifferentToolStripMenuItem, - this.differentAllToolStripMenuItem}); - this.findToolStripMenuItem.Name = "findToolStripMenuItem"; - this.findToolStripMenuItem.Size = new System.Drawing.Size(42, 20); - this.findToolStripMenuItem.Text = "Find"; - // - // checkedOutToolStripMenuItem - // - this.checkedOutToolStripMenuItem.Name = "checkedOutToolStripMenuItem"; - this.checkedOutToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.checkedOutToolStripMenuItem.Text = "Checked-Out"; - this.checkedOutToolStripMenuItem.Click += new System.EventHandler(this.checkedOutToolStripMenuItem_Click); - // - // differentToolStripMenuItem - // - this.differentToolStripMenuItem.Name = "differentToolStripMenuItem"; - this.differentToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.differentToolStripMenuItem.Text = "Different"; - this.differentToolStripMenuItem.Click += new System.EventHandler(this.differentToolStripMenuItem_Click); - // - // contentDifferentToolStripMenuItem - // - this.contentDifferentToolStripMenuItem.Name = "contentDifferentToolStripMenuItem"; - this.contentDifferentToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.contentDifferentToolStripMenuItem.Text = "Content Different"; - this.contentDifferentToolStripMenuItem.Click += new System.EventHandler(this.contentDifferentToolStripMenuItem_Click); - // - // sourceSafeToolStripMenuItem - // - this.sourceSafeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.restoreUnchangedToolStripMenuItem, - this.restoreSelectedToolStripMenuItem, - this.restoreAllToolStripMenuItem, - this.restoreReadOnlyToolStripMenuItem}); - this.sourceSafeToolStripMenuItem.Name = "sourceSafeToolStripMenuItem"; - this.sourceSafeToolStripMenuItem.Size = new System.Drawing.Size(80, 20); - this.sourceSafeToolStripMenuItem.Text = "Source Safe"; - // - // restoreUnchangedToolStripMenuItem - // - this.restoreUnchangedToolStripMenuItem.Name = "restoreUnchangedToolStripMenuItem"; - this.restoreUnchangedToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreUnchangedToolStripMenuItem.Text = "Restore Unchanged"; - this.restoreUnchangedToolStripMenuItem.Click += new System.EventHandler(this.restoreUnchangedToolStripMenuItem_Click); - // - // restoreSelectedToolStripMenuItem - // - this.restoreSelectedToolStripMenuItem.Name = "restoreSelectedToolStripMenuItem"; - this.restoreSelectedToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreSelectedToolStripMenuItem.Text = "Restore Selected (To Process)"; - this.restoreSelectedToolStripMenuItem.Click += new System.EventHandler(this.restoreSelectedToolStripMenuItem_Click); - // - // restoreAllToolStripMenuItem - // - this.restoreAllToolStripMenuItem.Name = "restoreAllToolStripMenuItem"; - this.restoreAllToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreAllToolStripMenuItem.Text = "Restore All"; - this.restoreAllToolStripMenuItem.Click += new System.EventHandler(this.restoreAllToolStripMenuItem_Click); - // - // restoreReadOnlyToolStripMenuItem - // - this.restoreReadOnlyToolStripMenuItem.Name = "restoreReadOnlyToolStripMenuItem"; - this.restoreReadOnlyToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreReadOnlyToolStripMenuItem.Text = "Restore Read Only"; - this.restoreReadOnlyToolStripMenuItem.Click += new System.EventHandler(this.restoreReadOnlyToolStripMenuItem_Click); - // - // listToClipboardToolStripMenuItem - // - this.listToClipboardToolStripMenuItem.Name = "listToClipboardToolStripMenuItem"; - this.listToClipboardToolStripMenuItem.Size = new System.Drawing.Size(103, 20); - this.listToClipboardToolStripMenuItem.Text = "List toClipboard"; - this.listToClipboardToolStripMenuItem.Click += new System.EventHandler(this.listToClipboardToolStripMenuItem_Click); - // - // differentAllToolStripMenuItem - // - this.differentAllToolStripMenuItem.Name = "differentAllToolStripMenuItem"; - this.differentAllToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.differentAllToolStripMenuItem.Text = "DifferentAll"; - this.differentAllToolStripMenuItem.Click += new System.EventHandler(this.differentAllToolStripMenuItem_Click); - // - // frmSync - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(759, 446); - this.Controls.Add(this.dgv); - this.Controls.Add(this.panel1); - this.Controls.Add(this.statusStrip1); - this.Controls.Add(this.menuStrip1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MainMenuStrip = this.menuStrip1; - this.Name = "frmSync"; - this.Text = "Volian Sync"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmSync_FormClosing); - this.Load += new System.EventHandler(this.frmSync_Load); - this.LocationChanged += new System.EventHandler(this.frmSync_LocationChanged); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv)).EndInit(); - this.cms.ResumeLayout(false); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Button btnBrwsDev; - private System.Windows.Forms.TextBox tbDevelopment; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button btnBrwsMail; - private System.Windows.Forms.TextBox tbMailBox; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Button btnBrwsSS; - private System.Windows.Forms.TextBox tbSourceSafe; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.FolderBrowserDialog fbd; - private System.Windows.Forms.DataGridView dgv; - private System.Windows.Forms.Button btnBrwsSSMail; - private System.Windows.Forms.TextBox tbSSMailBox; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.MenuStrip menuStrip1; - private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem mailboxToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem buildToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem findToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem checkedOutToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem differentToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem sourceSafeToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreUnchangedToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreSelectedToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreAllToolStripMenuItem; - private System.Windows.Forms.ContextMenuStrip cms; - private System.Windows.Forms.ToolStripMenuItem compareToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem contentDifferentToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreReadOnlyToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem listToClipboardToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem selectAllToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem selectNoneToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem compareSourceSafeToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem compareMailboxToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem differentAllToolStripMenuItem; - } -} - diff --git a/PROMS/xxxSync/Sync/frmSync.Designer.cs.bak b/PROMS/xxxSync/Sync/frmSync.Designer.cs.bak deleted file mode 100644 index 11723591..00000000 --- a/PROMS/xxxSync/Sync/frmSync.Designer.cs.bak +++ /dev/null @@ -1,430 +0,0 @@ -namespace Sync -{ - partial class frmSync - { - /// - /// 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(frmSync)); - this.panel1 = new System.Windows.Forms.Panel(); - this.btnBrwsSSMail = new System.Windows.Forms.Button(); - this.tbSSMailBox = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.btnBrwsMail = new System.Windows.Forms.Button(); - this.tbMailBox = new System.Windows.Forms.TextBox(); - this.label3 = new System.Windows.Forms.Label(); - this.btnBrwsSS = new System.Windows.Forms.Button(); - this.tbSourceSafe = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.btnBrwsDev = new System.Windows.Forms.Button(); - this.tbDevelopment = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.fbd = new System.Windows.Forms.FolderBrowserDialog(); - this.dgv = new System.Windows.Forms.DataGridView(); - this.cms = new System.Windows.Forms.ContextMenuStrip(this.components); - this.compareToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.mailboxToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.clearToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.buildToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.findToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.checkedOutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.differentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.contentDifferentToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.sourceSafeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreUnchangedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreSelectedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.restoreAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.panel1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv)).BeginInit(); - this.cms.SuspendLayout(); - this.menuStrip1.SuspendLayout(); - this.SuspendLayout(); - // - // panel1 - // - this.panel1.Controls.Add(this.btnBrwsSSMail); - this.panel1.Controls.Add(this.tbSSMailBox); - this.panel1.Controls.Add(this.label4); - this.panel1.Controls.Add(this.btnBrwsMail); - this.panel1.Controls.Add(this.tbMailBox); - this.panel1.Controls.Add(this.label3); - this.panel1.Controls.Add(this.btnBrwsSS); - this.panel1.Controls.Add(this.tbSourceSafe); - this.panel1.Controls.Add(this.label2); - this.panel1.Controls.Add(this.btnBrwsDev); - this.panel1.Controls.Add(this.tbDevelopment); - this.panel1.Controls.Add(this.label1); - 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(759, 117); - this.panel1.TabIndex = 1; - // - // btnBrwsSSMail - // - this.btnBrwsSSMail.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsSSMail.Location = new System.Drawing.Point(672, 86); - this.btnBrwsSSMail.Name = "btnBrwsSSMail"; - this.btnBrwsSSMail.Size = new System.Drawing.Size(75, 23); - this.btnBrwsSSMail.TabIndex = 14; - this.btnBrwsSSMail.Text = "Browse..."; - this.btnBrwsSSMail.UseVisualStyleBackColor = true; - this.btnBrwsSSMail.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbSSMailBox - // - this.tbSSMailBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbSSMailBox.Location = new System.Drawing.Point(120, 88); - this.tbSSMailBox.Name = "tbSSMailBox"; - this.tbSSMailBox.Size = new System.Drawing.Size(546, 20); - this.tbSSMailBox.TabIndex = 13; - this.tbSSMailBox.Text = "E:\\Mailbox\\SourceSafe\\Proms"; - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(12, 91); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(92, 13); - this.label4.TabIndex = 12; - this.label4.Text = "SS Mailbox Folder"; - // - // btnBrwsMail - // - this.btnBrwsMail.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsMail.Location = new System.Drawing.Point(672, 60); - this.btnBrwsMail.Name = "btnBrwsMail"; - this.btnBrwsMail.Size = new System.Drawing.Size(75, 23); - this.btnBrwsMail.TabIndex = 8; - this.btnBrwsMail.Text = "Browse..."; - this.btnBrwsMail.UseVisualStyleBackColor = true; - this.btnBrwsMail.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbMailBox - // - this.tbMailBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbMailBox.Location = new System.Drawing.Point(120, 62); - this.tbMailBox.Name = "tbMailBox"; - this.tbMailBox.Size = new System.Drawing.Size(546, 20); - this.tbMailBox.TabIndex = 7; - this.tbMailBox.Text = "E:\\Mailbox\\Proms"; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(12, 65); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(75, 13); - this.label3.TabIndex = 6; - this.label3.Text = "Mailbox Folder"; - // - // btnBrwsSS - // - this.btnBrwsSS.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsSS.Location = new System.Drawing.Point(672, 34); - this.btnBrwsSS.Name = "btnBrwsSS"; - this.btnBrwsSS.Size = new System.Drawing.Size(75, 23); - this.btnBrwsSS.TabIndex = 5; - this.btnBrwsSS.Text = "Browse..."; - this.btnBrwsSS.UseVisualStyleBackColor = true; - this.btnBrwsSS.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbSourceSafe - // - this.tbSourceSafe.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbSourceSafe.Location = new System.Drawing.Point(120, 36); - this.tbSourceSafe.Name = "tbSourceSafe"; - this.tbSourceSafe.Size = new System.Drawing.Size(546, 20); - this.tbSourceSafe.TabIndex = 4; - this.tbSourceSafe.Text = "E:\\SourceSafe\\Proms"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(12, 39); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(98, 13); - this.label2.TabIndex = 3; - this.label2.Text = "Source Safe Folder"; - // - // btnBrwsDev - // - this.btnBrwsDev.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnBrwsDev.Location = new System.Drawing.Point(672, 8); - this.btnBrwsDev.Name = "btnBrwsDev"; - this.btnBrwsDev.Size = new System.Drawing.Size(75, 23); - this.btnBrwsDev.TabIndex = 2; - this.btnBrwsDev.Text = "Browse..."; - this.btnBrwsDev.UseVisualStyleBackColor = true; - this.btnBrwsDev.Click += new System.EventHandler(this.btnBrowse_Click); - // - // tbDevelopment - // - this.tbDevelopment.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.tbDevelopment.Location = new System.Drawing.Point(120, 10); - this.tbDevelopment.Name = "tbDevelopment"; - this.tbDevelopment.Size = new System.Drawing.Size(546, 20); - this.tbDevelopment.TabIndex = 1; - this.tbDevelopment.Text = "E:\\Proms"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 13); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(102, 13); - this.label1.TabIndex = 0; - this.label1.Text = "Development Folder"; - // - // dgv - // - this.dgv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dgv.ContextMenuStrip = this.cms; - this.dgv.Dock = System.Windows.Forms.DockStyle.Fill; - this.dgv.Location = new System.Drawing.Point(0, 141); - this.dgv.Name = "dgv"; - this.dgv.Size = new System.Drawing.Size(759, 283); - this.dgv.TabIndex = 2; - this.dgv.ColumnWidthChanged += new System.Windows.Forms.DataGridViewColumnEventHandler(this.dgv_ColumnWidthChanged); - // - // cms - // - this.cms.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.compareToolStripMenuItem, - this.restoreToolStripMenuItem}); - this.cms.Name = "cms"; - this.cms.Size = new System.Drawing.Size(124, 48); - // - // compareToolStripMenuItem - // - this.compareToolStripMenuItem.Name = "compareToolStripMenuItem"; - this.compareToolStripMenuItem.Size = new System.Drawing.Size(123, 22); - this.compareToolStripMenuItem.Text = "Compare"; - this.compareToolStripMenuItem.Click += new System.EventHandler(this.compareToolStripMenuItem_Click); - // - // restoreToolStripMenuItem - // - this.restoreToolStripMenuItem.Name = "restoreToolStripMenuItem"; - this.restoreToolStripMenuItem.Size = new System.Drawing.Size(123, 22); - this.restoreToolStripMenuItem.Text = "Restore"; - this.restoreToolStripMenuItem.Click += new System.EventHandler(this.restoreToolStripMenuItem_Click); - // - // statusStrip1 - // - this.statusStrip1.Location = new System.Drawing.Point(0, 424); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(759, 22); - this.statusStrip1.TabIndex = 3; - this.statusStrip1.Text = "statusStrip1"; - // - // menuStrip1 - // - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileToolStripMenuItem, - this.mailboxToolStripMenuItem, - this.findToolStripMenuItem, - this.sourceSafeToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(759, 24); - this.menuStrip1.TabIndex = 4; - this.menuStrip1.Text = "menuStrip1"; - // - // fileToolStripMenuItem - // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.exitToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "&File"; - // - // exitToolStripMenuItem - // - this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.Size = new System.Drawing.Size(92, 22); - this.exitToolStripMenuItem.Text = "E&xit"; - this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); - // - // mailboxToolStripMenuItem - // - this.mailboxToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.clearToolStripMenuItem, - this.buildToolStripMenuItem}); - this.mailboxToolStripMenuItem.Name = "mailboxToolStripMenuItem"; - this.mailboxToolStripMenuItem.Size = new System.Drawing.Size(61, 20); - this.mailboxToolStripMenuItem.Text = "Mailbox"; - // - // clearToolStripMenuItem - // - this.clearToolStripMenuItem.Name = "clearToolStripMenuItem"; - this.clearToolStripMenuItem.Size = new System.Drawing.Size(101, 22); - this.clearToolStripMenuItem.Text = "Clear"; - this.clearToolStripMenuItem.Click += new System.EventHandler(this.clearToolStripMenuItem_Click); - // - // buildToolStripMenuItem - // - this.buildToolStripMenuItem.Name = "buildToolStripMenuItem"; - this.buildToolStripMenuItem.Size = new System.Drawing.Size(101, 22); - this.buildToolStripMenuItem.Text = "Build"; - this.buildToolStripMenuItem.Click += new System.EventHandler(this.buildToolStripMenuItem_Click); - // - // findToolStripMenuItem - // - this.findToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.checkedOutToolStripMenuItem, - this.differentToolStripMenuItem, - this.contentDifferentToolStripMenuItem}); - this.findToolStripMenuItem.Name = "findToolStripMenuItem"; - this.findToolStripMenuItem.Size = new System.Drawing.Size(42, 20); - this.findToolStripMenuItem.Text = "Find"; - // - // checkedOutToolStripMenuItem - // - this.checkedOutToolStripMenuItem.Name = "checkedOutToolStripMenuItem"; - this.checkedOutToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.checkedOutToolStripMenuItem.Text = "Checked-Out"; - this.checkedOutToolStripMenuItem.Click += new System.EventHandler(this.checkedOutToolStripMenuItem_Click); - // - // differentToolStripMenuItem - // - this.differentToolStripMenuItem.Name = "differentToolStripMenuItem"; - this.differentToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.differentToolStripMenuItem.Text = "Different"; - this.differentToolStripMenuItem.Click += new System.EventHandler(this.differentToolStripMenuItem_Click); - // - // contentDifferentToolStripMenuItem - // - this.contentDifferentToolStripMenuItem.Name = "contentDifferentToolStripMenuItem"; - this.contentDifferentToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.contentDifferentToolStripMenuItem.Text = "Content Different"; - this.contentDifferentToolStripMenuItem.Click += new System.EventHandler(this.contentDifferentToolStripMenuItem_Click); - // - // sourceSafeToolStripMenuItem - // - this.sourceSafeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.restoreUnchangedToolStripMenuItem, - this.restoreSelectedToolStripMenuItem, - this.restoreAllToolStripMenuItem}); - this.sourceSafeToolStripMenuItem.Name = "sourceSafeToolStripMenuItem"; - this.sourceSafeToolStripMenuItem.Size = new System.Drawing.Size(80, 20); - this.sourceSafeToolStripMenuItem.Text = "Source Safe"; - // - // restoreUnchangedToolStripMenuItem - // - this.restoreUnchangedToolStripMenuItem.Name = "restoreUnchangedToolStripMenuItem"; - this.restoreUnchangedToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreUnchangedToolStripMenuItem.Text = "Restore Unchanged"; - this.restoreUnchangedToolStripMenuItem.Click += new System.EventHandler(this.restoreUnchangedToolStripMenuItem_Click); - // - // restoreSelectedToolStripMenuItem - // - this.restoreSelectedToolStripMenuItem.Name = "restoreSelectedToolStripMenuItem"; - this.restoreSelectedToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreSelectedToolStripMenuItem.Text = "Restore Selected (To Process)"; - this.restoreSelectedToolStripMenuItem.Click += new System.EventHandler(this.restoreSelectedToolStripMenuItem_Click); - // - // restoreAllToolStripMenuItem - // - this.restoreAllToolStripMenuItem.Name = "restoreAllToolStripMenuItem"; - this.restoreAllToolStripMenuItem.Size = new System.Drawing.Size(228, 22); - this.restoreAllToolStripMenuItem.Text = "Restore All"; - this.restoreAllToolStripMenuItem.Click += new System.EventHandler(this.restoreAllToolStripMenuItem_Click); - // - // frmSync - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(759, 446); - this.Controls.Add(this.dgv); - this.Controls.Add(this.panel1); - this.Controls.Add(this.statusStrip1); - this.Controls.Add(this.menuStrip1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MainMenuStrip = this.menuStrip1; - this.Name = "frmSync"; - this.Text = "Volian Sync"; - this.Load += new System.EventHandler(this.frmSync_Load); - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmSync_FormClosing); - this.LocationChanged += new System.EventHandler(this.frmSync_LocationChanged); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv)).EndInit(); - this.cms.ResumeLayout(false); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Panel panel1; - private System.Windows.Forms.Button btnBrwsDev; - private System.Windows.Forms.TextBox tbDevelopment; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Button btnBrwsMail; - private System.Windows.Forms.TextBox tbMailBox; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.Button btnBrwsSS; - private System.Windows.Forms.TextBox tbSourceSafe; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.FolderBrowserDialog fbd; - private System.Windows.Forms.DataGridView dgv; - private System.Windows.Forms.Button btnBrwsSSMail; - private System.Windows.Forms.TextBox tbSSMailBox; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.MenuStrip menuStrip1; - private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem mailboxToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem clearToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem buildToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem findToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem checkedOutToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem differentToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem sourceSafeToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreUnchangedToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreSelectedToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreAllToolStripMenuItem; - private System.Windows.Forms.ContextMenuStrip cms; - private System.Windows.Forms.ToolStripMenuItem compareToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem restoreToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem contentDifferentToolStripMenuItem; - } -} - diff --git a/PROMS/xxxSync/Sync/frmSync.cs b/PROMS/xxxSync/Sync/frmSync.cs deleted file mode 100644 index 02561d28..00000000 --- a/PROMS/xxxSync/Sync/frmSync.cs +++ /dev/null @@ -1,687 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; -using System.Xml; -using SevenZip; - -namespace Sync -{ - public partial class frmSync : Form - { - private List _CheckedOut; - private bool IsLoading = false; - private float _DPI=100; - public frmSync() - { - InitializeComponent(); - using (Graphics gr = CreateGraphics()) - _DPI = gr.DpiX; - } - private void LoadSettings() - { - if (Properties.Settings.Default["Location"] != null) - Location = Properties.Settings.Default.Location; - if (Properties.Settings.Default["Size"] != null) - Size = Properties.Settings.Default.Size; - if (Properties.Settings.Default.DevelopmentFolder != "") - tbDevelopment.Text = Properties.Settings.Default.DevelopmentFolder; - if (Properties.Settings.Default.SourceSafeFolder != "") - tbSourceSafe.Text = Properties.Settings.Default.SourceSafeFolder; - if(Properties.Settings.Default.MailBoxDevelopmentFolder != "") - tbMailBox.Text = Properties.Settings.Default.MailBoxDevelopmentFolder; - if (Properties.Settings.Default.MailBoxSourceSafeFolder != "") - tbSSMailBox.Text = Properties.Settings.Default.MailBoxSourceSafeFolder; - } - private void frmSync_Load(object sender, EventArgs e) - { - LoadSettings(); - Setup(); - } - private void Setup() - { - // Setup Browse Buttons - btnBrwsDev.Tag = this.tbDevelopment; - btnBrwsSS.Tag = this.tbSourceSafe; - btnBrwsMail.Tag = this.tbMailBox; - btnBrwsSSMail.Tag = this.tbSSMailBox; - - } - private void btnBrowse_Click(object sender, EventArgs e) - { - TextBox tb = (TextBox)((Button)sender).Tag; - fbd.SelectedPath = tb.Text; - if (fbd.ShowDialog() == DialogResult.OK) - tb.Text = fbd.SelectedPath; - } - private void ClearResults() - { - _CheckedOut = new List(); - dgv.DataSource = null; - Application.DoEvents(); - } - private void FindCheckedOut(DirectoryInfo di) - { - FindCheckedOut(di.GetFiles()); - FindCheckedOut(di.GetDirectories()); - } - private void FindCheckedOut(DirectoryInfo[] directoryInfoList) - { - foreach (DirectoryInfo di in directoryInfoList) - FindCheckedOut(di); - } - private void FindCheckedOut(FileInfo[] fileInfoList) - { - foreach (FileInfo fi in fileInfoList) - FindCheckedOut(fi); - } - private void FindCheckedOut(FileInfo fi) - { - if (fi.Name.ToLower().EndsWith("scc")) return; - if (fi.Name.ToLower().EndsWith("sln")) return; - if (fi.Name.ToLower().EndsWith("csproj")) - { - // Find files that have been added to the new Project - List compileList = GetCompileList(fi.FullName); - FileInfo fi1csproj = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if (fi1csproj.Exists) - { - List compileList1 = GetCompileList(fi1csproj.FullName); - CompareLists(compileList, compileList1, fi, fi1csproj); - } - return; - } - if (fi.Name.ToLower().EndsWith("licx")) return; - FileInfo fi1 = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if ((fi1.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly) - AddToResults(fi, fi1); - } - - private void CompareLists(List compileList, List compileList1, FileInfo fi, FileInfo fi1) - { - // If anything is in compileList1 and not in CompileList add it to the results - foreach (string filename in compileList1) - if (!compileList.Contains(filename)) - AddToResults(fi, fi1, filename); - } - private void AddToResults(FileInfo fi, FileInfo fi1, string filename) - { - FileInfo newfi = new FileInfo(fi.DirectoryName + "/" + filename); - FileInfo newfi1 = new FileInfo(fi1.DirectoryName + "/" + filename); - if(!newfi.Exists)AddToResults(newfi, newfi1); // Only add if the file does not exist - } - private List GetCompileList(string fileName) - { - List retval = new List(); - XmlDocument doc = new XmlDocument(); - doc.Load(fileName); - XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); - foreach (XmlAttribute attrib in doc.DocumentElement.Attributes) - if (attrib.Name == "xmlns") - nsmgr.AddNamespace("ns", attrib.Value); - XmlNodeList xl = doc.DocumentElement.SelectNodes(@"//ns:Compile/@Include",nsmgr); - foreach (XmlAttribute xa in xl) - retval.Add(xa.Value); - xl = doc.DocumentElement.SelectNodes(@"//ns:Content/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - { - if (xa.Value.ToUpper().EndsWith("DLL")) - retval.Add(xa.Value); - if (xa.Value.ToUpper().EndsWith("XML")) - retval.Add(xa.Value); - if (xa.Value.ToUpper().EndsWith("SVG")) - retval.Add(xa.Value); - if (xa.Value.ToUpper().EndsWith("BAS")) - retval.Add(xa.Value); - } - xl = doc.DocumentElement.SelectNodes(@"//ns:EmbeddedResource/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - if (!xa.Value.ToUpper().EndsWith("LICX")) - retval.Add(xa.Value); - xl = doc.DocumentElement.SelectNodes(@"//ns:None/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - { - if(xa.Value.ToUpper().EndsWith("SQL")) - retval.Add(xa.Value); - if (xa.Value.ToUpper().EndsWith("FRM")) - retval.Add(xa.Value); - if (xa.Value.ToUpper().EndsWith("FRX")) - retval.Add(xa.Value); - } - return retval; - } - private void AddToResults(FileInfo fiSS,FileInfo fiDev) - { - FileCompare fc = new FileCompare(fiDev, fiSS); - FileInfo fiMB = new FileInfo(fc.FileName.Replace(tbDevelopment.Text, tbSSMailBox.Text)); - if (fiMB.Exists && fiSS.LastWriteTimeUtc != fiMB.LastWriteTimeUtc) - fc.Merge = true; - //if(!_OnlyContentDifferent || (fc.Different && (fc.DevModified != null))) - if (!_OnlyContentDifferent || (fc.Different)) - _CheckedOut.Add(fc); - //if (tbResults.Text == "") tbResults.Text = "Found:"; - //tbResults.Text += "\r\n" + fiDev.FullName + " - " + ((fiDev.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly ? "" : "ReadOnly"); - } - private void ClearMailBox() - { - DeleteFolder(new DirectoryInfo(tbMailBox.Text)); - DeleteFolder(new DirectoryInfo(tbSSMailBox.Text)); - } - private void DeleteFolder(DirectoryInfo directoryInfo) - { - if (directoryInfo.Exists) - { - AdjustAttributes(directoryInfo); - directoryInfo.Delete(true); - } - } - private void AdjustAttributes(DirectoryInfo directoryInfo) - { - foreach (DirectoryInfo di in directoryInfo.GetDirectories()) - AdjustAttributes(di); - foreach (FileInfo fi in directoryInfo.GetFiles()) - AdjustAttribute(fi); - } - private void AdjustAttribute(FileInfo fi) - { - fi.Attributes &= (fi.Attributes ^ FileAttributes.ReadOnly);// Turn-Off ReadOnly Attribute - fi.Attributes &= (fi.Attributes ^ FileAttributes.Hidden);// Turn-Off Hidden Attribute - } - private void frmSync_FormClosing(object sender, FormClosingEventArgs e) - { - Properties.Settings.Default.Location = Location; - Properties.Settings.Default.Size = Size; - Properties.Settings.Default.DevelopmentFolder = tbDevelopment.Text; - Properties.Settings.Default.SourceSafeFolder = tbSourceSafe.Text; - Properties.Settings.Default.MailBoxDevelopmentFolder = tbMailBox.Text; - Properties.Settings.Default.MailBoxSourceSafeFolder = tbSSMailBox.Text; - Properties.Settings.Default.Save(); - } - private void exitToolStripMenuItem_Click(object sender, EventArgs e) - { - this.Close(); - } - private void clearToolStripMenuItem_Click(object sender, EventArgs e) - { - ClearMailBox(); - } - private void buildToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearMailBox(); - if (_CheckedOut == null) - checkedOutToolStripMenuItem_Click(sender, e); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) - { - fc.MoveDevToMailBox(tbDevelopment.Text, tbMailBox.Text); - fc.MoveSSToMailBox(tbSourceSafe.Text, tbSSMailBox.Text); - } - } - BuildZipOfMailBox(tbMailBox.Text); - } - private string _RTFFile = null; - public string RTFFile - { - get { return _RTFFile; } - set { _RTFFile = value; } - } - private void BuildZipOfMailBox(string mailbox) - { - SevenZipCompressor.SetLibraryPath(Application.StartupPath + @"\7z.dll"); - SevenZipCompressor cmpr = new SevenZipCompressor(); - cmpr.PreserveDirectoryRoot = true; - string fileDate = DateTime.Now.ToString("yyyyMMdd HHmm"); - RTFFile = string.Format("{0} To SS {1}.Rtf", mailbox, fileDate); - string zipName = string.Format("{0} To SS {1}.7z", mailbox, fileDate); - cmpr.CompressDirectory(mailbox, zipName, "*.*", true); - MessageBox.Show(string.Format("{0} created!", zipName), "Mailbox Zip Created", MessageBoxButtons.OK, MessageBoxIcon.Information); - - //if (System.IO.File.Exists(@"c:\program files\7-zip\7z.exe")) - //{ - // string args = string.Format(@"a -t7z ""{0} To SS {1}.7z"" ""{0}\*.*"" -r", mailbox, DateTime.Now.ToString("yyyyMMdd HHmm")); - // System.Diagnostics.Process p = System.Diagnostics.Process.Start(@"c:\program files\7-zip\7z", args); - // p.WaitForExit(); - //} - //"c:\program files\7-zip\7z" a -t7z "C:\Development\MailBox\Proms To SS 20120424 1850.7z" "C:\Development\MailBox\Proms\*.*" -r - } - private void checkedOutToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindCheckedOut(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void syncAllToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - fc.MoveToDevelopment(); - } - } - private void restoreUnchangedToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if(!fc.Different || fc.DevModified == null) - fc.MoveToDevelopment(); - } - } - private void restoreSelectedToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) fc.MoveToDevelopment(); - } - } - private void restoreAllToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - fc.MoveToDevelopment(); - } - } - private List SelectedList - { - get - { - dgv.EndEdit(); - List fcList = new List(); - foreach (DataGridViewCell dgc in dgv.SelectedCells) - { - FileCompare fc = dgv.Rows[dgc.RowIndex].DataBoundItem as FileCompare; - if (fc != null && fcList.Contains(fc) == false) - fcList.Add(fc); - } - return fcList; - } - } - private void compareToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - CompareOneFile(fc.FileName, fc.SSFileName); - } - } - private static void CompareOneFile(string fileDev, string fileSS) - { - Console.WriteLine("Compare {0} and {1}", fileDev, fileSS); - string progname = string.Empty; - if (System.IO.File.Exists(@"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe")) - progname = @"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe"; - if (System.IO.File.Exists(@"C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\UC.exe")) - progname = @"C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\UC.exe"; - // string cmd = string.Format("\"{0}\" -t \"{1}\" \"{2}\"", progname, fc.FileName, fc.SSFileName); - System.Diagnostics.ProcessStartInfo psi = - new System.Diagnostics.ProcessStartInfo(progname, string.Format(@" -t ""{0}"" ""{1}""", fileDev, fileSS)); - System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi); - } - private void restoreToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - fc.MoveToDevelopment(); - } - } - private bool _ExcludeSolutions = true; - private void differentAllToolStripMenuItem_Click(object sender, EventArgs e) - { - _ExcludeSolutions = false; - dgv.EndEdit(); - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - _ExcludeSolutions = true; - } - private void differentToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void SetColumnWidth() - { - IsLoading = true; - if (Properties.Settings.Default["Widths"] == null) - { - dgv.Columns[0].Width = 60; - dgv.Columns[1].Visible = false; - dgv.Columns[2].Width = 125; - dgv.Columns[3].Width = 125; - dgv.Columns[4].Width = 50; - dgv.Columns[5].Width = 500; - } - else - { - for (int i = 0; i < Properties.Settings.Default.Widths.Count; i++) - { - string sWidth = Properties.Settings.Default.Widths[i]; - if (sWidth == "Invisible") - dgv.Columns[i].Visible = false; - else - dgv.Columns[i].Width = int.Parse(sWidth); - } - } - dgv.Columns[1].Visible = false; - IsLoading = false; - } - private void FindDifferent(DirectoryInfo di) - { - FindDifferent(di.GetFiles()); - FindDifferent(di.GetDirectories()); - } - private void FindDifferent(DirectoryInfo[] directoryInfoList) - { - foreach (DirectoryInfo di in directoryInfoList) - FindDifferent(di); - } - private void FindDifferent(FileInfo[] fileInfoList) - { - foreach (FileInfo fi in fileInfoList) - FindDifferent(fi); - } - private void FindDifferent(FileInfo fi) - { - if (fi.Name.ToLower().EndsWith("scc")) return; - if (_ExcludeSolutions && fi.Name.ToLower().EndsWith("sln")) return; - if (_ExcludeSolutions && fi.Name.ToLower().EndsWith("csproj")) - { - // Find files that have been added to the new Project - List compileList = GetCompileList(fi.FullName); - FileInfo fi1csproj = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if (fi1csproj.Exists) - { - List compileList1 = GetCompileList(fi1csproj.FullName); - CompareLists(compileList, compileList1, fi, fi1csproj); - } - if(_ExcludeSolutions ) return; - } - if (fi.Name.ToLower().EndsWith("licx")) return; - FileInfo fiD = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - FileInfo fiS = fi; - // Only check Read-Only flag, other attributes are unimportant - if (fiS.LastWriteTimeUtc != fiD.LastWriteTimeUtc || (fiS.Attributes & FileAttributes.ReadOnly ) != (fiD.Attributes & FileAttributes.ReadOnly )) - AddToResults(fi, fiD); - } - private void dgv_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) - { - if (!IsLoading) - { - System.Collections.Specialized.StringCollection widths = new System.Collections.Specialized.StringCollection(); - foreach (DataGridViewColumn col in dgv.Columns) - widths.Add(col.Visible ? col.Width.ToString() : "Invisible"); - Properties.Settings.Default.Widths = widths; - Properties.Settings.Default.Save(); - } - } - private bool _OnlyContentDifferent = false; - private void contentDifferentToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearResults(); - _OnlyContentDifferent = true; - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - _OnlyContentDifferent = false; - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void frmSync_LocationChanged(object sender, EventArgs e) - { - Rectangle rec = Screen.GetWorkingArea(this); - int newLeft = Left; - int newTop = Top; - if (Math.Abs(Left - rec.X) < 10) newLeft = rec.X; - if (Math.Abs(Top - rec.Y) < 10) newTop = rec.Y; - if (Math.Abs(rec.X + rec.Width - Right) < 10) newLeft = rec.X + rec.Width - Width; - if (Math.Abs(rec.Y + rec.Height - Bottom) < 10) newTop = rec.Y + rec.Height - Height; - if (newTop != Top || newLeft != Left) - Location = new Point(newLeft, newTop); - } - private void restoreReadOnlyToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ReadOnly) fc.MoveToDevelopment(); - } - } - private void listToClipboardToolStripMenuItem_Click(object sender, EventArgs e) - { - RichTextBox rtb = new RichTextBox(); - Font fntNormal = new Font("Arial", 10, FontStyle.Regular); - rtb.Font = fntNormal; - Font fntBold = new Font("Arial", 12, FontStyle.Bold); - Font fntWing = new Font("Wingdings 2", 11, FontStyle.Regular); - Font fntItalic = new Font("Arial", 11, FontStyle.Italic); - Font fntBoldItalic = new Font("Arial", 14, FontStyle.Bold | FontStyle.Italic); - StringBuilder sb = new StringBuilder(); - dgv.EndEdit(); - sb.Append("Applicability:\r\n\r\n"); - AddText(rtb, fntBold, "Applicability:"); - AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n"); - if (HasFmtXML(_CheckedOut)) - { - sb.Append("* This change includes format changes which must be loaded into the databases.\r\n\r\n"); - AddText(rtb, fntBoldItalic, "*\tThis change includes format changes\r\n\twhich must be loaded into the databases.",Color.Orange); - AddText(rtb, fntNormal, "\r\n\r\n",Color.Black); - } - if (HasFormats(_CheckedOut)) - { - sb.Append("* This change includes format changes which must be loaded into the databases.\r\n\r\n"); - AddText(rtb, fntBoldItalic, "*\tThis change includes format changes\r\n\twhich must be loaded into the databases.", Color.Orange); - AddText(rtb, fntNormal, "\r\n\r\n", Color.Black); - } - if (HasPromsFixes(_CheckedOut)) - { - sb.Append("* This change includes changes to PROMSFixes.SQL which must be loaded into the databases.\r\n\r\n"); - AddText(rtb, fntBoldItalic, "*\tThis change includes changes to PROMSFixes.SQL\r\n\twhich must be loaded into the databases.\r\n\r\n", Color.Red); - AddText(rtb, fntNormal, "\r\n\r\n", Color.Black); - } - sb.Append("\r\nInternal Data Fixes:\r\n\r\n"); - AddText(rtb, fntBold, "Internal Data Fixes:"); - AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n",Color.Magenta); - sb.Append("Code Changes:\r\n\r\n"); - AddText(rtb, fntBold, "Code Changes:"); - AddText(rtb, fntNormal, "\r\n\r\n"); - int lenFolder = tbDevelopment.Text.Length; - string lastFolder = ""; - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) - { - FileInfo fi = new FileInfo(fc.FileName); - FileInfo fis = new FileInfo(fc.SSFileName); - string folder = fi.Directory.FullName.Substring(lenFolder + 1); - if (folder != lastFolder) - { - sb.Append(folder + ":\r\n"); - AddText(rtb, fntItalic, folder + ":\r\n"); - lastFolder = folder; - } - sb.Append((fis.Exists ? "" : " =>NEW") + "\t" + fi.Name + "\r\n"); - AddText(rtb, fntNormal, (fis.Exists ? "" : " =>NEW") + "\t" + fi.Name + "\r\n"); - AddIndent(rtb); - } - } - sb.Append("\r\nInternal Release:\r\n\r\n"); - sb.Append("\r\nGeneric External Release:\r\n\r\n"); - sb.Append("\r\nPlant Specific Information for Release Letter:\r\n\r\n"); - sb.Append("\r\nTesting Performed:\r\n\r\n"); - sb.Append("\r\nTesting Requirements:\r\n\r\n"); - sb.Append("\r\nChanges/Additions to User Documentation:\r\n\r\n"); - - AddText(rtb, fntNormal, "\r\n"); - AddText(rtb, fntBold, "Internal Release:"); - AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n"); - AddText(rtb, fntBold, "Generic External Release:"); - AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n"); - AddText(rtb, fntBold, "Plant Specific Information for Release Letter:"); - AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n"); - AddText(rtb, fntBold, "Testing Performed:"); - AddText(rtb, fntNormal, "\r\n\r\n\r\n\r\n"); - AddText(rtb, fntBold, "Testing Requirements:"); - AddText(rtb, fntNormal, "\r\n\r\n"); - AddText(rtb, fntWing, "\x51\x52\xA3"); - AddText(rtb, fntNormal, " Sample Checkboxes"); - AddText(rtb, fntNormal, "\r\n\r\n"); - AddText(rtb, fntBold, "Changes/Additions to User Documentation:"); - AddText(rtb, fntNormal, "\r\n\r\n"); - try - { - Clipboard.Clear(); - DataObject dao = new DataObject(); - dao.SetData(DataFormats.Text,sb.ToString()); - dao.SetData(DataFormats.Rtf, rtb.Rtf); - Clipboard.SetDataObject(dao, true, 10, 500); - if (RTFFile != null) - { - rtb.SaveFile(RTFFile); - System.Diagnostics.Process.Start(RTFFile); - } - else - MessageBox.Show(sb.ToString(), "Copied to Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - catch (Exception ex) - { - StringBuilder sb2 = new StringBuilder(); - string prefix = ""; - while (ex != null) - { - sb2.AppendLine(string.Format("{0}{1} - {2}",prefix, ex.GetType().Name, ex.Message)); - prefix += " "; - } - MessageBox.Show(sb2.ToString(), "Error saving Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private bool HasPromsFixes(List _CheckedOut) - { - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess && fc.FileName.ToLower().Contains("promsfixes.sql")) - return true; - } - return false; - } - - private bool HasFmtXML(List _CheckedOut) - { - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess && fc.FileName.ToLower().Contains("\\fmtxml\\")) - return true; - } - return false; - } - private bool HasFormats(List _CheckedOut) - { - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess && fc.FileName.ToLower().Contains("\\formats\\")) - return true; - } - return false; - } - private void AddIndent(RichTextBox rtb) - { - rtb.Select(rtb.TextLength, 0); - rtb.SelectionIndent = (int) _DPI; - rtb.SelectedText = "\r\n"; - rtb.Select(rtb.TextLength, 0); - rtb.SelectionIndent = 0; - } - private static void AddText(RichTextBox rtb, Font font, string txt) - { - rtb.Select(rtb.TextLength, 0); - rtb.SelectionFont = font; - rtb.SelectedText = txt; - } - private static void AddText(RichTextBox rtb, Font font, string txt, Color myColor) - { - rtb.Select(rtb.TextLength, 0); - rtb.SelectionFont = font; - rtb.SelectionColor = myColor; - rtb.SelectedText = txt; - rtb.Select(rtb.TextLength, 0); - rtb.SelectionColor = Color.Black; - } - private void dgv_MouseDown(object sender, MouseEventArgs e) - { - dgv.ClearSelection(); - DataGridView.HitTestInfo info = dgv.HitTest(e.X, e.Y); - if (info.RowIndex < 0) return; - dgv.CurrentCell = dgv[0, info.RowIndex]; - dgv.Rows[info.RowIndex].Selected = true; - } - - private void selectAllToolStripMenuItem_Click(object sender, EventArgs e) - { - if (_CheckedOut == null || _CheckedOut.Count == 0) - { - MessageBox.Show("Don't you really think you should get a list first!", "Hey Moron!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop); - return; - } - foreach (FileCompare fc in _CheckedOut) fc.ToProcess = true; - dgv.Refresh(); - } - - private void selectNoneToolStripMenuItem_Click(object sender, EventArgs e) - { - if (_CheckedOut == null || _CheckedOut.Count == 0) - { - MessageBox.Show("Don't you really think you should get a list first!", "Hey Moron!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop); - return; - } - foreach (FileCompare fc in _CheckedOut) fc.ToProcess = false; - dgv.Refresh(); - } - - private void compareSourceSafeToolStripMenuItem_Click(object sender, EventArgs e) - { - // Compare SS version with SS version from Mailbox - dgv.EndEdit(); - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - CompareOneFile(fc.SSFileName, fc.SSFileName.Replace(tbSourceSafe.Text, tbSSMailBox.Text)); - } - } - - private void compareMailboxToolStripMenuItem_Click(object sender, EventArgs e) - { - // Compare MailBox version with Mailbox Source Safe version - dgv.EndEdit(); - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - CompareOneFile(fc.FileName, fc.FileName.Replace(tbDevelopment.Text, tbSSMailBox.Text)); - } - } - } -} \ No newline at end of file diff --git a/PROMS/xxxSync/Sync/frmSync.cs.bak b/PROMS/xxxSync/Sync/frmSync.cs.bak deleted file mode 100644 index 36cfb160..00000000 --- a/PROMS/xxxSync/Sync/frmSync.cs.bak +++ /dev/null @@ -1,321 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; - - -namespace Sync -{ - public partial class frmSync : Form - { - private List _CheckedOut; - private bool IsLoading = false; - public frmSync() - { - InitializeComponent(); - } - private void LoadSettings() - { - if (Properties.Settings.Default["Location"] != null) - Location = Properties.Settings.Default.Location; - if (Properties.Settings.Default["Size"] != null) - Size = Properties.Settings.Default.Size; - if (Properties.Settings.Default.DevelopmentFolder != "") - tbDevelopment.Text = Properties.Settings.Default.DevelopmentFolder; - if (Properties.Settings.Default.SourceSafeFolder != "") - tbSourceSafe.Text = Properties.Settings.Default.SourceSafeFolder; - if(Properties.Settings.Default.MailBoxDevelopmentFolder != "") - tbMailBox.Text = Properties.Settings.Default.MailBoxDevelopmentFolder; - if (Properties.Settings.Default.MailBoxSourceSafeFolder != "") - tbSSMailBox.Text = Properties.Settings.Default.MailBoxSourceSafeFolder; - } - private void frmSync_Load(object sender, EventArgs e) - { - LoadSettings(); - Setup(); - } - private void Setup() - { - // Setup Browse Buttons - btnBrwsDev.Tag = this.tbDevelopment; - btnBrwsSS.Tag = this.tbSourceSafe; - btnBrwsMail.Tag = this.tbMailBox; - btnBrwsSSMail.Tag = this.tbSSMailBox; - } - private void btnBrowse_Click(object sender, EventArgs e) - { - TextBox tb = (TextBox)((Button)sender).Tag; - fbd.SelectedPath = tb.Text; - if (fbd.ShowDialog() == DialogResult.OK) - tb.Text = fbd.SelectedPath; - } - private void ClearResults() - { - _CheckedOut = new List(); - } - private void FindCheckedOut(DirectoryInfo di) - { - FindCheckedOut(di.GetFiles()); - FindCheckedOut(di.GetDirectories()); - } - private void FindCheckedOut(DirectoryInfo[] directoryInfoList) - { - foreach (DirectoryInfo di in directoryInfoList) - FindCheckedOut(di); - } - private void FindCheckedOut(FileInfo[] fileInfoList) - { - foreach (FileInfo fi in fileInfoList) - FindCheckedOut(fi); - } - private void FindCheckedOut(FileInfo fi) - { - if (fi.Name.ToLower().EndsWith("scc")) return; - if (fi.Name.ToLower().EndsWith("sln")) return; - if (fi.Name.ToLower().EndsWith("csproj")) return; - if (fi.Name.ToLower().EndsWith("licx")) return; - FileInfo fi1 = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if ((fi1.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly) - AddToResults(fi, fi1); - } - private void AddToResults(FileInfo fiSS,FileInfo fiDev) - { - FileCompare fc = new FileCompare(fiDev, fiSS); - if(!_OnlyContentDifferent || (fc.Different && (fc.DevModified != null))) - _CheckedOut.Add(fc); - //if (tbResults.Text == "") tbResults.Text = "Found:"; - //tbResults.Text += "\r\n" + fiDev.FullName + " - " + ((fiDev.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly ? "" : "ReadOnly"); - } - private void ClearMailBox() - { - DeleteFolder(new DirectoryInfo(tbMailBox.Text)); - DeleteFolder(new DirectoryInfo(tbSSMailBox.Text)); - } - private void DeleteFolder(DirectoryInfo directoryInfo) - { - if (directoryInfo.Exists) - { - AdjustAttributes(directoryInfo); - directoryInfo.Delete(true); - } - } - private void AdjustAttributes(DirectoryInfo directoryInfo) - { - foreach (DirectoryInfo di in directoryInfo.GetDirectories()) - AdjustAttributes(di); - foreach (FileInfo fi in directoryInfo.GetFiles()) - AdjustAttribute(fi); - } - private void AdjustAttribute(FileInfo fi) - { - if ((fi.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) - fi.Attributes = fi.Attributes ^ FileAttributes.ReadOnly; - } - private void frmSync_FormClosing(object sender, FormClosingEventArgs e) - { - Properties.Settings.Default.Location = Location; - Properties.Settings.Default.Size = Size; - Properties.Settings.Default.DevelopmentFolder = tbDevelopment.Text; - Properties.Settings.Default.SourceSafeFolder = tbSourceSafe.Text; - Properties.Settings.Default.MailBoxDevelopmentFolder = tbMailBox.Text; - Properties.Settings.Default.MailBoxSourceSafeFolder = tbSSMailBox.Text; - Properties.Settings.Default.Save(); - } - private void exitToolStripMenuItem_Click(object sender, EventArgs e) - { - this.Close(); - } - private void clearToolStripMenuItem_Click(object sender, EventArgs e) - { - ClearMailBox(); - } - private void buildToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearMailBox(); - if (_CheckedOut == null) - checkedOutToolStripMenuItem_Click(sender, e); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) - { - fc.MoveDevToMailBox(tbDevelopment.Text, tbMailBox.Text); - fc.MoveSSToMailBox(tbSourceSafe.Text, tbSSMailBox.Text); - } - } - } - private void checkedOutToolStripMenuItem_Click(object sender, EventArgs e) - { - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindCheckedOut(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void syncAllToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - fc.MoveToDevelopment(); - } - } - private void restoreUnchangedToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if(!fc.Different || fc.DevModified == null) - fc.MoveToDevelopment(); - } - } - private void restoreSelectedToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) fc.MoveToDevelopment(); - } - } - private void restoreAllToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - fc.MoveToDevelopment(); - } - } - private List SelectedList - { - get - { - dgv.EndEdit(); - List fcList = new List(); - foreach (DataGridViewCell dgc in dgv.SelectedCells) - { - FileCompare fc = dgv.Rows[dgc.RowIndex].DataBoundItem as FileCompare; - if (fc != null && fcList.Contains(fc) == false) - fcList.Add(fc); - } - return fcList; - } - } - private void compareToolStripMenuItem_Click(object sender, EventArgs e) - { - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - Console.WriteLine("Compare {0} and {1}", fc.FileName, fc.SSFileName); - string cmd = string.Format("\"C:\\Program Files\\IDM Computer Solutions\\UltraCompare\\UC.exe\" -t \"{0}\" \"{1}\"", fc.FileName, fc.SSFileName); - System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(@"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe", - string.Format(@" -t ""{0}"" ""{1}""", fc.FileName, fc.SSFileName)); - System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi); - } - } - private void restoreToolStripMenuItem_Click(object sender, EventArgs e) - { - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - fc.MoveToDevelopment(); - } - } - private void differentToolStripMenuItem_Click(object sender, EventArgs e) - { - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void SetColumnWidth() - { - IsLoading = true; - if (Properties.Settings.Default["Widths"] == null) - { - dgv.Columns[0].Width = 60; - dgv.Columns[1].Visible = false; - dgv.Columns[2].Width = 125; - dgv.Columns[3].Width = 125; - dgv.Columns[4].Width = 50; - dgv.Columns[5].Width = 500; - } - else - { - for (int i = 0; i < Properties.Settings.Default.Widths.Count; i++) - { - string sWidth = Properties.Settings.Default.Widths[i]; - if (sWidth == "Invisible") - dgv.Columns[i].Visible = false; - else - dgv.Columns[i].Width = int.Parse(sWidth); - } - } - dgv.Columns[1].Visible = false; - IsLoading = false; - } - private void FindDifferent(DirectoryInfo di) - { - FindDifferent(di.GetFiles()); - FindDifferent(di.GetDirectories()); - } - private void FindDifferent(DirectoryInfo[] directoryInfoList) - { - foreach (DirectoryInfo di in directoryInfoList) - FindDifferent(di); - } - private void FindDifferent(FileInfo[] fileInfoList) - { - foreach (FileInfo fi in fileInfoList) - FindDifferent(fi); - } - private void FindDifferent(FileInfo fi) - { - if (fi.Name.ToLower().EndsWith("scc")) return; - if (fi.Name.ToLower().EndsWith("sln")) return; - if (fi.Name.ToLower().EndsWith("csproj")) return; - if (fi.Name.ToLower().EndsWith("licx")) return; - FileInfo fiD = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - FileInfo fiS = fi; - // Only check Read-Only flag, other attributes are unimportant - if (fiS.LastWriteTimeUtc != fiD.LastWriteTimeUtc || (fiS.Attributes & FileAttributes.ReadOnly ) != (fiD.Attributes & FileAttributes.ReadOnly )) - AddToResults(fi, fiD); - } - private void dgv_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) - { - if (!IsLoading) - { - System.Collections.Specialized.StringCollection widths = new System.Collections.Specialized.StringCollection(); - foreach (DataGridViewColumn col in dgv.Columns) - widths.Add(col.Visible ? col.Width.ToString() : "Invisible"); - Properties.Settings.Default.Widths = widths; - Properties.Settings.Default.Save(); - } - } - private bool _OnlyContentDifferent = false; - private void contentDifferentToolStripMenuItem_Click(object sender, EventArgs e) - { - ClearResults(); - _OnlyContentDifferent = true; - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - _OnlyContentDifferent = false; - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void frmSync_LocationChanged(object sender, EventArgs e) - { - Rectangle rec = Screen.GetWorkingArea(this); - if (Math.Abs(Left - rec.X) < 10) Left = rec.X; - if (Math.Abs(Top - rec.Y) < 10) Top = rec.Y; - if (Math.Abs(rec.X + rec.Width - Right) < 10) Left = rec.X + rec.Width - Width; - if (Math.Abs(rec.Y + rec.Height - Bottom) < 10) Top = rec.Y + rec.Height - Height; - } - } -} \ No newline at end of file diff --git a/PROMS/xxxSync/Sync/frmSync.resx b/PROMS/xxxSync/Sync/frmSync.resx deleted file mode 100644 index f0eaa433..00000000 --- a/PROMS/xxxSync/Sync/frmSync.resx +++ /dev/null @@ -1,1516 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - 17, 17 - - - 303, 17 - - - 84, 17 - - - 194, 17 - - - - - AAABAAQAgIAAAAEAIAAoCAEARgAAADAwAAABACAAqCUAAG4IAQAgIAAAAQAgAKgQAAAWLgEAEBAAAAEA - IABoBAAAvj4BACgAAACAAAAAAAEAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAwAA - AAYAAAAIAAAACgAAAA0AAAAPAAAAEAAAABEAAAATAAAAEwAAABQAAAAUAAAAEwAAABMAAAARAAAAEAAA - AA8AAAANAAAACgAAAAgAAAAGAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAAwAAAAYAAAAKAAAADgAAABMAAAAZAAAAIAAAACUAAAArAAAALgAAADMAAAA2AAAAOAAA - ADoAAAA8AAAAPQAAAD0AAAA8AAAAOgAAADgAAAA2AAAAMwAAAC4AAAArAAAAJQAAACAAAAAZAAAAEwAA - AA4AAAAKAAAABgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAACgAAABAAAAAXAAAAHwAAACgAAAAxAAAAOwAA - AEYAAABPAAAAWAAAAGAAAABmAAAAbAAAAHAAAAB0AAAAeAAAAHoAAAB8AAAAfAAAAHoAAAB4AAAAdAAA - AHAAAABsAAAAZgAAAGAAAABYAAAATwAAAEYAAAA7AAAAMQAAACgAAAAfAAAAFwAAABAAAAAKAAAABAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAKAAAAEQAA - ABwAAAAnAAAANAAAAEEAAABPAAAAXQAAAGoAAAB4ExMTkiQkJKotLS27NTU1yT09PddGRkbjS0tL6VBQ - UO9UVFT0WVlZ+llZWfpZWVn6WVlZ+lRUVPRQUFDvS0tL6UZGRuM9PT3XNjY2yS0tLbskJCSqExMTkgAA - AHgAAABqAAAAXQAAAE8AAABBAAAANAAAACcAAAAcAAAAEQAAAAoAAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAAwAAAAcAAAAPAAAAGQAAACcAAAA2AAAARwAAAFkAAABqDw8PiBoaGqMwMDDEQ0ND4E1N - Te9WVlb4Xl5e/2RkZP9vb2//fHx8/4iIiP+RkZH/mZmZ/6Ghof+np6f/q6ur/6urq/+np6f/oaGh/5qa - mv+SkpL/iIiI/3x8fP9wcHD/ZGRk/19fX/9XV1f4Tk5O70REROAxMTHEHBwcow8PD4gAAABqAAAAWQAA - AEcAAAA2AAAAJwAAABkAAAAPAAAABwAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAAoAAAATAAAAIQAAADEAAABEAAAAWAAA - AG4RERGRLS0tv0FBQd5RUVH1XFxc/2lpaf+AgID/l5eX/6ysrP++vr7/y8vL/9XV1f/d3d3/5ubm/+zs - 7P/x8fH/9vb2//n5+f/6+vr/+vr6//n5+f/29vb/8vLy/+3t7f/m5ub/39/f/9fX1//Nzc3/v7+//66u - rv+Xl5f/goKC/2pqav9dXV3/UVFR9UFBQd4tLS2/ERERkQAAAG4AAABYAAAARAAAADEAAAAhAAAAEwAA - AAoAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAA - AAoAAAAVAAAAJQAAADkAAABPAAAAZg4ODooqKiq7QkJC41VVVfxkZGT/fn5+/52dnf+3t7f/zc3N/93d - 3f/o6Oj/8fHx//f39//6+vr/+/v7//z8/P/8/Pz//v7+//7+/v////////////////////////////// - //////////////7+/v/+/v7//v7+//v7+//6+vr/9PT0/+vr6//f39//z8/P/7i4uP+enp7/gYGB/2Vl - Zf9WVlb8Q0ND4y0tLbsODg6KAAAAZgAAAE8AAAA5AAAAJQAAABUAAAAKAAAABAAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAwAAAAoAAAAVAAAAJgAAADwAAABVAAAAbxkZGaI7OzvYTk5O9mJi - Yv+BgYH/o6Oj/8HBwf/X19f/5+fn//Hx8f/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//z8 - /P/+/v7//v7+/////////////////////////////////////////////v7+//7+/v/8/Pz//Pz8//v7 - +//7+/v/+vr6//r6+v/39/f/9PT0/+rq6v/a2tr/w8PD/6ampv+EhIT/ZGRk/1BQUPY8PDzYGhoaogAA - AG8AAABVAAAAPAAAACYAAAAVAAAACgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAASAAAAIwAA - ADoAAABVAgICcyMjI7JCQkLlV1dX/3Nzc/+Xl5f/u7u7/9XV1f/l5eX/7e3t//Hx8f/y8vL/9PT0//X1 - 9f/29vb/9/f3//n5+f/6+vr/+/v7//v7+//8/Pz//Pz8//7+/v/+/v7///////////////////////// - ///////////////////+/v7//v7+//z8/P/8/Pz/+/v7//v7+//6+vr/+fn5//n5+f/39/f/9vb2//X1 - 9f/x8fH/6Ojo/9nZ2f+9vb3/m5ub/3V1df9ZWVn/Q0ND5SUlJbICAgJzAAAAVQAAADoAAAAjAAAAEgAA - AAcAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAANAAAAHAAAADQAAABQAAAAbiQkJLBDQ0PpXFxc/319ff+mpqb/yMjI/9zc - 3P/n5+f/6+vr/+3t7f/w8PD/8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6+v/6+vr/+/v7//z8 - /P/8/Pz//v7+//7+/v///////////////////////////////////////v7+//7+/v/+/v7//Pz8//z8 - /P/7+/v/+/v7//r6+v/5+fn/9/f3//f39//29vb/9fX1//T09P/y8vL/8PDw/+zs7P/h4eH/zc3N/6mp - qf+BgYH/XV1d/0ZGRukkJCSwAAAAbgAAAFAAAAA0AAAAHAAAAA0AAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAJAAAAFgAAACsAAABGAAAAZRoa - GqFBQUHnW1tb/4CAgP+pqan/y8vL/9/f3//m5ub/6Ojo/+vr6//s7Oz/7e3t/+/v7//x8fH/8vLy//T0 - 9P/19fX/9vb2//f39//5+fn/+vr6//r6+v/7+/v//Pz8//z8/P/+/v7//v7+//7+/v////////////// - ///////////////////+/v7//v7+//7+/v/8/Pz//Pz8//v7+//7+/v/+vr6//n5+f/39/f/9vb2//X1 - 9f/09PT/9PT0//Ly8v/w8PD/7+/v/+3t7f/r6+v/4uLi/9DQ0P+urq7/g4OD/11dXf9DQ0PnHBwcowAA - AGUAAABGAAAAKwAAABYAAAAJAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAEAAAADgAAACAAAAA6AAAAWQ8PD4g0NDTUUlJS/nl5ef+mpqb/x8fH/9vb2//i4uL/5eXl/+fn - 5//o6Oj/6urq/+vr6//t7e3/7+/v//Dw8P/x8fH/8vLy//T09P/19fX/9/f3//f39//5+fn/+vr6//v7 - +//8/Pz//Pz8//7+/v/+/v7//v7+//////////////////////////////////7+/v/+/v7//v7+//z8 - /P/8/Pz/+/v7//r6+v/6+vr/+fn5//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/v7+//7e3t/+zs - 7P/r6+v/5+fn/+Dg4P/Nzc3/qamp/3x8fP9VVVX+Nzc31A8PD4gAAABZAAAAOgAAACAAAAAOAAAABAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABwAAABQAAAArAAAASQAAAG0mJia4SEhI9Gxs - bP+ZmZn/v7+//9XV1f/f39//4eHh/+Li4v/l5eX/5ubm/+fn5//q6ur/6+vr/+zs7P/t7e3/8PDw//Hx - 8f/y8vL/9PT0//X19f/29vb/9/f3//n5+f/6+vr/+/v7//v7+//8/Pz//v7+//7+/v/+/v7///////// - /////////////////////////v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+vr6//n5+f/5+fn/9/f3//b2 - 9v/19fX/9PT0//Ly8v/x8fH/8PDw/+/v7//s7Oz/6+vr/+rq6v/o6Oj/5+fn/+Tk5P/b29v/xMTE/52d - nf9wcHD/SUlJ9CgoKLgAAABtAAAASQAAACsAAAAUAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAoAAAAbAAAANQAAAFgRERGPPDw84l5eXv+FhYX/sLCw/83Nzf/Z2dn/3Nzc/9/f3//g4OD/4uLi/+Tk - 5P/l5eX/5+fn/+jo6P/q6ur/7Ozs/+3t7f/v7+//8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6 - +v/7+/v/+/v7//z8/P/+/v7//v7+//7+/v/////////////////////////////////+/v7//v7+//7+ - /v/8/Pz/+/v7//v7+//6+vr/+fn5//f39//39/f/9vb2//X19f/09PT/8fHx//Dw8P/v7+//7e3t/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Tk5P/f39//0dHR/7a2tv+Kior/YGBg/z4+PuIRERGPAAAAWAAA - ADUAAAAbAAAACgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAANAAAAIQAAAD8AAABkIyMjtElJSfdxcXH/nZ2d/8HB - wf/R0dH/19fX/9ra2v/c3Nz/3d3d/9/f3//h4eH/4uLi/+Xl5f/m5ub/6Ojo/+rq6v/r6+v/7e3t/+/v - 7//w8PD/8fHx//T09P/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//7+/v/+/v7//v7+//// - //////////////////////////////7+/v/+/v7//v7+//z8/P/7+/v/+/v7//r6+v/5+fn/9/f3//b2 - 9v/19fX/9PT0//Ly8v/x8fH/8PDw/+/v7//t7e3/6+vr/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Hh - 4f/d3d3/2dnZ/8fHx/+jo6P/dHR0/0tLS/ckJCS0AAAAZAAAAD8AAAAhAAAADQAAAAQAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAADwAA - ACUAAABHBgYGdDIyMtFcXFz/g4OD/66urv/Jycn/0dHR/9XV1f/X19f/2dnZ/9vb2//c3Nz/39/f/+Dg - 4P/i4uL/5OTk/+Xl5f/n5+f/6Ojo/+vr6//s7Oz/7e3t//Dw8P/x8fH/8vLy//T09P/19fX/9/f3//n5 - +f/6+vr/+vr6//v7+//8/Pz//v7+//7+/v/+/v7//////////////////////////////////v7+//7+ - /v/8/Pz//Pz8//v7+//7+/v/+vr6//n5+f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7e3t/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Li4v/h4eH/4ODg/9/f3//c3Nz/2dnZ/9DQ0P+0tLT/h4eH/19f - X/80NDTRBgYGdAAAAEcAAAAlAAAADwAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABQAAABEAAAApAAAATREREYc+Pj7lZmZm/5KSkv+4uLj/y8vL/9DQ - 0P/T09P/1dXV/9bW1v/X19f/2tra/9vb2//d3d3/39/f/+Hh4f/i4uL/5eXl/+bm5v/o6Oj/6urq/+zs - 7P/t7e3/7+/v//Hx8f/y8vL/9PT0//X19f/29vb/9/f3//n5+f/6+vr/+/v7//z8/P/8/Pz//v7+//7+ - /v/////////////////////////////////+/v7//v7+//z8/P/8/Pz/+/v7//r6+v/6+vr/+fn5//f3 - 9//29vb/9fX1//T09P/x8fH/8PDw/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Dg - 4P/f39//3d3d/9vb2//a2tr/19fX/9TU1P+/v7//l5eX/2pqav8/Pz/lERERhwAAAE0AAAApAAAAEQAA - AAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAATAAAALQAA - AFIYGBiURkZG8XBwcP+cnJz/vLy8/8rKyv/Ozs7/0NDQ/9HR0f/T09P/1dXV/9bW1v/Z2dn/2tra/9zc - 3P/f39//4ODg/+Hh4f/k5OT/5ubm/+fn5//q6ur/6+vr/+zs7P/v7+//8PDw//Hx8f/09PT/9fX1//b2 - 9v/39/f/+fn5//r6+v/7+/v//Pz8//z8/P/+/v7//v7+//////////////////////////////////7+ - /v/+/v7//Pz8//z8/P/7+/v/+vr6//n5+f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7+/v/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Li4v/h4eH/4ODg/93d3f/c3Nz/29vb/9nZ2f/X19f/1tbW/9HR - 0f/ExMT/o6Oj/3R0dP9KSkrxGBgYlAAAAFIAAAAtAAAAEwAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAGAAAAFAAAAC8AAABVGRkZnkpKSvV2dnb/pKSk/76+vv/IyMj/y8vL/83N - zf/Pz8//0NDQ/9HR0f/U1NT/1tbW/9fX1//a2tr/29vb/93d3f/f39//4eHh/+Li4v/l5eX/5ubm/+jo - 6P/q6ur/7Ozs/+3t7f/w8PD/8fHx//Ly8v/19fX/9vb2//f39//5+fn/+vr6//v7+//8/Pz//Pz8//7+ - /v/+/v7//////////////////////////////////v7+//7+/v/8/Pz//Pz8//v7+//6+vr/+fn5//f3 - 9//29vb/9fX1//T09P/y8vL/8fHx/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Dg - 4P/f39//3Nzc/9vb2//a2tr/19fX/9bW1v/V1dX/09PT/9DQ0P/FxcX/qamp/3t7e/9PT0/1GxsbngAA - AFUAAAAvAAAAFAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQAAABMAAAAwAAAAWCEh - IapRUVH6enp6/6Wlpf++vr7/xcXF/8jIyP/Kysr/y8vL/87Ozv/Pz8//0NDQ/9PT0//V1dX/1tbW/9nZ - 2f/a2tr/3Nzc/93d3f/g4OD/4eHh/+Tk5P/m5ub/5+fn/+rq6v/r6+v/7e3t/+/v7//x8fH/8vLy//X1 - 9f/29vb/+vr6//v7+//8/Pz//v7+//7+/v/+/v7///////////////////////////////////////// - //////////////7+/v/+/v7//Pz8//z8/P/6+vr/+fn5//b29v/19fX/9PT0//Hx8f/w8PD/7+/v/+zs - 7P/r6+v/6urq/+fn5//m5ub/5eXl/+Li4v/h4eH/39/f/93d3f/c3Nz/2tra/9nZ2f/W1tb/1dXV/9TU - 1P/R0dH/0NDQ/87Ozv/FxcX/rKys/35+fv9TU1P6JCQkqgAAAFgAAAAwAAAAEwAAAAUAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAATAAAALgAAAFclJSWxUlJS/Hx8fP+mpqb/vLy8/8LCwv/FxcX/x8fH/8jI - yP/Kysr/y8vL/87Ozv/Pz8//0dHR/9PT0//V1dX/19fX/9nZ2f/b29v/3Nzc/9/f3//h4eH/4uLi/+Xl - 5f/m5ub/6Ojo/+vr6//s7Oz/8fHx//T09P/39/f/+vr6//r6+v/7+/v/+/v7//z8/P/g4fn/y8v3/6Gf - 8P+Ni+7/d3Tt/3d07f93dO7/d3Tu/3d07v93dO7/jYvw/6Kg8v+ioPL/ubf1/9nY+P/+/v7//Pz8//z8 - /P/7+/v/+vr6//f39//09PT/8fHx//Dw8P/t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4eHh/+Dg - 4P/d3d3/3Nzc/9vb2//Z2dn/19fX/9XV1f/U1NT/09PT/9DQ0P/Pz8//zs7O/8rKyv/ExMT/ra2t/4OD - g/9WVlb8JiYmsQAAAFcAAAAuAAAAEwAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAACsAAABVIyMjrVhY - WP1+fn7/pqam/7u7u//BwcH/wsLC/8PDw//FxcX/x8fH/8nJyf/Kysr/zc3N/87Ozv/Q0ND/0dHR/9TU - 1P/W1tb/19fX/9ra2v/b29v/3d3d/+Dg4P/h4eH/5OTk/+bm5v/q6ur/8PDw//X19f/29vb/9/f3//n5 - +f/a2fT/qKbs/3t55/9RTeH/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm - 5P8wJuP/MCbh/y8m4f8vJuD/LyXe/zIp3v9UUOL/hoPp/7u68P/19fn/+vr6//n5+f/29vb/8vLy/+3t - 7f/r6+v/6urq/+fn5//m5ub/5OTk/+Li4v/g4OD/39/f/9zc3P/b29v/2tra/9fX1//W1tb/1NTU/9PT - 0//Q0ND/z8/P/87Ozv/Ly8v/ysrK/8nJyf/ExMT/rq6u/4SEhP9cXFz9JiYmrQAAAFUAAAArAAAAEAAA - AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAgAAAA0AAAAnAAAATyIiIqVWVlb8fX19/6ampv+4uLj/vb29/7+/v//BwcH/wsLC/8TE - xP/T09P/ysrK/8nJyf/Kysr/zc3N/8/Pz//Q0ND/09PT/9TU1P/W1tb/2dnZ/9ra2v/c3Nz/39/f/+Hh - 4f/n5+f/7+/v//T09P/09PT/9fX1/7e36v97eeD/PznX/ywl1v8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m - 3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m - 2v8uJdn/LSXY/zQt1/9qZ+D/tLPr//f39//39/f/9fX1//Hx8f/q6ur/5+fn/+Xl5f/k5OT/4eHh/+Dg - 4P/d3d3/3Nzc/9ra2v/Z2dn/1tbW/9XV1f/T09P/0dHR/8/Pz//Ozs7/zc3N/8rKyv/Jycn/yMjI/8fH - x//BwcH/ra2t/4SEhP9aWlr8IyMjpQAAAE8AAAAnAAAADQAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAKAAAAIAAAAEcZGRmVVVVV+Hp6 - ev+jo6P/tbW1/7q6uv+8vLz/vb29/7+/v//BwcH/wsLC/9PU1f/c3Nz/ysrK/8nJyf/Ly8v/zc3N/8/P - z//R0dH/09PT/9XV1f/X19f/2dnZ/9vb2//h4eH/7Ozs//Dw8P/x8fH/zMzr/3V02/80Mc3/KiTN/ysk - 0P8rJNP/LCXW/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm - 5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdj/LCXW/ywk0/8rJNH/OTTS/4uK - 4f/l5fL/9fX1//Ly8v/s7Oz/5eXl/+Li4v/g4OD/39/f/9zc3P/b29v/2dnZ/9bW1v/V1dX/09PT/9HR - 0f/Q0ND/zs7O/83Nzf/Kysr/ycnJ/8jIyP/Hx8f/xMTE/8PDw/++vr7/qamp/4GBgf9YWFj4HR0dlQAA - AEcAAAAgAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABwAAABkAAAA9ERERgExMTPJ1dXX/nZ2d/7Ozs/+3t7f/uLi4/7q6uv+8vLz/vb29/7+/ - v//BwcH/b3Kp/8jJ2P/c3Nz/ysrK/8nJyf/Ly8v/zs7O/8/Pz//R0dH/1NTU/9bW1v/a2tr/5ubm/+3t - 7f/v7+//qarg/1JQz/8oIsb/KSPK/yoky/8qJM3/KyTQ/ysk0/8sJdb/LSXX/y4l2P8uJtr/Libd/y8l - 3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m - 3f8uJtr/LiXZ/y0l1/8sJdb/LCTT/ysk0f8qJM7/KiTM/y4py/9zctn/3+Dv//Ly8v/v7+//5ubm/9/f - 3//d3d3/29vb/9ra2v/X19f/1dXV/9TU1P/R0dH/0NDQ/87Ozv/Nzc3/y8vL/8nJyf/IyMj/x8fH/8TE - xP/Dw8P/wcHB/7+/v/+7u7v/paWl/3t7e/9RUVHyExMTgAAAAD0AAAAZAAAABwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAATAAAANAUFBWVGRkbjb29v/5aW - lv+tra3/s7Oz/7W1tf+3t7f/uLi4/7q6uv+8vLz/vb29/7+/v/9VWaD/Nzqj/9DR3P/d3d3/ysrK/8rK - yv/Ly8v/zs7O/9DQ0P/T09P/2tra/+jo6P/s7Oz/ubnh/0hGyP8mIsD/JyHE/ygixv8pIsn/KiPL/yok - zf8rJND/KyTT/ywl1v8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm - 5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl1v8sJNP/KyTR/yok - zv8qJMz/KSPK/ygjx/8vKsb/fH3X/+Xm7v/w8PD/6Ojo/93d3f/a2tr/19fX/9bW1v/U1NT/09PT/9DQ - 0P/Pz8//zc3N/8vLy//Jycn/yMjI/8fHx//ExMT/w8PD/8HBwf+/v7//vr6+/7y8vP+2trb/np6e/3V1 - df9JSUnjBQUFZQAAADQAAAATAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAACAAAADgAAACoAAABVNzc3x2dnZ/+Ojo7/qKio/7CwsP+zs7P/tLS0/7W1tf+3t7f/uLi4/7q6 - uv+8vLz/vb29/1BUn/8cHpn/OTyp/83O3P/f39//y8vL/8rKyv/Nzc3/z8/P/93d3f/o6Oj/0NHk/1hZ - yP8lIbv/JiG+/yYiwP8nIcT/KCLG/ykiyf8qI8v/KiTN/ysk0P8rJNP/LCXU/y0l1/8uJdj/Liba/y4m - 3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l - 3v8uJt3/Liba/y4l2f8tJdf/LCXW/ywk0/8rJNH/KiTO/yoky/8pI8r/KCPH/ycixP8mIsL/ODbE/6ip - 3v/t7e3/6+vr/9zc3P/W1tb/1dXV/9PT0//Q0ND/z8/P/83Nzf/Ly8v/ycnJ/8jIyP/Hx8f/xMTE/8PD - w//BwcH/v7+//76+vv+9vb3/vLy8/7q6uv+wsLD/k5OT/2xsbP84ODjHAAAAVQAAACoAAAAOAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAkAAAAgAAAASSUlJaRcXFz+goKC/6Gh - of+tra3/r6+v/7Kysv+zs7P/tLS0/7W1tf+2trb/uLi4/7q6uv+8vLz/Rkqa/xwdmf8dHaD/NTiq/8vM - 2v/f39//zc3N/8rKyv/d3d3/5+fn/6Wl2P8vL7r/JCC6/yUhu/8mIb7/JiLA/ychxP8oIsb/KSLJ/yoj - y/8qI83/KyTQ/ysk0/8sJdT/LSXX/y4l2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm - 5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l1/8sJdb/LCTT/ysk - 0f8qJM7/KiTL/ykjyv8oIsf/JyHE/yYiwv8mIb7/JSG9/1layP/f3+j/6urq/93d3f/T09P/0dHR/8/P - z//Ozs7/y8vL/8rKyv/IyMj/x8fH/8TExP/Dw8P/wcHB/7+/v/++vr7/vb29/7u7u/+6urr/uLi4/7a2 - tv+pqan/iIiI/2FhYf4mJiakAAAASQAAACAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAFAAAAFgAAADoTExOCUVFR9Xd3d/+ampr/q6ur/62trf+urq7/r6+v/7CwsP+ysrL/tLS0/7W1 - tf+2trb/uLi4/7q6uv9DRpn/HB2a/x0doP8dHaH/MzWr/8fH2v/g4OD/2tra/+Hh4/9rbcX/IiCz/yMg - tv8kILj/JSG7/yYhvv8mIsD/JyHE/ygixv8pIsn/KiPL/yojzf8rJND/KyTT/ywl1P8tJdf/LiXY/y4m - 2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m - 4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl1v8sJNP/KyTR/yokzv8qI8v/KSPK/ygix/8nIcT/JiLC/yYh - vv8lIbz/JCC6/zY2vP+/v97/6urq/9/f3//Q0ND/zs7O/8vLy//Kysr/yMjI/8fHx//ExMT/w8PD/8HB - wf+/v7//vr6+/7y8vP+7u7v/urq6/7i4uP+3t7f/tra2/7Ozs/+jo6P/fHx8/1VVVfUVFRWCAAAAOgAA - ABYAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA4AAAAsAgICXkVFReFtbW3/kJCQ/6Wl - pf+pqan/q6ur/62trf+urq7/r6+v/7CwsP+ysrL/s7Oz/7W1tf+2trb/uLi4/zxAmP8cHZr/HR2f/x0d - of8eHaT/LzCr/8TF2v/g4OL/WFq+/yIfsP8iILP/IyC2/yQguP8lIbv/JiG+/yYiwP8nIcT/KCLF/yki - yf8qI8v/KiPN/ysk0P8rI9L/LCTU/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm - 4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdf/LCXW/ywk - 0/8rJNH/KiTO/yojy/8pIsn/KCLH/ychxP8mIsL/JiG+/yUhvP8kILr/IyC2/ygmtv+QktH/5+fn/+Hh - 4f/Ozs7/ysrK/8jIyP/Hx8f/xMTE/8PDw//BwcH/v7+//76+vv+8vLz/u7u7/7q6uv+4uLj/tra2/7W1 - tf+0tLT/s7Oz/66urv+Xl5f/cnJy/0lJSeECAgJeAAAALAAAAA4AAAACAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAHAAAAHwAAAEktLS2yZGRk/4aGhv+fn5//pqam/6ioqP+pqan/q6ur/6ysrP+tra3/r6+v/7Cw - sP+ysrL/s7Oz/7W1tf+2trb/NjiV/xwdm/8dHZ//HR2h/x4dpP8fHab/Ly+t/1dZvf8hH63/Ih+w/yIg - s/8jILb/JCC4/yUhu/8mIb7/JiLA/ychxP8oIsX/KSLJ/yojy/8qI83/KyTQ/ysj0v8sJNT/LSXX/y4l - 2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m - 4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l1/8sJdT/LCTT/ysj0f8qJM7/KiPL/ykiyf8oIsf/JyHE/yYi - wv8mIb7/JSG8/yQguv8jILb/IiC0/yIgsP9iY8L/3d3j/+Dg4P/Kysr/x8fH/8TExP/Dw8P/wcHB/7+/ - v/+9vb3/vLy8/7u7u/+4uLj/t7e3/7a2tv+1tbX/tLS0/7Ozs/+ysrL/r6+v/6enp/+Ojo7/ampq/zAw - MLIAAABJAAAAHwAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABMAAAA1FBQUfVVVVfd5eXn/l5eX/6Sk - pP+mpqb/p6en/6ioqP+pqan/q6ur/6ysrP+tra3/rq6u/6+vr/+ysrL/s7Oz/7S0tP8zN5X/HB2c/x0d - n/8dHaH/Hh2k/x8dpv8fHqf/IB6r/yEerf8iH7D/IiCz/yMhtf8kILj/JSG7/yYhvv8mIsD/JyHD/ygi - xf8pIsn/KiPL/yojzf8rJND/KyPS/ywk1P8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm - 4P8wJt7/LyXe/y8l3v8vJd7/LyXe/zAm3v8wJt//Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl - 1P8sJNP/KyPR/yojzv8qI8v/KSLJ/ygixv8nIcT/JiLC/yYhvv8lIbz/JCC4/yMgtv8iILT/IiCw/yEf - rv9AQ7b/0NDe/93d3f/Hx8f/w8PD/8HBwf+/v7//vb29/7y8vP+7u7v/uLi4/7e3t/+2trb/tbW1/7S0 - tP+ysrL/sLCw/6+vr/+urq7/rKys/6CgoP+AgID/W1tb9xQUFH0AAAA2AAAAEwAAAAMAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAKAAAAJAAAAFJAQEDVbW1t/46Ojv+enp7/o6Oj/6SkpP+lpaX/pqam/6enp/+oqKj/qamp/6ur - q/+tra3/rq6u/6+vr/+wsLD/s7Oz/ystkv8cHZv/HB2f/x0dof8dHaT/Hh2l/x8ep/8gHqv/IB6t/yEe - sP8iH7P/IyC1/yMguP8kIbv/JSG+/yYiwP8mIcP/JyLF/ykiyf8qI8v/KiPN/ysk0P8rI9L/LCTU/y0k - 1/8uJdj/Liba/y4m2v8uJdj/LibT/y0l0f8tJcz/LSXJ/y0lw/8tJcP/LSXD/y0lw/8tJcP/LSXE/y0l - yf8tJc3/LSXR/y4l1v8uJtr/Liba/y4l2f8tJdf/LCXU/ywk0/8rI9H/KiPO/yojy/8pIsn/KCLG/ych - xP8mIsL/JiG+/yUhvP8kILj/IyC2/yIgtP8iILD/IR+u/yAgq/84ObL/y8za/9vb2//Dw8P/vr6+/729 - vf+8vLz/urq6/7i4uP+3t7f/tbW1/7S0tP+zs7P/srKy/7CwsP+vr6//rq6u/62trf+srKz/p6en/5SU - lP9ycnL/RERE1QAAAFIAAAAkAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABUAAAA6IiIilV9fX/5+fn7/mZmZ/5+f - n/+hoaH/o6Oj/6SkpP+lpaX/paWl/6enp/+oqKj/qamp/6urq/+srKz/ra2t/6+vr/+wsLD/KCmS/xwd - nP8cHZ//HB2h/x0dpP8eHaX/Hx6n/yAeq/8gHq3/IR6w/yIfsv8jILX/IyC4/yQgu/8lIb7/JiK//yYh - w/8nIsX/KCLJ/ykjy/8qI83/KiTO/ysj0v8sJNT/LSTW/y0k0/8tJM7/LCTG/yskvP8qI7L/KSSq/ykj - ov8oI57/KCOa/ygjmv8oI5r/KCOa/ygjmv8oI5r/KCOc/ygjo/8qJKz/KyS3/ywkxP8sJcz/LSTS/y0l - 1P8sJNT/LCPS/ysj0f8qI87/KiPL/ykiyf8oIsb/JyHE/yYiwv8mIb7/JSG8/yQguP8jILb/IiC0/yIg - sP8hH67/IB+r/yAeqf80Nq3/ysvZ/9bW1v++vr7/u7u7/7q6uv+4uLj/tra2/7W1tf+0tLT/s7Oz/7Ky - sv+wsLD/rq6u/62trf+srKz/q6ur/6urq/+oqKj/oaGh/4aGhv9kZGT+IyMjlQAAADoAAAAVAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAKAAAAJgICAlhLS0vlcXFx/4+Pj/+dnZ3/n5+f/5+fn/+goKD/oaGh/6Ojo/+kpKT/paWl/6am - pv+np6f/qKio/6urq/+srKz/ra2t/6+vr/8jI4//HB2c/xwdn/8cHaH/HR2j/x4dpf8fHqf/IB6r/yAe - rf8hHq//Ih+y/yMgtf8jILj/JCC7/yUhvv8mIr//JiHD/ycixf8oIsn/KSPL/yojzf8qJM7/KyTQ/ysk - zv8rJMX/KiO4/ygjq/8nIp7/JyKW/yYikf8mIoz/JiKK/yomjP9IRZ7/SUaf/0lGn/9JRp//SUaf/0hF - nv8oJIn/JiKL/yYhjv8nIpT/KCKc/ygjqP8qI7X/KyPD/yslzP8sI9H/KyPR/yojzv8qI8v/KSLJ/ygi - xv8nIcP/JiLC/yYhvv8lIbz/JCC4/yMhtf8iILT/Ih+w/yEerv8gH6v/IB6p/x8dpv84Oq3/0NHZ/87O - zv+6urr/t7e3/7a2tv+1tbX/s7Oz/7Kysv+wsLD/r6+v/66urv+tra3/rKys/6urq/+pqan/qKio/6en - p/+lpaX/l5eX/3d3d/9PT0/lAgICWAAAACYAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABUAAAA8KCgon2VlZf+CgoL/l5eX/5yc - nP+dnZ3/np6e/5+fn/+goKD/oaGh/6Ghof+jo6P/pKSk/6Wlpf+np6f/qKio/6mpqf+rq6v/r6+v/xwe - jf8cHZz/HB2f/xwdof8dHaP/Hh2l/x8ep/8gHqv/IB6t/yEer/8iH7L/IyC1/yMguP8kILv/JSC9/yYh - v/8mIcP/JyLF/ygiyf8pI8v/KiPM/yojyf8pIsL/KCK0/yYhov8mIZT/JSGL/yUgh/9RT6D/hIO9/7Cv - 1P/e3e3//Pz8//7+/v///////////////////////v7+//z8/P/V1ej/rq3T/11aqP8qJ4v/JSGL/yYh - kv8mIp//KCOy/yojwv8rI8z/KiPN/yojy/8pIsn/KCLG/yYhw/8mIsD/JSG+/yQhvP8jILj/IyC1/yIf - s/8hH7D/IB6u/yAfq/8gHqn/Hx2m/x4dpP9ESK7/1tbY/8HBwf+2trb/tLS0/7Ozs/+ysrL/sLCw/6+v - r/+tra3/rKys/6urq/+pqan/qKio/6ioqP+np6f/pqam/6Wlpf+fn5//iIiI/2tra/8rKyugAAAAPAAA - ABUAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAKAAAAJQICAlhMTEzmcnJy/46Ojv+ZmZn/m5ub/5ycnP+cnJz/nZ2d/56env+fn5//oKCg/6Gh - of+jo6P/pKSk/6Wlpf+mpqb/p6en/6ioqP+srK3/GxyM/xwcnP8cHZ//HB2g/x0do/8eHaX/Hx6n/yAe - q/8gHqz/IR6v/yIfsv8jILX/IyC4/yQgu/8lIL3/JiG//yYhw/8nIcX/KCLH/ygixf8oIr7/JyKv/yUh - n/8kII//Ix+H/0RClf+QkMD/3t3o//X19f/39/f/+vr6//v7+//8/Pz//v7+//////////////////7+ - /v/+/v7//Pz8//v7+//5+fn/9vb2/+fn7v+dnMf/VlSg/yYih/8kII//JiGi/ygitf8pIsT/KSPJ/ygi - yf8nIsb/JiHD/yYiwP8lIb7/JCC8/yMguP8jILX/Ih+z/yEfsP8gHq7/IB+r/x8eqf8eHaX/HR2k/x0d - ov9maLX/1tbW/7a2tv+ysrL/sLCw/6+vr/+urq7/ra2t/6ysrP+rq6v/qamp/6ioqP+np6f/pqam/6Wl - pf+kpKT/pKSk/6Ghof+VlZX/eHh4/1BQUOYCAgJYAAAAJQAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABMAAAA5KSkpnmVlZf+BgYH/lJSU/5mZ - mf+ampr/mpqa/5ubm/+cnJz/nZ2d/52dnf+enp7/n5+f/6CgoP+hoaH/o6Oj/6SkpP+lpaX/p6en/6Kj - qf8bHI3/HByc/xwcnf8cHaD/HR2j/x4dpf8fHqf/IB6q/yAerP8hHq//Ih+y/yMgtf8jILj/JCC6/yUg - vf8mIb//JiHD/ychwv8nIrz/JiKu/yUfnP8jH43/Ix+F/0VElv+np8n/6+vr/+3t7f/x8fH/9PT0//b2 - 9v/5+fn/+/v7//z8/P/+/v7//////////////////v7+//7+/v/8/Pz/+vr6//n5+f/29vb/9PT0//Hx - 8f/v7+//ysrb/05Om/8jH4b/JCCT/yYhqf8oIrz/KCLG/ycixv8mIcP/JiLA/yUgvf8kILz/IyC4/yMg - tf8iH7P/IR+v/yAerv8gH6v/Hx6p/x4dpf8dHaP/HR2i/xwdnf+focb/y8vL/7CwsP+vr6//ra2t/6ys - rP+rq6v/qamp/6ioqP+np6f/pqam/6Wlpf+kpKT/pKSk/6Ojo/+hoaH/oKCg/52dnf+Hh4f/ampq/y0t - LZ4AAAA5AAAAEwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAHAAAAIQMDA1JJSUngcXFx/4qKiv+VlZX/lpaW/5eXl/+ZmZn/mpqa/5qamv+bm5v/nJyc/52d - nf+enp7/n5+f/6CgoP+hoaH/o6Oj/6SkpP+lpaX/nJ2o/xsbjf8cHJz/HByd/xwcoP8dHKP/Hh2l/x8d - p/8gHqr/IB6s/yEer/8iH7L/IyC1/yMgt/8kILr/JSC9/yYhv/8mIcD/JiC1/yMfnv8iHov/IR6C/z08 - jv+iocD/4uLi/+bm5v/q6ur/7e3t//Dw8P/09PT/9vb2//n5+f/7+/v//Pz8//7+/v////////////// - ///+/v7//v7+//v7+//6+vr/9/f3//X19f/y8vL/8PDw/+3t7f/q6ur/5+fn/5mYv/8xMIn/Ih6J/yUg - n/8mIbf/JyLD/yYhw/8mIcD/JSC9/yQgu/8jILj/IyC1/yIfs/8hH6//IB6t/yAfq/8fHqn/Hh2l/x0d - o/8cHaH/HB2f/ygroP/HxtH/vb29/62trf+rq6v/qamp/6ioqP+np6f/pqam/6ampv+lpaX/pKSk/6Oj - o/+hoaH/oKCg/6CgoP+fn5//nZ2d/5KSkv93d3f/TU1N4AMDA1IAAAAhAAAABwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA8AAAAxISEhi2RkZP98fHz/kJCQ/5SU - lP+VlZX/lpaW/5aWlv+Xl5f/mZmZ/5qamv+ampr/m5ub/5ycnP+dnZ3/np6e/5+fn/+goKD/oaGh/6Oj - o/+YmKX/GxuN/xwcm/8cHJ3/HByg/x0co/8eHKX/Hx2m/yAdqv8gHaz/IR6v/yIfsv8iILT/IyC3/yQg - uv8lIL3/JiG//yYhv/8kIKz/IR2P/zQyh/+Li7L/2tra/93d3f/h4eH/5eXl/+jo6P/s7Oz/7+/v//Ly - 8v/19fX/9/f3//r6+v/8/Pz//v7+//////////////////7+/v/8/Pz/+/v7//r6+v/39/f/9fX1//Hx - 8f/v7+//7Ozs/+jo6P/l5eX/4uLi/9TU2v9gYKD/IR+F/yMfmv8lIbP/JiG+/yYhwP8lIL3/JCC7/yMg - uP8jILX/Ih+z/yEfr/8gHq3/IB+r/x8eqf8eHaX/HR2j/xwdof8cHZ//HB2c/0tPqf/T09P/r6+v/6mp - qf+oqKj/p6en/6ampv+lpaX/pKSk/6Ojo/+hoaH/oKCg/6CgoP+fn5//np6e/52dnf+dnZ3/l5eX/4SE - hP9paWn/IiIiiwAAADEAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAEAAAAGgAAAEVDQ0PPbm5u/4aGhv+SkpL/k5OT/5SUlP+UlJT/lZWV/5aWlv+Wlpb/l5eX/5mZ - mf+ampr/mpqa/5ubm/+cnJz/nZ2d/56env+fn5//oKCg/42NoP8bG47/HByb/xwcnf8cHKD/HRyj/x0c - pP8eHab/Hx2q/yAdrP8gHa//IR6y/yIftP8jILf/IyC6/yUgvf8mIb//JiHA/ysmt/+EhL//y8vO/9TU - 1P/X19f/29vb/9/f3//i4uL/5ubm/+rq6v/t7e3/8fHx//X19f/39/f/+vr6//z8/P/+/v7///////// - /////////v7+//z8/P/7+/v/+fn5//b29v/09PT/8fHx/+3t7f/q6ur/5+fn/+Tk5P/g4OD/3Nzc/9ra - 2v97e6v/IB2C/yIelv8kIK//JiG8/yUgvf8kILv/IyC3/yMgtf8iH7P/IR+v/yAerf8gH6r/Hx6p/x4d - pf8dHaP/HB2h/xwdn/8cHJz/Gxua/36Ct//CwsL/p6en/6ampv+lpaX/pKSk/6Ojo/+hoaH/oKCg/5+f - n/+fn5//np6e/52dnf+dnZ3/nJyc/5ubm/+ampr/jo6O/3R0dP9ISEjPAAAARQAAABoAAAAEAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAnExMTa1paWvZ3d3f/i4uL/5GR - kf+SkpL/kpKS/5OTk/+Tk5P/lJSU/5WVlf+Wlpb/lpaW/5eXl/+ZmZn/mpqa/5qamv+bm5v/nJyc/52d - nf+enp7/iIqf/xobjv8bHJv/HByd/xwcoP8dHKP/HRyk/x4dpv8fHar/IB2s/yAdr/8hHrD/Ih+0/yMf - t/8jH7r/JCC8/yUhvv8mIcL/WlnM/+Xl5f/Z2dn/0dHR/9XV1f/Z2dn/3Nzc/+Hh4f/l5eX/6Ojo/+zs - 7P/w8PD/9PT0//b29v/6+vr/+/v7//7+/v/////////////////+/v7//Pz8//v7+//5+fn/9vb2//Ly - 8v/w8PD/7Ozs/+jo6P/l5eX/4eHh/93d3f/b29v/19fX/9TU1P+EhK3/IB6B/yEelf8kIK//JSC7/yQg - u/8jILf/IyC1/yIfs/8hH6//IB6t/yAeqv8fHqn/Hh2l/x0co/8cHaH/HByd/xwcnP8bG5r/ICOZ/7q7 - yf+tra3/pKSk/6Ojo/+hoaH/oKCg/5+fn/+fn5//np6e/52dnf+cnJz/nJyc/5ubm/+ampr/mpqa/5mZ - mf+Tk5P/fX19/19fX/YTExNrAAAAJwAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAAEgAAADczMzOoaWlp/4GBgf+Ojo7/kJCQ/5GRkf+RkZH/kpKS/5KSkv+Tk5P/k5OT/5SU - lP+VlZX/lZWV/5aWlv+Xl5f/mZmZ/5qamv+ampr/m5ub/5ycnP+Dg53/GhuP/xscm/8cHJ3/HByg/x0c - ov8dHKT/Hh2m/x8dqv8gHaz/IB2u/yEesP8iH7T/Ix+3/yMfuv8kH7z/JSC+/yYhwv8mIcT/fHvU/+Xl - 5f/a2tr/09PT/9bW1v/a2tr/39/f/+Li4v/n5+f/6+vr/+/v7//y8vL/9vb2//n5+f/7+/v//v7+//// - //////////////7+/v/8/Pz/+vr6//f39//19fX/8fHx/+/v7//r6+v/5+fn/+Tk5P/g4OD/3Nzc/9nZ - 2f/V1dX/0dHR/87Ozv+Ojq//IyCC/yEel/8kIK//JCC4/yMgt/8iILT/Ih+z/yEer/8gHa3/IB6q/x8d - p/8eHKX/HRyj/xwdof8cHJ3/HByb/xsbmv8aG5j/VVip/7+/v/+hoaH/oKCg/5+fn/+fn5//np6e/52d - nf+cnJz/nJyc/5ubm/+ampr/mpqa/5mZmf+Xl5f/l5eX/5SUlP+Hh4f/bm5u/zY2NqgAAAA3AAAAEgAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAcAAAASUxMTN1xcXH/hoaG/4yM - jP+Pj4//j4+P/5CQkP+QkJD/kZGR/5GRkf+SkpL/kpKS/5OTk/+UlJT/lJSU/5WVlf+Wlpb/l5eX/5mZ - mf+ampr/mpqa/25xjv8XFor/GBeW/xgXmP8YGJn/GRmc/xoYn/8bGaH/Gxmk/xwapv8dGar/Hhqs/x8c - rv8gG7L/IBy0/yEct/8iHrr/Ix29/yQev/8lH8P/d3fF/8vLy//Pz8//1NTU/9fX1//c3Nz/4eHh/+Xl - 5f/q6ur/7e3t//Hx8f/19fX/+fn5//v7+//+/v7//////////////////v7+//z8/P/6+vr/9/f3//T0 - 9P/w8PD/7Ozs/+jo6P/l5eX/4eHh/93d3f/a2tr/1dXV/9HR0f/Ozs7/y8vL/8jIyP+Fhaj/HhuB/yEd - nP8jILP/IyC3/yIftP8hHrL/IB6v/yAdrf8fHqr/Hh2n/x4cpf8dHKP/HB2h/xwcnf8cHJv/GxuZ/xob - mP8cHJf/p6rB/6Wlpf+enp7/np6e/52dnf+cnJz/m5ub/5ubm/+ampr/mZmZ/5mZmf+Xl5f/l5eX/5aW - lv+VlZX/lJSU/4uLi/92dnb/UFBQ3QAAAEkAAAAcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAACQAAACcWFhZwYGBg+3l5ef+IiIj/jIyM/46Ojv+Ojo7/j4+P/4+Pj/+Pj4//kJCQ/5CQ - kP+RkZH/kpKS/5KSkv+Tk5P/k5OT/5SUlP+VlZX/lpaW/5eXl/+ZmZn/a2yM/xYWiv8YF5X/GBeX/xgX - mf8ZF5z/Ghif/xsZof8bGaP/HBql/x0Zqf8dGqv/Hhuu/yAbsv8gHLT/IRy3/yIduv8jHb3/Ix6//yUe - w/8mH8X/eXjG/83Nzf/Q0ND/1dXV/9ra2v/f39//4uLi/+fn5//s7Oz/8PDw//T09P/39/f/+/v7//z8 - /P/////////////////+/v7/+/v7//n5+f/29vb/8vLy/+/v7//r6+v/5+fn/+Li4v/f39//29vb/9bW - 1v/T09P/z8/P/8vLy//IyMj/xMTE/8HBwf9naJr/HhuF/yEeo/8iH7P/Ih+0/yEesv8gHq//IB2t/x8e - qv8eHaf/HRyk/x0co/8cHaH/HByd/xscm/8aG5n/GhuY/xoal/9MUKL/tra2/52dnf+cnJz/m5ub/5qa - mv+ampr/mZmZ/5eXl/+Xl5f/lpaW/5aWlv+VlZX/lZWV/5SUlP+UlJT/j4+P/35+fv9kZGT7GRkZcAAA - ACcAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAQAAAAMzk5Oapra2v/gICA/4qK - iv+Li4v/i4uL/4yMjP+MjIz/jo6O/46Ojv+Pj4//j4+P/5CQkP+QkJD/kZGR/5GRkf+SkpL/k5OT/5OT - k/+UlJT/lZWV/5aWlv9iZIr/FhaK/xcXlf8YF5f/GBeZ/xkYnP8ZF53/Gxig/xsYo/8cGaX/HRmp/x0a - q/8eG67/Hxqy/yAbtP8hHLf/Ih26/yMcvf8jHb//JB7D/yYfxf8nH8f/fn3H/87Ozv/R0dH/1tbW/9vb - 2//g4OD/5eXl/+rq6v/v7+//8vLy//f39//6+vr//Pz8//7+/v////////////7+/v/7+/v/+fn5//X1 - 9f/x8fH/7e3t/+jo6P/l5eX/4ODg/9zc3P/X19f/1NTU/8/Pz//Ly8v/yMjI/8TExP/BwcH/vr6+/7u7 - u/8/Poj/HxyN/yEfqv8iH7L/IR6y/yAerv8gHaz/Hx6q/x4dp/8dHKT/HRyi/xwdof8cHJ3/Gxyb/xob - mf8aG5f/GhuW/xock/+vscD/nZ2d/5qamv+ZmZn/mZmZ/5eXl/+Wlpb/lpaW/5WVlf+VlZX/lJSU/5SU - lP+Tk5P/k5OT/5KSkv+RkZH/hoaG/3BwcP88PDyqAAAANAAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAwAAABcAAABBSkpK0nFxcf+Dg4P/ioqK/4qKiv+Kior/i4uL/4uLi/+Li4v/jIyM/4yM - jP+Ojo7/jo6O/4+Pj/+Pj4//kJCQ/5CQkP+RkZH/kpKS/5KSkv+Tk5P/lJSU/11ghv8WFoj/FxeR/xcX - kf8XF5P/GBeV/xkXl/8aGJn/Gxec/xsYn/8cGaL/HRqj/x0apf8eGqn/Hxur/yAbrv8gHK//Ihyy/yId - s/8jHrb/JB63/yUduv8mH73/goHE/8/Pz//U1NT/2dnZ/93d3f/i4uL/6Ojo/+3t7f/x8fH/9vb2//r6 - +v/8/Pz//v7+/////////////v7+//v7+//39/f/9PT0//Dw8P/r6+v/5+fn/+Li4v/d3d3/2dnZ/9XV - 1f/Q0ND/zc3N/8jIyP/ExMT/wcHB/729vf+7u7v/t7e3/6Skr/8lJH//IB2Z/yEerv8hHrL/IB6u/yAd - rP8fHqr/Hh2n/x0cpP8dHKL/HB2g/xwcnf8bHJv/GhuZ/xobl/8aG5b/GRuV/19jpv+np6f/l5eX/5eX - l/+Wlpb/lZWV/5WVlf+UlJT/lJSU/5OTk/+Tk5P/kpKS/5KSkv+RkZH/kZGR/5GRkf+JiYn/dnZ2/01N - TdMAAABBAAAAFwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAHxAQEF5ZWVnwdXV1/4SE - hP+JiYn/iYmJ/4mJif+Kior/ioqK/4qKiv+Li4v/i4uL/4uLi/+MjIz/jIyM/46Ojv+Ojo7/j4+P/4+P - j/+QkJD/kZGR/5GRkf+SkpL/V1mA/xUWeP8WFn7/FhZ9/xYWff8XF37/GBeB/xgXgv8YF4X/GReG/xoY - if8bGYr/GxqM/xwZjv8dGpD/HRqU/x4blf8fGpT/IBuU/yAclv8gHJj/IhyZ/yIem/8jHZ//goK4/9DQ - 0P/V1dX/2tra/+Dg4P/m5ub/6+vr//Dw8P/19fX/+fn5//z8/P/+/v7////////////8/Pz/+vr6//b2 - 9v/y8vL/7+/v/+rq6v/l5eX/4ODg/9vb2//W1tb/0dHR/83Nzf/Jycn/xMTE/8HBwf+9vb3/urq6/7e3 - t/+0tLT/srKy/3N1mP8cGoX/IR6k/yEesP8gHq7/IB2s/x8dqf8eHaf/HRyk/x0bov8cHKD/HBud/xsb - m/8aGpn/GhqX/xoalv8ZGpT/ISSS/7Cytf+VlZX/lZWV/5SUlP+UlJT/k5OT/5OTk/+SkpL/kpKS/5GR - kf+RkZH/kJCQ/5CQkP+QkJD/j4+P/4qKiv97e3v/XFxc8RAQEF4AAAAgAAAABgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAoAAAApJiYmhGhoaP97e3v/hYWF/4iIiP+IiIj/iIiI/4iIiP+JiYn/iYmJ/4mJ - if+Kior/ioqK/4uLi/+Li4v/i4uL/4yMjP+MjIz/jo6O/46Ojv+Pj4//kJCQ/5CQkP9QUnj/FBVh/xQW - ZP8VFmT/FRVl/xYWZv8WFmf/FhZp/xcWa/8XFmz/GBdu/xgXb/8YGHH/Ghhz/xsYdf8bGHf/Gxp3/xwa - eP8dGnj/HRp6/x0bfP8fG33/IByA/yAcgv8iHoX/iomx/9HR0f/X19f/3Nzc/+Li4v/o6Oj/7+/v//T0 - 9P/39/f/+/v7//7+/v////////////z8/P/6+vr/9vb2//Hx8f/s7Oz/5+fn/+Hh4f/c3Nz/19fX/9PT - 0//Ozs7/ycnJ/8TExP/BwcH/vb29/7q6uv+2trb/s7Oz/7CwsP+urq7/rKys/zU2g/8eG5T/IR6q/yAd - rv8gHaz/Hx2p/x4cpv8dG6T/HRui/xwcoP8cG5z/Gxub/xoamf8aGpf/GhqW/xkalP8YGpH/h4qw/5WV - lf+Tk5P/k5OT/5KSkv+SkpL/kZGR/5GRkf+QkJD/kJCQ/4+Pj/+Pj4//j4+P/46Ojv+Ojo7/i4uL/4CA - gP9sbGz/JiYmhAAAACkAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAADwAAADI7OzuwbW1t/35+ - fv+FhYX/h4eH/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iIiI/4mJif+JiYn/iYmJ/4qKiv+Kior/ioqK/4uL - i/+Li4v/jIyM/4yMjP+Ojo7/jo6O/1pbef8mKWP/Jylk/zM1av8/QXD/P0Jx/0BDcv9BQ3P/QkN1/0ND - dv9ERHj/RUV5/0ZGe/9HR33/R0l+/0hKgf9KS4L/Y2KO/2pqkv9ra5X/bW2X/3Bwmv9ycpz/dnWh/3l5 - pP9/fqr/yMjK/9PT0//Z2dn/4ODg/+bm5v/s7Oz/8vLy//f39//7+/v//v7+///////+/v7//Pz8//n5 - +f/09PT/7+/v/+rq6v/k5OT/39/f/9nZ2f/T09P/zs7O/8nJyf/ExMT/v7+//7y8vP+4uLj/tbW1/7Ky - sv+vr6//ra2t/6urq/+oqKj/hYaa/xwagv8gHaH/IB2t/x8drP8fHan/Hhym/x0bpP8dG6L/HByg/xwb - nP8bG5v/GhqZ/xoal/8aGpb/GRqU/xgak/9KTpv/np6e/5GRkf+RkZH/kJCQ/5CQkP+QkJD/j4+P/4+P - j/+Ojo7/jo6O/46Ojv+MjIz/jIyM/4yMjP+Kior/hISE/3Fxcf8+Pj6wAAAAMgAAAA8AAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAUAAAAPE1NTdVxcXH/gICA/4aGhv+Ghob/hoaG/4aGhv+Ghob/h4eH/4eH - h/+Hh4f/h4eH/4iIiP+IiIj/iIiI/4mJif+JiYn/iYmJ/4qKiv+Kior/i4uL/4uLi/+MjIz/jIyM/46O - jv+Pj4//j4+P/5CQkP+RkZH/kpKS/5OTk/+Tk5P/lZWV/5aWlv+Xl5f/mpqa/5ubm/+dnZ3/n5+f/6Gh - of+kpKT/pqam/6mpqf+tra3/sLCw/7S0tP+4uLj/vb29/8PDw//IyMj/z8/P/9XV1f/c3Nz/4uLi/+rq - 6v/w8PD/9vb2//v7+//+/v7///////7+/v/7+/v/9/f3//Ly8v/t7e3/5+fn/+Hh4f/b29v/1dXV/8/P - z//Jycn/xMTE/7+/v/+8vLz/t7e3/7S0tP+wsLD/rq6u/6urq/+oqKj/pqam/6Wlpf+jo6P/PDyB/x0b - lf8fHan/Hx2s/x4dqf8dHKb/HRuj/x0bov8cHKD/HBuc/xsbmv8aGpn/GhqX/xoalv8ZGpT/GBqT/x4f - jP+lpaf/kJCQ/4+Pj/+Pj4//j4+P/46Ojv+Ojo7/jIyM/4yMjP+MjIz/i4uL/4uLi/+Li4v/i4uL/4qK - iv+FhYX/dXV1/1JSUtUAAAA8AAAAFAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABoDAwNKV1dX63V1 - df+BgYH/hYWF/4WFhf+FhYX/hYWF/4WFhf+Ghob/hoaG/4aGhv+Ghob/h4eH/4eHh/+Hh4f/h4eH/4iI - iP+IiIj/iIiI/4mJif+JiYn/ioqK/4qKiv+Li4v/i4uL/4yMjP+MjIz/jo6O/4+Pj/+Pj4//kJCQ/5GR - kf+SkpL/k5OT/5SUlP+Wlpb/l5eX/5qamv+bm5v/nZ2d/5+fn/+hoaH/paWl/6enp/+rq6v/r6+v/7Oz - s/+4uLj/vb29/8PDw//Jycn/0NDQ/9fX1//f39//5ubm/+3t7f/19fX/+vr6//7+/v///////v7+//v7 - +//29vb/8fHx/+rq6v/k5OT/3Nzc/9bW1v/Q0ND/ysrK/8TExP+/v7//u7u7/7a2tv+zs7P/r6+v/62t - rf+pqan/p6en/6Wlpf+jo6P/oKCg/5+fn/9+fpL/GxmF/x4dov8fHav/Hh2p/x0cpv8dG6P/HBui/xsc - oP8bG5z/Ghua/xoamP8aGpf/GhqW/xkalP8YGpP/GBqM/4iLpv+Ojo7/jo6O/4yMjP+MjIz/jIyM/4uL - i/+Li4v/i4uL/4qKiv+Kior/ioqK/4qKiv+JiYn/iYmJ/4aGhv95eXn/W1tb6wMDA0oAAAAaAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAGAAAAIBoaGmlfX1/2eHh4/4KCgv+EhIT/hISE/4SEhP+EhIT/hISE/4WF - hf+FhYX/hYWF/4WFhf+FhYX/hoaG/4aGhv+Ghob/hoaG/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iIiI/4mJ - if+JiYn/ioqK/4qKiv+Li4v/jIyM/4yMjP+Ojo7/j4+P/5CQkP+RkZH/kpKS/5OTk/+UlJT/lZWV/5eX - l/+ampr/m5ub/52dnf+goKD/o6Oj/6ampv+pqan/rq6u/7Ozs/+3t7f/vb29/8TExP/Kysr/09PT/9ra - 2v/i4uL/6+vr//Ly8v/5+fn//v7+///////+/v7/+vr6//X19f/v7+//5+fn/+Dg4P/Z2dn/0dHR/8rK - yv/ExMT/vr6+/7q6uv+1tbX/srKy/66urv+rq6v/qKio/6Wlpf+jo6P/oKCg/5+fn/+dnZ3/nJyc/5qa - mv8wMX//Hh2Y/x8dqf8eHan/HRym/x0bo/8cHKH/Gxyg/xsbnP8aG5r/GhqY/xoal/8aGpb/GRqU/xga - k/8YGo7/Y2ie/4yMjP+Li4v/i4uL/4uLi/+Kior/ioqK/4qKiv+JiYn/iYmJ/4mJif+JiYn/iIiI/4iI - iP+IiIj/hoaG/3x8fP9iYmL2HR0daQAAACAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAlLS0th2ho - aP57e3v/goKC/4ODg/+Dg4P/g4OD/4ODg/+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+FhYX/hYWF/4WF - hf+FhYX/hoaG/4aGhv+Ghob/hoaG/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iYmJ/4mJif+Kior/ioqK/4uL - i/+MjIz/jIyM/46Ojv+Pj4//kJCQ/5GRkf+SkpL/k5OT/5WVlf+Xl5f/mpqa/5ycnP+enp7/oaGh/6Sk - pP+oqKj/ra2t/7Kysv+3t7f/vb29/8TExP/Nzc3/1dXV/9/f3//n5+f/8PDw//f39//8/Pz///////7+ - /v/5+fn/8vLy/+vr6//i4uL/29vb/9PT0//Ly8v/xMTE/76+vv+4uLj/tLS0/7CwsP+srKz/qKio/6am - pv+jo6P/oKCg/56env+dnZ3/m5ub/5qamv+Xl5f/lpaW/2RliP8cGoz/Hxyk/x4cp/8dHKb/HRuj/xwc - of8bHJ//Gxuc/xobmv8aGpj/GRuW/xkalv8YGpT/GBqT/xgZj/9ARZT/jIyM/4qKiv+JiYn/iYmJ/4mJ - if+JiYn/iIiI/4iIiP+IiIj/iIiI/4eHh/+Hh4f/h4eH/4eHh/+Ghob/gICA/2pqav4tLS2HAAAAJQAA - AAgAAAAAAAAAAAAAAAAAAAAAAAAACgAAACs4ODidb29v/3x8fP+BgYH/goKC/4KCgv+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4SEhP+EhIT/hISE/4SEhP+EhIT/hYWF/4WFhf+FhYX/hYWF/4aG - hv+Ghob/hoaG/4eHh/+Hh4f/h4eH/4iIiP+IiIj/iYmJ/4mJif+Kior/i4uL/4uLi/+MjIz/jo6O/4+P - j/+QkJD/kpKS/5OTk/+VlZX/lpaW/5qamv+cnJz/n5+f/6Ojo/+mpqb/q6ur/7CwsP+2trb/vb29/8XF - xf/Pz8//2dnZ/+Li4v/t7e3/9vb2//z8/P///////v7+//f39//w8PD/5+fn/93d3f/V1dX/zc3N/8TE - xP+9vb3/t7e3/7Ozs/+urq7/qamp/6ampv+kpKT/oKCg/56env+cnJz/m5ub/5mZmf+Xl5f/lZWV/5SU - lP+Tk5P/jo6R/x8fgv8eHaD/Hhyn/x0bpf8dG6P/HBuh/xsbn/8bG5z/Ghqa/xoamP8ZG5b/GRqV/xga - lP8XGpP/FxmQ/yQniv+Tk5P/iIiI/4iIiP+IiIj/h4eH/4eHh/+Hh4f/h4eH/4eHh/+Ghob/hoaG/4aG - hv+Ghob/hoaG/4WFhf+BgYH/cnJy/zw8PJ0AAAArAAAACgAAAAAAAAAAAAAAAAAAAAAAAAANAAAALkND - Q7JxcXH/fn5+/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4ODg/+Dg4P/hISE/4SEhP+EhIT/hISE/4WFhf+FhYX/hYWF/4WFhf+Ghob/hoaG/4aG - hv+Hh4f/h4eH/4iIiP+IiIj/iYmJ/4qKiv+Li4v/i4uL/4yMjP+Ojo7/kJCQ/5GRkf+SkpL/lJSU/5aW - lv+ampr/nJyc/5+fn/+kpKT/qKio/66urv+1tbX/vb29/8fHx//R0dH/3Nzc/+jo6P/09PT/+/v7//// - ///8/Pz/9vb2/+zs7P/h4eH/19fX/87Ozv/ExMT/vb29/7a2tv+wsLD/rKys/6enp/+kpKT/oKCg/56e - nv+cnJz/mpqa/5eXl/+Wlpb/lJSU/5OTk/+SkpL/kZGR/5CQkP+Pj4//Pz9+/x0bmP8dHKb/HRul/x0b - o/8cG6H/Gxuf/xsanP8aGpr/GhqY/xkalv8ZGpX/GBqU/xcak/8XGZD/FxmF/5GSlv+Hh4f/h4eH/4aG - hv+Ghob/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WFhf+FhYX/hYWF/4KCgv9zc3P/REREsgAA - AC4AAAANAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAzS0tLx3Jycv99fX3/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4SEhP+EhIT/hISE/4SEhP+EhIT/hYWF/4WFhf+Ghob/hoaG/4aGhv+Hh4f/h4eH/4iI - iP+JiYn/iYmJ/4qKiv+Li4v/jIyM/4+Pj/+QkJD/kpKS/5OTk/+Wlpb/mpqa/52dnf+hoaH/pqam/62t - rf+0tLT/vb29/8jIyP/V1dX/4uLi//Dw8P/7+/v///////v7+//y8vL/5+fn/9vb2//Pz8//xMTE/7y8 - vP+0tLT/rq6u/6ioqP+lpaX/oKCg/52dnf+bm5v/mZmZ/5aWlv+VlZX/k5OT/5KSkv+RkZH/kJCQ/4+P - j/+Ojo7/jIyM/4yMjP9kZIL/GxqP/x0bo/8dG6X/HBui/xwbof8bG5//Gxqb/xoamv8aGpj/GRqW/xkZ - lf8YGZP/FxmT/xcZkP8XGYb/fX6R/4WFhf+FhYX/hYWF/4WFhf+FhYX/hYWF/4WFhf+EhIT/hISE/4SE - hP+EhIT/hISE/4SEhP+EhIT/gYGB/3V1df9MTEzHAAAAMwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAEAAA - ADZSUlLVdHR0/35+fv+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4GBgf+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/hISE/4SEhP+EhIT/hISE/4WFhf+FhYX/hoaG/4aGhv+Hh4f/h4eH/4iIiP+JiYn/ioqK/4uL - i/+MjIz/j4+P/5GRkf+Tk5P/lZWV/5qamv+dnZ3/o6Oj/6mpqf+zs7P/vb29/8rKyv/a2tr/6+vr//n5 - +f//////+vr6/+/v7//g4OD/0dHR/8TExP+6urr/srKy/6urq/+lpaX/oKCg/52dnf+ampr/l5eX/5WV - lf+Tk5P/kpKS/5CQkP+Pj4//jo6O/4yMjP+MjIz/i4uL/4qKiv+Kior/iYmJ/4WFiP8dHIb/HRyf/x0b - pf8cG6L/Gxuh/xsbn/8bGpv/Ghqa/xoamP8ZGpb/GRmV/xgZk/8XGZH/FxiQ/xcZh/9pbIz/hISE/4SE - hP+EhIT/hISE/4SEhP+EhIT/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+BgYH/dnZ2/1VV - VdQAAAA2AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAOVhYWOB2dnb/fX19/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4OD - g/+EhIT/hISE/4SEhP+FhYX/hYWF/4aGhv+Hh4f/h4eH/4iIiP+JiYn/i4uL/4yMjP+Pj4//kpKS/5WV - lf+ampr/n5+f/6ampv+wsLD/vb29/8/Pz//i4uL/9vb2///////39/f/5+fn/9XV1f/ExMT/t7e3/66u - rv+mpqb/oKCg/5ycnP+ZmZn/lZWV/5OTk/+RkZH/kJCQ/4+Pj/+MjIz/i4uL/4uLi/+Kior/iYmJ/4mJ - if+IiIj/h4eH/4eHh/+Hh4f/hoaG/zI0gP8cG47/GxuU/xsakf8aGpD/GhqO/xoai/8aGor/GRmJ/xgZ - h/8YGYb/GBmE/xcZhP8XGIL/Fhl7/2Rmiv+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+CgoL/goKC/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4CAgP94eHj/WVlZ4AAAADgAAAASAAAAAAAAAAAAAAAAAAAAAAAA - ABMAAAA6XV1d63d3d/9+fn7/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+CgoL/goKC/4KCgv+CgoL/goKC/4ODg/+Dg4P/g4OD/4SE - hP+EhIT/hYWF/4aGhv+Ghob/h4eH/4mJif+Kior/jIyM/5CQkP+Tk5P/mpqa/6Ghof+tra3/vb29/9XV - 1f/w8PD///////Ly8v/b29v/xMTE/7S0tP+oqKj/oKCg/5ubm/+Wlpb/k5OT/5GRkf+Pj4//jIyM/4uL - i/+Kior/iYmJ/4iIiP+IiIj/h4eH/4eHh/+Ghob/hoaG/4WFhf+FhYX/hYWF/4SEhP+EhIT/RUV0/xYW - bP8VFW3/FRVr/xUVav8UFWn/FBRn/xQUZv8TE2X/EhNj/xIUYv8SFGH/EhRg/xITYP8RE13/S05u/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gICA/3h4 - eP9fX1/rAAAAOgAAABMAAAAAAAAAAAAAAAAAAAAAAAAAEwAAADxhYWHxeHh4/319ff9+fn7/fn5+/35+ - fv9+fn7/fn5+/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4KCgv+CgoL/goKC/4ODg/+Dg4P/hISE/4WF - hf+Ghob/h4eH/4mJif+MjIz/kpKS/5qamv+mpqb/vb29/+Li4v//////5+fn/8TExP+urq7/oKCg/5mZ - mf+Tk5P/kJCQ/4yMjP+Li4v/iYmJ/4iIiP+Hh4f/hoaG/4aGhv+FhYX/hYWF/4SEhP+EhIT/hISE/4OD - g/+Dg4P/g4OD/4ODg/+Dg4P/goKC/4KCgv9cW3f/FBVf/xQVXv8UFFz/ExRb/xMUWv8TE1n/ExNY/xIT - V/8SE1b/EhNV/xETVP8RE1P/ERNS/xETUv9FR2n/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP9+fn7/eXl5/2JiYvAAAAA8AAAAEwAAAAAAAAAAAAAAAAAA - AAAAAAATAAAAPWZmZvV5eXn/fX19/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+BgYH/gYGB/4GBgf+CgoL/goKC/4ODg/+FhYX/h4eH/4yM - jP+ampr/vb29///////ExMT/oKCg/5OTk/+MjIz/iYmJ/4eHh/+Ghob/hYWF/4SEhP+Dg4P/g4OD/4OD - g/+CgoL/goKC/4KCgv+CgoL/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/35+ - fv96enr/ZGRk8wAAAD0AAAATAAAAAAAAAAAAAAAAAAAAAAAAABMAAAA9Z2dn+Ht7e/99fX3/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv+bm5v/vLy8/7y8 - vP+8vLz/vLy8/7y8vP+8vLz/vLy8/7y8vP+8vLz/vLy8/7y8vP+8vLz/vLy8/7y8vP+SkpL/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fX19/3p6ev9mZmb2AAAAPQAAABMAAAAAAAAAAAAA - AAAAAAAAAAAAEwAAADxoaGj4fHx8/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/2pri/9OUpr/TlKg/05SoP9OU6L/TlOi/09To/9PVKT/T1Sl/1BU - pf9RU6f/UVOo/1FUq/9SVKz/UlWm/4GBk/9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/gICA/4CAgP+AgID/gICA/4GBgf+CgoL/g4OD/4WF - hf+Kior/lpaW/7u7u///////w8PD/6CgoP+Tk5P/jIyM/4mJif+Hh4f/hoaG/4WFhf+EhIT/g4OD/4OD - g/+Dg4P/goKC/4KCgv+CgoL/goKC/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/fHx8/2pqavgAAAA8AAAAEwAAAAAAAAAAAAAAAAAAAAAAAAATAAAAOmlpafV8fHz/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/UFOB/xcY - hv8XGY7/FxiP/xcZkf8YGZP/GBmV/xgalv8ZGpf/GhqZ/xsam/8bGpz/Gxug/xwbov8cG5z/b3CW/35+ - fv9+fn7/fn5+/35+fv+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4GBgf+BgYH/gYGB/4KC - gv+CgoL/g4OD/4SEhP+FhYX/h4eH/4qKiv+Pj4//lpaW/6Ojo/+7u7v/4uLi///////l5eX/w8PD/62t - rf+goKD/mZmZ/5OTk/+Pj4//jIyM/4qKiv+JiYn/iIiI/4eHh/+Ghob/hoaG/4WFhf+FhYX/hISE/4SE - hP+EhIT/g4OD/4ODg/+Dg4P/g4OD/4ODg/+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP99fX3/ampq9QAAADoAAAATAAAAAAAA - AAAAAAAAAAAAAAAAABIAAAA5Z2dn8H19ff+AgID/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+ - fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9QUn7/FxiF/xcZjv8XGI//FxmR/xgZk/8YGZX/GBqW/xka - l/8aGpn/Gxqb/xsanf8bG6D/HBui/xwbn/9naZ7/gICA/4CAgP+AgID/gICA/4CAgP+BgYH/gYGB/4GB - gf+BgYH/goKC/4KCgv+CgoL/g4OD/4ODg/+EhIT/hYWF/4aGhv+IiIj/ioqK/4yMjP+RkZH/lpaW/56e - nv+pqan/u7u7/9XV1f/x8fH///////Hx8f/Z2dn/w8PD/7Ozs/+oqKj/oKCg/5qamv+Wlpb/k5OT/5CQ - kP+Pj4//jIyM/4uLi/+Kior/iYmJ/4iIiP+Hh4f/h4eH/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4SE - hP+EhIT/hISE/4SEhP+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4KCgv+CgoL/goKC/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GB - gf+BgYH/goKC/4CAgP9paWnwAAAAOQAAABIAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADZmZmbqfX19/4CA - gP9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/35+fv9+fn7/fn5+/4CAgP+AgID/gICA/1RW - e/8XGIP/FxiP/xcYj/8XGZH/GBmT/xkZlf8ZGpb/GRqX/xoamf8bGpv/Gxqd/xsboP8cG6L/HRui/1hZ - ov+BgYH/gYGB/4GBgf+CgoL/goKC/4KCgv+CgoL/g4OD/4ODg/+EhIT/hISE/4WFhf+Ghob/h4eH/4iI - iP+Kior/jIyM/4+Pj/+SkpL/lpaW/5ycnP+jo6P/rq6u/7u7u//Ozs7/4uLi//b29v//////9vb2/+Xl - 5f/T09P/w8PD/7a2tv+tra3/pqam/6CgoP+cnJz/mZmZ/5WVlf+Tk5P/kZGR/4+Pj/+Ojo7/jIyM/4uL - i/+Kior/ioqK/4mJif+IiIj/iIiI/4eHh/+Hh4f/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/goKC/4KCgv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+Dg4P/gYGB/2lpaekAAAA2AAAAEAAA - AAAAAAAAAAAAAAAAAAAAAAAPAAAAM2FhYd59fX3/gYGB/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CA - gP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/WVt3/xcYgf8XGY7/FxiP/xcZkf8YGZP/GRmV/xka - lv8ZGpf/GhqZ/xsam/8bGp3/Gxug/xwbov8dG6T/P0Ch/4yMjP+CgoL/g4OD/4ODg/+EhIT/hISE/4WF - hf+FhYX/hoaG/4eHh/+IiIj/iIiI/4qKiv+Li4v/jo6O/5CQkP+Tk5P/lpaW/5ubm/+goKD/p6en/7Cw - sP+7u7v/ycnJ/9ra2v/r6+v/+vr6///////5+fn/7Ozs/93d3f/Pz8//w8PD/7i4uP+wsLD/qamp/6Wl - pf+goKD/nJyc/5qamv+Wlpb/lJSU/5OTk/+RkZH/kJCQ/4+Pj/+Ojo7/jIyM/4uLi/+Li4v/ioqK/4mJ - if+JiYn/iIiI/4iIiP+IiIj/h4eH/4eHh/+Hh4f/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+FhYX/hISE/4SEhP+EhIT/hISE/4SEhP+EhIT/hISE/4ODg/+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4WFhf+CgoL/ZGRk3QAAADIAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAuX19f0X5+ - fv+CgoL/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gICA/4CAgP+AgID/gYGB/4GB - gf9oaHn/Fhh7/xcZjf8XGI//FxmR/xgZk/8ZGZX/GRqW/xoamP8aGpn/Gxqb/xsanf8bG6D/HBui/x0b - pP8mJqD/n5+f/4SEhP+FhYX/hYWF/4aGhv+Ghob/h4eH/4iIiP+JiYn/ioqK/4uLi/+MjIz/j4+P/5GR - kf+Tk5P/lpaW/5qamv+enp7/o6Oj/6mpqf+ysrL/u7u7/8fHx//V1dX/4uLi//Hx8f/7+/v///////v7 - +//x8fH/5eXl/9nZ2f/Ozs7/w8PD/7q6uv+zs7P/ra2t/6ioqP+kpKT/oKCg/52dnf+ampr/mZmZ/5aW - lv+UlJT/k5OT/5KSkv+QkJD/j4+P/4+Pj/+Ojo7/jIyM/4uLi/+Li4v/ioqK/4qKiv+JiYn/iYmJ/4iI - iP+IiIj/iIiI/4eHh/+Hh4f/h4eH/4eHh/+Ghob/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+FhYX/hYWF/4SEhP+EhIT/hISE/4SEhP+EhIT/hISE/4SEhP+EhIT/hoaG/4KCgv9gYGDRAAAALgAA - AA0AAAAAAAAAAAAAAAAAAAAAAAAACgAAACpZWVnCfn5+/4KCgv+AgID/gICA/4CAgP+AgID/gYGB/4GB - gf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/3h5fv8VF3X/FxmL/xcYkP8XGZH/GBmT/xkZ - lf8ZGpb/GhqY/xoamf8bGpv/Gxqd/xsboP8cG6L/HRuk/x0bo/+Ula3/hoaG/4eHh/+Hh4f/iIiI/4mJ - if+Kior/i4uL/4yMjP+Ojo7/kJCQ/5GRkf+Tk5P/lpaW/5qamv+dnZ3/oaGh/6ampv+srKz/s7Oz/7u7 - u//FxcX/0NDQ/9zc3P/q6ur/9fX1//z8/P//////+/v7//X19f/r6+v/4ODg/9XV1f/Ly8v/w8PD/7y8 - vP+1tbX/r6+v/6urq/+mpqb/o6Oj/6CgoP+dnZ3/m5ub/5mZmf+Xl5f/lZWV/5SUlP+Tk5P/kpKS/5GR - kf+QkJD/j4+P/46Ojv+Ojo7/jIyM/4yMjP+Li4v/i4uL/4qKiv+Kior/iYmJ/4mJif+JiYn/iIiI/4iI - iP+IiIj/h4eH/4eHh/+Hh4f/h4eH/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4WFhf+FhYX/hYWF/4WF - hf+FhYX/hYWF/4WFhf+Ghob/g4OD/1xcXMIAAAArAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAJVJS - Uqt+fn7/g4OD/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4GBgf+BgYH/gYGB/4KCgv+CgoL/goKC/4KC - gv+CgoL/goKC/x4hc/8XGIj/FxiQ/xcZkf8YGZP/GRmV/xkalv8aGpj/GhqZ/xsam/8bGp3/Gxug/xwb - ov8dG6T/HRum/2psrv+RkZH/iYmJ/4qKiv+Li4v/jIyM/46Ojv+Pj4//kJCQ/5KSkv+UlJT/lpaW/5mZ - mf+cnJz/n5+f/6Ojo/+oqKj/rq6u/7S0tP+7u7v/xMTE/87Ozv/X19f/4uLi/+3t7f/29vb//Pz8//// - ///8/Pz/9vb2/+/v7//l5eX/3Nzc/9PT0//Kysr/w8PD/7y8vP+2trb/srKy/62trf+pqan/pqam/6Oj - o/+goKD/nZ2d/5ycnP+ampr/mZmZ/5aWlv+VlZX/lJSU/5OTk/+SkpL/kZGR/5CQkP+Pj4//j4+P/46O - jv+Ojo7/jIyM/4yMjP+Li4v/i4uL/4qKiv+Kior/ioqK/4mJif+JiYn/iYmJ/4iIiP+IiIj/iIiI/4iI - iP+Hh4f/h4eH/4eHh/+Hh4f/hoaG/4aGhv+Ghob/hoaG/4aGhv+Ghob/hoaG/4eHh/+Dg4P/VVVVqwAA - ACUAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAfR0dHk35+fv+EhIT/gYGB/4GBgf+BgYH/goKC/4KC - gv+CgoL/goKC/4KCgv+CgoL/goKC/4KCgv+Dg4P/g4OD/4ODg/+Dg4P/MDRy/xcZhP8XGJD/FxmR/xgZ - k/8ZGZX/GRqW/xoamP8aGpr/Gxqb/xsanf8bG6H/HBui/x0bpP8dG6f/OTuo/6mpqf+Li4v/jIyM/46O - jv+Pj4//kZGR/5KSkv+UlJT/lpaW/5mZmf+bm5v/np6e/6Ghof+lpaX/qamp/6+vr/+1tbX/u7u7/8PD - w//Ly8v/1dXV/93d3f/n5+f/8fHx//n5+f/+/v7///////z8/P/39/f/8fHx/+rq6v/h4eH/2dnZ/9HR - 0f/Kysr/w8PD/729vf+3t7f/s7Oz/6+vr/+rq6v/qKio/6Wlpf+jo6P/oKCg/56env+cnJz/mpqa/5mZ - mf+Xl5f/lpaW/5WVlf+UlJT/k5OT/5KSkv+RkZH/kJCQ/5CQkP+Pj4//j4+P/46Ojv+Ojo7/jIyM/4yM - jP+Li4v/i4uL/4qKiv+Kior/ioqK/4mJif+JiYn/iYmJ/4mJif+IiIj/iIiI/4iIiP+IiIj/h4eH/4eH - h/+Hh4f/h4eH/4eHh/+Ghob/iIiI/4SEhP9ISEiTAAAAIAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAwAA - ABk8PDx6fHx8/oaGhv+Dg4P/goKC/4KCgv+CgoL/goKC/4KCgv+Dg4P/g4OD/4ODg/+Dg4P/g4OD/4SE - hP+EhIT/hISE/4SEhP9GSnL/Fhh+/xcYjv8XGZH/GBmT/xkZlf8ZGpb/GhqY/xoamv8bGpv/Gxqd/xwb - of8dG6P/HRuk/x0bp/8eHKf/pKW7/5KSkv+QkJD/kZGR/5OTk/+UlJT/lpaW/5mZmf+bm5v/nZ2d/6Cg - oP+jo6P/p6en/6ysrP+wsLD/tbW1/7u7u//CwsL/ycnJ/9HR0f/a2tr/4uLi/+vr6//09PT/+vr6//7+ - /v///////v7+//n5+f/09PT/7Ozs/+Xl5f/d3d3/1tbW/8/Pz//Jycn/w8PD/729vf+4uLj/tLS0/7Cw - sP+tra3/qamp/6enp/+lpaX/oaGh/6CgoP+enp7/nJyc/5ubm/+ampr/mZmZ/5aWlv+VlZX/lJSU/5SU - lP+Tk5P/kpKS/5KSkv+ZmZn/m5ub/5ubm/+Pj4//jo6O/46Ojv+MjIz/jIyM/4yMjP+Li4v/i4uL/4uL - i/+Kior/ioqK/4qKiv+JiYn/iYmJ/4mJif+JiYn/iIiI/4iIiP+IiIj/iIiI/4mJif+Li4v/goKC/kBA - QHoAAAAaAAAABAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAFCkpKVd2dnb0h4eH/4WFhf+Dg4P/g4OD/4OD - g/+Dg4P/g4OD/4ODg/+EhIT/hISE/4SEhP+EhIT/hYWF/4WFhf+FhYX/hYWF/2Zmev8VF3X/FxqL/xcZ - k/8YGZP/GRqV/xkalv8aGpj/Ghqa/xsanP8bGp3/HBuh/x0bo/8dG6T/Hhun/x4cqv9gYbL/rKys/5OT - k/+UlJT/lpaW/5mZmf+ampr/nJyc/5+fn/+hoaH/paWl/6ioqP+tra3/sLCw/7a2tv+7u7v/wsLC/8jI - yP/Pz8//19fX/9/f3//n5+f/7+/v//X19f/7+/v//v7+///////+/v7/+vr6//X19f/v7+//6Ojo/+Li - 4v/b29v/1dXV/8/Pz//Jycn/w8PD/76+vv+6urr/tbW1/7Kysv+urq7/rKys/6ioqP+mpqb/pKSk/6Gh - of+goKD/oaGh/6ampv+rq6v/ra2t/7S0tP+1tbX/vr6+/76+vv/IyMj/yMjI/8jIyP/Hx8f/uLi4/5GR - kf+QkJD/kJCQ/4+Pj/+Pj4//jo6O/46Ojv+MjIz/jIyM/4yMjP+Li4v/i4uL/4uLi/+Kior/ioqK/4qK - iv+Kior/iYmJ/4mJif+JiYn/i4uL/46Ojv9+fn70KioqWQAAABQAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAOBAQENnJycueIiIj/hoaG/4ODg/+EhIT/hISE/4SEhP+EhIT/hISE/4WFhf+FhYX/hYWF/4WF - hf+Ghob/hoaG/4aGhv+Hh4f/hYWG/xocbf8XGYb/FxqT/xgalP8ZGpX/GRuW/xoamP8aGpr/Gxuc/xsb - nf8cG6H/HRuj/x0bpf8eHKf/Hxyq/yQjq/+5usP/nJyc/5eXl/+ampr/nJyc/56env+goKD/o6Oj/6am - pv+pqan/rq6u/7Kysv+2trb/u7u7/8HBwf/Hx8f/zs7O/9XV1f/b29v/4uLi/+rq6v/x8fH/9vb2//v7 - +//+/v7///////7+/v/7+/v/9vb2//Hx8f/r6+v/5eXl/9/f3//Z2dn/09PT/87Ozv/IyMj/w8PD/76+ - vv+/v7//vb29/8LCwv/BwcH/xcXF/8XFxf/Kysr/zc3N/9DQ0P/Pz8//z8/P/87Ozv/Bwcr/o6TF/6Kj - xP98fbz/e325/2Fjsv9WWa//SEyp/zU5of9VWZr/k5OT/5KSkv+SkpL/kZGR/5CQkP+QkJD/j4+P/4+P - j/+Pj4//jo6O/46Ojv+MjIz/jIyM/4yMjP+Li4v/i4uL/4uLi/+Li4v/ioqK/4qKiv+Ojo7/kJCQ/3h4 - eOcEBAQ2AAAADwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAoaWlpzYmJif+IiIj/hISE/4SE - hP+FhYX/hYWF/4WFhf+FhYX/hoaG/4aGhv+Ghob/h4eH/4eHh/+Hh4f/iIiI/4iIiP+IiIj/NTlw/xcY - gf8YGpD/GBqU/xkalf8ZG5b/GhqY/xobmv8bG5z/Gxuf/xwcof8dG6P/HRyl/x4cp/8fHar/IB2t/2xt - uf+6urr/m5ub/52dnf+fn5//oaGh/6Wlpf+np6f/q6ur/66urv+zs7P/tra2/7u7u//BwcH/x8fH/8vL - y//T09P/2dnZ/+Dg4P/m5ub/7Ozs//Ly8v/39/f//Pz8/////////////v7+//v7+//39/f/8vLy/+3t - 7f/o6Oj/4uLi/9zc3P/X19f/1dXV/9/f3//i4uL/4eHh/9/f3/+5udj/sbHW/5yc0/+Hh87/f3/M/2Fh - xv9gYMT/QUK9/z49uv8sK7X/IB2w/yAdrv8fHaz/Hh2p/x4cpv8dG6T/HRui/xwcoP8cG5z/GxuY/zk8 - kf+VlZX/lJSU/5OTk/+Tk5P/kpKS/5KSkv+RkZH/kZGR/5CQkP+QkJD/j4+P/4+Pj/+Pj4//jo6O/46O - jv+MjIz/jIyM/4yMjP+Li4v/i4uL/4+Pj/+RkZH/bm5uzQAAACgAAAAKAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABgAAAB9VVVWfiYmJ/4qKiv+FhYX/hYWF/4aGhv+Ghob/hoaG/4aGhv+Hh4f/h4eH/4eH - h/+IiIj/iIiI/4iIiP+JiYn/iYmJ/4qKiv9bXHn/FRd0/xgajf8ZGpT/GRqW/xkblv8aGpj/Ghua/xsb - nP8bG5//HByh/x0bo/8dHKX/Hhyp/x8dqv8gHa3/JiWv/7e3yP+srKz/oaGh/6Ojo/+mpqb/qKio/6ys - rP+vr6//s7Oz/7e3t/+7u7v/wcHB/8XFxf/Ly8v/0NDQ/9bW1v/c3Nz/4uLi/+rq6v/v7+//9fX1//n5 - +f/8/Pz////////////+/v7/+/v7//n5+f/19fX/8PDw/+vr6//l5eX/4ODg/9bW2P9WVKD/QD6l/0E9 - u/8pIsb/KiLM/ykhzP8oIcn/JyDG/yYhxP8lIMD/JCC+/yMfvP8jH7r/Ih62/yEes/8hHbD/IB2u/yAd - rP8fHan/Hhym/x0bpP8dG6L/HByg/xwbnP8bG5n/NjmS/5eXl/+Wlpb/lZWV/5WVlf+UlJT/k5OT/5OT - k/+SkpL/kpKS/5GRkf+RkZH/kJCQ/5CQkP+Pj4//j4+P/4+Pj/+Ojo7/jo6O/46Ojv+MjIz/kpKS/5GR - kf9dXV2fAAAAHwAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAFz09PWyJiYn/jIyM/4iI - iP+Ghob/h4eH/4eHh/+Hh4f/iIiI/4iIiP+IiIj/iIiI/4mJif+JiYn/ioqK/4qKiv+Li4v/i4uL/4eI - iv8YGWn/GBqF/xkak/8aGpb/GhqX/xoamP8aG5r/Gxuc/xsbn/8cG6L/HRuj/x0cpf8eHKn/Hx2r/yAd - rf8gHa//VFW5/8vLy/+oqKj/p6en/6mpqf+tra3/sLCw/7S0tP+3t7f/u7u7/7+/v//ExMT/ycnJ/8/P - z//V1dX/2tra/+Dg4P/m5ub/6+vr//Hx8f/29vb/+vr6//z8/P////////////7+/v/8/Pz/+fn5//X1 - 9f/x8fH/7Ozs/+fn5//i4uL/3d3d/6Wkwv8rKIj/Ix6T/ychrf8oIsD/KSLJ/yghyf8nIMb/JiHE/yYg - wP8lIL//JB+8/yMfuv8jH7b/Ih+z/yEesv8gHa7/IB2s/x8dqf8eHKf/HRyk/x0bov8cHKD/HBud/xsb - mv8vMZL/mpqa/5mZmf+Xl5f/lpaW/5aWlv+VlZX/lJSU/5SUlP+Tk5P/k5OT/5KSkv+SkpL/kZGR/5GR - kf+QkJD/kJCQ/5CQkP+Pj4//j4+P/5CQkP+UlJT/kZGR/0FBQW0AAAAXAAAAAwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAQISEhRX5+fu2RkZH/ioqK/4eHh/+IiIj/iIiI/4iIiP+JiYn/iYmJ/4mJ - if+Kior/ioqK/4uLi/+Li4v/jIyM/4yMjP+Ojo7/jo6O/z5Bcf8WGHn/GRmO/xoalv8aGpf/GhqZ/xsb - mv8cG5z/HBuf/x0bov8dG6P/HRyl/x4cqf8fHav/IB2t/yAdr/8hHrL/mJjH/8fHx/+srKz/rq6u/7Cw - sP+0tLT/t7e3/7u7u/+/v7//xMTE/8nJyf/Ozs7/09PT/9fX1//d3d3/4uLi/+jo6P/t7e3/8vLy//b2 - 9v/6+vr//Pz8/////////////v7+//z8/P/6+vr/9vb2//Ly8v/v7+//6urq/+Xl5f/g4OD/3Nzc/7q5 - y/86N47/Ix2N/yUgpP8nIbv/KCLG/ycgxv8mIcT/JiDC/yUgv/8kH7z/Ix+6/yMftv8iH7T/IR6y/yAe - rv8gHaz/Hx6q/x4dp/8dHKT/HRyi/xwdoP8cHJ3/Gxua/yorkP+cnJz/m5ub/5qamv+ZmZn/mZmZ/5eX - l/+Wlpb/lZWV/5WVlf+UlJT/lJSU/5OTk/+Tk5P/kpKS/5KSkv+RkZH/kZGR/5GRkf+QkJD/k5OT/5eX - l/+GhobtISEhRQAAABAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAobW1txpGR - kf+Ojo7/iIiI/4mJif+JiYn/iYmJ/4qKiv+Kior/i4uL/4uLi/+Li4v/jIyM/46Ojv+Ojo7/j4+P/4+P - j/+QkJD/dXaF/xQWav8ZGoj/GhqV/xoal/8aGpn/Gxua/xwbnP8cG5//HRui/x0bpP8eHKX/Hxyp/yAd - q/8gHK7/IR2w/yEes/8uLbb/w8TR/8XFxf+ysrL/tLS0/7e3t/+7u7v/v7+//8PDw//IyMj/zc3N/9HR - 0f/W1tb/29vb/+Dg4P/m5ub/6+vr/+/v7//09PT/9/f3//v7+//+/v7////////////+/v7//Pz8//r6 - +v/39/f/9PT0//Dw8P/s7Oz/5+fn/+Tk5P/f39//2tra/8vL0v9KSZX/IR2I/yMenP8mIbX/JyHC/yYh - xP8mIML/JSC//yQfvP8jH7r/Ix+3/yIftP8hHrL/IB6u/yAdrP8fHqr/Hh2n/x0cpP8dHKL/HB2h/xwc - nf8bHJv/IySP/5+fn/+dnZ3/nJyc/5ubm/+ampr/mpqa/5mZmf+Xl5f/lpaW/5aWlv+VlZX/lZWV/5SU - lP+UlJT/k5OT/5OTk/+SkpL/kpKS/5GRkf+VlZX/mpqa/3d3d8cAAAAoAAAACQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABxcXFyVkZGR/5GRkf+Kior/ioqK/4qKiv+Li4v/i4uL/4uL - i/+MjIz/jIyM/46Ojv+Ojo7/j4+P/4+Pj/+QkJD/kZGR/5KSkv+SkpL/MjRu/xcZe/8aGZD/GhqX/xoa - mf8bG5v/HBuc/xwbn/8dG6L/HRuk/x4cpv8fHKn/IB2r/yAdrv8hHrD/Ih+z/yMftv9MTb7/1dXX/8nJ - yf+4uLj/u7u7/7+/v//Dw8P/x8fH/8vLy//Q0ND/1dXV/9nZ2f/d3d3/4uLi/+fn5//s7Oz/8fHx//X1 - 9f/5+fn/+/v7//7+/v////////////7+/v/8/Pz/+/v7//f39//19fX/8fHx/+3t7f/q6ur/5eXl/+Hh - 4f/d3d3/2dnZ/9PT1P9nZ6H/IB2E/yIelf8lIK//JiG//yYhwv8lIL//JB+8/yMfuv8jH7f/Ih+0/yEe - sv8gHq7/IB2t/x8eqv8eHaf/HRyk/x0cov8cHaH/HByd/xscm/8dHo3/o6Oj/5+fn/+enp7/nZ2d/5yc - nP+bm5v/mpqa/5qamv+ZmZn/mZmZ/5eXl/+Wlpb/lpaW/5WVlf+VlZX/lJSU/5SUlP+Tk5P/lJSU/5mZ - mf+ampr/YmJilgAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAETEx - MVOMjIz6lZWV/4+Pj/+Li4v/i4uL/4yMjP+MjIz/jo6O/46Ojv+Pj4//j4+P/5CQkP+QkJD/kZGR/5KS - kv+Tk5P/k5OT/5SUlP91doj/FRZr/xkaiP8aG5X/GhqZ/xsbm/8cG53/HByf/x0bov8dHKT/Hh2m/x8d - qf8gHqv/IB2u/yEesP8iH7T/Ix+2/yMguP9lZMb/29vb/9DQ0P+/v7//w8PD/8fHx//Kysr/z8/P/9PT - 0//X19f/3Nzc/+Hh4f/l5eX/6urq/+3t7f/y8vL/9vb2//n5+f/7+/v//v7+/////////////v7+//z8 - /P/7+/v/+fn5//b29v/y8vL/7+/v/+vr6//n5+f/5OTk/+Dg4P/b29v/19fX/9TU1P+FhK7/IyCF/yId - nP8mIbr/JiHC/yUhv/8kILz/Ix+7/yMft/8iH7T/IR6y/yAer/8gHa3/Hx6q/x4dp/8dHKT/HRyj/xwd - of8cHJ3/HByb/xsbjP+mpqf/oaGh/6CgoP+fn5//np6e/52dnf+cnJz/m5ub/5ubm/+ampr/mZmZ/5mZ - mf+Xl5f/l5eX/5aWlv+VlZX/lZWV/5WVlf+Wlpb/np6e/5SUlPo0NDRTAAAAEQAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAJ3x8fNGZmZn/k5OT/4yMjP+Ojo7/jo6O/4+P - j/+Pj4//j4+P/5CQkP+RkZH/kZGR/5KSkv+Tk5P/k5OT/5SUlP+VlZX/lpaW/5eXl/8wM27/Fxh4/xob - j/8aG5j/Gxub/xwcnf8cHKD/HRyi/x0cpP8eHab/Hx2q/yAdrP8gHa7/IR6w/yIftP8jH7f/IyC4/yQf - vP9vbsr/39/f/9nZ2f/Hx8f/ycnJ/87Ozv/R0dH/1tbW/9ra2v/f39//4uLi/+fn5//r6+v/8PDw//T0 - 9P/29vb/+vr6//z8/P/+/v7////////////+/v7//v7+//v7+//5+fn/9vb2//T09P/w8PD/7Ozs/+jo - 6P/l5eX/4eHh/93d3f/a2tr/1tbW/9PT0/+hoL//Mi2t/yYhvf8mIcL/JiG//yUgvf8jILv/IyC3/yIf - tP8hHrL/IB6v/yAdrf8gHqr/Hx2n/x4cpf8dHKP/HB2h/xwcnf8cHJv/GxuM/6ChqP+kpKT/oaGh/6Gh - of+goKD/n5+f/56env+dnZ3/nJyc/5ycnP+bm5v/mpqa/5qamv+ZmZn/mZmZ/5eXl/+Wlpb/lpaW/5ub - m/+goKD/g4OD0QAAACcAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAQAAAAZX19fjpmZmf+Wlpb/kJCQ/4+Pj/+Pj4//kJCQ/5CQkP+RkZH/kZGR/5KSkv+Tk5P/k5OT/5SU - lP+VlZX/lpaW/5eXl/+ZmZn/mpqa/31+jv8WF2j/GRqE/xobl/8bHJv/HByd/xwcoP8dHKL/HRyk/x4d - pv8fHar/IB2s/yAdrv8hHrD/Ih+0/yMft/8jH7r/JB+8/yUhvv9hYsv/3d3h/9/f3//Q0ND/0NDQ/9XV - 1f/Z2dn/3Nzc/+Hh4f/l5eX/6urq/+3t7f/x8fH/9fX1//f39//6+vr//Pz8//7+/v////////////// - ///+/v7/+/v7//r6+v/39/f/9fX1//Hx8f/t7e3/6+vr/+fn5//k5OT/4ODg/9zc3P/Z2dn/3d3d/+bm - 5v/ExeH/KSPD/yYhwv8mIcD/JSC9/yQgu/8jILf/IyC1/yIfs/8hH6//IB6t/yAeqv8fHaf/Hhyl/x0c - o/8cHaH/HByd/xwcnP8bG43/mZql/6Wlpf+kpKT/o6Oj/6Ghof+goKD/oKCg/5+fn/+enp7/nZ2d/52d - nf+cnJz/m5ub/5qamv+ampr/mZmZ/5mZmf+ZmZn/oKCg/6Ghof9mZmaOAAAAGQAAAAQAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA8qKipIkZGR8pycnP+Tk5P/kJCQ/5GR - kf+RkZH/kpKS/5KSkv+Tk5P/lJSU/5SUlP+VlZX/lpaW/5eXl/+ZmZn/mZmZ/5qamv+bm5v/nJyc/0dI - d/8WF3L/GhuN/xscmv8cHJ3/HByg/x0cov8dHKT/Hh2m/x8dqv8gHaz/IB2v/yEesP8iH7T/Ix+3/yMf - uv8kIL3/JSG+/yYhwv9NSsr/2trj/+bm5v/c3Nz/19fX/9vb2//f39//4uLi/+fn5//r6+v/7+/v//Ly - 8v/19fX/+fn5//v7+//8/Pz//v7+//////////////////7+/v/8/Pz/+vr6//f39//19fX/8vLy/+/v - 7//s7Oz/6Ojo/+Xl5f/i4uL/5OTk/+rq6v/r6+v/39/o/19d0f8nIcX/JiHD/yYhwP8lIL3/JCC7/yMg - t/8jILX/Ih+z/yEfr/8gHq3/IB+q/x8eqf8eHaX/HR2j/xwdof8cHJ3/HByc/xscjv+Vlqb/p6en/6am - pv+lpaX/pKSk/6Ojo/+hoaH/oKCg/6CgoP+fn5//np6e/52dnf+dnZ3/nJyc/5ubm/+bm5v/mpqa/52d - nf+kpKT/mZmZ8i4uLkgAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAABwAAACF6enq9np6e/5mZmf+SkpL/kpKS/5KSkv+Tk5P/lJSU/5SUlP+VlZX/lpaW/5eX - l/+ZmZn/mZmZ/5qamv+bm5v/nJyc/52dnf+enp7/l5ec/yAjaf8YGXv/GxyT/xwcnP8cHKD/HRyj/x0c - pP8eHab/Hx2q/yAdrP8gHa//IR6y/yIftP8jILf/JCC6/yUgvf8mIb//JiHC/ychxP9DQMz/zMvk/+vr - 6//o6Oj/4eHh/+Hh4f/l5eX/6Ojo/+zs7P/w8PD/8vLy//b29v/5+fn/+/v7//z8/P/+/v7///////// - /////////v7+//z8/P/6+vr/+fn5//b29v/09PT/8PDw/+3t7f/q6ur/6urq/+/v7//w8PD/6+vu/5ST - 3v82M8z/KCLH/ychxf8mIcP/JiHA/yUgvf8kILv/IyC4/yMgtf8iH7P/IR+v/yAerf8gH6v/Hx6p/x4d - pf8dHaP/HB2h/xwdn/8cHZz/GxyP/5OUqf+pqan/qKio/6enp/+mpqb/paWl/6SkpP+jo6P/oaGh/6Cg - oP+goKD/n5+f/56env+dnZ3/nZ2d/5ycnP+cnJz/o6Oj/6enp/+Dg4O+AAAAIQAAAAcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAE0xMTGecnJz+n5+f/5aW - lv+Tk5P/lJSU/5WVlf+VlZX/lpaW/5eXl/+Xl5f/mZmZ/5qamv+bm5v/nJyc/52dnf+enp7/n5+f/6Cg - oP+hoaH/bW6K/xYWaf8aG4X/HBuZ/xwcoP8dHKP/Hhyl/x8dpv8gHar/IB2s/yEer/8iH7L/IiC0/yMg - t/8kILr/JSC9/yYhv/8mIcP/JyHE/yghx/8wKsv/j47b/+3t7f/v7+//7e3t/+rq6v/q6ur/7e3t//Hx - 8f/09PT/9vb2//n5+f/7+/v//Pz8//7+/v/////////////////+/v7//Pz8//v7+//5+fn/9vb2//T0 - 9P/x8fH/8fHx//Ly8v/09PT/8vLy/6mp5v9EP9X/KiPN/ykjyv8oIsn/JyHG/yYhw/8mIcD/JSC9/yQg - u/8jILj/IyC1/yIfs/8hH6//IB6t/yAfq/8fHqn/Hh2l/x0do/8cHaH/HB2f/xwdnP8bHJD/jY6n/6ys - rP+rq6v/qamp/6ioqP+np6f/pqam/6Wlpf+kpKT/o6Oj/6Ghof+goKD/oKCg/5+fn/+enp7/nZ2d/6Cg - oP+np6f/pqam/lBQUGgAAAATAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAKBgYGKYmJidOjo6P/nJyc/5WVlf+VlZX/lpaW/5eXl/+Xl5f/mZmZ/5qa - mv+bm5v/nJyc/52dnf+enp7/n5+f/6CgoP+hoaH/o6Oj/6SkpP+mpqb/R0l6/xcYb/8bG4z/HByd/x0c - o/8eHaX/Hx2n/yAeqv8gHqz/IR6v/yIfsv8jILX/IyC3/yQguv8lIL3/JiG//yYhw/8nIcX/KCLH/ykj - yv8qI8z/TEnV/7q66P/y8vL/9PT0//X19f/09PT/9PT0//X19f/39/f/+vr6//v7+//+/v7//v7+//// - //////////////7+/v/8/Pz/+/v7//n5+f/5+fn/9/f3//f39//39/f/9vb2/7u77P9NStr/KyPS/yok - 0P8qI83/KSPL/ygiyf8nIsb/JiHD/yYhwP8lIL3/JCC8/yMguP8jILX/Ih+z/yEfr/8gHq7/IB+r/x8e - qf8eHaX/HR2j/x0dov8cHZ//HB2c/xsckf+Ehqf/rq6u/6ysrP+rq6v/qamp/6ioqP+np6f/pqam/6Wl - pf+lpaX/pKSk/6Ojo/+hoaH/oKCg/6CgoP+fn5//paWl/62trf+RkZHTBgYGKQAAAAoAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAVYWFhfaam - pv+jo6P/mZmZ/5eXl/+Xl5f/mZmZ/5qamv+bm5v/m5ub/5ycnP+dnZ3/np6e/5+fn/+goKD/oaGh/6Oj - o/+lpaX/pqam/6enp/+kpKb/Ky5v/xkZdf8bHJD/HR2g/x4dpf8fHqf/IB6q/yAerP8hHq//Ih+y/yMg - tf8jILj/JCC6/yUgvf8mIb//JiHD/ychxf8oIsf/KSPK/yojzP8qJM7/KyPS/1ZT2/+sq+v/7u31//f3 - 9//5+fn/+vr6//r6+v/7+/v//Pz8//7+/v///////////////////////v7+//7+/v/8/Pz//Pz8//v7 - +//6+vr/+fn5/7W17/9RTd7/LSTX/ywk1P8rI9L/KiTQ/yojzf8pI8v/KCLJ/ycixv8mIcP/JiLA/yUh - vv8kILz/IyC4/yMgtf8iH7P/IR+w/yAerv8gH6v/Hx6p/x4dpf8dHaP/HR2i/xwdn/8cHZz/GxyT/4CC - p/+vr6//rq6u/62trf+srKz/q6ur/6mpqf+oqKj/p6en/6ampv+lpaX/pKSk/6SkpP+jo6P/oaGh/6Oj - o/+srKz/rq6u/2ZmZn0AAAAVAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAoGBgYqk5OT2qioqP+enp7/mZmZ/5qamv+ampr/m5ub/5yc - nP+dnZ3/np6e/5+fn/+goKD/oaGh/6Ojo/+kpKT/paWl/6enp/+oqKj/qamp/6ysrP+SkqD/Hh5p/xkZ - ev8cHJX/Hh2j/x8ep/8gHqv/IB6s/yEer/8iH7L/IyC1/yMguP8kILv/JSC9/yYhv/8mIcP/JyLF/ygi - yf8pI8v/KiPM/yokzv8rI9L/LCTU/y0k1/8zKtn/ZGHi/7Cu8P/z8vr//Pz8//z8/P/+/v7///////// - /////////////////////////v7+//7+/v/8/Pz/xsX1/4J/6v9AOt//Liba/y4l2f8tJNf/LCTU/ysj - 0v8qJND/KiPN/ykjy/8oIsn/JyLG/yYhw/8mIsD/JSG+/yQhvP8jILj/IyC1/yIfs/8hH7D/IB6u/yAf - q/8fHqn/Hh2l/x0dpP8dHaL/HB2f/xwdnP8bG5P/enym/7Kysv+wsLD/r6+v/66urv+srKz/q6ur/6mp - qf+oqKj/qKio/6enp/+mpqb/paWl/6SkpP+jo6P/qamp/7Kysv+ZmZnbBgYGKgAAAAoAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAA - ABVmZmZ8qamp/qenp/+dnZ3/m5ub/5ycnP+dnZ3/np6e/5+fn/+goKD/oaGh/6Ghof+jo6P/paWl/6am - pv+np6f/qKio/6urq/+srKz/rq6u/6+vr/+Dg5v/Ghpq/xoafv8dHZf/Hx6k/yAeq/8gHq3/IR6v/yIf - sv8jILX/IyC4/yQgu/8lIL3/JiG//yYhw/8nIsX/KCLJ/ykjy/8qI83/KiTO/ysj0v8sJNT/LSTX/y4l - 2P8uJtr/Libd/zQs3/9VUOX/dnTr/5yZ8P+ioPP/srD1/8/O+f+sq/T/oqDz/5+d8/93dO3/U03m/zcv - 4v8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0k1/8sJNT/LCPS/ysk0P8qI87/KiPL/ykiyf8oIsb/JyHD/yYi - wP8lIb7/JCG8/yMguP8jILX/IiC0/yIfsP8hHq7/IB+p/x8epf8fHaX/Hh2k/x0dov8dHZ//HB2c/xsb - lP91eKX/tLS0/7Kysv+wsLD/r6+v/66urv+tra3/rKys/6urq/+pqan/qKio/6enp/+mpqb/pqam/6en - p/+wsLD/sbGx/mtra3sAAAAVAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACgAAACeVlZXXra2t/6SkpP+dnZ3/nZ2d/56e - nv+fn5//oKCg/6Ghof+jo6P/pKSk/6Wlpf+mpqb/qKio/6mpqf+rq6v/ra2t/66urv+vr6//srKy/7Oz - s/91dpb/GBlr/xoagP8eHZj/Hx6m/yAerf8hHq//Ih+y/yMgtf8jILj/JCC7/yUhvv8mIr//JiHD/yci - xf8oIsn/KSPL/yojzf8rJND/KyPS/ywk1P8tJNf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm - 4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywk - 1P8sI9L/KyTQ/yojzv8qI8v/KSLJ/ygixv8nIcP/JiLC/yYhvv8lIbz/JCC4/yMhtf8iILT/Ih+v/yEf - qf8fH5r/HR2T/x4dmf8eHaH/HR2i/x0dn/8cHZ3/GxuV/2tupP+1tbX/tLS0/7Ozs/+ysrL/sLCw/6+v - r/+tra3/rKys/6ysrP+rq6v/qamp/6ioqP+oqKj/ra2t/7W1tf+dnZ3XBgYGJwAAAAoAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAADAAAAE2BgYGqtra3+ra2t/6Ojo/+fn5//oKCg/6Ghof+jo6P/o6Oj/6Wlpf+mpqb/p6en/6io - qP+pqan/rKys/62trf+urq7/sLCw/7Kysv+0tLT/tbW1/7e3t/9tb5X/GBlr/xsbgP8eHZn/IB+p/yEe - sP8iH7L/IyC1/yMguP8kIbv/JSG+/yYiwP8mIcP/JyLF/ykiyf8qI8v/KiPN/ysk0P8rI9L/LCTU/y0l - 1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm - 4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdf/LCTU/ywj0v8rI9H/KiPO/yojy/8pIsn/KCLG/ych - xP8mIsL/JiG+/yUhvP8kILj/IyC2/yIgsv8hIKb/Hh2V/xwcfv8aG3X/GxuB/x0dlP8dHZ//HR2f/xwd - nf8bG5X/Zmmi/7e3t/+2trb/tLS0/7Ozs/+ysrL/sLCw/6+vr/+urq7/ra2t/6ysrP+rq6v/qamp/6ys - rP+2trb/tra2/mZmZmsAAAATAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAAAAH5OTk8Czs7P/q6ur/6Oj - o/+hoaH/o6Oj/6SkpP+lpaX/pqam/6enp/+oqKj/q6ur/6ysrP+tra3/r6+v/7CwsP+ysrL/tLS0/7W1 - tf+3t7f/urq6/7u7u/9vcZf/Ghtt/xsbgP8fHpj/IR+q/yIfsv8jILX/IyC4/yUhu/8mIb7/JiLA/ych - w/8oIsX/KSLJ/yojy/8qI83/KyTQ/ysj0v8sJNT/LSXX/y4l2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm - 4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l - 1/8sJNT/LCPS/ysj0f8qI87/KiPL/ykiyf8oIsb/JyHE/yYiwv8mIb7/JSG8/yQguP8jIbL/IR+k/x8d - jv8cG3n/HyBu/01Oh/8aG23/Ght7/xwcj/8dHZr/HB2c/xwclv9fY6H/uLi4/7e3t/+2trb/tbW1/7S0 - tP+zs7P/srKy/7CwsP+vr6//ra2t/62trf+tra3/tbW1/7y8vP+bm5vAAAAAHwAAAAcAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAIAAAAOR0dHS62trfK0tLT/qamp/6Ojo/+lpaX/pqam/6enp/+oqKj/qamp/6ur - q/+srKz/rq6u/6+vr/+wsLD/s7Oz/7S0tP+2trb/t7e3/7q6uv+7u7v/vb29/7+/v/+CgqH/HR1u/xsb - fP8fHZX/ISCp/yMhtP8kILj/JSG7/yYhvv8mIsD/JyHE/ygixf8pIsn/KiPL/yojzf8rJND/KyPS/ywk - 1P8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm - 4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdn/LSXX/ywl1P8sJNP/KyPR/yojzv8qI8v/KSLJ/ygi - xv8nIcT/JiLC/yYhvv8lIbr/IyCy/yEfoP8eHYn/HBt1/zM0e/+qqrr/ycnJ/4WGpP8dHmz/GRp2/xwc - i/8cHZj/HByW/1peoP+7u7v/urq6/7e3t/+2trb/tbW1/7S0tP+zs7P/srKy/7CwsP+vr6//rq6u/7Oz - s/+8vLz/tbW18kpKSksAAAAOAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAWfn5+jbi4 - uP+zs7P/qKio/6ampv+np6f/qKio/6mpqf+rq6v/ra2t/66urv+vr6//sLCw/7Ozs/+0tLT/tra2/7e3 - t/+6urr/u7u7/729vf+/v7//wsLC/8TExP+Tla3/IyVx/xwbef8fHY7/IiCl/yQgtP8lIbr/JiG+/yYi - wP8nIcT/KCLF/ykiyf8qI8v/KiPN/ysk0P8rJNP/LCXU/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m - 4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l - 2f8tJdf/LCXU/ywk0/8rI9H/KiPO/yojy/8pIsn/KCLH/ychxP8mIsL/JiG8/yQhsP8iH5v/Hh2D/x0c - c/9dXpT/yMjL/83Nzf/Kysr/ycnJ/5SVrP8hJG3/GRpz/xsch/8bHJD/UFOc/7y8vP+7u7v/urq6/7i4 - uP+3t7f/tbW1/7S0tP+zs7P/srKy/7CwsP+zs7P/u7u7/8HBwf+FhYWNAAAAFgAAAAUAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAkHBwcjpKSkzry8vP+ysrL/qamp/6ioqP+rq6v/rKys/62t - rf+urq7/r6+v/7Kysv+zs7P/tLS0/7a2tv+3t7f/urq6/7u7u/+9vb3/v7+//8LCwv/Dw8P/xcXF/8jI - yP+ysb7/OzyA/x0bdv8fHon/Ih+g/yQhsP8mIbz/JiLA/ychxP8oIsb/KSLJ/yojy/8qI83/KyTQ/ysk - 0/8sJdT/LSXX/y4l2P8uJtr/Libd/y8l3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm - 5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m3f8uJtr/LiXZ/y0l1/8sJdT/LCTT/ysk0f8qJM7/KiPL/yki - yf8oIsf/JyHD/yYhvP8kIKz/IR+V/x8cgP8nJ3j/kpSy/9HR0f/Q0ND/zs7O/83Nzf/Kysr/ycnJ/6Ok - s/8nKW7/GBlv/xobgP9JTJb/vr6+/729vf+7u7v/urq6/7i4uP+3t7f/tra2/7W1tf+0tLT/tLS0/7y8 - vP/Dw8P/qqqqzgcHByMAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AA1MTExJtLS07ry8vP+ysrL/rKys/6ysrP+tra3/rq6u/7CwsP+ysrL/s7Oz/7W1tf+2trb/t7e3/7q6 - uv+7u7v/vb29/7+/v//BwcH/w8PD/8XFxf/IyMj/ycnJ/8vLy//Jycv/YWOW/x0cc/8eHYL/ISCV/yQg - q/8lIbj/JyHC/ygixv8pIsn/KiPL/yokzf8rJND/KyTT/ywl1P8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m - 3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m - 2v8uJdn/LSXX/ywl1P8sJNP/KyTR/yokzv8qI8v/KSLJ/ygiw/8mIbb/IyCk/yEejP8fHXv/QkSJ/8DB - y//V1dX/1NTU/9HR0f/Pz8//zs7O/8vLy//Kysr/yMjI/66vuv8vMnP/GBlq/0BDhv+/v7//vr6+/729 - vf+8vLz/urq6/7i4uP+3t7f/tra2/7a2tv+7u7v/xMTE/7u7u+5QUFBJAAAADQAAAAIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABN2dnZ0v7+//by8vP+zs7P/rq6u/6+v - r/+wsLD/srKy/7Ozs/+1tbX/tra2/7i4uP+6urr/u7u7/729vf+/v7//wcHB/8PDw//FxcX/x8fH/8nJ - yf/Ly8v/zs7O/9DQ0P/R0dH/m5u3/zAvfv8fHXv/IR6L/yMgn/8lIrD/JyK+/ykix/8qI8v/KiTN/ysk - 0P8rJNP/LCXW/y0l1/8uJdj/Liba/y4m3f8vJd7/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm - 5P8wJuT/MCbj/zAm4f8vJuH/Lybg/y8l3v8uJt3/Liba/y4l2f8tJdf/LCXW/ywk0/8rJNH/KiTO/yok - yf8oI73/JSKt/yMgl/8gH4X/IR94/3N0pv/X19r/2dnZ/9bW1v/V1dX/09PT/9HR0f/Pz8//zs7O/8vL - y//Kysr/yMjI/7e4v/85PHb/NTh1/8LCwv+/v7//vr6+/729vf+8vLz/urq6/7i4uP+3t7f/u7u7/8TE - xP/Gxsb9e3t7dAAAABMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABwAAABmWlpakw8PD/7y8vP+zs7P/sLCw/7Kysv+0tLT/tbW1/7a2tv+4uLj/urq6/7u7 - u/+9vb3/v7+//8HBwf/Dw8P/xMTE/8fHx//Jycn/y8vL/83Nzf/Pz8//0dHR/9TU1P/W1tb/0NHV/2xs - oP8hIXn/IB6B/yEfjv8lIaL/JyK0/ygkwP8qI8r/KyTO/ysk0/8sJdb/LSXX/y4l2P8uJtr/Libd/y8l - 3v8vJt//Lybg/zAm4f8wJuP/MCbj/zAm5P8wJuT/MCbk/zAm5P8wJuP/MCbh/y8m4f8vJuD/LyXe/y4m - 3f8uJtr/LiXZ/y0l1/8sJdb/LCTS/yokzP8pI8D/JyKz/yUhn/8iH4v/IB59/0FAi/+ztMn/39/f/9zc - 3P/a2tr/2dnZ/9bW1v/U1NT/09PT/9DQ0P/Pz8//zc3N/8vLy//Kysr/yMjI/8C/w/9kZ4//w8PD/8LC - wv+/v7//vr6+/729vf+8vLz/u7u7/729vf/ExMT/y8vL/52dnaUAAAAZAAAABwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACg0NDSWurq7QxMTE/7y8 - vP+1tbX/tLS0/7W1tf+2trb/uLi4/7q6uv+7u7v/vb29/76+vv/BwcH/w8PD/8TExP/Hx8f/yMjI/8rK - yv/Nzc3/z8/P/9DQ0P/T09P/1dXV/9fX1//a2tr/3Nzc/7q7zP9ZWZj/Hx16/yEfg/8jH5L/JiGh/ycj - sv8pJL7/KiTK/ywl0v8tJdf/LiXY/y4m2v8uJt3/LyXe/y8m3/8vJuD/MCbh/zAm4/8wJuP/MCbk/zAm - 5P8wJuT/MCbk/zAm4/8wJuH/Lybh/y8m4P8vJd7/Libd/y4m2v8uJdj/LCTT/ysly/8qJL//KCKy/yYh - oP8kII7/Ih+D/zIyhf+Wlrv/5OTk/+Hh4f/g4OD/3d3d/9vb2//a2tr/19fX/9bW1v/U1NT/0dHR/9DQ - 0P/Pz8//zc3N/8vLy//Jycn/yMjI/8fHx//ExMT/w8PD/8LCwv+/v7//vr6+/729vf++vr7/xMTE/83N - zf+0tLTRDQ0NJgAAAAoAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAACAAAADU5OTkG6urrox8fH/729vf+2trb/tra2/7i4uP+6urr/u7u7/729 - vf++vr7/wcHB/8LCwv/ExMT/x8fH/8jIyP/Kysr/y8vL/87Ozv/Q0ND/09PT/9XV1f/W1tb/2dnZ/9vb - 2//d3d3/4ODg/+Hh4f/AwNL/X2Cf/yMhff8iIIT/JCCO/yUhmv8nIqv/KSO4/ysjw/8sJMr/LSXR/y4l - 2f8uJtv/Lybf/y8m4P8wJuH/MCbj/zAm4/8wJuT/MCbk/zAm5P8wJuT/MCbj/zAm4f8vJuH/Lybe/y4l - 2P8tJdL/LCXL/ywjxP8qI7f/KCOp/yYhmv8kIY7/IyCF/ywrhf+AgLP/4ODl/+bm5v/l5eX/4uLi/+Dg - 4P/f39//3Nzc/9vb2//Z2dn/19fX/9XV1f/U1NT/0dHR/9DQ0P/Ozs7/zc3N/8vLy//Jycn/yMjI/8fH - x//ExMT/w8PD/8LCwv/BwcH/v7+//8XFxf/Ozs7/wsLC6FJSUkEAAAANAAAAAgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEHBw - cFvDw8P0ycnJ/7+/v/+6urr/urq6/7u7u/+9vb3/vr6+/8HBwf/CwsL/xMTE/8XFxf/IyMj/ycnJ/8vL - y//Ozs7/0NDQ/9HR0f/U1NT/1tbW/9fX1//a2tr/3Nzc/9/f3//h4eH/4uLi/+Xl5f/n5+f/0NDd/3t8 - sP82NIr/IyCD/yQgi/8lIZP/JyKc/ygipv8qJLP/KyW9/ywkxP8tJcr/LSXO/y4l0v8uJdT/LiXU/y4l - 1P8uJdT/LiXU/y4l0v8uJdH/LiXN/y0ly/8sJMT/KyS7/yojsv8oI6X/KCKb/yYhk/8kIYr/JCCE/0JB - kv+Vk8D/5OPo/+vr6//o6Oj/5+fn/+Xl5f/k5OT/4eHh/+Dg4P/d3d3/3Nzc/9ra2v/Z2dn/1tbW/9XV - 1f/T09P/0dHR/8/Pz//Ozs7/zc3N/8rKyv/Jycn/yMjI/8fHx//ExMT/w8PD/8PDw//IyMj/z8/P/8vL - y/RycnJbAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAEoSEhG7Jycn6y8vL/8HBwf+8vLz/vb29/76+ - vv/BwcH/wsLC/8TExP/FxcX/yMjI/8nJyf/Ly8v/zc3N/8/Pz//R0dH/09PT/9XV1f/X19f/2tra/9vb - 2//d3d3/4ODg/+Li4v/k5OT/5ubm/+jo6P/q6ur/7Ozs/+/v7/+1tNH/bGyr/zg3j/8kIYb/JSGK/yYh - kf8nIpb/JyKa/ygjoP8pJKb/KiSs/yskr/8rJK//KySw/ysksP8qI67/KiSs/ykjpv8pI6T/KCOf/ygj - m/8nIpX/JiGR/yUiiv8lIIb/RUOX/35+tv/Ozd//8fHx/+/v7//t7e3/6+vr/+rq6v/o6Oj/5ubm/+Xl - 5f/i4uL/4eHh/9/f3//d3d3/29vb/9ra2v/X19f/1tbW/9TU1P/T09P/0NDQ/8/Pz//Ozs7/zc3N/8rK - yv/Jycn/yMjI/8XFxf/FxcX/ycnJ/9PT0//S0tL6h4eHbwAAABMAAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAFAAAAE42NjXnOzs78zs7O/8XFxf+/v7//wcHB/8LCwv/Dw8P/xcXF/8fHx//Jycn/y8vL/83N - zf/Pz8//0NDQ/9PT0//V1dX/1tbW/9nZ2f/a2tr/3Nzc/9/f3//h4eH/4uLi/+Xl5f/n5+f/6urq/+vr - 6//t7e3/7+/v//Hx8f/y8vL/9fX1/9nY6P+bmsj/aWeu/0dFm/8qJ4v/JiKJ/yYii/8mIY//JyKR/yci - kf8nIpL/JyKS/ycikf8nIo//JiGN/yYii/8mIon/MS6P/1NQo/95d7f/rKvS/+bm7v/29vb/9fX1//Ly - 8v/x8fH/8PDw/+3t7f/s7Oz/6+vr/+jo6P/n5+f/5eXl/+Tk5P/h4eH/4ODg/93d3f/c3Nz/29vb/9nZ - 2f/X19f/1dXV/9TU1P/T09P/0NDQ/8/Pz//Ozs7/y8vL/8rKyv/Jycn/ycnJ/83Nzf/U1NT/1NTU/JGR - kXkAAAATAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAGAAAAFJmZmX3Pz8/50dHR/8jI - yP/ExMT/w8PD/8XFxf/Hx8f/ycnJ/8rKyv/Nzc3/zs7O/9DQ0P/R0dH/1NTU/9bW1v/X19f/2tra/9zc - 3P/d3d3/4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/7Ozs/+3t7f/w8PD/8fHx//T09P/19fX/9vb2//f3 - 9//5+fn/+vr6//v7+//f3u7/zMvl/5+dzv+cm83/nJvN/5ybzv+cm87/nJvO/7u63f/My+X/zMvl//n5 - +//7+/v/+/v7//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Hx8f/w8PD/7+/v/+3t7f/r6+v/6urq/+jo - 6P/m5ub/5eXl/+Li4v/h4eH/39/f/93d3f/c3Nz/2tra/9nZ2f/W1tb/1dXV/9TU1P/R0dH/0NDQ/8/P - z//Nzc3/y8vL/8vLy//Q0ND/19fX/9XV1fmZmZl9AAAAFAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAAFAAAAE46OjnHS0tL11dXV/8vLy//Hx8f/x8fH/8jIyP/Kysr/y8vL/87O - zv/Pz8//0dHR/9TU1P/V1dX/19fX/9nZ2f/b29v/3d3d/9/f3//h4eH/4uLi/+Xl5f/n5+f/6Ojo/+vr - 6//s7Oz/7+/v//Dw8P/y8vL/9PT0//X19f/29vb/+fn5//r6+v/7+/v/+/v7//z8/P/+/v7//v7+//// - //////////////////////////////7+/v/+/v7//Pz8//z8/P/7+/v/+vr6//n5+f/39/f/9vb2//X1 - 9f/09PT/8vLy//Hx8f/v7+//7e3t/+zs7P/q6ur/6Ojo/+fn5//l5eX/5OTk/+Li4v/g4OD/39/f/9zc - 3P/b29v/2tra/9fX1//W1tb/1dXV/9PT0//R0dH/0NDQ/8/Pz//Pz8//09PT/9ra2v/Y2Nj1kJCQcQAA - ABMAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAEYKC - gl7Ozs7s19fX/9DQ0P/Kysr/ycnJ/8vLy//Nzc3/z8/P/9DQ0P/T09P/1dXV/9bW1v/Z2dn/2tra/9zc - 3P/d3d3/4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/6+vr/+3t7f/v7+//8fHx//Ly8v/09PT/9vb2//f3 - 9//5+fn/+vr6//v7+//8/Pz//Pz8//7+/v/+/v7//////////////////////////////////v7+//7+ - /v/8/Pz//Pz8//v7+//6+vr/+fn5//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/v7+//7Ozs/+vr - 6//q6ur/5+fn/+bm5v/l5eX/4uLi/+Hh4f/g4OD/3d3d/9zc3P/a2tr/2dnZ/9fX1//W1tb/1NTU/9PT - 0//R0dH/0dHR/9bW1v/d3d3/09PT7IKCgl4AAAARAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAEAAAAD3d3d1HOzs7k3Nzc/9TU1P/Pz8//zc3N/8/P - z//Q0ND/0dHR/9TU1P/W1tb/19fX/9ra2v/b29v/3d3d/9/f3//h4eH/4uLi/+Xl5f/m5ub/6Ojo/+vr - 6//s7Oz/7e3t//Dw8P/x8fH/8vLy//X19f/29vb/9/f3//n5+f/6+vr/+/v7//z8/P/8/Pz//v7+//7+ - /v/////////////////////////////////+/v7//v7+//z8/P/8/Pz/+/v7//r6+v/6+vr/+fn5//f3 - 9//29vb/9fX1//T09P/x8fH/8PDw/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+Xl5f/k5OT/4uLi/+Dg - 4P/f39//3d3d/9vb2//a2tr/2dnZ/9bW1v/V1dX/1NTU/9bW1v/a2tr/4ODg/9XV1eR6enpRAAAADwAA - AAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAEAAAAEAAAADV9fXzvHx8fL4ODg/9ra2v/T09P/0dHR/9HR0f/U1NT/1dXV/9bW1v/Z2dn/2tra/9zc - 3P/f39//4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/6+vr/+3t7f/v7+//8PDw//Ly8v/09PT/9fX1//b2 - 9v/39/f/+fn5//r6+v/7+/v//Pz8//z8/P/+/v7//v7+//////////////////////////////////7+ - /v/+/v7//Pz8//z8/P/7+/v/+vr6//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Ly8v/x8fH/7+/v/+3t - 7f/s7Oz/6+vr/+rq6v/n5+f/5ubm/+Xl5f/i4uL/4eHh/+Dg4P/d3d3/3Nzc/9vb2//a2tr/19fX/9fX - 1//a2tr/39/f/+Tk5P/Ly8vLY2NjOwAAAA0AAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACiYmJiG1tbWi5OTk/9/f - 3//Z2dn/1dXV/9XV1f/W1tb/19fX/9ra2v/b29v/3d3d/9/f3//h4eH/4uLi/+Xl5f/m5ub/6Ojo/+rq - 6v/s7Oz/7e3t/+/v7//x8fH/8vLy//T09P/19fX/9vb2//n5+f/5+fn/+vr6//v7+//8/Pz//Pz8//7+ - /v/+/v7//////////////////////////////////v7+//7+/v/8/Pz//Pz8//v7+//7+/v/+vr6//n5 - +f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7+/v/+zs7P/r6+v/6urq/+jo6P/n5+f/5eXl/+Tk - 5P/i4uL/4ODg/9/f3//d3d3/3Nzc/9ra2v/b29v/3d3d/+Tk5P/n5+f/ubm5oiYmJiEAAAAKAAAAAgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAABwAAABOZmZlu2tra7OTk5P/d3d3/2tra/9nZ2f/Z2dn/29vb/9zc - 3P/f39//4ODg/+Li4v/k5OT/5ubm/+fn5//q6ur/6+vr/+zs7P/v7+//8PDw//Hx8f/y8vL/9fX1//b2 - 9v/39/f/+fn5//r6+v/7+/v/+/v7//z8/P/+/v7//v7+//7+/v////////////////////////////// - ///+/v7//v7+//7+/v/8/Pz/+/v7//v7+//6+vr/+fn5//f39//29vb/9fX1//X19f/y8vL/8fHx//Dw - 8P/v7+//7e3t/+zs7P/r6+v/6Ojo/+fn5//m5ub/5eXl/+Li4v/h4eH/4ODg/9/f3//f39//39/f/+Li - 4v/n5+f/3d3d7Jubm24AAAATAAAABwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAA - AA1vb29Az8/Px+jo6P/k5OT/4ODg/9zc3P/c3Nz/3d3d/+Dg4P/h4eH/4uLi/+Xl5f/m5ub/6Ojo/+rq - 6v/r6+v/7e3t/+/v7//w8PD/8fHx//T09P/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//7+ - /v/+/v7//v7+//////////////////////////////////7+/v/+/v7//v7+//z8/P/7+/v/+/v7//r6 - +v/5+fn/+fn5//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/t7e3/7Ozs/+vr6//q6ur/6Ojo/+bm - 5v/l5eX/5OTk/+Li4v/h4eH/4eHh/+Tk5P/o6Oj/6+vr/9DQ0Mdvb29AAAAADQAAAAQAAAABAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAkAAAAZqqqqft7e3unq6ur/5eXl/+Li - 4v/g4OD/4ODg/+Li4v/k5OT/5ubm/+fn5//o6Oj/6+vr/+zs7P/t7e3/7+/v//Hx8f/y8vL/9PT0//X1 - 9f/29vb/9/f3//n5+f/6+vr/+/v7//z8/P/8/Pz//v7+//7+/v////////////////////////////// - /////////v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+vr6//r6+v/5+fn/9/f3//b29v/19fX/9PT0//Ly - 8v/x8fH/8PDw/+/v7//t7e3/7Ozs/+rq6v/o6Oj/5+fn/+bm5v/l5eX/5eXl/+Xl5f/o6Oj/7Ozs/+Dg - 4OmsrKx+AAAAGQAAAAkAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAANYmJiNMbGxqzp6en86+vr/+fn5//l5eX/5OTk/+Xl5f/m5ub/5+fn/+rq - 6v/r6+v/7Ozs/+/v7//w8PD/8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6+v/7+/v//Pz8//z8 - /P/+/v7//v7+///////////////////////////////////////+/v7//v7+//7+/v/8/Pz//Pz8//v7 - +//6+vr/+vr6//n5+f/39/f/9vb2//X19f/09PT/8vLy//Hx8f/w8PD/7+/v/+3t7f/s7Oz/6+vr/+rq - 6v/o6Oj/5+fn/+fn5//r6+v/7e3t/+vr6/zIyMisYmJiNAAAAA0AAAAEAAAAAQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAAAAEZeX - l1nZ2dnO7+/v/+3t7f/q6ur/5+fn/+jo6P/o6Oj/6urq/+zs7P/t7e3/7+/v//Dw8P/x8fH/9PT0//X1 - 9f/29vb/9/f3//n5+f/6+vr/+vr6//v7+//8/Pz//Pz8//7+/v/+/v7///////////////////////// - //////////////7+/v/+/v7//v7+//z8/P/8/Pz/+/v7//r6+v/6+vr/+fn5//f39//29vb/9vb2//X1 - 9f/09PT/8vLy//Hx8f/w8PD/7+/v/+zs7P/r6+v/6+vr/+vr6//t7e3/8PDw//Hx8f/b29vOl5eXWQAA - ABEAAAAHAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACQAAABWoqKht3t7e0vLy8v/w8PD/7e3t/+3t - 7f/s7Oz/7Ozs/+3t7f/w8PD/8fHx//Ly8v/09PT/9fX1//b29v/39/f/+fn5//r6+v/6+vr/+/v7//z8 - /P/8/Pz//v7+//7+/v///////////////////////////////////////v7+//7+/v/+/v7//Pz8//z8 - /P/7+/v/+/v7//r6+v/5+fn/9/f3//f39//29vb/9fX1//T09P/y8vL/8fHx//Dw8P/v7+//7+/v/+/v - 7//w8PD/8vLy//T09P/f39/Sra2tbQAAABUAAAAJAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAAAABAAAAAoKCgoZsLCwb9zc3Mn19fX/9PT0//Ly8v/x8fH/8fHx//Hx8f/x8fH/8vLy//T0 - 9P/19fX/9vb2//f39//5+fn/+vr6//v7+//7+/v//Pz8//z8/P/+/v7//v7+//////////////////// - ///////////////////+/v7//v7+//7+/v/8/Pz//Pz8//v7+//7+/v/+vr6//n5+f/5+fn/9/f3//b2 - 9v/19fX/9PT0//Ly8v/y8vL/8fHx//Ly8v/09PT/9fX1//b29v/e3t7JsLCwbwoKChkAAAAKAAAABAAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAKAAAAFZeX - l1TS0tKr6Ojo5vb29v/29vb/9fX1//T09P/19fX/9fX1//b29v/29vb/9/f3//n5+f/6+vr/+/v7//v7 - +//8/Pz//Pz8//7+/v/+/v7///////////////////////////////////////7+/v/+/v7//v7+//z8 - /P/8/Pz/+/v7//v7+//6+vr/+fn5//n5+f/39/f/9vb2//X19f/29vb/9vb2//b29v/39/f/9/f3/+jo - 6ObS0tKsl5eXVAAAABUAAAAKAAAABAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAABwAAAA5MTEwor6+vbdjY2Lry8vL1+fn5//n5 - +f/5+fn/+fn5//n5+f/6+vr/+fn5//r6+v/7+/v/+/v7//z8/P/+/v7//v7+//7+/v////////////// - /////////////////////////v7+//7+/v/+/v7//Pz8//z8/P/7+/v/+/v7//r6+v/6+vr/+vr6//n5 - +f/5+fn/+fn5//r6+v/6+vr/8/Pz9djY2Lqvr69tTExMKAAAAA4AAAAHAAAAAgAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAQAAAAIAAAAEHZ2djbBwcGA29vbuu7u7uf7+/v/+/v7//v7+//7+/v/+/v7//z8 - /P/8/Pz//Pz8//7+/v/+/v7//v7+///////////////////////////////////////+/v7//v7+//7+ - /v/8/Pz//Pz8//z8/P/8/Pz/+/v7//v7+//7+/v/+/v7//v7+//u7u7n3NzcusHBwYB2dnY2AAAAEAAA - AAgAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAA - AAkAAAAQaWlpLpqamlHFxcWK4eHhwOvr69/z8/Pw/v7+//7+/v/+/v7//v7+//7+/v/+/v7///////// - //////////////////////////////7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/z8/Pw6+vr3+Hh - 4cDFxcWKmpqaUWlpaS4AAAAQAAAACQAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAABgAAAAoAAAAOCgoKGIOD - gzqurq5fvb29ecvLy5Xd3d2u5eXlxenp6dHw8PDd8PDw5vn5+fT5+fn0+fn59Pn5+fTw8PDm8PDw3enp - 6dHl5eXF3d3drsvLy5W9vb15rq6uX4ODgzoKCgoYAAAADgAAAAoAAAAGAAAAAwAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAwAAAAYAAAAIAAAACgAAAA0AAAAPAAAAEAAA - ABEAAAATAAAAEwAAABQAAAAUAAAAEwAAABMAAAARAAAAEAAAAA8AAAANAAAACgAAAAgAAAAGAAAAAwAA - AAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - AAAAAAAA/////////////////////////////+AAAAf///////////////4AAAAAf//////////////w - AAAAAA//////////////gAAAAAAB/////////////AAAAAAAAD////////////AAAAAAAAAP//////// - ///AAAAAAAAAA///////////AAAAAAAAAAD//////////gAAAAAAAAAAf/////////gAAAAAAAAAAB// - ///////gAAAAAAAAAAAH////////wAAAAAAAAAAAA////////4AAAAAAAAAAAAH///////8AAAAAAAAA - AAAA///////8AAAAAAAAAAAAAD//////+AAAAAAAAAAAAAAf//////AAAAAAAAAAAAAAD//////gAAAA - AAAAAAAAAAf/////wAAAAAAAAAAAAAAD/////4AAAAAAAAAAAAAAAf////8AAAAAAAAAAAAAAAD///// - AAAAAAAAAAAAAAAA/////gAAAAAAAAAAAAAAAH////wAAAAAAAAAAAAAAAA////4AAAAAAAAAAAAAAAA - H///+AAAAAAAAAAAAAAAAB////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAAB///4AAAAAAAAAAA - AAAAAAf//8AAAAAAAAAAAAAAAAAD//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//wAAAAAA - AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/wA - AAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/gAAAAAAAAAAAAAAAAA - AB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAA - AAAAAAAP8AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA - AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AA - AAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA - AAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAA - AAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAA - AAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AA - AAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAA - AAPAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAA - AAAAAAADwAAAAAAAAAAAAAAAAAAAA+AAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH4AAAAAAA - AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAD/AA - AAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA - AB/8AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAA - AAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//4AAAAAA - AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAP//+AAAAAAAAAAAAAAAAAH///g - AAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAA - H////AAAAAAAAAAAAAAAAD////4AAAAAAAAAAAAAAAB/////AAAAAAAAAAAAAAAA/////wAAAAAAAAAA - AAAAAP////+AAAAAAAAAAAAAAAH/////wAAAAAAAAAAAAAAD/////+AAAAAAAAAAAAAAB//////wAAAA - AAAAAAAAAA//////+AAAAAAAAAAAAAAf//////wAAAAAAAAAAAAAP///////AAAAAAAAAAAAAP////// - /4AAAAAAAAAAAAH////////AAAAAAAAAAAAD////////8AAAAAAAAAAAD/////////gAAAAAAAAAAB// - ///////+AAAAAAAAAAB//////////wAAAAAAAAAA///////////AAAAAAAAAA///////////8AAAAAAA - AA////////////wAAAAAAAA/////////////gAAAAAAB//////////////AAAAAAD//////////////+ - AAAAAH///////////////+AAAAf///////////////////////////////////////////////////// - //////////////////8oAAAAMAAAAGAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAFAAAACwAAAA8AAAARAAAAEQAAAA8AAAALAAAABQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAUAAAAaAAAAPAoKCmAgICCENDQ0nEFBQatLS0uzS0tLs0FBQasyMjKcICAghAoK - CmAAAAA8AAAAGgAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAQAAAAPx8fH4FMTEy/dnZ255qamvu7u7v/0NDQ/+Dg4P/p6en/6enp/+Dg - 4P/S0tL/vb29/5ycnPt3d3fnTU1Nvx8fH4EAAAA/AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAEk0NDSkcXFx566urv/c3Nz/9PT0//z8/P////////////// - ///////////////////////////////////29vb/4ODg/7Gxsf9zc3PnNjY2pAAAAEkAAAAOAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAwKioqlnR0dOu9vb3/5ubm/+/v7//y8vL/8/Pz//b2 - 9v/5+fn//Pz8//7+/v////////////7+/v/9/f3/+/v7//n5+f/39/f/9fX1//X19f/r6+v/wcHB/3Z2 - duwsLCyWAAAAMAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwoKCl1VVVXSpqam/9vb2//k5OT/5ubm/+np - 6f/t7e3/8fHx//X19f/5+fn/+/v7//7+/v////////////7+/v/9/f3/+/v7//j4+P/29vb/8fHx/+7u - 7v/r6+v/6urq/+Hh4f+rq6v/WFhY0g0NDV0AAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATIiIif3Nzc/HCwsL/2NjY/9nZ - 2f/d3d3/4uLi/+fn5//s7Oz/8PDw//T09P/39/j/+/v7/////f///////////////v/9/fz/+vr6//j4 - +P/09PT/8PDw/+zs7P/o6Oj/5OTk/+Dg4P/g4OD/ycnJ/3h4ePEkJCR/AAAAEwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYqKiqRgoKC+sbG - xv/Ozs7/0dHR/9bW1v/a2tr/39/f/+Xl5f/q6un/8/Pw//z89f////r//f38//Dw/P/r6/z/6+v8//Dw - /P/3+Pz////8////+f/39/T/7+/u/+rq6v/m5ub/4eHh/9zc3P/Y2Nj/19fX/87Ozv+Hh4f6LS0tkQAA - ABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAES8v - L5KGhob+wMDA/8fHxv/Ozsz/zc3N/9LS0v/X19j/3d3c/+rq5f/w8O7/1tXu/6mm6v98d+b/Xlfl/0tE - 5f9DO+b/RDvn/0tC5v9VTeX/cGrm/6Ge6//Y1/H/9fXy/+7u6v/j4+P/39/f/9ra2v/V1dX/0dHR/83N - zf/Jycn/jIyM/jAwMJIAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAGJycnen5+fvu5ubn/vb28/7W2vv+ys8n/0tLO/83Nzf/Y2NX/4+Pi/7Kx4P9jYNT/My3P/yQc - 0/8mHdj/KCDd/ysi4P8tI+L/LSPj/ywi4f8qId7/Jx3a/yUc1f80LdL/bWrZ/8TD5v/s7Of/3t7c/9bW - 1v/R0dH/zc3N/8nJyf/FxcX/wcHB/4aGhvspKSl6AAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAASEhJRbW1t7q+vr/+0tLT/ubm4/6iotf84OqL/p6fL/9zc0//Gxtn/YV/J/yMe - v/8hG8X/KCHM/ywk0/8uJdn/Libe/y8m4f8wJuP/MCbk/zAm4v8vJt//LiXb/y0l1v8pIs//IRvI/ykl - xP95eNH/2Njg/9ra1f/Nzc3/ycnJ/8TExP+/v7//vb29/7e3t/9ycnLuEhISUQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVVVVXPoKCg/62trf+vr6//tbWz/6Slsf8hIpr/Kiqn/42N - yf89PLj/Gxi2/yUgv/8oIsb/KiPN/ywk0/8uJdn/Libf/y8m4/8wJuX/MCbm/zAm5P8vJuH/LiXc/y0l - 1v8rI9D/KSLJ/yUfw/8cGLn/SknA/7291//S0s7/xMTE/7+/v/+7u7v/uLi4/7a2tv+pqan/WFhYzwAA - ACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjY2NoyKior/pqam/6enp/+qqqr/sLCu/52e - rP8iI5v/Ghqi/xoZqP8eG6//IyC3/yUhv/8nIsb/KSPN/ywk1P8tJNj/KCDR/yQcxf8kG77/JBy+/yQb - v/8lHcn/KyLW/y0l1/8rI9H/KSLJ/ychw/8lIbv/HBmx/y8vsv+pqcz/ycnE/7q6uv+2trb/s7Oz/7Cw - sP+vr6//kZGR/zg4OIwAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQkJN2ZmZumenp7/oKCg/6Ki - ov+lpaX/q6up/5eXp/8fH5r/HByj/x8eqf8hHrD/IyC3/yUgvv8nIsf/KCLL/yIbvP8rJaj/Uk6r/399 - vP+bmsr/n57M/5eVx/9ua7b/OjWm/yIcsv8nIMr/KSLK/yYhwv8kIbv/IiCz/xsaqv8sK6r/qKnE/7y7 - t/+ysrL/rq6u/6urq/+pqan/pqam/2xsbOkJCQk3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPj4+lIqK - iv+ampr/m5ub/52dnf+goKD/pqak/4+Po/8dHZn/HByi/x8dqP8hHq//IyC3/yUgv/8iHLj/JyOe/2dl - qf/AwNP/8fHx/////f/////////////////9/fr/39/m/5KRvf80MKD/IRy6/yYhw/8kILr/Ih+z/yAe - rP8YF6P/PD2p/7W1vP+urqz/qamp/6ampv+jo6P/o6Oj/5KSkv9DQ0OUAAAABQAAAAAAAAAAAAAAAAAA - AAAAAAAoY2Nj4pSUlP+VlZX/lpaW/5mZmf+bm5v/oaGe/4aHnv8cHJn/HBui/x4dqP8gHa//Ih+3/yEd - vv9LSLj/sbHA/+Li3v/s7Or/8fHx//n5+f/+/v7///////z8/P/29vb/8fHv/+7u6f/Dw87/Skif/x4a - sP8kILv/Ih+z/yAerP8eHaX/FRWd/2Firf+xsa7/o6Oj/6Ghof+enp7/nZ2d/5ycnP9nZ2fiAAAAKAAA - AAAAAAAAAAAAAAAAAAAwMDBqfHx8/5GRkf+RkZH/kpKS/5SUlP+Wlpb/nJyZ/3t7lv8ZGZb/Ghqf/xwb - pf8eG6z/IB20/yAbuv9DP8n/vr7V/9zc1//i4uL/7e3t//f39//+/v7///////v7+//z8/P/6urq/+Dg - 4P/b29n/wcHF/0hGm/8dGrD/Ih+z/x8dq/8dHKT/Gxue/xwdmv+Mjqz/oqKe/5ycnP+ampr/mZmZ/5iY - mP+BgYH/MjIyagAAAAAAAAAAAAAAAAAAAAdRUVGtiYmJ/4yMjP+NjY3/jo6O/5CQkP+RkZH/mJiU/29w - jv8UFJD/FhWX/xkWnv8bF6X/HRis/x8as/8bFbn/OzW+/7a1zP/f39z/6enp//X19f/8/Pz///////n5 - +f/w8PD/5eXl/9nZ2f/Ozs7/yMjG/6mqsv8wLpn/Hhux/x8dq/8dHKT/HBye/xQVlv9LTaD/oaGf/5eX - l/+VlZX/lJSU/5OTk/+QkJD/VVVVrgAAAAgAAAAAAAAAAAAAACFjY2PdioqK/4iIiP+JiYn/ioqK/4uL - i/+NjY3/k5KQ/2lqg/8aG27/ISJz/yMjeP8lJH3/JyWB/yooh/8yMIz/MCyQ/1ZTn//IyM7/4+Ti//Hx - 8f/7+/v//v7+//j4+P/s7Oz/3t7e/9DQ0P/ExMT/urq6/7m5tP95eZz/HBqh/x8drP8dG6T/HBud/xkY - mP8gIpb/iYqc/5SUkv+RkZH/kJCQ/4+Pj/+QkJD/ZmZm3QAAACEAAAAAAAAAAB4eHkJvb2/3h4eH/4WF - hf+Ghob/h4eH/4eHh/+IiIj/ioqK/4WGiP9+foX/g4SJ/4aGi/+JiY7/jY2T/5KSmP+cnKD/pKSo/6ys - sv/CwsX/2dnZ/+vr6//7+/v//v7+//T09P/k5OT/09PT/8TExP+4uLj/r6+v/6ioqP+hoaD/OTiT/xsZ - qf8cG6P/Gxud/xoal/8UFZP/ZWaW/5KSjv+NjY3/i4uL/4qKiv+MjIz/c3Nz9yIiIkIAAAAAAAAAADo6 - OmV5eXn/hISE/4ODg/+EhIT/hISE/4WFhf+FhYX/hoaG/4eHh/+Kion/ioqK/4yMi/+Pj47/kpKQ/5WV - lP+ampn/oaGg/6qqqv+3t7f/ysrK/+Li4v/4+Pj//v7+/+7u7v/Y2Nj/xMTE/7W1tf+qqqr/oqKi/5yc - nP+dnZj/ZmaO/xoYof8cG6T/Gxud/xkal/8UFZP/Q0aQ/46Oiv+IiIj/iIiI/4eHh/+IiIj/fX19/zw8 - PGUAAAAAAAAAAEZGRn5+fn7/goKC/4GBgf+CgoL/goKC/4KCgv+CgoL/g4OD/4ODg/+EhIT/hISE/4WF - hf+Ghob/iIiI/4qKiv+NjY3/kpKS/5mZmf+jo6P/tLS0/9DQ0P/z8/P/+/v7/+Li4v/ExMT/sLCw/6Oj - o/+bm5v/lZWV/5KSkv+QkI//gYGJ/yUkmP8bGab/Gxqe/xkamf8UFpX/MTON/4eHh/+FhYX/hYWF/4SE - hP+FhYX/gYGB/0hISH4AAAAAAAAAAFBQUI6AgID/gICA/4CAgP+AgID/gICA/4CAgP9/f3//f39+/39/ - fv9/f3//gIB//4CAgP+CgoL/goKC/4ODg/+EhIT/hoaG/4mJif+Ojo7/mJiY/66urv/h4eH/9vb2/8TE - xP+lpaX/l5eX/5CQkP+MjIz/iYmJ/4iIiP+Ghob/h4eF/zQ0fv8REX3/FBR5/xMTdf8PEXH/IyVx/319 - gf+Dg4L/gYGB/4GBgf+BgYH/goKC/1VVVY0AAAAAAAAAAFdXV5SBgYH/fn5+/35+fv9+fn7/fn5+/4B/ - gP+NjpH/kJGV/5CQlP+QkJT/kZGV/4qKjP9+fn7/f39//39/f/9/f3//f39//39/f/+AgID/gYGB/4SE - hP+jo6P/u7u7/42Njf+FhYX/g4OD/4KCgv+BgYH/gICA/4CAgP+AgID/gICA/25uef9iYnT/Y2Nz/2Nj - c/9iYnL/ZmZz/319fv+AgH//f39//39/f/9/f3//gYGB/1dXV5QAAAAAAAAAAFtbW5SCgoL/fn5+/35+ - fv9+fn7/fn5+/3p6fv9AQ5H/NTec/zc5n/85OaL/Nzeo/1pam/+BgX3/f39//39/f/9/f3//f39//4CA - gP+CgoL/hYWF/46Ojv+7u7v/1tbW/6CgoP+Ojo7/iIiI/4aGhv+EhIT/g4OD/4KCgv+CgoL/gYGB/4OD - gv+FhYL/hISC/4SEgv+EhIL/g4OC/4GBgf+AgID/gICA/4CAgP+AgID/hISE/1tbW5MAAAAAAAAAAFlZ - WYuDg4P/f39//39/f/9/f3//gIB//3t7fv8kJoP/ERKQ/xUVlP8WFpj/FBOf/zw7nv+FhYP/goKC/4OD - g/+FhYX/h4eH/4yMjP+Tk5P/oKCg/7u7u//r6+v/+vr6/9HR0f+xsbH/oKCg/5eXl/+RkZH/jY2N/4uL - i/+JiYn/h4eH/4eHh/+Ghob/hYWF/4WFhf+EhIT/g4OD/4ODg/+Dg4P/goKC/4KCgv+CgoL/hoaG/1tb - W4sAAAAAAAAAAFZWVnmDg4P/gICA/4GBgf+BgYH/gYGB/4KCgP8wMoD/FBWR/xkZlf8aGpn/GRif/y0s - pf+Hh5H/iIiH/4uLi/+Ojo7/lJSU/5ycnP+oqKj/u7u7/9fX1//29vb//Pz8/+bm5v/Ly8v/t7e3/6mp - qf+goKD/mpqa/5WVlf+SkpL/j4+P/4yMjP+Kior/iYmJ/4iIiP+IiIj/h4eH/4aGhv+Ghob/hoaG/4WF - hf+FhYX/h4eH/1hYWHkAAAAAAAAAAE5OTluCgoL/goKC/4KCgv+Dg4P/g4OD/4eHg/9DRX3/EhSP/xkZ - lf8aGpr/Gxqf/xsap/95eaT/lJSP/5SUlP+ampr/oaGh/6ysrP+7u7v/z8/P/+bm5v/6+vr//f39/+/v - 7//c3Nz/ysrJ/7y8uv+xsa7/q6um/6amof+jo53/pKSd/6Kinf+hoZ7/oaKh/5aWlv+MjIz/i4uL/4qK - iv+JiYn/iYmJ/4iIiP+IiIj/iIiI/1NTU1wAAAAAAAAAAD09PTZ+fn71hYWF/4SEhP+FhYX/hYWF/4uL - h/9iYn7/FBaK/xkalv8aGpr/HBug/xkWpv9MTLH/pKSi/56dnf+lpaX/r6+v/7u7u//Kysr/3Nzc/+7u - 7v/8/Pz//v7+//T09P/m5uX/z8/T/7W1yv+trMv/m5rG/4uLwf99fb7/c3G6/2Rjtf9VVLD/REWp/3Jz - mf+VlZH/kZGR/4+Pj/+Ojo7/jIyM/4yMjP+MjIz/h4eH9T09PTYAAAAAAAAAAAwMDBR+fn7Wi4uL/4eH - h/+IiIj/iIiI/4uLiv+Bgof/IiSA/xgYl/8aG5r/HBuh/x0bp/8fHa7/i4u6/7Gxq/+wsLD/u7u7/8fH - x//V1dX/5eXl//Pz8//9/f3//v7+//f39//u7uz/09PY/1lXqf8jHbb/JyHJ/yIdwf8dGbn/Ghax/xgW - qf8XFqP/EhKb/19glv+dnZj/lZWV/5OTk/+SkpL/kZGR/5CQkP+Tk5P/hYWF1gwMDBQAAAAAAAAAAAAA - AAF3d3egkpKS/4qKiv+Li4v/jY2N/4+Pj/+UlZH/TU5//xQUj/8bG5v/HBuh/x4cp/8dGa3/ODW5/7Oz - xv/Cwrz/xMTF/9HR0f/e3t7/6+vr//b29v/+/v7//v7+//n5+f/w8PD/6Ojn/9HR1f9iYKT/IBur/yQf - wf8jH7n/IR6y/x8dq/8dHKT/FRad/19gmf+kpJ7/m5ub/5iYmP+Xl5f/lZWV/5OTk/+cnJz/fX19oAAA - AAEAAAAAAAAAAAAAAABkZGRUkpKS/o+Pj/+Pj4//kZGR/5KSkv+Xl5b/hoaP/yAhgP8ZGpv/HByh/x4d - qP8gHa7/HRm1/0hFxP/AwNT/2NjS/9nZ2P/k5OT/7+/v//j4+P/+/v7//v7+//r6+v/z8/P/6urq/+Tk - 4f/j49r/dnTE/yAcv/8jILr/IR6y/yAdq/8eHKX/FRad/11dm/+oqaT/n5+f/52dnf+bm5v/mZmZ/5iY - mP+ampr+bW1tVAAAAAAAAAAAAAAAAAAAAAAzMzMUj4+P15iYmP+Tk5P/lZWV/5iYmP+ampr/oqKe/2Bh - h/8VFYv/HByj/x4dqP8gHa//Ix+2/x8avP9APMr/tbTf/+vs5v/w8Or/9PTy//r6+v/+/v7///////z8 - +//4+Pb/9/fw/+jo7P+joeL/RkHO/yMewf8kILr/Ih+z/yAerP8eHaX/Fhed/1lanf+tran/paWl/6Ki - ov+fn5//nZ2d/6Kiov+Xl5fYJCQkFQAAAAAAAAAAAAAAAAAAAAAAAAAAgoKCe6Kiov+Xl5f/mpqa/5yc - nP+fn5//o6Oj/6SkpP9BQoL/FhaX/x8eqv8hHq//IyC3/yUgvv8jHcX/LSbM/3Rw3v/Bv+3/7+73//7/ - /P////////////3+/f/o5/f/rqvs/1VP3P8lHs7/JB7I/yYhwv8kILr/Ih+z/yAerf8eHab/Fhee/1VW - n/+ysq7/qqqq/6enp/+lpaX/oqKi/6ysrP+IiIh7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz8/HJ2d - nd+hoaH/np6e/6Ghof+kpKT/qKio/6+vrv+hoaj/NDSD/xgXnf8hHrH/IyC3/yUgvv8nIsb/KCLM/yQc - 0v8sI9j/TEXi/21n6v9/eu7/enXu/2Nc6f9COuL/KSDa/yge1P8qI8//KSLJ/yYhwv8kIbv/Ih+0/xsa - oP8ZGZr/Fxef/1BRoP+2trP/r6+v/6ysrP+pqan/rKys/6Wlpd8/Pz8cAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAIyMjG2urq7/oqKi/6Wlpf+pqan/ra2t/7Gxsf+6urj/pKSu/zc4h/8ZF5//IyC5/yYh - wP8oIsb/KiPN/ywk0/8tJNn/KiLd/ygf4P8oHeL/KB7j/yog4f8sI9//LiXb/y0k1f8rI9D/KSLJ/ych - xP8jH7r/GRia/0ZGjf9ERYn/ERGN/0tMof+5ubf/tLS0/7CwsP+urq7/t7e3/5GRkW0AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAADMzMwqlpaW5tLS0/6mpqf+urq7/srKy/7a2tv+6urr/xcXD/7a2 - vP9QUJH/GhiY/yMeuv8oIsj/KiPO/ywk0/8uJdn/Libe/y8m4f8wJuP/MCbk/zAm4v8vJt//LiXb/y0l - 1v8rJNH/KSLL/yEcuv8hHpb/b2+g/8rLy//CwsT/TU6K/z0/jP+9vbz/ubm4/7S0tP++vr7/ra2tuTMz - MwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzc3MqtLS047a2tv+ysrL/t7e3/7u7 - u//AwMD/xcXF/8/Ozf/Pz87/hIWs/y8uk/8dGKr/Jh/G/ywk1f8uJdv/Libf/y8m4v8wJuT/MCbl/zAm - 4/8vJuD/LiXd/ywk1/8mH8j/Hhqp/z49mP+iorz/3d3a/9TU0//Q0M//wsPF/4GCn/+8vL7/vLy8/8DA - wP+8vLzjc3NzKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk5OTUb+/ - v/a7u7v/urq6/7+/v//FxcX/ycnJ/8/Pz//W1tX/4eHe/8nJ0v9+frD/PDqe/yMeqP8iG7v/Jh7N/ykh - 1v8rIdr/KyHa/ykg1v8mHs3/Ihu8/yUfqf9CP6H/jIu4/9na3f/n5+P/29vb/9bW1v/R0dH/zs7N/8zM - yv/ExMT/xcXF/8fHx/aamppRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAKmpqWjHx8f6xMTE/8PDw//Jycn/zs7O/9PT0//Y2Nj/3t7e/+fn5v/w8O3/4eHm/7W0 - 0P+Egrz/YF2w/01Jrf9HQq7/SUSv/1NPr/9kYbL/iojA/7u61P/m5ur/8/Pw/+rq6f/j4+P/3t7e/9nZ - 2f/V1dX/0NDQ/8vLy//MzMz/z8/P+q6urmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvr69kzs7O88/Pz//MzMz/0dHR/9bW1v/b29v/4ODg/+bm - 5v/r6+v/8vLx//v7+P////z////9//b2+f/y8vf/9PT4//v7+/////3////9//z8+f/09PP/7e3u/+rq - 6v/l5eX/4ODg/9zc3P/X19f/09PT/9fX1//V1dXzsrKyZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr6+vTdPT0+Hd3d3/1dXV/9nZ - 2f/e3t7/4+Pj/+jo6P/t7e3/8vLy//X19f/5+fn//Pz8/////////////////////v/7+/v/+vr6//f3 - 9//z8/P/7+/v/+vr6//n5+f/4+Pj/97e3v/b29v/4+Pj/9jY2OGysrJNAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyc - nCfS0tKz4uLi/+Pj4//g4OD/5ubm/+rq6v/u7u7/8vLy//f39//6+vr//Pz8//7+/v////////////7+ - /v/8/Pz/+vr6//f39//09PT/8fHx/+3t7f/o6Oj/5eXl/+jo6P/m5ub/1dXVs5ycnCcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAExcXFYuLi4tjv7+//7+/v/+3t7f/w8PD/9PT0//f39//6+vr//Pz8//7+ - /v////////////7+/v/8/Pz/+vr6//j4+P/19fX/8fHx/+/v7//y8vL/8vLy/+Xl5djIyMhiAAAABAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJGRkRXW1tZx5+fnzu7u7v38/Pz//Pz8//v7 - +//7+/v//Pz8//7+/v////////////7+/v/8/Pz//Pz8//v7+//9/f3//v7+/+/v7/3p6enO1tbWcZGR - kRUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzMzCsnJ - yUPh4eGT7Ozsz/Pz8/H7+/v//////////////////////////////////Pz8//T09PHs7OzP4+Pjk8nJ - yUMzMzMKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAHBwcCbW1tSbOzs5K3NzcZuPj43jt7e2B7e3tgePj43jh4eFmzs7OSrW1 - tSYcHBwJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///wD///AAD//wAA//8AAP/8AAA//wAA//AAAA// - AAD/wAAAA/8AAP+AAAAB/wAA/wAAAAD/AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAfAAD4AAAAAB8AAPAA - AAAADwAA4AAAAAAHAADgAAAAAAcAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAIAAAAAAAQAAgAAAAAAB - AACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAA - AAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAADAAAAAAAMAAMAAAAAAAwAA4AAAAAAH - AADgAAAAAAcAAPAAAAAADwAA8AAAAAAPAAD4AAAAAB8AAPwAAAAAPwAA/gAAAAB/AAD/AAAAAP8AAP+A - AAAB/wAA/8AAAAP/AAD/4AAAB/8AAP/4AAAf/wAA//4AAH//AAD//8AD//8AAP///////wAAKAAAACAA - AABAAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAoAAAAKAAAABgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAA2MjIyb1lZWZ1xcXG4goKCxIKCgsRxcXG4WVlZnTIy - Mm8AAAA2AAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsiIiJaaWlpu6Ojo/LU1NT/8fHx//39/f////////////// - ///z8/P/19fX/6ampvJqamq7IiIiWgAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4X19fuLCwsP/n5+f/9PT0//f39//6+vr//f39//// - //////////////z8/P/6+vr/+fn5/+zs7P+0tLT/YmJiuAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCQkYoWFhezS0tL/4uLi/+Tk5P/q6ur/8vLx//v7 - +P////3///////////////7//v/6//b29f/v7+//6urq/+jo6P/Z2dn/ioqK7CcnJ2IAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADExMXGQkJD80dHP/9LS0f/X19f/4eHf//Dw - 6v/u7vH/19fz/7278/+qp/P/qqf0/7e19P/U0vT/8fH1//X17v/n5+X/3t7e/9nZ2f/X19f/lpaW/DMz - M3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKytdi4uL/MPDwf+xssL/y8vO/9nZ - 0//U1N//kY/b/1BL1v8yK9j/KSDd/yge4v8oHuP/KB/f/zAn2v9RS9n/nJrg/+Dg5f/f39v/0dHS/8zM - zP/Ly8v/kpKS/C4uLl0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFMHd3d+m0tLT/vLy3/2pr - qP9qarn/qqnP/0A9wP8eGcL/JR7N/ywk1/8vJuD/LyXl/y8l5v8vJuL/LSTb/yYf0P8gGsX/TEnG/7m5 - 1v/U1M7/xMTE/76+vv++vr7/fX196QUFBTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVaWlqxpKSk/6mp - qf+0tK//ZGWk/xUVof8jIa7/Hxy3/yciw/8pItD/Jh7R/ycfyP8vJ8P/MSrD/yoixf8lHc//KiLS/ygi - x/8fG7r/LCq0/5ycxv/ExMD/tra2/7Kysv+tra3/YGBgsQAAAAUAAAAAAAAAAAAAAAAAAAAAKysrTIKC - gv6goKD/oaGh/6ysp/9cXZ//Fxeh/x8drP8jILj/JB/A/ygis/9iX7b/razS/9XV5v/c3Or/wsHc/3t5 - v/8wK7T/Ix3E/yUhvP8dG6//JiWp/56euv+zs6//qqqq/6mpqf+JiYn+Li4uTAAAAAAAAAAAAAAAAAAA - AABcXFyulpaW/5aWlv+ampr/o6Oe/1RUm/8XF6H/IB2s/yEduP80ML3/qqrC/+jp4//6+/b///////// - ///+/vv/9PTu/7q6y/8/Par/Hxu4/yEfsP8YGKP/PD2l/6enrP+jo6L/n5+f/5+fn/9gYGCuAAAAAAAA - AAAAAAAADQ0NJXNzc+2RkZH/kJCQ/5KSkv+ampb/RkaR/xAPmv8ZFqT/Gxev/yEbvP9+fMn/29va/+7u - 7f/8/Pz//v7+//T09P/k5OT/2dnW/6+wuv8yMKT/Hhuw/x0dpP8VFZr/a2yi/6Cgm/+Xl5f/mJiY/3h4 - eO0NDQ0lAAAAAAAAAAA/Pz9ZgYGB/4mJif+Kior/jIyM/5GRj/9RUn7/NDR7/zs6g/8+PYr/RUOT/01K - nP+rqsD/6Ojm//n5+f/9/f3/7u7u/9jY2P/ExMT/vL23/3x7oP8cGqb/HRyk/xcXmv8zNZj/k5SW/5GR - kP+QkJD/hoaG/0RERFoAAAAAAAAAAFRUVIiGhob/hYWF/4WFhf+Ghob/h4eH/4qKiP+Njov/kZGO/5WV - kv+dnZr/qaml/7e3t//U1NT/9fX1//z8/P/i4uL/xMTE/7CwsP+lpaT/m5ua/zY1mf8aGaX/Ghqb/xwd - lf96e4//jIyJ/4mJif+Kior/WlpaiAAAAAAAAAAAX19fpYWFhf+BgYH/goKC/4KCgf+CgoH/g4OC/4OD - gv+FhYX/iIiI/4qKiv+QkJD/m5ub/7Ozs//n5+f/9vb2/8TExP+np6f/mZmZ/5KSkv+Sko3/VlWM/xIR - mv8UFZL/DxGL/2Jkhv+JiIX/hISE/4iIiP9hYWGlAAAAAAAAAABkZGSxg4OD/39/f/9/f37/goKE/4iI - jf+IiI3/iIiO/4KCg/+AgID/gICA/4GBgf+CgoL/h4eH/62trf/AwMD/j4+P/4aGhv+EhIT/goKC/4OE - gv9xcX3/R0h0/0hIcv9FRm//a2t5/4KCgf+AgID/hYWF/2ZmZrAAAAAAAAAAAGlpabCDg4P/fn5+/4GB - fv9hYoT/LC6Y/zAxnf8yMqX/bW2M/4KCfv+AgID/goKC/4SEhP+NjY3/vLy8/9DQ0P+ampr/jY2N/4iI - iP+FhYX/hISE/4SEg/+Hh4P/h4eD/4eHg/+Dg4L/gYGB/4GBgf+Ghob/a2trrwAAAAAAAAAAampqoYWF - hf+AgID/hISB/2Bhf/8SE43/FheX/xUToP9eXZr/jIyG/4uLi/+SkpL/n5+f/7u7u//t7e3/+Pj4/83N - zf+urq7/np6e/5aWlf+RkY//jo6M/42Nif+Li4j/h4eH/4aGhv+Ghob/hYWF/4qKiv9tbW2hAAAAAAAA - AABpaWmAiIiI/4ODg/+GhoX/dXWB/xsdiv8ZGZj/GBeg/0FAqf+Zmpn/m5ua/6ioqP+7u7v/2dnZ//f3 - 9//8/Pz/4+Pj/8fHyf+3t7v/qKiw/52dq/+UlKn/iIin/4aGn/+Pj47/jY2M/4uLi/+Kior/j4+P/25u - boEAAAAAAAAAAGBgYE+JiYn/h4eH/4mJif+Li4n/MzSE/xYXmP8cG6D/Hhys/4aGtP+zs6z/u7u7/9DQ - 0P/n5+f/+/v7//39/f/x8u//tbTL/0pGuP87Nsb/Mi+9/yglsf8cG6f/PT2a/5mal/+UlJT/kZGR/5CQ - kP+RkZH/Z2dnTwAAAAAAAAAAMTExGoeHh+eOjo7/jo6O/5aWkv9oaIj/FhaR/x0cov8cGav/NjS6/7Cv - x//T08z/3d3c/+/v7//9/f3//f39//Pz8//n5+T/o6LA/zItuf8gHLv/Hx2v/xkYpP86Opv/oaGf/5yc - nP+ZmZn/mJiY/5CQkOc6OjoaAAAAAAAAAAAAAAAAh4eHoJqamv+UlJT/mZmZ/5ycmv87PIj/Fxeg/yAe - rP8eG7b/PDjG/7Cu3P/t7en//f31/////v/////////4/+zs7v+qqOH/OzbI/yIeuv8hH6//Ghql/zg5 - nf+np6f/pKSj/5+fn/+lpaX/j4+PoAAAAAAAAAAAAAAAAAAAAAB2dnY4mpqa+52dnf+goKD/qKim/5WV - oP8pKY7/Gxms/yMguP8iHcL/LCXO/2Zg4P+no+//xsT3/8PA9/+em+//WFLg/ycf0P8lH8b/JSG8/x4c - rv8WFaH/NTaf/6usr/+sq6v/p6en/6Ojo/t6eno4AAAAAAAAAAAAAAAAAAAAAAAAAACbm5udrKys/6am - pv+tra3/ubm2/5eYqf8tLZX/HBmz/ycixf8pIs7/Jx7W/yce3f8tI+P/LCLj/ycd3/8pINj/KyPR/ygh - yf8dGbP/PTya/0pKlP8rLJT/r6+1/7Ozsv+4uLj/pKSknQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZm - ZhmsrKzctLS0/7S0tP+7u7v/ycnG/7Ozvf9RT6H/IBuu/yMdyv8sI9n/Lybg/zAm5f8wJub/Lybi/ywj - 2/8kHcz/Ix6v/2Niqf/Gxsr/y8vJ/3FynP+vsLf/wMC//7S0tNxwcHAZAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJmZmT+5ubn1wMDA/8LCwv/Kysr/19fV/9ra2f+iosP/WVey/zMtuP8oIMT/Jx7N/yce - zf8pIcX/Ni+5/19btf+vrsr/5OTh/9zc2//T09P/zc3L/8jIyP/BwcH1nZ2dPwAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKurq0/FxcXzz8/P/9DQ0P/Y2Nj/4eHh/+/w7P/y8u//3Nzn/8HA - 3P+wrtj/tLLZ/8TD3v/f3+n/9fXy//Ly7//l5eX/3d3e/9bW1v/X19f/zMzM87GxsU8AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6urjzQ0NDa4eHh/97e3v/k5OT/7Ozs//Pz - 8v/8/Pr///////////////////////z8+//09PT/7u7u/+jo6P/j4+P/5+fn/9TU1Nq7u7s8AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIuLixbU1NSW4ODg+fPz - 8//y8vL/9fX1//n5+f/9/f3////////////9/f3/+vr6//b29v/09PT/9vb2/+Tk5PnW1taWi4uLFgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AADMzMwy4ODglurq6uL4+Pj/////////////////////////////////+fn5/+zs7OLi4uKWzMzMMgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAqqqqEtLS0kXk5OR17e3tlfLy8qTy8vKk7e3tleTk5HXS0tJFqqqqEgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//D///8AD//8A - AP/+AAB//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADwAAAA4AAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA - AAGAAAABgAAAAYAAAAHAAAADwAAAA+AAAAfgAAAH8AAAD/gAAB/8AAA//gAAf/+AAf//4Af//////ygA - AAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAbS0tLM0tLSzMAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVV - VUiioqK1zMzM7OPj4Pvj5OH7z8/O7KamprVVVVVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnp6 - eY3GxcP/9vbx//r6+//v7v//7+7///z8/v/8/Pb/ycnJ/35+fo0AAAACAAAAAAAAAAAAAAAAAAAAAHR0 - coqwsLr/t7jN/5eW1P9UTtr/OC/j/zct5P9TTd3/n53a/9ra2f/GxsX/eHh4igAAAAAAAAAAAAAAAFVV - VUKbm5j/lpar/ysrqP8gHLv/MCnG/2Ne0/9qZdX/My3I/xoWvv9oaLr/vLy7/6CgoP9VVVVCAAAAAAAA - AAB0dHStnp6b/4GCmf8WFZ//Hhm0/5+dzP/+//b////7/8fH1f9CP7L/FROn/3N0pP+oqKT/enp6rQAA - AAAaGhoTeXl55oyMi/+AgIf/W1uG/2Fgk/+Uk7D/7u7s//T09P/Ly8b/jo2k/xkYov8wMJj/kZGS/39/ - fuYaGhoTVVVVJ3h4ePeBgYL/gYKI/4iIiP+KioT/jY2K/7W1tv/CwsL/kZGR/4mJiP9DQ4f/NTaB/319 - g/97e3r3VVVVJ1BQUCZ6enn3eXqA/ywtk/8/P5v/hoaF/4yMi/+8vLz/ycnJ/5qal/+Skov/j4+G/4eH - g/+EhIT/fHx891BQUCY/Pz8QgIB/5ImJiP8vMIz/HBuk/42NqP/Cwrv/7+/v//f39P+hoMP/Yl+1/1FQ - p/+BgZb/lJSR/4eHh+Q/Pz8QAAAAAIiIiKaenpr/bW6R/xQToP9CP77/v77b//z8+f////v/p6bb/yIe - vv8REKf/fX2h/6mppf+RkZGmAAAAAAAAAACLi4s3oaGh/LCwrf9lZaT/Gha0/y4n1P9fWOn/XVXq/y0l - 1v8lILj/Pj2g/4aGqv+xsa38mZmZNwAAAAAAAAAAAAAAAKysrHvFxcX/z9DM/56dxf9XUsf/OTHS/zsy - 0/9aVcn/qKjM/9HR0P/Bwcf/tra0ewAAAAAAAAAAAAAAAAAAAAAAAAAAw8PDedXV1fz39/P/+vr2/+/v - 9v/w8Pb/+/v4//r69v/b29r8zMzMeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOzs415eXlofPz - 8+D///v0///79PPz8+Dn5+ehzs7ONQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACwsLAN2NjYIdjY2CGwsLANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/D81e/APAADAAwAAwAPmE4AB - //+AAf//AAD//wAArQAAAP//AAD//4AB//+AAUIAwAOK/+AH///wD////D8AAA== - - - \ No newline at end of file diff --git a/PROMS/xxxSync/SyncMany/CompareItem.cs b/PROMS/xxxSync/SyncMany/CompareItem.cs deleted file mode 100644 index af9cae84..00000000 --- a/PROMS/xxxSync/SyncMany/CompareItem.cs +++ /dev/null @@ -1,101 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; -using System.Xml.Serialization; - -namespace SyncMany -{ - [XmlRoot("SyncFile")] - public class SyncFile - { - private CompareItems _Items=new CompareItems(); - [XmlElement("CompareItem")] - public CompareItems Items - { - get { return _Items; } - set { _Items = value; } - } - } - public partial class CompareItems : List - { - } - public class CompareItem - { - private string _Source; - [XmlAttribute("Source")] - public string Source - { - get { return _Source; } - set { _Source = value; } - } - private string _Destination; - [XmlAttribute("Destination")] - public string DestinationItem - { - get { return _Destination; } - set { _Destination = value; } - } - public CompareItem() - { - } - public CompareItem(string source, string destination) - { - _Source = source; - _Destination = destination; - } - private FileInfo _SourceFile; - [XmlIgnore] - public FileInfo SourceFile - { - get - { - if (_SourceFile == null) - _SourceFile = new FileInfo(_Source); - return _SourceFile; - } - set { _SourceFile = value; } - } - private FileInfo _DestinationFile; - [XmlIgnore] - public FileInfo DestinationFile - { - get - { - if (_DestinationFile == null) - _DestinationFile = new FileInfo(_Destination); - return _DestinationFile; - } - set { _DestinationFile = value; } - } - public bool IsDifferent - { - get - { - string srcText = ReadFile(SourceFile); - string dstText = ReadFile(DestinationFile); - return srcText != dstText; - } - } - private string ReadFile(FileInfo myFile) - { - string retval; - using (StreamReader sr = myFile.OpenText()) - { - retval = sr.ReadToEnd(); - sr.Close(); - } - return retval; - } - public void CopySourceToDestination() - { - _DestinationFile.IsReadOnly = false; - _SourceFile.CopyTo(_Destination,true); - } - public void CopyDestinationToSource() - { - _SourceFile.IsReadOnly = false; - _DestinationFile.CopyTo(Source,true); - } - } -} diff --git a/PROMS/xxxSync/SyncMany/GenericSerializer.cs b/PROMS/xxxSync/SyncMany/GenericSerializer.cs deleted file mode 100644 index 107157e8..00000000 --- a/PROMS/xxxSync/SyncMany/GenericSerializer.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; -using System.Xml; -using System.Xml.Schema; -using System.Xml.Serialization; - -namespace SyncMany -{ - public static class ObjectSerializer where T : class - { - public static string StringSerialize(T t) - { - string strOutput = string.Empty; - XmlSerializer xs = new XmlSerializer(typeof(T)); - using (MemoryStream ms = new MemoryStream()) - { - xs.Serialize(new NonXsiTextWriter(ms, Encoding.UTF8), t); - //xs.Serialize(ms, t); - ms.Position = 0; - StreamReader sr = new StreamReader(ms); - strOutput = sr.ReadToEnd(); - ms.Close(); - } - return strOutput; - } - public static T StringDeserialize(string s) - { - T t; - XmlSerializer xs = new XmlSerializer(typeof(T)); - UTF8Encoding enc = new UTF8Encoding(); - Byte[] arrBytData = enc.GetBytes(s); - using (MemoryStream ms = new MemoryStream(arrBytData)) - { - t = (T)xs.Deserialize(ms); - } - return t; - } - public static void WriteFile(T t, string fileName) - { - string strOutput = string.Empty; - XmlSerializer xs = new XmlSerializer(typeof(T)); - using (FileStream fs = new FileStream(fileName, FileMode.Create)) - { - xs.Serialize(new NonXsiTextWriter(fs, Encoding.UTF8), t); - fs.Close(); - } - } - public static T ReadFile(string fileName) - { - T t; - XmlSerializer xs = new XmlSerializer(typeof(T)); - using (FileStream fs = new FileStream(fileName, FileMode.Open)) - { - t = (T)xs.Deserialize(fs); - } - return t; - } - } - public class NonXsiTextWriter : XmlTextWriter - { - public NonXsiTextWriter(TextWriter w) : base(w) { } - public NonXsiTextWriter(Stream w, Encoding encoding) - : base(w, encoding) - { - this.Formatting = Formatting.Indented; - } - public NonXsiTextWriter(string filename, Encoding encoding) : base(filename, encoding) { } - bool _skip = false; - public override void WriteStartAttribute(string prefix, string localName, string ns) - { - if ((prefix == "xmlns" && (localName == "xsd" || localName == "xsi")) || // Omits XSD and XSI declarations. - ns == XmlSchema.InstanceNamespace) // Omits all XSI attributes. - { - _skip = true; - return; - } - if (localName == "xlink_href") - base.WriteStartAttribute(prefix, "xlink:href", ns); - else - base.WriteStartAttribute(prefix, localName, ns); - } - public override void WriteString(string text) - { - if (_skip) return; - base.WriteString(text); - } - public override void WriteEndAttribute() - { - if (_skip) - { // Reset the flag, so we keep writing. - _skip = false; - return; - } - base.WriteEndAttribute(); - } - } -} diff --git a/PROMS/xxxSync/SyncMany/Program.cs b/PROMS/xxxSync/SyncMany/Program.cs deleted file mode 100644 index 2b42030b..00000000 --- a/PROMS/xxxSync/SyncMany/Program.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Windows.Forms; - -namespace SyncMany -{ - static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new frmSyncMany()); - } - } -} \ No newline at end of file diff --git a/PROMS/xxxSync/SyncMany/Properties/AssemblyInfo.cs b/PROMS/xxxSync/SyncMany/Properties/AssemblyInfo.cs deleted file mode 100644 index 6cf4b7c6..00000000 --- a/PROMS/xxxSync/SyncMany/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("SyncMany")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("SyncMany")] -[assembly: AssemblyCopyright("Copyright © 2010")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("1d309448-e6cc-4ad8-97ca-15dd2d5c551a")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/PROMS/xxxSync/SyncMany/Properties/DataSources/CompareItems.datasource b/PROMS/xxxSync/SyncMany/Properties/DataSources/CompareItems.datasource deleted file mode 100644 index 471fcc0d..00000000 --- a/PROMS/xxxSync/SyncMany/Properties/DataSources/CompareItems.datasource +++ /dev/null @@ -1,10 +0,0 @@ - - - - SyncMany.CompareItems, SyncMany, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - \ No newline at end of file diff --git a/PROMS/xxxSync/SyncMany/Properties/Resources.Designer.cs b/PROMS/xxxSync/SyncMany/Properties/Resources.Designer.cs deleted file mode 100644 index 2b4d39b5..00000000 --- a/PROMS/xxxSync/SyncMany/Properties/Resources.Designer.cs +++ /dev/null @@ -1,63 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.18408 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace SyncMany.Properties { - using System; - - - /// - /// A strongly-typed resource class, for looking up localized strings, etc. - /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [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() { - } - - /// - /// Returns the cached ResourceManager instance used by this class. - /// - [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("SyncMany.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// - [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/PROMS/xxxSync/SyncMany/Properties/Resources.resx b/PROMS/xxxSync/SyncMany/Properties/Resources.resx deleted file mode 100644 index af7dbebb..00000000 --- a/PROMS/xxxSync/SyncMany/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/PROMS/xxxSync/SyncMany/Properties/Settings.Designer.cs b/PROMS/xxxSync/SyncMany/Properties/Settings.Designer.cs deleted file mode 100644 index 60e8cac4..00000000 --- a/PROMS/xxxSync/SyncMany/Properties/Settings.Designer.cs +++ /dev/null @@ -1,96 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Runtime Version:4.0.30319.18408 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace SyncMany.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.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; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public global::System.Drawing.Size Size { - get { - return ((global::System.Drawing.Size)(this["Size"])); - } - set { - this["Size"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public global::System.Drawing.Point Location { - get { - return ((global::System.Drawing.Point)(this["Location"])); - } - set { - this["Location"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Normal")] - public global::System.Windows.Forms.FormWindowState WindowState { - get { - return ((global::System.Windows.Forms.FormWindowState)(this["WindowState"])); - } - set { - this["WindowState"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string FileName { - get { - return ((string)(this["FileName"])); - } - set { - this["FileName"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string SourceFolder { - get { - return ((string)(this["SourceFolder"])); - } - set { - this["SourceFolder"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string DestinationFolder { - get { - return ((string)(this["DestinationFolder"])); - } - set { - this["DestinationFolder"] = value; - } - } - } -} diff --git a/PROMS/xxxSync/SyncMany/Properties/Settings.settings b/PROMS/xxxSync/SyncMany/Properties/Settings.settings deleted file mode 100644 index a2e3d8d9..00000000 --- a/PROMS/xxxSync/SyncMany/Properties/Settings.settings +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - Normal - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/xxxSync/SyncMany/SyncMany.csproj b/PROMS/xxxSync/SyncMany/SyncMany.csproj deleted file mode 100644 index c79f91a1..00000000 --- a/PROMS/xxxSync/SyncMany/SyncMany.csproj +++ /dev/null @@ -1,108 +0,0 @@ - - - - Debug - AnyCPU - 8.0.50727 - 2.0 - {256A41AF-440F-42FE-A9B1-2CE36F1261A2} - WinExe - Properties - SyncMany - SyncMany - sync.ico - SAK - SAK - SAK - SAK - v2.0 - - - - - 2.0 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - Form - - - frmAddCompareItem.cs - - - Form - - - frmSyncMany.cs - - - - - - Designer - frmAddCompareItem.cs - - - Designer - frmSyncMany.cs - - - ResXFileCodeGenerator - Resources.Designer.cs - Designer - - - True - Resources.resx - True - - - - - SettingsSingleFileGenerator - Settings.Designer.cs - - - True - Settings.settings - True - - - - - - - - \ No newline at end of file diff --git a/PROMS/xxxSync/SyncMany/Thumbs.db b/PROMS/xxxSync/SyncMany/Thumbs.db deleted file mode 100644 index 37de5f2d..00000000 Binary files a/PROMS/xxxSync/SyncMany/Thumbs.db and /dev/null differ diff --git a/PROMS/xxxSync/SyncMany/app.config b/PROMS/xxxSync/SyncMany/app.config deleted file mode 100644 index 217e8909..00000000 --- a/PROMS/xxxSync/SyncMany/app.config +++ /dev/null @@ -1,24 +0,0 @@ - - - - -
- - - - - - Normal - - - - - - - - - - - - - \ No newline at end of file diff --git a/PROMS/xxxSync/SyncMany/frmAddCompareItem.Designer.cs b/PROMS/xxxSync/SyncMany/frmAddCompareItem.Designer.cs deleted file mode 100644 index 21d06f43..00000000 --- a/PROMS/xxxSync/SyncMany/frmAddCompareItem.Designer.cs +++ /dev/null @@ -1,155 +0,0 @@ -namespace SyncMany -{ - partial class frmAddCompareItem - { - /// - /// 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.btnSource = new System.Windows.Forms.Button(); - this.tbSource = new System.Windows.Forms.TextBox(); - this.label1 = new System.Windows.Forms.Label(); - this.label2 = new System.Windows.Forms.Label(); - this.tbDestination = new System.Windows.Forms.TextBox(); - this.btnDestination = new System.Windows.Forms.Button(); - this.btnOK = new System.Windows.Forms.Button(); - this.btnCancel = new System.Windows.Forms.Button(); - this.ofd = new System.Windows.Forms.OpenFileDialog(); - this.SuspendLayout(); - // - // btnSource - // - this.btnSource.Location = new System.Drawing.Point(634, 11); - this.btnSource.Name = "btnSource"; - this.btnSource.Size = new System.Drawing.Size(75, 23); - this.btnSource.TabIndex = 0; - this.btnSource.Text = "Browse..."; - this.btnSource.UseVisualStyleBackColor = true; - this.btnSource.Click += new System.EventHandler(this.btnSource_Click); - // - // tbSource - // - this.tbSource.Location = new System.Drawing.Point(90, 13); - this.tbSource.Name = "tbSource"; - this.tbSource.Size = new System.Drawing.Size(538, 20); - this.tbSource.TabIndex = 1; - this.tbSource.TextChanged += new System.EventHandler(this.tbText_TextChanged); - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 16); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(41, 13); - this.label1.TabIndex = 2; - this.label1.Text = "Source"; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(12, 42); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(60, 13); - this.label2.TabIndex = 5; - this.label2.Text = "Destination"; - // - // tbDestination - // - this.tbDestination.Location = new System.Drawing.Point(90, 39); - this.tbDestination.Name = "tbDestination"; - this.tbDestination.Size = new System.Drawing.Size(538, 20); - this.tbDestination.TabIndex = 4; - this.tbDestination.TextChanged += new System.EventHandler(this.tbText_TextChanged); - // - // btnDestination - // - this.btnDestination.Location = new System.Drawing.Point(634, 37); - this.btnDestination.Name = "btnDestination"; - this.btnDestination.Size = new System.Drawing.Size(75, 23); - this.btnDestination.TabIndex = 3; - this.btnDestination.Text = "Browse..."; - this.btnDestination.UseVisualStyleBackColor = true; - this.btnDestination.Click += new System.EventHandler(this.btnDestination_Click); - // - // btnOK - // - this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOK.Location = new System.Drawing.Point(553, 65); - this.btnOK.Name = "btnOK"; - this.btnOK.Size = new System.Drawing.Size(75, 23); - this.btnOK.TabIndex = 6; - this.btnOK.Text = "OK"; - this.btnOK.UseVisualStyleBackColor = true; - // - // btnCancel - // - this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Retry; - this.btnCancel.Location = new System.Drawing.Point(634, 65); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); - this.btnCancel.TabIndex = 7; - this.btnCancel.Text = "Cancel"; - this.btnCancel.UseVisualStyleBackColor = true; - // - // ofd - // - this.ofd.Filter = "CSharp Files|*.cs|All Files|*.*"; - // - // frmAddCompareItem - // - this.AcceptButton = this.btnOK; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.btnCancel; - this.ClientSize = new System.Drawing.Size(782, 145); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnOK); - this.Controls.Add(this.label2); - this.Controls.Add(this.tbDestination); - this.Controls.Add(this.btnDestination); - this.Controls.Add(this.label1); - this.Controls.Add(this.tbSource); - this.Controls.Add(this.btnSource); - this.Name = "frmAddCompareItem"; - this.Text = "frmAddCompareItem"; - this.Resize += new System.EventHandler(this.frmAddCompareItem_Resize); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Button btnSource; - private System.Windows.Forms.TextBox tbSource; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.TextBox tbDestination; - private System.Windows.Forms.Button btnDestination; - private System.Windows.Forms.Button btnOK; - private System.Windows.Forms.Button btnCancel; - private System.Windows.Forms.OpenFileDialog ofd; - } -} \ No newline at end of file diff --git a/PROMS/xxxSync/SyncMany/frmAddCompareItem.cs b/PROMS/xxxSync/SyncMany/frmAddCompareItem.cs deleted file mode 100644 index e1ff1436..00000000 --- a/PROMS/xxxSync/SyncMany/frmAddCompareItem.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; - -namespace SyncMany -{ - public partial class frmAddCompareItem : Form - { - public string SourceName - { get { return tbSource.Text; } } - public string DestinationName - { get { return tbDestination.Text; } } - private string _SourceFolder; - public string SourceFolder - { - get { return _SourceFolder; } - set { _SourceFolder = value; } - } - private string _DestinationFolder; - public string DestinationFolder - { - get { return _DestinationFolder; } - set { _DestinationFolder = value; } - } - public frmAddCompareItem(string sourceFolder, string destinationFolder) - { - InitializeComponent(); - SetupButtons(); - SourceFolder = sourceFolder; - DestinationFolder = destinationFolder; - } - private void SetupButtons() - { - btnOK.Enabled = tbDestination.Text != null && tbSource != null; - } - private void frmAddCompareItem_Resize(object sender, EventArgs e) - { - if(Height != 131) - Height = 131; - } - private void tbText_TextChanged(object sender, EventArgs e) - { - SetupButtons(); - } - private void btnSource_Click(object sender, EventArgs e) - { - if (tbSource.Text != "") - { - SourceFolder = SetupOpenFileDialog(tbSource.Text); - } - else - { - ofd.InitialDirectory = SourceFolder; - } - if (ofd.ShowDialog() != DialogResult.OK) - return; - tbSource.Text = ofd.FileName; - SourceFolder = SetupOpenFileDialog(ofd.FileName); - } - private string SetupOpenFileDialog(string fileName) - { - FileInfo fi = new FileInfo(fileName); - ofd.InitialDirectory = fi.Directory.FullName; - ofd.FileName = fi.Name; - return ofd.InitialDirectory; - } - private void btnDestination_Click(object sender, EventArgs e) - { - if (tbDestination.Text != "") - { - DestinationFolder = SetupOpenFileDialog(tbDestination.Text); - } - else - { - ofd.InitialDirectory = DestinationFolder; - } - if (ofd.ShowDialog() != DialogResult.OK) - return; - tbDestination.Text = ofd.FileName; - DestinationFolder = SetupOpenFileDialog(ofd.FileName); - } - } -} \ No newline at end of file diff --git a/PROMS/xxxSync/SyncMany/frmAddCompareItem.resx b/PROMS/xxxSync/SyncMany/frmAddCompareItem.resx deleted file mode 100644 index 86c9308b..00000000 --- a/PROMS/xxxSync/SyncMany/frmAddCompareItem.resx +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - 17, 17 - - \ No newline at end of file diff --git a/PROMS/xxxSync/SyncMany/frmSyncMany.Designer.cs b/PROMS/xxxSync/SyncMany/frmSyncMany.Designer.cs deleted file mode 100644 index ba41a8a7..00000000 --- a/PROMS/xxxSync/SyncMany/frmSyncMany.Designer.cs +++ /dev/null @@ -1,285 +0,0 @@ -namespace SyncMany -{ - partial class frmSyncMany - { - /// - /// 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(frmSyncMany)); - this.menuStrip1 = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); - this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.addToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.ofd = new System.Windows.Forms.OpenFileDialog(); - this.sfd = new System.Windows.Forms.SaveFileDialog(); - this.statusStrip1 = new System.Windows.Forms.StatusStrip(); - this.tsslStatus = new System.Windows.Forms.ToolStripStatusLabel(); - this.dgv = new System.Windows.Forms.DataGridView(); - this.IsDifferent = new System.Windows.Forms.DataGridViewCheckBoxColumn(); - this.sourceDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.destinationItemDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.cms = new System.Windows.Forms.ContextMenuStrip(this.components); - this.compareToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.copySourceToDestinationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.copyDestinationToSourceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.compareItemsBindingSource = new System.Windows.Forms.BindingSource(this.components); - this.menuStrip1.SuspendLayout(); - this.statusStrip1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv)).BeginInit(); - this.cms.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.compareItemsBindingSource)).BeginInit(); - this.SuspendLayout(); - // - // menuStrip1 - // - this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.fileToolStripMenuItem, - this.addToolStripMenuItem}); - this.menuStrip1.Location = new System.Drawing.Point(0, 0); - this.menuStrip1.Name = "menuStrip1"; - this.menuStrip1.Size = new System.Drawing.Size(672, 24); - this.menuStrip1.TabIndex = 0; - this.menuStrip1.Text = "menuStrip1"; - // - // fileToolStripMenuItem - // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.openToolStripMenuItem, - this.saveToolStripMenuItem, - this.saveAsToolStripMenuItem, - this.toolStripMenuItem1, - this.exitToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "&File"; - // - // openToolStripMenuItem - // - this.openToolStripMenuItem.Name = "openToolStripMenuItem"; - this.openToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.openToolStripMenuItem.Text = "&Open"; - this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); - // - // saveToolStripMenuItem - // - this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; - this.saveToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.saveToolStripMenuItem.Text = "&Save"; - this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); - // - // saveAsToolStripMenuItem - // - this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem"; - this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.saveAsToolStripMenuItem.Text = "Save&As"; - this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveAsToolStripMenuItem_Click); - // - // toolStripMenuItem1 - // - this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(149, 6); - // - // exitToolStripMenuItem - // - this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; - this.exitToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.exitToolStripMenuItem.Text = "E&xit"; - this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); - // - // addToolStripMenuItem - // - this.addToolStripMenuItem.Name = "addToolStripMenuItem"; - this.addToolStripMenuItem.Size = new System.Drawing.Size(41, 20); - this.addToolStripMenuItem.Text = "Add"; - this.addToolStripMenuItem.Click += new System.EventHandler(this.addToolStripMenuItem_Click); - // - // ofd - // - this.ofd.FileName = "SyncList.xml"; - this.ofd.Filter = "XML Files|*.xml"; - this.ofd.FileOk += new System.ComponentModel.CancelEventHandler(this.ofd_FileOk); - // - // sfd - // - this.sfd.FileName = "SyncList.XML"; - this.sfd.Filter = "XML Files|*.xml"; - this.sfd.FileOk += new System.ComponentModel.CancelEventHandler(this.sfd_FileOk); - // - // statusStrip1 - // - this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsslStatus}); - this.statusStrip1.Location = new System.Drawing.Point(0, 333); - this.statusStrip1.Name = "statusStrip1"; - this.statusStrip1.Size = new System.Drawing.Size(672, 22); - this.statusStrip1.TabIndex = 1; - this.statusStrip1.Text = "statusStrip1"; - // - // tsslStatus - // - this.tsslStatus.Name = "tsslStatus"; - this.tsslStatus.Size = new System.Drawing.Size(39, 17); - this.tsslStatus.Text = "Ready"; - // - // dgv - // - this.dgv.AllowUserToAddRows = false; - this.dgv.AllowUserToDeleteRows = false; - this.dgv.AutoGenerateColumns = false; - this.dgv.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dgv.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { - this.IsDifferent, - this.sourceDataGridViewTextBoxColumn, - this.destinationItemDataGridViewTextBoxColumn}); - this.dgv.ContextMenuStrip = this.cms; - this.dgv.DataSource = this.compareItemsBindingSource; - this.dgv.Dock = System.Windows.Forms.DockStyle.Fill; - this.dgv.Location = new System.Drawing.Point(0, 24); - this.dgv.Name = "dgv"; - this.dgv.Size = new System.Drawing.Size(672, 309); - this.dgv.TabIndex = 2; - this.dgv.CellMouseDown += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dgv_CellMouseDown); - // - // IsDifferent - // - this.IsDifferent.DataPropertyName = "IsDifferent"; - this.IsDifferent.HeaderText = "IsDifferent"; - this.IsDifferent.Name = "IsDifferent"; - this.IsDifferent.ReadOnly = true; - // - // sourceDataGridViewTextBoxColumn - // - this.sourceDataGridViewTextBoxColumn.DataPropertyName = "Source"; - this.sourceDataGridViewTextBoxColumn.HeaderText = "Source"; - this.sourceDataGridViewTextBoxColumn.Name = "sourceDataGridViewTextBoxColumn"; - // - // destinationItemDataGridViewTextBoxColumn - // - this.destinationItemDataGridViewTextBoxColumn.DataPropertyName = "DestinationItem"; - this.destinationItemDataGridViewTextBoxColumn.HeaderText = "DestinationItem"; - this.destinationItemDataGridViewTextBoxColumn.Name = "destinationItemDataGridViewTextBoxColumn"; - // - // cms - // - this.cms.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.compareToolStripMenuItem1, - this.copySourceToDestinationToolStripMenuItem, - this.copyDestinationToSourceToolStripMenuItem, - this.removeToolStripMenuItem}); - this.cms.Name = "cms"; - this.cms.Size = new System.Drawing.Size(219, 92); - // - // compareToolStripMenuItem1 - // - this.compareToolStripMenuItem1.Name = "compareToolStripMenuItem1"; - this.compareToolStripMenuItem1.Size = new System.Drawing.Size(218, 22); - this.compareToolStripMenuItem1.Text = "Compare"; - this.compareToolStripMenuItem1.Click += new System.EventHandler(this.compareToolStripMenuItem1_Click); - // - // copySourceToDestinationToolStripMenuItem - // - this.copySourceToDestinationToolStripMenuItem.Name = "copySourceToDestinationToolStripMenuItem"; - this.copySourceToDestinationToolStripMenuItem.Size = new System.Drawing.Size(218, 22); - this.copySourceToDestinationToolStripMenuItem.Text = "Copy Source to Destination"; - this.copySourceToDestinationToolStripMenuItem.Click += new System.EventHandler(this.copySourceToDestinationToolStripMenuItem_Click); - // - // copyDestinationToSourceToolStripMenuItem - // - this.copyDestinationToSourceToolStripMenuItem.Name = "copyDestinationToSourceToolStripMenuItem"; - this.copyDestinationToSourceToolStripMenuItem.Size = new System.Drawing.Size(218, 22); - this.copyDestinationToSourceToolStripMenuItem.Text = "Copy Destination to Source"; - this.copyDestinationToSourceToolStripMenuItem.Click += new System.EventHandler(this.copyDestinationToSourceToolStripMenuItem_Click); - // - // removeToolStripMenuItem - // - this.removeToolStripMenuItem.Name = "removeToolStripMenuItem"; - this.removeToolStripMenuItem.Size = new System.Drawing.Size(218, 22); - this.removeToolStripMenuItem.Text = "Remove"; - this.removeToolStripMenuItem.Click += new System.EventHandler(this.removeToolStripMenuItem_Click); - // - // compareItemsBindingSource - // - this.compareItemsBindingSource.DataSource = typeof(SyncMany.CompareItem); - // - // frmSyncMany - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(672, 355); - this.Controls.Add(this.dgv); - this.Controls.Add(this.statusStrip1); - this.Controls.Add(this.menuStrip1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.MainMenuStrip = this.menuStrip1; - this.Name = "frmSyncMany"; - this.Text = "Sync Many"; - this.Load += new System.EventHandler(this.frmSyncMany_Load); - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmSyncMany_FormClosing); - this.menuStrip1.ResumeLayout(false); - this.menuStrip1.PerformLayout(); - this.statusStrip1.ResumeLayout(false); - this.statusStrip1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv)).EndInit(); - this.cms.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.compareItemsBindingSource)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.MenuStrip menuStrip1; - private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem saveToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem saveAsToolStripMenuItem; - private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; - private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; - private System.Windows.Forms.OpenFileDialog ofd; - private System.Windows.Forms.SaveFileDialog sfd; - private System.Windows.Forms.StatusStrip statusStrip1; - private System.Windows.Forms.ToolStripStatusLabel tsslStatus; - private System.Windows.Forms.DataGridView dgv; - private System.Windows.Forms.BindingSource compareItemsBindingSource; - private System.Windows.Forms.ContextMenuStrip cms; - private System.Windows.Forms.ToolStripMenuItem compareToolStripMenuItem1; - private System.Windows.Forms.DataGridViewCheckBoxColumn IsDifferent; - private System.Windows.Forms.DataGridViewTextBoxColumn sourceDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn destinationItemDataGridViewTextBoxColumn; - private System.Windows.Forms.ToolStripMenuItem copySourceToDestinationToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem copyDestinationToSourceToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem removeToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem addToolStripMenuItem; - } -} - diff --git a/PROMS/xxxSync/SyncMany/frmSyncMany.cs b/PROMS/xxxSync/SyncMany/frmSyncMany.cs deleted file mode 100644 index 4252ef3a..00000000 --- a/PROMS/xxxSync/SyncMany/frmSyncMany.cs +++ /dev/null @@ -1,269 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; - -namespace SyncMany -{ - public partial class frmSyncMany : Form - { - public string MyStatus - { - get { return tsslStatus.Text; } - set { tsslStatus.Text = value; Application.DoEvents(); } - } - private string _MyFileName; - public string MyFileName - { - get { return _MyFileName; } - set { _MyFileName = value; ofd.FileName = value; sfd.FileName = value; } - } - SyncFile _MySyncFile = new SyncFile(); - public SyncFile MySyncFile - { - get { return _MySyncFile; } - set - { - _MySyncFile = value; - ResetOriginalSync(); - dgv.DataSource = value.Items; - dgv.AutoResizeColumns(); - } - } - private void ResetOriginalSync() - { - _OriginalSync = ObjectSerializer.StringSerialize(MySyncFile); - } - private string _SourceFolder; - public string SourceFolder - { - get { return _SourceFolder; } - set { _SourceFolder = value; } - } - private string _DestinationFolder; - public string DestinationFolder - { - get { return _DestinationFolder; } - set { _DestinationFolder = value; } - } - public frmSyncMany() - { - InitializeComponent(); - compareItemsBindingSource.DataSource = MySyncFile.Items; - } - public string _OriginalSync = ""; - public bool IsDirty - { - get - { - string tmp = ObjectSerializer.StringSerialize(MySyncFile); - return tmp != _OriginalSync; - } - } - private void openToolStripMenuItem_Click(object sender, EventArgs e) - { - if (ofd.ShowDialog() == DialogResult.OK) - { - MySyncFile = ObjectSerializer.ReadFile(MyFileName); - } - } - private void saveToolStripMenuItem_Click(object sender, EventArgs e) - { - if (MyFileName == null) - saveAsToolStripMenuItem_Click(sender, e); - else - { - ObjectSerializer.WriteFile(MySyncFile, MyFileName); - ResetOriginalSync(); - } - } - private void saveAsToolStripMenuItem_Click(object sender, EventArgs e) - { - if (sfd.ShowDialog() == DialogResult.OK) - { - ObjectSerializer.WriteFile(MySyncFile, MyFileName); - ResetOriginalSync(); - } - } - private void ofd_FileOk(object sender, CancelEventArgs e) - { - MyFileName = ofd.FileName; - } - private void sfd_FileOk(object sender, CancelEventArgs e) - { - MyFileName = sfd.FileName; - } - private void addToolStripMenuItem_Click(object sender, EventArgs e) - { - frmAddCompareItem myCompareItem = new frmAddCompareItem(SourceFolder,DestinationFolder); - if (myCompareItem.ShowDialog() == DialogResult.OK) - { - SourceFolder = myCompareItem.SourceFolder; - DestinationFolder = myCompareItem.DestinationFolder; - MySyncFile.Items.Add(new CompareItem(myCompareItem.SourceName, myCompareItem.DestinationName)); - //compareItemsBindingSource.Add(new CompareItem(myCompareItem.SourceName, myCompareItem.DestinationName)); - compareItemsBindingSource.DataSource = null; - compareItemsBindingSource.DataSource = MySyncFile.Items; - dgv.DataSource = null; - dgv.DataSource = compareItemsBindingSource; - dgv.Refresh(); - } - } - private void compareToolStripMenuItem1_Click(object sender, EventArgs e) - { - foreach (DataGridViewRow row in dgv.SelectedRows) - { - CompareItem item = row.DataBoundItem as CompareItem; - if (item != null) - { - System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(@"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe", - string.Format(@" -t ""{0}"" ""{1}""", item.Source, item.DestinationItem)); - System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi); - } - } - } - private void frmSyncMany_Load(object sender, EventArgs e) - { - LoadSettings(); - this.Move +=new EventHandler(frmSyncMany_Move); - this.Resize +=new EventHandler(frmSyncMany_Resize); - FileInfo myInfo = new FileInfo(MyFileName); - if (myInfo.Exists) - MySyncFile = ObjectSerializer.ReadFile(MyFileName); - else - MySyncFile = new SyncFile(); - } - private void copySourceToDestinationToolStripMenuItem_Click(object sender, EventArgs e) - { - foreach (DataGridViewRow row in dgv.SelectedRows) - { - CompareItem item = row.DataBoundItem as CompareItem; - if (item != null) - { - item.CopySourceToDestination(); - } - dgv.Refresh(); - } - } - private void copyDestinationToSourceToolStripMenuItem_Click(object sender, EventArgs e) - { - foreach (DataGridViewRow row in dgv.SelectedRows) - { - CompareItem item = row.DataBoundItem as CompareItem; - if (item != null) - { - item.CopyDestinationToSource(); - } - } - dgv.Refresh(); - } - private void frmSyncMany_FormClosing(object sender, FormClosingEventArgs e) - { - if (IsDirty) - { - DialogResult result = MessageBox.Show("Do you want to Save changes?","Save Changes", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); - switch (result) - { - case DialogResult.Cancel: - // Don't close - e.Cancel = true; - return; - break; - case DialogResult.No: - // Don't do anything - break; - case DialogResult.Yes: - saveToolStripMenuItem_Click(this, e); - break; - } - } - SaveSettings(); - } - private string GetPropertyString(string propertyName) - { - object prop = Properties.Settings.Default[propertyName]; - return prop == null ? "" : prop.ToString(); - } - private void LoadSettings() - { - string myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); - if (GetPropertyString("Location") != "") - this.Location = Properties.Settings.Default.Location; - if ((Properties.Settings.Default["Size"] ?? "") != "") - this.Size = Properties.Settings.Default.Size; - this.WindowState = Properties.Settings.Default.WindowState; - string test = GetPropertyString("FileName"); - if (GetPropertyString("FileName") != "") - MyFileName = Properties.Settings.Default.FileName; - else - MyFileName = myDocuments + @"\SyncList.XML"; - SetupOpenFileDialog(MyFileName); - if (GetPropertyString("SourceFolder") != "") - SourceFolder = Properties.Settings.Default.SourceFolder; - else - SourceFolder = myDocuments; - if (GetPropertyString("DestinationFolder") != "") - DestinationFolder = Properties.Settings.Default.DestinationFolder; - else - DestinationFolder = myDocuments; - } - private string SetupOpenFileDialog(string fileName) - { - FileInfo fi = new FileInfo(fileName); - sfd.InitialDirectory = ofd.InitialDirectory = fi.Directory.FullName; - sfd.FileName = ofd.FileName = fi.Name; - return ofd.InitialDirectory; - } - private void SaveSettings() - { - Properties.Settings.Default.WindowState = this.WindowState; - Properties.Settings.Default.FileName = MyFileName; - Properties.Settings.Default.SourceFolder = SourceFolder; - Properties.Settings.Default.DestinationFolder = DestinationFolder; - Properties.Settings.Default.Save(); - } - private void frmSyncMany_Move(object sender, EventArgs e) - { - if (this.WindowState == FormWindowState.Normal) - { - Properties.Settings.Default.Location = this.Location; - Properties.Settings.Default.Size = this.Size; - } - } - private void frmSyncMany_Resize(object sender, EventArgs e) - { - if (this.WindowState == FormWindowState.Normal) - { - Properties.Settings.Default.Location = this.Location; - Properties.Settings.Default.Size = this.Size; - } - } - private void removeToolStripMenuItem_Click(object sender, EventArgs e) - { - int index = dgv.SelectedRows[0].Index; - dgv.Rows[index].Selected = false; - MySyncFile.Items.RemoveAt(index); - compareItemsBindingSource.DataSource = MySyncFile.Items; - dgv.DataSource = null; - dgv.DataSource = compareItemsBindingSource; - dgv.Refresh(); - } - private void dgv_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) - { - if (e.RowIndex >= 0) - { - dgv.Rows[e.RowIndex].Selected = true; - dgv.CurrentCell = dgv[0, e.RowIndex]; - } - } - private void exitToolStripMenuItem_Click(object sender, EventArgs e) - { - this.Close(); - } - - } -} \ No newline at end of file diff --git a/PROMS/xxxSync/SyncMany/frmSyncMany.resx b/PROMS/xxxSync/SyncMany/frmSyncMany.resx deleted file mode 100644 index 661f3c7d..00000000 --- a/PROMS/xxxSync/SyncMany/frmSyncMany.resx +++ /dev/null @@ -1,4653 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - 17, 17 - - - 132, 17 - - - 189, 17 - - - 257, 17 - - - True - - - 581, 17 - - - 373, 17 - - - - - AAABAAEAAAAAAAEAIAAoIAQAFgAAACgAAAAAAQAAAAIAAAEAIAAAAAAAACAEAAAAAAAAAAAAAAAAAAAA - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAA - AAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMAAAADAAAAAwAAAAIAAAACAAAAAQAAAAEAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACgAA - AAoAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAAAAsAAAALAAAACwAA - AAsAAAALAAAACwAAAAsAAAALAAAACgAAAAoAAAAKAAAACAAAAAgAAAAGAAAABQAAAAUAAAADAAAAAwAA - AAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAEAAAACAAAABAAAAAUAAAAGAAAACQAAAAsAAAAMAAAADgAAABAAAAARAAAAEgAA - ABMAAAATAAAAEwAAABQAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAA - ABUAAAAVAAAAFQAAABQAAAAUAAAAEwAAABMAAAATAAAAEgAAABAAAAAPAAAADgAAAAsAAAAKAAAABwAA - AAUAAAAEAAAAAwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAQAAAAEAAAADAAAABAAAAAYAAAAJAAAADAAAAA8AAAASAAAAFAAAABcAAAAZAAAAGwAA - AB0AAAAeAAAAHwAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAA - ACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAB8AAAAfAAAAHgAAABwAAAAaAAAAGQAAABYAAAATAAAAEAAA - AA0AAAAKAAAABwAAAAUAAAADAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAADAAAABAAAAAcAAAAKAAAADQAAABIAAAAWAAAAGgAAAB8AAAAjAAAAJgAA - ACkAAAArAAAALQAAAC4AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALwAA - AC8AAAAvAAAALwAAAC8AAAAvAAAALwAAAC8AAAAvAAAALQAAACwAAAAqAAAAKAAAACQAAAAhAAAAHQAA - ABgAAAAUAAAADwAAAAsAAAAIAAAABQAAAAMAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAYAAAAJAAAADgAAABMAAAAZAAAAHwAAACUAAAArAAAAMAAA - ADUAAAA5AAAAPAAAAD4AAAA/AAAAQAAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQAAAAD8AAAA9AAAAOgAAADcAAAAzAAAALgAA - ACgAAAAiAAAAHAAAABYAAAAQAAAACwAAAAgAAAAFAAAAAwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAUAAAAJAAAADQAAABMAAAAZAAAAIQAAACoAAAAxAAAAOgAA - AEAAAABGAAAATAAAAE8AAABSAAAAVAAAAFUAAABWAAAAVgAAAFYAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFcAAABXAAAAVwAA - AFcAAABXAAAAVwAAAFcAAABXAAAAVwAAAFYAAABWAAAAVQAAAFUAAABTAAAAUQAAAE4AAABJAAAAQwAA - AD0AAAA2AAAALgAAACYAAAAeAAAAFgAAABAAAAALAAAABwAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAAGAAAACwAAABEAAAAYAAAAIAAAACoAAAA0AAAAPwAA - AEgAAABRAAAAWQAAAF8AAABkAAAAaAAAAGoAAABsAAAAbAAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAA - AG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAG0AAABtAAAAbQAAAGwAAABrAAAAagAAAGYAAABiAAAAXQAA - AFUAAABNAAAARAAAADoAAAAvAAAAJQAAABwAAAAUAAAADgAAAAgAAAAEAAAAAgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAACAAAAA0AAAAUAAAAHgAAACcAAAAzAAAAQAAA - AEwAAABXAAAAYQAAAGsAAAByAAAAdwAAAHsAAAB+AAAAgAAAAIAAAACAAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAA - AIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIEAAACBAAAAgQAAAIAAAACAAAAAfwAAAH0AAAB5AAAAdQAA - AG8AAABmAAAAXQAAAFIAAABGAAAAOQAAAC0AAAAiAAAAGQAAABAAAAALAAAABQAAAAIAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABAAAAAkAAAAPAAAAFwAAACEAAAAtAAAAOwAA - AEoAAABXAAAAZQAAAHAAAAB6AAAAggAAAIgAAACNAAAAjwAAAJEAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAA - AJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJIAAACSAAAAkgAAAJAAAACPAAAAiwAA - AIYAAAB+AAAAdQAAAGoAAABeAAAAUQAAAEIAAAA0AAAAKAAAAB0AAAATAAAADAAAAAYAAAADAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAJAAAAEQAAABoAAAAlAAAAMgAA - AEEAAABRCgoIcRUUEaUXFRK8FxUSwRcVEsUXFRLJFxUSyxcVEs0XFRLNFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4WFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhYVEs4WFRLOFhUSzhYVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4WFRLOFhUSzhYVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4WFRLOFhQRzhUUEc4WFRLOFxUSzhYVEs4WFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcV - Es4XFRLOFxUSzhcVEs4XFRLOFxUSzhYVEs4WFRLOFxUSzhcVEs4XFRLOFxUSzhYVEs4WFRLOFhUSzhYV - Es4WFRLOFhUSzhcVEs4XFRLOFxUSzhcVEs4XFRLOFxUSzhcVEs4WFRLOFRQRzhUUEc4VFBHOFhUSzhcV - Es4WFRLOFhUSzhYVEs4VFBHOFRQRzhUTEc4WFRLOFhUSzhYVEs4WFRLOFxUSzhcVEs4XFRLNFxUSzBYV - EsoWFRLHFhUSwxYVEr8WFRK5FBIQoAoICGoAAABJAAAAOQAAACsAAAAfAAAAFgAAAA0AAAAHAAAAAwAA - AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAACgAAABIAAAAcAAAAKAAA - ADUAAABGJSIeqjczLPw5NC7/Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ni7/Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ni7/ODQt/zczLP84NC3/OjYu/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo2L/86NS7/Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3 - L/86Ny//OjYv/zk0Lf84NCz/OjYv/zo3L/86Ni7/OjYv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo2 - Lv86Ni7/Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//Ojcv/zo3L/86Ny//OjYu/zk0 - Lf84NC3/OjUu/zo1Lv86NS7/Ojcv/zo3L/86Ny//OjYu/zo3L/86Ni7/OjUu/zgzLP83Myv/NzMs/zk0 - Lf86Ny//OjYv/zo1Lv85NS7/ODMs/zYyK/82Myv/OTQt/zo1Lv86NS7/OjUu/zo1Lv86Ni7/Ojcv/zo3 - L/86Ni//OjUu/zo2L/86Ni//OjYu/zYyK/8wLSf8HRsXpQAAAD0AAAAuAAAAIgAAABcAAAAOAAAACAAA - AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABQAAAAoAAAASAAAAHAAA - ACgAAAA3KSYijUM9N/9DPTf/Qz43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9CPTb/Qj03/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/QT02/z87NP8+OzP/QT01/0I9Nv9CPjf/Qz43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0M+N/9EPjf/Qz42/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9DPjf/Qj02/0E9Nf9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9EPjf/RD43/0Q+N/9DPjb/Qj02/0Q+N/9EPjf/Qz42/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+ - N/9CPTb/QT02/0M+Nv9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9EPjf/RD43/0M+ - Nv9BPTb/QT01/0I9Nv9CPTb/Qz42/0Q+N/9EPjf/RD43/0M+Nv9EPjf/Qz43/0I9Nv8/PDT/Pzs0/0A8 - NP9CPTb/Qj02/0I9Nv9CPTb/QT02/0A8NP8/OjP/Pzsz/0I9Nv9CPTb/Qj02/0A9Nf9APTX/QT01/0M+ - N/9EPjf/RD43/0Q+N/9EPjf/RD43/0Q+N/9DPjf/QDs0/zUwK/8aGBaIAAAAMAAAACIAAAAXAAAADgAA - AAcAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAQAAAAJAAAAEQAA - ABsAAAAnBQQEOFtXUOtKRT3/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dBOf9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9GQDj/RkA4/0VAOP9HQTn/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dBOf9GQDn/RkA4/0ZAOP9GQDj/RkA4/0dBOf9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dBOf9GQDj/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/RkA4/0U/N/9FPzf/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9HQjr/R0E5/0ZAOP9HQTn/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dCOv9HQjr/R0I6/0dC - Ov9GQDj/RT83/0Q/N/9GQTn/RkE5/0dBOf9HQjr/R0I6/0dCOv9HQTn/R0E5/0dCOv9HQjr/R0E5/0ZB - Of9GQTn/R0I6/0dCOv9HQTn/RkA4/0U/N/9EPjb/RD42/0U/N/9GQDj/RkA4/0ZAOP9EPzf/RD43/0U/ - OP9HQjr/R0I6/0dCOv9GQDj/RkA4/0ZAOP9HQjr/R0I6/0dCOv9BPTX/Mi8p6QMCAjEAAAAhAAAAFgAA - AA0AAAAGAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAACAAA - ABAAAAAaAAAAJi4tKmNjX1j/SkY9/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0hEO/9HQjr/SUQ8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/R0E5/0VAOP9GQTn/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRDz/SEQ7/0hDO/9IRDv/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9IQzv/SEM7/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0dCOv9FQDj/RkA6/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SUU8/0lFPP9JRTz/SEQ8/0lFPP9JRTz/SUU8/0lF - PP9JRTz/SEM7/0ZBOv9HQjr/SEQ7/0hEO/9JRDz/SUU8/0lFPP9JRTz/SUU8/0lEPP9JRTz/SUU8/0lF - PP9JRTz/SUU8/0lFPP9JRTz/SUU8/0dCOv9GQDn/RkA4/0dCOv9IRDv/SEQ7/0hEO/9IQzr/RkA6/0dC - Ov9JRDz/SUU8/0lFPP9JRTz/SEQ7/0hEO/9IRDv/SUU8/0lFPP9JRTz/SEQ7/zo3MP8UExBZAAAAHwAA - ABUAAAAMAQEBBQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA - AAcAAAAOAAAAFwAAACM+PDqOYl5W/0xIP/9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9JRTz/SUU8/0pGPf9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/SkY9/0hDO/9HQzv/SUU8/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0pGPf9KRj3/SkY9/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/SkY9/0pGPf9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9IRDz/RkE5/0lEO/9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/SUU9/0lFPf9LRz7/S0c+/0pG - Pf9LRz7/SkY9/0lGPf9JRj3/SkY9/0pGPf9KRj3/S0c+/0tHPv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tH - Pv9LRz7/S0c+/0tHPv9LRz7/S0c+/0tHPv9JRj3/SEQ8/0hEPP9JRTz/SkY9/0pGPf9KRj3/SkY9/0lG - Pf9KRj3/S0c+/0tHPv9LRz7/S0c+/0lFPf9IRTz/SkY9/0tHPv9LRz7/S0c+/0tHPv9BPTX/GhgVfwAA - AB0AAAASAAAACgMCAgQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAECAQEGAAAACwAAABQAAAAeQkE+kmJeVv9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TUlA/01JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/01JQP9KRj7/SkY+/0xIP/9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9MSD//SkY9/0tH - P/9NSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TUlA/0xIP/9MSD//TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TEg//0lGPf9MSD//TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/01JQP9LRz7/TEg//01J - QP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TklA/05JQP9OSUD/TUg//0pGPf9KRj3/TEg//01I - P/9MSD//S0c//0xIP/9MSD//TEg//0xIP/9NSD//TEg//01JQP9OSUD/TklA/05JQP9OSUD/TklA/05J - QP9OSUD/TklA/01JQP9MSD//TEg//0xIP/9MSD//TEg//0xIP/9MSD//TEg//0xIP/9MSD//TEg//0xI - P/9NSD//TklA/05JQP9OSUD/TklA/05JQP9MSD//S0c+/0xIP/9OSUD/TklA/05JQP9OSUD/RkI6/xwa - F4sAAAAZAAAADwMDAwkEBAQDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAABAwMDBAYFBQkAAAAQAAAAGVJPTZNlYFn/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UEtD/09KQv9QSkL/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/T0pB/05J - QP9OSUD/UEtD/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1BKQ/9OSUD/UEpD/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FL - RP9RS0T/UEtD/1BLQ/9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9PSkL/TUg//01I - QP9QS0P/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UUtE/05JQf9KRj7/TEc//05J - Qf9QS0P/UEtD/05JQf9PSUH/T0pC/1BKQv9QSkL/UEtE/1BKQv9QSkL/UEpC/1BLRP9RS0T/UUtE/1FL - RP9RS0T/UUtE/1FLRP9QSkL/UEpC/09KQf9QSkL/UEpC/1BKQv9QS0P/UUtE/1FLRP9RS0T/UEpC/1BK - Qv9QS0P/UUtE/1FLRP9RS0T/UUtE/1FLRP9RS0T/UEpC/05JQv9QSkL/UUtE/1FLRP9RS0T/UUtE/0pE - Pf8mIyCRAAAAFQAAAAwPDg0HBwYFAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAUFBQIZGRgGAAAADAAAABRsaWWYZmFa/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/UkxF/1NN - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NN - Rv9STET/UUtF/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTUb/UkxE/1JN - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NO - Rv9TTkb/UkxF/1JMRf9STEX/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/Uk1G/1FL - RP9RS0T/U01G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NNRv9QSkL/T0lB/1FL - Q/9STEX/U01G/1JMRv9RS0X/UUtE/1FLRP9RS0X/UkxF/1JMRf9STEX/UkxF/1JMRf9TTUb/U05G/1NO - Rv9TTkb/U05G/1NORv9TTkb/UkxF/1JMRf9STUX/U01G/1NNRv9TTkb/U05G/1NORv9TTkb/U05G/1NN - Rv9STEX/U05G/1NORv9TTkb/U05G/1NORv9TTkb/U05G/1NNRv9STEX/UkxF/1NORv9TTkb/U05G/1NO - Rv9NR0D/MS4plgAAABAAAAAJGxkWBQoJCAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAJCAgBLSspBQ4ODQkAAAAPeXZxnWZiWf9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VE9G/1RP - Rv9VUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1RP - Rv9UT0b/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1RPRv9UT0b/VE9G/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VE9G/1RP - Rv9TT0b/U05G/1VQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9VUEf/U05G/1JN - RP9TTkb/VE9G/1VQR/9UT0b/U05F/1JNRf9TTkb/U09G/1RPRv9UT0b/U09G/1NPRv9UT0f/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1RPRv9UT0b/VVBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQ - R/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VlBH/1ZQR/9WUEf/VE9G/1VQR/9WUEf/VlBH/1ZQ - R/9WUEf/TkpB/zc0LpwAAAAMIR8cBiEfGwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAADQ0MATg2MwMyMC0GAAAACoJ+eqRmYlr/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1ZQ - SP9WUEj/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9WUEj/VlBI/1ZQSP9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9VUEj/U05G/1RPR/9WUEj/VU9H/1VPR/9VT0j/VlBI/1ZQSP9VT0f/VU9H/1VPSP9VT0f/VU9I/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1dRSf9XUUn/V1FJ/1ZQSP9XUUn/V1FJ/1dR - Sf9XUUn/V1FJ/1BLQ/87ODKjDw4MCDQwKwUoJSEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGQ0ABTktGBD06NQeHg32qaGNa/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9ZU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9ZU0r/WVNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WVNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WVNK/1hSSf9YUkn/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WFJJ/1dSSf9XUkn/WFJJ/1dRSP9YUkn/WFJJ/1lSSf9ZUkn/V1FJ/1dRSP9XUUj/VlBH/1dR - SP9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9ZU0r/WVNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9aU0r/WlNK/1pTSv9ZU0r/WVNK/1hSSf9YUkn/WlNK/1pT - Sv9aU0r/WlNK/1pTSv9TTUX/Pzs0qkE9NgU7NzECMCwnAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFlWUAFZVU4EioZ/sWhjWv9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tUS/9bVUv/W1VL/1tV - S/9bVUv/WlRL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9aVEv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVEv/WlNK/1pTSv9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1pUS/9YUkn/WVJK/1tVS/9bVUv/W1VL/1tUS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1pUS/9aU0r/WlNK/1pTSv9aU0r/WlNK/1pUSv9bVEv/WlNK/1pTSv9YUkn/WFJJ/1dR - SP9ZUkr/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tV - S/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tVS/9bVUv/W1VL/1tUS/9bVEv/WlRL/1pTSv9aU0r/WlRK/1tV - S/9bVUv/W1VL/1tVS/9bVUv/VU9G/0E9NrFHQzsCQj03AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkYFkBYVxVAouHgbhmYVj/W1VM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVTP9bVEv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9cVkz/W1VL/1tUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1pTSv9aVEv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1pUS/9bVUv/XFZM/1xWTP9bVUv/W1VL/1pUS/9aVEv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVEv/WFNK/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVEv/WlNK/1tUS/9bVEv/W1RL/1tUS/9bVUv/XFZM/1xWTP9cVkz/W1RL/1pT - Sv9ZU0r/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1VPR/9CPje5TUhAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhiWwGLh4HBZ2FY/1tW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1RL/1tV - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9aU0v/W1RL/1tVS/9cVkz/XFZM/1tVS/9bVUv/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tU - S/9aVEv/W1VL/1xWTP9cVkz/XFZM/1pUS/9YUkn/WlNK/1tUS/9bVUv/W1RL/1lTSv9aU0r/WlNK/1tV - S/9cVkz/XFZM/1xWTP9bVUv/WVNK/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1VL/1lTSv9ZU0r/WlNK/1tUS/9bVEv/W1VL/1xWTP9cVkz/XFZM/1tV - S/9bVEv/W1RL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9bVUv/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9WUEf/Qz43wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAioaByWZg - V/9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1hTSv9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1lT - Sv9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9aVEv/WVNK/1tUS/9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/WlNK/1tVS/9cVkz/XFZM/1xWTP9bVUv/WFNK/1pTSv9bVEv/WlNK/1pTSv9aU0r/W1RL/1tU - S/9bVUv/XFZM/1xWTP9bVUv/WVNL/1lTSv9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aVEv/V1JJ/1lSSv9bVEv/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VL/1tUS/9bVEv/XFZM/1xWTP9bVUv/W1RL/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/WlRL/1tUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9bVEv/W1RL/1tUS/9bVEv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/V1FI/0M/OMkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAImF - f9JlX1b/XFZM/1xWTP9cVkz/XFZM/1tVS/9aU0r/WlNK/1pTS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9aU0r/W1RL/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9ZU0r/WFJJ/1tUS/9bVEv/W1RL/1tUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/W1VL/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VL/1tVS/9cVkz/XFZM/1xWTP9cVkz/W1VL/1tUS/9aU0v/W1RL/1tUS/9aU0r/WlNK/1tU - S/9cVkz/XFZM/1xWTP9bVUv/WlNK/1tUS/9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1pUS/9ZU0r/WlNK/1tUS/9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tUS/9aU0r/WlNL/1tVS/9aU0v/WFJK/1dRSP9XUUj/WlRL/1xWTP9cVkz/XFZM/1xW - TP9bVUv/W1RL/1lTSv9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1VM/1xWTP9bVUv/WVNK/1tV - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1dRSP9EPznSAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACIhH7bY15V/1xWTP9cVkz/XFZM/1xWTP9bVUv/WFJJ/1hSSf9aU0r/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9ZU0r/WFJK/1pTSv9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/VlBI/1VQR/9bVEv/W1RL/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9bVEv/XFZM/1tVS/9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9aVEv/WVNK/1pUS/9bVEv/W1RL/1tU - S/9bVEv/XFZM/1xWTP9cVkz/W1VL/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1RL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/WlNK/1pTSv9bVEv/W1VL/1xW - TP9cVkz/XFZM/1xWTP9bVUv/WVNK/1lTSv9bVEv/WFJJ/1RPR/9TT0b/VlFI/1tVS/9cVkz/XFZM/1xW - TP9cVkz/WlNK/1hSSv9YUkn/W1RL/1tVS/9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1pT - Sv9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9YUUn/RUE52wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAh4N95GJcU/9cVkz/WlRL/1pUS/9cVkz/XFZM/1tVTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9aVEr/VlFI/1hSSf9aU0r/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/W1VL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1RL/1RORv9VUEj/W1RL/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1VL/1xWTP9bVUv/W1ZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1RL/1tUS/9bVEv/W1RL/1tU - S/9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1lTSv9XUUn/WVNK/1tV - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVEv/W1RL/1hSSf9TTkb/VU9H/1hSSf9cVkz/XFZM/1xW - TP9cVkz/XFZM/1pUS/9aU0r/WVNK/1tUS/9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/WFJJ/0ZBOuQAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAIaCe+xhXFL/W1VL/1dRSP9YUkn/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tU - S/9WUUj/VU9H/1VQR/9YU0r/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/WlRL/1dSSf9TTUb/V1FJ/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tVS/9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1RL/1tUS/9bVEv/XFZM/1tV - S/9bVEv/W1RL/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1ZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9ZU0r/V1FJ/1hS - Sf9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1RL/1tUS/9ZU0r/VlBI/1dRSP9aVEv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tUS/9bVEv/WVNK/1lTSv9bVEv/XFZM/1xWTP9cVkz/XFZM/1tV - TP9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lTSv9HQjvsAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACFgXr0YFpR/1pUS/9WUEj/WFJJ/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/WVNK/1hSSv9ZU0r/WlRL/1xWTP9cVkz/XFZM/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1VL/1dRSf9VUEf/VVBH/1pUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1RL/1tVS/9bVEv/W1RL/1tV - S/9bVEv/WlNK/1pTS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1pT - Sv9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tUS/9cVkz/W1RL/1hSSf9YUkr/W1VL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1lTSv9ZU0r/W1RL/1xWTP9cVkz/XFZM/1tV - S/9YU0r/WFJJ/1lSSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aU0r/R0M79QAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAhIB5/V9ZUP9bVUv/WVNK/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lTSv9VUEf/VlBI/1lTSv9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1pTSv9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/WlNL/1pTS/9bVEv/W1RL/1tU - S/9bVEv/WlNK/1lTSv9ZU0r/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/W1VM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9bVEv/W1VL/1pTSv9ZU0r/WlNK/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/W1VL/1xWTP9cVkz/XFZM/1tV - S/9YUkn/VlBI/1dRSP9YUkn/WlRL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/WlRK/0hD - O/0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAfnpyB4N/eP9fWU//XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9YUkn/VVBH/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1VL/1pTS/9bVEv/W1VL/1tU - S/9bVEv/W1RL/1pTS/9ZU0r/WlRL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/W1VL/1tUS/9aU0r/WlNK/1tU - S/9bVUz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/V1FJ/1VQR/9XUUj/WFJJ/1pTSv9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1pU - S/9JRDz/S0Y+CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAH56chCCfnf/X1lP/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/WlNK/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1RL/1pTS/9cVkz/XFZM/1tV - S/9bVEv/W1RL/1tUS/9ZU0r/WlNK/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/W1RL/1xWTP9cVkz/XFZM/1tV - S/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VL/1pUS/9YUkr/WlNK/1tUS/9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9aVEv/SUQ8/0tGPhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+enIYgXx1/19ZT/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9ZU0r/WlRL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVEv/W1RL/1xW - TP9cVkz/W1RL/1tUS/9ZU0r/WVNK/1pTS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1RL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tUS/9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVkz/W1VL/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1RL/0lEPf9KRT0ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf3pzIYB7dP9eWE7/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9ZU0v/WlNK/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9aU0r/V1FJ/1hSSf9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/WlNL/1pT - Sv9bVUv/XFZM/1tVS/9aU0v/WlNK/1tUS/9bVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tUS/9JRT3/SkU9IQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH96cyp/eXL/XlhO/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/V1FJ/1lSSv9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/WVNK/1ZRSP9XUUj/WFJJ/1pUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9ZU0r/W1VL/1tVS/9bVEv/W1RL/1tUS/9bVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVEv/W1RL/1tUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVEv/SkU9/0pFPSoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/enMzfXhx/15YTv9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/WlNK/1pTSv9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lTSv9XUUj/V1FI/1dRSf9aU0r/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/WlNL/1tUS/9aU0r/WlNK/1pTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tUS/9aU0r/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1RL/0tGPv9KRT0zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfnpzO3p2bv9cVk3/WlRL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1pTSv9aU0r/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aVEv/WFJK/1hSSf9ZU0r/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tUS/9bVEv/V1FI/1ZQR/9XUUj/WVNK/1pUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9aU0r/WlNK/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9MRj//SkU9PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH55ckV4c2z/WlVL/1pT - Sv9bVUz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9ZU0r/WVNK/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1lTSv9ZU0r/W1RL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/WlNK/1VPR/9STkb/U05G/1dRSP9YUkr/W1RL/1tUS/9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aVEv/WVNK/1pTSv9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/TUdA/0pFPkUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+eXJNd3Ns/11X - Tf9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/WFJJ/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VL/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VM/1tVS/9bVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/WlRL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lTSv9UT0b/UkxF/1JNRf9WUEf/WFJJ/1hSSv9ZU0r/W1RL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9bVUv/WVNK/1ZQSP9aU0r/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/01IQf9KRj5OAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfXlyVnZx - av9dV03/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1pUS/9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1lTSv9YUkr/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9ZU0r/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/WFJJ/1dRSf9XUUj/V1FJ/1lTSv9ZU0r/WVNK/1tV - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/W1RL/1hTSv9XUUn/WlRL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9OSUH/S0Y+VgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH15 - cV50b2j/XFZN/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - TP9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9aVEv/WlRL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tVS/9bVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1pU - S/9ZUkn/WlRK/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVUv/WlRL/1lTSv9bVEv/W1VL/1tV - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tUS/9ZU0r/WFJJ/1tU - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/UEpC/0tGPl4AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAB9eXFmcm5m/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9aVEv/VlBI/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9aU0r/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/W1VL/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - S/9XUUj/U05G/1VQR/9ZU0r/WlNK/1tVS/9cVkz/W1VL/1tVS/9bVEv/W1VL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9aU0r/WVNK/1tWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xW - TP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tVS/9bVEv/WVNK/1dS - Sf9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VM/1BLQ/9KRj5nAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAfXlxb3BsZP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/WVJK/1VQSP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tV - S/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/WFJJ/1lTSv9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tUS/9cVkz/XFZM/1xW - TP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/V1FJ/1NNRv9TTkb/VVBH/1VQR/9YUkn/WlNK/1lTSv9YUkr/WlNK/1pTSv9bVUv/XFZM/1xW - TP9cVkz/W1ZM/1tVS/9aU0r/WVNK/1hSSf9cVkz/XFZM/1xWTP9cVkz/W1VL/1tVS/9bVUv/W1VL/1tV - S/9cVkz/XFZM/1pUS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVEv/W1VL/1xWTP9bVUv/WlNK/1dR - SP9XUUj/WVNK/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9RTEP/S0Y+cAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAH14cXlvamH/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9bVUv/W1ZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1lTSv9XUUn/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VL/1hSSf9ZU0r/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tU - S/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVEv/W1VL/1tV - S/9aVEv/WVNK/1pUS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/2JcUv9pY1r/amRb/2pk - XP9rZV3/a2Ze/2tmXf9rZVz/amRc/2RfVv9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1pUS/9YUkn/VE9G/1NORv9STEX/VE9H/1dRSP9XUUj/V1FI/1hSSf9ZU0v/WlRL/1tV - S/9bVEv/W1RL/1pTSv9eWVD/Y15V/2NdVf9bVUv/XFZM/1xWTP9cVkz/XFZM/1tUS/9ZU0r/WlRL/1pU - S/9ZU0r/WlRL/1xWTP9aVEv/WlRL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/WlNK/1lTSv9bVEv/W1RL/1lT - Sv9VUEj/VU9H/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9aVEv/UkxE/0tG - PnkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACGgnuBbmhg/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/WVNL/1hSSf9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1RL/1hSSv9WUEj/WVRK/1xWTP9cVkz/XFZM/1xWTP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tV - TP9bVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aVEv/WlRL/1tU - S/9aU0v/WVNK/1dSSf9YUkn/WlRL/2VfVv9oYln/amVc/3RvaP95dG3/e3dw/396dP+BfXf/gn54/4J9 - d/+CfXf/gX13/4N+eP+FgHr/hYB6/4aBe/+Hgnz/hoF7/4R/ef+BfXb/fnlz/25pYf9sZ17/amVc/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lTSv9UUEf/U05G/1VQR/9XUUj/VlFI/1dRSf9YUkn/WlRL/1pT - Sv9YUkr/WlNK/1lTS/9bVkz/ZmFZ/3dzbP95dG3/W1VL/1xWTP9cVkz/XFZM/1tVS/9aU0r/V1FI/1hS - Sf9YUkn/VVBH/1hSSf9aU0r/WFJJ/1lTSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lTSv9YUkr/WlNL/1tU - S/9aU0r/VlFI/1dRSP9aVEv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9YUkr/VU9H/1BL - Q/9GQjqBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAj4yFim1oX/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1pUSv9bVUv/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1pUS/9WUEj/WVRK/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1VM/1ZRSf9WUEj/WFJJ/1tVS/9cVkz/XFZM/1xWTP9cVkz/WlRL/1tVS/9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/W1RL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tV - S/9bVUv/W1VL/2RdVf9mYFf/cW1l/3dyav97dm//fHhx/3x5cv99eXL/fHhx/3p3cP95dW7/eXVu/3l1 - bv95dW7/eXVu/3l1bv95dW7/eXVu/3l1bv95dW7/eXVu/3p3cP99eXL/gHx1/4J+d/+FgHr/iIN8/4iE - ff+EgHn/f3t0/21oYP9qZFv/XFZM/1xWTP9bVEv/WFNK/1hSSf9YUkn/V1JJ/1hSSf9YUkn/WFJK/1lT - S/9ZU0r/V1JJ/1lTSv9aVkz/XFdO/2diWv94dG7/f3t1/2VfVv9cVkz/XFZM/1tVS/9bVEv/W1RL/1hS - Sv9YUkn/VVBH/1JNRf9UTkb/VlFI/1dRSf9aU0r/W1RL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/WlRL/1pUS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9aVEv/WVNK/1pU - S/9bVUv/WlRL/1hSSf9ZU0r/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/WlRK/1ZR - SP9QS0P/QT02igAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAI6LhJNsZ17/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1lSSv9WUEj/WlRL/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9bVUv/VlBI/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9UT0f/WVNK/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9gWlD/Z2JZ/3FrZP92cWn/eXVt/3p2bv96dm7/eXVu/3l1bv95dW7/eXVu/3l1bv95dW7/eXVu/3l1 - bv95dW7/eXVu/3l1bv95dW7/eXVu/3l1bv95dW7/eXVu/3l1bv95dW7/eXVu/3l1bv95dW7/eXVu/3l1 - bv96dnD/f3t0/4SAef+IhH7/iIR9/4F9dv9zbmf/Z2FY/1tWTP9bVUv/W1RL/1tUS/9aU0r/WlNK/1tU - S/9bVEv/WVNK/1dRSP9aVEv/XlhO/2VfVv93cmv/eXRt/4F8dv9qZFz/WlRL/1pUS/9bVEv/W1RL/1tU - S/9bVEv/WVNK/1VQR/9RS0T/UUtD/1JMRf9VT0f/WlNK/1tVS/9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1tVS/9bVUv/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/W1VL/1tU - S/9cVkz/XFZM/1xWTP9bVEv/W1VL/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xWTP9cVkz/XFZM/1xW - TP9cVkz/VE5G/0I+N5MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOi4Wba2de/1xXTf9cV03/W1ZM/1tVTP9bVkz/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1tWTP9YU0r/Vk9I/1pVTP9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1tVTP9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9bVkz/WlVL/1tWTP9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XllQ/2Nf - Vf9vamL/dHBo/3dza/94dG7/eHVv/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2 - cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2 - cP95dnD/eXZw/3l2cP95dnD/eXZw/3x5c/+EgHr/iYV//4eEff+AfXb/bmpi/2JdVP9cV03/W1ZN/1xX - Tf9cV03/W1ZM/1lUS/9aVEv/XVhO/2RgV/93c23/eXVv/3l1b/9/fHX/d3Ns/1lTSv9aVUz/W1ZM/1tW - TP9bVkz/WlRL/1hSSv9XUEn/VE5G/1JMRP9STEP/U05F/1lTSv9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1tWTP9bVk3/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1RPR/9CPzecAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjYqEpGpmXf9cV03/XFdN/1pVS/9YUkr/WFJJ/1lU - S/9bVkz/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/W1ZM/1lUS/9bVkz/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9fWlD/ZmJZ/21p - Yf9xbWX/dnJr/3h1bv95dm//eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2 - cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dW//eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2 - cP95dnD/eXZw/3l2cP95dnD/eXZw/3l2cP95dnD/eXVv/3l1b/9+enT/hYJ8/4qHgP+DgHn/dHBo/2Ne - Vf9cV03/XFdN/1xXTf9dWE7/XFdN/2NeVf91cmz/eHRu/3l1b/95dW//fHlz/3p2cP9YUkn/WlVM/1tW - TP9bVkz/W1ZM/1hSSv9WUEj/WFJK/1hTSv9XUUn/U01F/1JMRP9WT0j/WlVL/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9bVkz/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9VUEf/Qj44pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI2JhK1pZVz/XFdN/1tWTP9ZU0v/WFJJ/1hS - Sf9YUkr/WVNL/1tWTP9bVkz/W1ZM/1xXTf9cV03/XFdN/1xXTf9cV03/W1ZM/1tWTP9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/15ZUP9mYVn/bmlh/3Ft - Zf91cWr/eHVu/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3 - cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/enZv/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3 - cP96d3D/endw/3p3cP95dm//eXZv/3l1bv96dm//enZv/3p2b/96dm//enZv/3p3cP97eHL/hIF7/4qH - gP+FgXv/dXFp/2NeVf9hXFP/X1pQ/2NfVv92cmz/dnJs/3dzbf95dW7/enZv/3p3cP9+e3T/ZmFY/1tW - TP9bVkz/W1ZM/1pVS/9XUEj/VU5H/1hSSv9aVUv/W1ZM/1lTSv9WUEj/VlBI/1pVS/9cV03/XFdN/1xX - Tf9cV03/W1ZM/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/W1ZM/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/VVBI/0I+N64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMiYK2aGRb/1xXTf9bVkz/WFNK/1pU - S/9aVUv/WlVL/1pUS/9aVUv/W1ZM/1tWTP9bVkz/XFdN/1xXTf9cV03/W1ZM/1dRSf9ZU0r/W1VM/1xX - Tf9cV03/XFdN/1xXTf9bVkz/W1VM/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XllP/2RfV/9rZl7/b2ti/3Vx - av95dm//endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3 - cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3 - cP96d3D/endw/3p3cP95dm//eHRu/3d0bf93c23/eXVu/3p2b/96dm//enZv/3p2b/96dm//endw/3p3 - cP97eHH/g4B5/4qHgP+AfHX/a2Ze/2ZhWP94dG3/eHRu/3ZzbP93c23/eHRu/3p2b/96d3D/gHx2/2pm - Xv9bVkz/W1ZM/1tWTP9aVkz/V1FJ/1VOR/9YUkn/W1VM/1xXTf9cV03/W1ZM/1tWTP9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1tWTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1VQSP9DPzi2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAioeBvmdiWf9bVkz/WlVL/1lT - Sv9bVUz/W1ZM/1tWTP9bVkz/W1ZM/1tWTP9bVkz/W1ZM/1xXTf9cV03/XFdN/1pVS/9VT0f/V1FJ/1pU - S/9cV03/XFdN/1xXTf9bVkz/WVRL/1dRSf9bVkz/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/YFtS/2hjW/9saGD/cm9n/3l1 - bv96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3 - cP96d3D/endw/3p3cP96d3D/endw/3p3cP96dm//endw/3p3cP96d3D/endw/3p3cP96d3D/endw/3p3 - cP96d3D/endw/3p3cP96dm//eHRu/3ZxbP91cWv/dnJs/3h1bv95dW7/enZv/3p3cP96d3D/enZv/3p2 - b/96d3D/endw/3p3cP97eHH/gH13/3Rwaf92cmz/eXVu/3l1bv93c23/dnNs/3d0bf96dm//endw/398 - df95dW7/WlRL/1pVS/9bVkz/WlZM/1hSSf9XUEj/V1FI/1lUSv9bVkz/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9cV03/XFdN/1xX - Tf9cV03/XFdN/1xXTf9cV03/XFdN/1xXTf9WUUj/Qz85vwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAImGgMdnYln/W1ZM/1pV - S/9ZU0v/XFdN/11YTv9dWE7/XVhO/1xXTf9cV03/XFdN/1xXTf9dWE7/XVhO/11YTv9aVEv/V1BJ/1dQ - Sf9aVEv/XFdN/11YTv9cV03/W1ZM/1lTS/9aU0v/XFdN/11YTv9dWE7/XVhO/11YTv9cV03/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9eWVD/ZF9W/2plXP9vamP/d3Rt/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endw/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3 - cf96d3H/endx/3p3cf96d3H/enZw/3l1bv94dG7/d3Nt/3dzbf95dG7/enZv/3p3cP96d3H/endx/3p3 - cP96d3D/endw/3p3cf96d3H/endx/3p3cP94dG7/dnJs/3l1b/96d3D/eXZv/3l0bv95dm//endx/3p3 - cf99eXT/f3t0/15ZUP9aVEz/W1ZN/1tWTP9bVUz/WVJK/1lSSv9aVEz/XFdO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/V1NK/0RBOscAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJhoDPZWBX/1tW - TP9ZU0v/WlNL/1xXTf9dWE7/XVhO/11YTv9cV03/XFdN/1xXTf9cV03/XVhO/11YTv9cV03/WVJL/1dQ - SP9WT0j/WlRL/1xXTf9cV03/W1ZM/1lTS/9aVEv/W1ZN/11YTv9dWE7/XVhO/11YTv9dWE7/XFdN/1xX - Tf9cV03/XFdN/1xXTv9cV03/XFdN/1xXTf9cV03/W1ZM/1xXTf9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/1xXTf9cWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9gW1L/Z2JZ/2pmXf9zb2j/enZw/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3 - cf96d3H/endx/3p3cf96d3H/enZw/3l0b/95dW7/enZv/3l0bv93dG7/eHRu/3l0bv96dnD/endx/3p3 - cf96d3D/endw/3p3cP96d3H/endx/3p3cf96d3D/d3Nt/3Vxa/95dW7/eXZv/3l1b/96dnD/endw/3p3 - cf96d3H/endx/4J+d/9oZFv/WlNL/1tWTf9bVk3/WlNL/1pUS/9aVEz/W1ZM/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/1hTSv9FQTrPAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIR+2GNe - Vv9bVkz/WlVL/1xXTf9dWE7/XVhO/11YTv9dWE7/XVhO/1xXTv9dWE7/XVhO/11YTv9dWE7/XFdN/1pU - S/9XUUn/V1BJ/1pUS/9cV03/WlVM/1lTSv9ZU0v/XFdN/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/1xXTf9bVUz/W1VM/1tWTP9bVkz/WlRL/1ZQSP9ZUkr/XFdN/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/1xXTf9YUUn/W1VM/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9iXVP/ZmFZ/2tnX/93c23/endx/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p2cP94dG//eXVv/3p3cf96d3H/eXVw/3h0b/93c27/eXVw/3p3 - cf96d3H/endx/3p3cf96d3H/endx/3p3cf96d3H/endx/3h0b/93c27/eXVw/3h0b/95dG//endx/3p3 - cf96d3H/endx/3p3cf+BfXj/cW1l/1tWTP9cV03/XFdN/1pVTP9bVk3/XFdN/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9ZU0r/RUI62AAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIaD - feFhXFP/WVJL/1tWTP9cV03/XVhO/11YTv9dWE7/XVhO/1xXTf9bVkz/XVhO/11YTv9cV03/XFdN/1xX - Tf9aU0v/WVNL/1lSSv9aVEv/WlVL/1lSSv9aVEv/XFdN/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9cV03/WlRL/1lTS/9ZU0v/WlRL/1lTSv9XUEn/WlRL/1xXTf9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9cV03/WVNK/1pVTP9cV03/W1ZN/1xX - Tf9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/15ZT/9jXlX/ZmJZ/25qYv95d3H/enhy/3p4 - cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4 - cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4 - cv96eHL/enhy/3p4cv96eHL/enhy/3p4cf96d3D/endw/3p3cP96eHH/enhy/3p4cf95dW//eHRv/3l2 - cP96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cf96eHH/endx/3p3cP94dG7/d3Nu/3p3 - cf96eHL/enhy/3p4cv96eHL/fnx1/3t3cP9cV03/XVhO/11YTv9bV03/XFdN/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/1xXTf9cV03/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/WVRL/0ZDO+IAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACGgnzqYFpS/1pTS/9cV03/XVhO/11YTv9dWE7/XVhO/11YTv9cV03/XFZN/11YTv9dWE7/XVhO/1xX - Tf9bVkz/WlNL/1pTS/9aU0v/WlNL/1pTS/9aVEz/XVdO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XFdO/1pUTP9aU0v/WVNL/1pTS/9ZUkv/V1BI/1xWTf9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9cVk3/XFZN/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/15ZT/9iXVT/ZGBX/3JvZ/96eHL/enhy/3p4 - cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4 - cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/eHVu/3JvaP9taWL/Z2Rd/2RgWf9jX1j/YV1V/2Bc - Vf9jX1j/Y19Y/2ZjXP9raGD/cW5n/3Zzbf96eHL/enhx/3p3cf96eHH/enhy/3p4cv96eHL/endx/3l1 - b/96eHH/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cv96eHL/enhy/3p4cf96d3H/eHRu/3d0 - bv96d3H/enhy/3p4cv96eHL/enhy/3x5c/+BfXb/Y15V/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11Y - Tv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/11YTv9dWE7/XVhO/1pVTP9HRDzqAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAhoN982BbUv9cVk3/XVdO/15ZT/9eWU//XllP/15ZT/9eWU//XVdO/1tVTP9cVk7/XllP/15Z - T/9eWU//XVdO/1xVTf9aVEz/WlNM/1pTS/9bVU3/XVdO/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9cVk7/W1RN/1pUTP9bVEz/WVJL/1hSSv9dWE7/XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9dWE7/XllP/15ZT/9eWU//XVhO/11Y - Tv9eWU//XllP/15ZT/9eWU//XVhO/11YTv9eWU//XllP/11YTv9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9iXVP/ZWBX/3Vxav98eXL/fHly/3x5 - cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5 - cv98eXL/fHly/3x5cv97eHH/dHBp/2tmX/9iXVX/WVNL/1ZQSP9WUUn/V1FJ/1dSSv9aVUz/WlVM/1pV - TP9aVUz/WlRL/1lUS/9WUEj/VVBI/1RPR/9UT0f/VVBI/15aUv9oY1z/cm5n/3t3cP98eXL/e3hy/3p3 - cf96d3H/e3hy/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv97eXL/endx/3l1 - cP95dnD/enhx/3x5cv98eXL/fHly/3x5cv98eXL/hIB5/2tnXv9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XVdO/11YTv9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9cVk3/SEU98wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAIWCfPthW1P/XVhO/15ZT/9eWU//XllP/15ZT/9eWU//XllP/11YTv9cVk3/XFZO/15Z - T/9eWU//XllP/15ZT/9dV07/WlRM/1pTS/9ZU0v/XFZN/15ZT/9eWU//XllP/15ZT/9eWU//XllP/11Y - Tv9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XVdO/1xWTv9bVUz/W1RM/1lTS/9aVEz/XVhO/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XVdO/1xWTf9cVk3/XllP/11YTv9dWE7/XllP/11YTv9cVk7/XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9hXFP/ZF9W/3dzbP98eXL/fHly/3x5 - cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5 - cv98eXL/e3hx/3NvaP9mYVr/WlRM/1dRSf9YUkr/WlRL/1tWTf9cV03/XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9dV07/W1VM/1pUTP9YU0r/VVBI/1RPR/9VUEj/YVxV/25q - Y/96dnD/e3hy/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5 - cv97eHL/e3hy/3x5cv98eXL/fHly/3x5cv98eXL/fHly/4J+eP92cmr/XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/11YTv9dWE7/XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XFdN/0pF - PvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAHZxagWFgXv/YVxT/15ZT/9eWU//XVhO/11YTv9eWU//XllP/15ZT/9dWE7/XVdO/1xW - Tf9eWU//XllP/15ZT/9eWU//XVhO/1tVTP9aVEz/W1VN/11YTv9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XVdO/11XTv9dWE7/XVhO/1xWTf9bVEz/XFVN/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/11Y - Tv9dWE7/XllP/15ZT/9eWU//XVhO/1xWTf9cVk3/XFZN/15ZT/9dWE7/XVhO/15ZT/9eWU//XVhO/15Z - T/9eWU//XllP/1xWTv9cVk3/XVhO/15ZT/9eWU//XllP/15ZT/9gW1H/ZF9W/3d0bf98eXL/fHly/3x5 - cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5 - cv94dW7/amVd/1tWTv9YUkr/WVRL/1tWTP9dV07/XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9dWE7/XVdO/11XTv9eWU//XllP/15ZT/9cV03/WlVM/1RP - R/9QS0T/VVBJ/2VhWf92c2z/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5 - cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv+AfXb/fnp0/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/1xX - Tv9KRj//Uk1EBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACAfHUNhIF6/2FcU/9eWU//XllP/11XTv9dV07/XllP/11XTv9eWE//XVdO/11X - Tv9dV07/XllP/15ZT/9eWU//XllP/15YT/9bVU3/XVdO/11YT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XlhP/11XT/9eWU//XllP/15ZT/9eWE//W1VM/1xX - Tv9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9dWE7/XVdO/15YT/9eWU//XllP/1xXTv9aVUz/XFZN/11YTv9eWU//XllP/15ZT/9eWU//XllP/15Y - T/9eWU//XllP/15YT/9dV07/XlhP/15ZT/9eWU//XllP/15ZUP9gW1H/Y11U/3h0bf98eXL/fHly/3x5 - cv98eHL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3h0 - bv9oYlv/WlRM/1pUTP9bVU3/XFdO/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XlhP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15YT/9eWE//XllP/15ZT/9eWU//XllP/15Z - T/9cV07/WVRM/1lTS/9YUkr/WFJK/21oYf98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5 - cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fHly/3x5cv98eXL/fnp0/4J+eP9qZFz/XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWE//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15ZT/9eWU//XllP/15Z - T/9dV07/S0ZA/01IQQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAgHx2F4R/ef9iXFP/X1lQ/11YT/9dV07/XVdO/15YT/9eWE//XlhP/15Y - T/9dV07/XlhP/19ZUP9fWVD/X1lQ/19ZUP9fWVD/XVdO/11XTv9eWE//X1lQ/15YT/9eWE//X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/15YUP9eWFD/X1lQ/19ZUP9fWVD/XlhP/1hT - Sv9aVUz/XlhP/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XlhP/15YT/9eWE//XlhP/15YT/9cVk3/W1VN/11XTv9eWE//X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9eWE//X1lQ/19ZUP9fWVD/X1lQ/19ZUP9gWlH/YlxU/3dzbf99enT/fXp0/316 - dP98enT/fHlz/3x5c/98eXP/fHp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/e3dx/2pl - Xv9bVU3/W1VN/1xWTv9eWE//X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XlhP/15YT/9eWE//X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/XlhP/15Y - T/9fWVD/XlhP/15YT/9eWE//XlhP/2VgWP97eHL/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316 - dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP+Ef3r/bWhg/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XlhP/0xHQP9NSEEXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIF9dh+Cfnj/YVtT/19ZUP9dV07/XVdO/15YT/9fWVD/X1lQ/19Z - UP9eWE//XVdO/15YT/9fWVD/X1lQ/19ZUP9fWVD/XlhP/11XTv9dV07/XlhP/19ZUP9dV07/XlhP/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/XlhP/19ZUP9fWVD/X1lQ/1xX - Tf9XUUn/WVRL/11XTv9eWE//X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XlhP/15YT/9eWE//XlhP/15YT/9dV0//W1ZN/1tWTf9dV07/XlhP/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/YFpR/3Vxa/99enT/fXp0/316 - dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/cW1m/15X - UP9bVU3/XVdO/15YT/9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XlhP/11XTv9dV07/XlhP/19ZUP9fWVD/XlhP/15YT/9fWVD/X1lQ/19ZUP9fWVD/X1lQ/15Y - T/9eWE//X1lQ/15YT/9gWlH/YVxT/2ljW/98eHL/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316 - dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/fXp0/316dP99enT/g355/3x3 - cf9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/15YT/9MR0H/TEhBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBfXYogX12/2FbU/9fWVD/XlhP/15YT/9eWE//X1lQ/19Z - UP9fWVD/XlhP/11XTv9eWE//X1lQ/19ZUP9fWVD/X1lQ/15YT/9dV07/XVdO/11YT/9eWFD/XVdP/15Y - T/9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9bVk3/VlBI/1pUS/9eWE//X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XVdO/1tVTP9cVk7/XlhP/15YT/9eWE//XVdO/1tWTf9cVk3/XVdO/15YT/9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/3JsZf9+enT/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP97d3H/ZmFZ/1tV - Tf9cVk7/XlhP/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/15YT/9dV0//XVdO/15YT/9fWVD/X1lQ/15YT/9eWE//X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9eWE//XlhP/19ZUP9gWlH/YlxT/2lkXP99eHL/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/4F8 - d/+AfHb/X1pR/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/XlhP/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19ZUP9fWVD/X1lQ/19Z - UP9fWVD/X1lQ/19ZUP9eWE//TUdB/0xIQSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgX12MIB8dP9hXFP/X1pQ/15ZT/9eWU//XllP/19a - UP9fWlD/XllP/15ZT/9dWE7/XlpQ/19aUP9fWlD/X1pQ/19aUP9eWU//XVhO/11YTv9eWU//XllP/15Z - T/9fWlD/X1pQ/19aUP9fWlD/XllP/19aUP9eWlD/X1pQ/15ZT/9eWU//XllP/19aUP9fWlD/X1pQ/19a - UP9eWU//WlVM/1dRSf9bVk3/XllQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/XllP/1tWTf9YUkr/W1ZM/11YTv9fWlD/XllP/15ZT/9dWE7/XVhO/11YTv9eWU//X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/2tnX/9+enT/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP92cmv/X1pR/1xX - Tf9dWE7/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9eWU//XVhO/11YTv9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/XllP/19aUP9gW1H/Yl1T/2llXP99eXL/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP99enP/fXpz/356dP9+enT/fnp0/356 - dP9+enT/g4B5/2tmXv9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/15ZT/9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/XllP/01JQv9MSEAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIF9dzl+enP/YFxS/19aUP9eWU//XllP/19a - UP9fWlD/XllP/11YTv9dWE7/XVhO/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/15ZT/9eWU//XllP/15Z - UP9eWU//X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/XllP/19aUP9eWU//XVhO/11YTv9fWlD/X1pQ/19a - UP9fWlD/XVlP/1lUS/9XUUn/XFdN/15ZT/9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/15ZT/9aVUz/WlRL/11YTv9eWU//X1pQ/15ZT/9eWU//XllP/11ZT/9dWE//XVhO/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/XllP/2VgV/99eXP/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9wbGX/XFhO/11Y - Tv9eWU//X1pQ/19aUP9fWlD/XllP/15ZT/9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/15ZT/9dWE7/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/15ZT/9eWU//YVxS/2hkW/99eXL/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/316c/98eXP/fHlz/3x5c/9+enT/fnp0/356 - dP9+enT/fnp0/4SAev9wbGT/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9eWU//X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/15ZT/9OSkL/TEhAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBfXZCfXlx/2BbUf9fWlD/XllP/11Y - Tv9eWU//XllP/15ZT/9dWE7/XVhO/15ZT/9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/XllP/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/15ZT/9eWU//X1pQ/19a - UP9fWlD/X1pQ/15ZT/9ZVEv/V1FJ/1lUS/9eWU//X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/XVhO/11YTv9eWU//XllP/15ZT/9eWU//XllP/15ZT/9dWE//XVhP/11Y - Tv9eWU//X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/XllQ/19aUf95dm//fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/316dP9rZ1//XFdO/11Y - Tv9eWU//X1pQ/19aUP9fWlD/X1pQ/15ZT/9eWU//X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9eWU//XllP/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9eWU//XVhO/2VhWP98eXL/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/356 - dP9+enT/fnp0/356dP9+enT/fnp0/356dP9+enT/fnp0/316dP98enP/fHlz/3t5c/98eXP/fnp0/356 - dP9+enT/fnp0/356dP+Cf3j/fXhy/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/XllP/15ZT/9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9eWU//T0tD/0xIQUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgX12S3x4cP9hXFL/YFtR/19a - UP9fWlD/X1pQ/19aUP9fWlD/X1pQ/19aUP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9fWlD/X1pQ/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/XllP/1tUTP9ZU0v/XllQ/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9fWlD/XllP/15ZT/9eWU//XllQ/11Y - T/9dWE//XlpQ/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/X1pQ/19aUP9yb2f/fnx2/358 - dv9+fHb/fnx2/358dv9+fHb/fnx2/358dv9+fHb/fnx2/358dv9+fHb/fnx2/317df9qZl7/XllP/15a - UP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/X1pQ/19bUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/X1pQ/1pVTP9qZl7/dnNt/317df9+fHb/fnx2/358dv9+fHb/fnx2/358 - dv9+fHb/fnx2/358dv9+fHb/fnx2/358dv9+fHb/fnx2/358dv99e3X/fXp0/316dP99enT/fXp0/357 - df9+fHb/fnx2/358dv9+fHb/gH13/4F9dv9lYFb/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/X1pR/19aUP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/X1pQ/1FMRP9NSUFLAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIB9dlR6dm7/YVxS/19a - UP9fWlD/X1pQ/19aUP9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9fWlH/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/19aUP9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/X1pQ/19a - UP9gW1H/YFtR/2BbUf9gW1H/YFtR/19aUP9cV07/WlRM/19aUP9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9fWlH/XVhP/1xXTf9cV03/XVhO/15Z - T/9eWU//XllQ/15ZUP9fWlD/XllP/19aUP9fW1H/YFtR/2BbUf9gW1H/X1pQ/15aUP9nY1r/f3t1/397 - df9/fHb/f3x2/398dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9rZ17/XllP/19a - UP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/19aUP9bVk3/WFJK/1ZRSf9YU0v/Y15X/25qY/95dm//f3x2/398 - dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9/fHb/f3x2/357df9+enX/fnp0/397df9/fHb/f3x2/398 - dv9/fHb/f3x2/398dv9/fHb/f3t1/316dP+BfHf/amZd/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/19aUP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/19aUP9STUX/TUlBVAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAfHZdeHRt/2Bb - Uf9eWVD/X1pQ/15ZT/9eWU//X1pQ/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9fWlD/X1pQ/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/19aUP9fWlD/YFtR/19a - UP9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/X1pQ/11YTv9fWlD/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/XllP/1xXTf9aU0z/W1dN/11Y - Tv9eWU//X1pQ/19aUP9eWlD/XllP/15ZT/9fWlD/YFtR/2BbUf9fWlD/X1pQ/19aUP9fWlD/endw/316 - dP9+enT/f3t1/398dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9uamL/XlpQ/19a - UP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9eWU//XFdO/1hTS/9XUkn/VlBI/1tW - Tv9lYlr/cW5n/3x5cv9/fHb/f3x2/398dv9/fHb/f3t1/356dP97eHL/e3hy/356dP9/e3X/f3x2/398 - dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9+e3X/gn55/3RwaP9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/19aUP9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9fWlD/YFtR/2BbUf9fWlD/U05G/05KQl0AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgHx2ZXZy - a/9fWVD/XllP/15ZT/9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/X1pQ/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/19aUP9fWlD/X1pQ/19a - UP9eWVD/X1pQ/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9fWVD/XllP/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9dWE//XFVN/1tV - Tf9dV07/X1pQ/19aUP9fWlD/XlpQ/15ZUP9eWE//X1pQ/2BbUf9gW1H/YFtR/2BbUf9eWlD/b2pj/397 - dv97eHP/fXlz/356df9/fHb/f3x2/398dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9xbWX/XVhO/19a - UP9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/11Y - T/9cV07/WFNL/1dSSv9WUUn/XllS/2pmXv90cWr/fnt1/397dv99enT/enZx/3t3cv9/e3X/f3t2/398 - dv9/fHb/f3x2/398dv9/fHb/f3x2/398dv9/fHb/f3x2/4N/ef9/e3T/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9eWVD/XllP/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/X1pQ/19ZUP9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/2Bb - Uf9gW1H/X1pQ/19ZUP9fWlD/YFtR/2BbUf9gW1H/YFtR/2BbUf9gW1H/YFtR/1RQR/9PSkJlAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIB8 - dm10cGj/YFtR/2BbUf9fWlH/YFtR/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2BbUf9gW1H/YFtR/19ZUP9gW1H/YVxS/2FcUv9hXFL/YFtR/15ZUP9eWVD/X1pQ/2Bb - Uf9gW1H/YFtR/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/XllP/1tVTf9fWlD/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/X1lQ/1xX - Tv9aVUz/XFZO/15YT/9fWlH/X1tR/19bUf9fW1H/X1tR/19bUf9hXFL/YVxS/2FcUv9fWlD/Yl1U/356 - df9/e3b/e3hz/3x5dP9+enX/f3x2/4B8d/+AfHf/gHx3/4B8d/+AfHf/gHx3/4B8d/93c23/XllQ/11X - T/9gW1H/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9gW1H/XVhP/1tWTf9YU0v/V1JK/1hTS/9hXVb/a2Zg/3Nvav99eXT/f3x2/4B8 - d/+AfHf/gHx3/4B8d/+AfHf/gHx3/4B8d/+AfHf/gHx3/4B8d/+BfXj/hIB5/2diWf9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/X1pQ/15ZUP9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YFtR/2Bb - Uf9gW1H/YVxS/2FcUv9gW1H/XllQ/1hTS/9XUUr/WFJL/19ZUP9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2BbUf9gW1H/YFtR/2BbUf9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9WUUn/UEtEbgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACAfXZ2c29n/2BbUf9gW1H/YFtR/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2BbUf9gW1H/X1lQ/11YT/9dV07/YFtR/2FcUv9hXFL/YFtR/19ZUP9dV0//XlhP/19a - Uf9gW1H/YFtR/2BbUf9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/15ZUP9bVU3/X1lQ/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Bb - Uf9eWE//WlRM/1tVTf9dWE//X1pQ/19aUf9fW1H/X1tR/19bUf9gW1H/YVxS/2FcUv9gW1H/X1pQ/3Jv - aP+AfXj/fnt2/315dP98eHP/fXl0/357dv9/fXf/gH14/4B9eP+AfXj/gH14/4B9eP99enT/ZF9V/19Z - UP9eWE//YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/19aUP9dWE//W1ZN/1hTSv9VT0j/WVRN/2Vg - Wf9wbGb/e3hz/4B9eP+AfXj/gH14/4B9eP+AfXj/gH14/4B9eP+AfXj/gH14/4aCe/9uamH/YFtR/2Bb - Uf9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/19aUP9gWlH/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Bb - Uf9gW1H/YFtR/2FcUv9hXFL/XVdO/1dRSv9XUUr/V1FK/1dRSv9dV0//YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/V1JK/1BL - RHYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAgXx2f3JuZv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FbUv9gW1L/YFpR/19ZUP9dWE//XFdO/2BaUf9hXFL/YVxS/2FcUv9hW1L/YFtR/2Ba - Uf9gW1H/YFtR/2FbUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9fWlH/XVdO/15Z - UP9hW1L/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FbUv9gW1H/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/X1pR/1xXTv9cV0//XVhP/2BaUf9gW1H/YFtR/2BbUf9gWlH/YVtS/2FcUv9hXFL/X1pR/2Nd - Vf+AfHf/gX14/397d/98eXT/enhy/3p4cv98eXP/fnp1/4B8d/+AfHf/gX14/4F9eP+BfHf/amVd/2Fc - Uv9dWE//XlhP/2FbUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/X1lQ/11Y - T/9ZVEz/WFJL/1dRSv9dWFH/aGNd/3Rvav9/enX/gX14/4F9eP+BfXj/gX14/4F9eP+FgHr/eXRt/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9gW1L/YVtS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9gW1H/YFtR/2FcUv9hXFL/YFtR/1hTS/9XUUr/V1FK/1dRSv9XUUr/X1lQ/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2Fc - Uv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/2FcUv9hXFL/YVxS/1hT - S/9QS0SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJOPiohybWb/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9hW1L/YVtS/2BbUv9hW1L/YVtS/2BaUf9gWlH/YVtS/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YVtS/2FbUv9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YVtS/2Ba - Uf9dWVD/YVtS/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9hW1L/YFpR/2BaUf9hW1L/YVtS/2FbUv9hW1L/YVtS/2FcU/9iXFP/YVtS/19Z - UP9zbmf/gn14/4F9eP9/e3f/fXp0/3p4cv96eHL/e3hy/3x5c/98eXT/fHl0/397dv+BfXj/dG9o/2Jc - U/9hW1L/XllQ/19ZUP9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FbUv9hW1L/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FbUv9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9eWVD/XVdP/1pTTP9YUkv/WFJL/2FbVP9sZ2D/eHNt/4F8d/+CfXj/f3p0/3t2 - b/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YVtS/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9hW1L/YFpR/2FbUv9iXFP/YVtS/19ZUP9YUkr/WFJK/1hSSv9YUkr/W1VN/2FbUv9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9ZVEz/R0I9iAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACSjomQcWxl/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FbUv9hW1L/YlxT/2JcU/9iXFP/YFtS/2FbUv9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9hW1L/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Fb - Uv9hW1L/X1lR/2FbUv9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YVtS/2FbUv9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FbUv9hW1L/YVtS/2BaUf9gWlL/YVtS/2FbUv9iXFP/YlxT/2Ba - Uf9hW1P/gHt2/4J9eP+BfXj/f3t2/3x6dP97eXP/fXl0/316df99enX/fHl0/3x5c/98eXT/fHhy/2Re - Vf9iXFP/YlxT/2FbUv9hW1L/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9hW1L/YlxT/2FbUv9fWVD/X1lR/2JcU/9iXFP/YVtS/2FbUv9gWlH/YFpR/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FbUv9hW1L/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YFtS/15YUP9cVk7/WVNM/1hSSv9ZVEz/ZV9Z/25o - Yf9qZV3/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FbUv9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YVtS/2FbUv9hW1L/YlxT/2FbUv9eWVD/WVRM/1lTS/9ZVEv/XVhP/2FbUv9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/WVRM/0dCPZEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAko6JmXBsZP9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9hXFP/YVxT/2JcU/9iXFP/YlxT/2JcU/9hXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YVtS/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9hW1P/YVtS/2BbUv9gW1L/YVxT/2JcU/9iXFP/YlxT/2JcU/9hXFP/YVxT/2BbUv9fWlH/YFtS/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YVxT/2FbUv9fWVD/X1pR/2BaUv9hW1L/YlxT/2Fc - U/9fWlH/b2pj/4J9ef+CfXn/gX15/398d/9+e3X/fXt1/398d/9/fHf/fXp1/316df98enT/e3hz/2ll - Xv9iXVT/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YVtS/2JcU/9iXFP/YVtS/2FcU/9iXFP/YlxT/2FcU/9gW1L/X1pR/19a - Uf9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FcU/9hW1L/YVtS/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2FcU/9hW1L/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9gW1L/XllQ/1xW - Tv9cV0//YFtS/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YVxT/15ZUf9gW1L/YVtS/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2JcU/9iXFP/YlxT/2Jc - U/9iXFP/YlxT/1pVTf9HQj2ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJGOiaJwa2T/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/YVxT/2FcU/9hXFP/YFtS/2BbUv9hXFP/Yl1U/2JdVP9hXFP/YFtS/19aUf9fWlL/XllQ/19a - Uf9gXFP/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2FcU/9gW1P/X1pR/19aUP9fWlH/YVxT/2Jd - VP9gXFP/XllR/315dP+Cfnr/gX55/4F+ef+AfXn/gH14/4B9eP+Bfnn/gH15/357dv9/fHf/f3x2/3d0 - bv9fW1L/YFtS/2JdVP9iXVT/Yl1U/2FcU/9hXFP/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/YVxU/2FcU/9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/YVxT/2Fc - U/9hXFP/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9hXFP/YVxT/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9hXFP/YFtT/2FcU/9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9bVk7/R0M9ogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRjomrb2tj/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2FcU/9iXVT/Yl1U/2JdVP9hXFT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2FcVP9iXVT/YVxT/2BbUv9hXFP/Yl1U/2JdVP9hXFP/YFtS/2BbUv9fW1H/YFtS/19a - Uf9eWU//X1pQ/2FcU/9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9hXFP/YVxT/2BbUv9fWlH/YFtS/2Fc - U/9iXVT/X1pR/2diW/+Df3r/g396/4J+ef+Cfnn/g396/4N/ev+Df3r/g396/4F+ef+AfXj/gX15/4F9 - eP9saF//YFtS/11ZT/9hXFP/Yl1U/2FcU/9fWlD/X1pS/2FcU/9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2FcU/9hXFP/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/YVxT/2FcU/9hXVT/YVxT/2FcU/9iXVT/Yl1U/2Fc - U/9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/YVxT/2FcU/9hXFP/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/W1ZO/0dDPasAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkY6Is25qYv9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVP/Yl1U/2JdVP9iXVP/YVxT/2Jd - U/9iXVP/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1T/2FcU/9hXFL/YVxT/2FcU/9iXVP/YVxS/2BbU/9gW1H/YVxS/2Jd - VP9hXFP/YFtS/19aUP9gW1L/Yl1T/2JdVP9iXVT/Yl1U/2JdVP9iXVT/YVxT/2FcU/9hXFP/YVxT/2Fc - U/9iXVP/Yl1T/19aUf90cGn/g395/4J+ef+Cfnn/g395/4N/ev+Df3r/g396/4N/ev+Df3n/gn55/4N/ - ef99eXP/Z2Nb/2JdVP9eWVD/X1pR/2JdU/9iXVP/XlpQ/19aUP9hXFP/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVP/Yl1T/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2FcU/9iXVP/Yl1U/2JdVP9iXVT/Yl1U/2FcU/9gW1H/YVxT/2FcU/9hXFP/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9hXFP/Yl1T/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdU/9iXVP/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/2Jd - VP9iXVT/Yl1U/2JdVP9iXVT/Yl1U/1xXTv9IRD60AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJGNh71uamH/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Jd - U/9hXFL/YFtS/2JdU/9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2JdU/9hXFL/YVxS/2JdU/9iXVP/YFtR/2BcUv9gXFL/YVxS/2Jd - U/9jXlT/Y15U/2JdU/9fWlH/XlpQ/2BbUv9iXVP/YVxT/2JdU/9iXVT/Yl1T/2FcUv9hXFL/Yl1T/2Jd - U/9iXVP/Y15U/2FcU/9fWlD/f3t1/4F9eP+BfXj/g395/4SAev+EgHr/hIB6/4SAev+EgHr/hIB6/4SA - ev+EgHr/dG9o/2lkW/9iXVP/YVxT/2BcUv9iXVP/Yl1T/2FcUv9eWVD/XVlP/2BbUf9hXFL/YV1T/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9iXVP/Yl1T/2NeVP9jXlT/Y15U/2NeVP9iXVP/YVxS/2JdU/9iXVP/Yl1T/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Yl1T/2Jd - U/9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2JdU/9iXVP/Yl1T/2JeVP9jXlT/Y15U/2Jd - U/9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9hXVP/YVxT/2JdU/9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9dWE//SEU+vQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQjYbFbWhg/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Yl1T/2NeVP9jXlT/Y15U/2Ne - VP9iXVP/X1pR/11YT/9gW1L/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9iXVP/Yl1T/2FcUv9iXVP/Yl1T/2BbUf9hXFL/YFxS/2Bb - Uf9iXVP/Y15U/2NeVP9hXVP/X1pQ/1xXTv9dWE//YVxS/2FcUv9iXVP/Yl1T/2FcUv9fWlD/YFtS/2Fc - Uv9hXFL/YVxS/2FcUv9eWlD/ZGBY/398d/9/e3b/gX54/4N/ef+EgHr/hIB6/4SAev+EgHr/hIB6/4SA - ev+EgHr/gX53/21oYP9nYln/Y15U/2NeVP9iXVP/Y15U/2NeVP9iXVP/YFxS/19aUP9fWlH/XVhP/19a - Uf9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Yl1T/2NeVP9jXlT/Y15U/2NeVP9jXlT/Yl1T/2JdU/9iXVP/Yl1T/2Jd - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Jd - U/9iXVP/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2JdU/9eWVD/XlpQ/2FcUv9iXVP/Yl1T/2Jd - U/9iXVP/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/YV1T/2FcUv9iXVP/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/Y15U/2Ne - VP9jXlT/Y15U/2NeVP9jXlT/Y15U/2NeVP9jXlT/XVlP/0lFPsYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj4yFzm1oX/9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15U/2JdU/9jXlT/Y15V/2Ne - Vf9jXlX/Y15U/2BbUv9eWVD/X1pR/2JdU/9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Yl1T/2JdU/9iXVP/Yl1T/2FcUv9gW1H/YVxS/2Fc - Uv9fWlH/Yl1T/2JeVP9iXVP/YVxS/15ZUP9bVk7/XVdP/2BaUf9iXVP/Yl1T/2JdU/9hXFL/X1pR/15Z - UP9fWlD/X1pR/15ZUP9eWVD/W1VN/2xoYv9/e3b/gH14/4SAev+EgXr/hIF6/4SBev+EgXr/hIF6/4SB - ev+EgXr/hIF6/3t3cP9taGD/ZWBX/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Yl1U/15Z - UP9eWFD/Yl1T/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlT/Yl1T/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9iXVP/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlT/Y15U/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlT/X1lQ/19ZUf9hXFL/Yl5U/2Ne - VP9iXVP/Y15U/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVP9hXVP/Yl1U/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15U/2JeVP9jXlX/Y15V/2NeVf9jXlX/Y15V/15aUP9KRj/OAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+LhdZsZ17/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2NeVf9iXVT/Y15V/2Rf - Vv9kX1b/ZF9W/2RfVv9hXFL/X1pR/19ZUP9iXVT/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/Y15U/2NeVP9jXlT/Y15U/2JdU/9gWlL/YFpS/2Jd - U/9iXVP/YVtS/2JdU/9iXVP/Y15U/2BaUv9eWVD/XFdO/11XT/9fWVH/Yl1T/2NeVf9kX1b/Yl1T/2Ba - Uv9fWVD/X1lQ/15YUP9dV0//XFZO/1hTS/94dG7/gXx4/4OAev+Fgnv/hYJ7/4WCe/+Fgnv/hYJ7/4WC - e/+Fgnv/hYJ7/4WCe/91cWn/a2Ze/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Ne - Vf9hXFL/YFpS/2FcUv9jXlX/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/Y15V/2NeVf9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/Y15V/2BbUv9hXFP/Yl1T/2Ne - VP9iXVP/YVtS/2JcU/9jXlX/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/Yl1T/2Ne - Vf9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2NeVf9iXlT/Y15V/2NeVP9jXlT/Y15U/2JdU/9dWE//SkY/1wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNioPeamVd/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9jXlX/Yl1T/2Ne - VP9jXlX/ZF9W/2RfVv9kX1b/Yl1U/2FcUv9hW1L/Y15V/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/Yl1T/2JdVP9jXlT/Y15U/2NeVP9jXlT/YFpS/2Jd - U/9jXlX/Yl1T/2JdVP9iXVP/Yl1T/2FcUv9hW1L/X1lR/11YT/9fWVH/YFtS/2JdU/9jXlX/Y19W/2Ne - VP9hXFP/YFpS/2BaUv9hXFL/YlxT/19aUf9eWVH/gn14/4N/ef+FgXr/hYJ7/4WCe/+Fgnv/hYF6/4WB - ev+Fgnv/hYJ7/4WCe/+Cf3j/cW1k/2hjWv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/Y15V/2NeVf9jXlT/Yl1T/2NeVf9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9jXlb/Y15U/2FcU/9iXVP/Y15V/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9iXVP/Yl1T/2Ne - VP9jXlX/YVxT/19aUf9gWlL/Yl1T/2RfVv9jXlX/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Ne - Vf9jXlX/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9jXlX/Yl5U/2NeVP9iXlT/Y15U/2NeVP9iXVP/XVdP/0tGQN8AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIiD6mpk - XP9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF5V/2NeVf9kXlb/ZF9W/2RfVv9kX1b/ZF5V/2Jd - VP9hW1P/Yl1U/2NeVv9kX1b/ZF9W/2RfVv9jXlX/ZF5W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2ReVf9iXVT/Y15V/2RfVv9jXlX/Y15V/2Fc - VP9jXlX/ZF9W/2RfVv9kX1b/Y15V/2JdVP9hXFT/Y11U/2FcU/9gW1L/YVtT/2FbUv9hXFP/ZF5W/2Rf - Vv9kXlX/Y15V/2JcVP9jXVT/Y15V/2ReVf9hXFP/aWRc/4WBe/+FgXv/hYJ7/4WCe/+Fgnv/hYJ7/4SA - ev+EgHr/hYJ7/4WCe/+Fgnv/fnpz/3FsZP9lX1f/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kXlb/Y15V/2Re - Vf9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2NdVP9kXlX/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kXlb/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kXlb/Yl1T/15YUP9bVk7/X1pR/2JdVP9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF5W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/Y15V/2Ne - Vf9kXlb/ZF9W/2JdVP9fWlH/XllQ/2JdVP9kXlb/Y15V/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2RfVv9kX1b/ZF9W/2Rf - Vv9kX1b/ZF9W/2RfVv9kX1b/ZF5W/2NeVf9jXlX/YV1U/2FdVP9iXVT/YVxT/15YUP9MSELqAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIuG - gvRpY1v/ZV9X/2RfV/9kXlb/ZF5W/2VfV/9lX1f/ZV9X/2ReVv9iXVX/ZF5W/2VfV/9lX1f/ZV9X/2Re - Vv9jXVb/YFtS/19bUv9iXVT/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9kXlb/Y11W/2ReVv9lX1f/ZF5W/2Re - Vv9kXlb/ZV9X/2VfV/9lX1f/ZV9X/2ReVv9kXlb/ZF5W/2ReVv9kXlb/ZF5W/2NdVv9hXFT/Yl1U/2Vf - V/9lX1f/ZV9X/2VfV/9kXlb/Y11W/2ReVv9lX1f/YFtS/3FsZv+Ggnz/hoJ8/4aCfP+FgXz/hYF8/4WB - e/+EgHv/hIB7/4WBfP+Ggnz/hoJ8/3t2cP9wa2P/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZF5W/2Re - Vv9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9kXlb/ZF5W/2ReVv9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9jXVX/Y11W/2ReVv9kXlb/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/YVxU/1xYT/9bV07/XFhP/2BbU/9kXlb/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Re - Vv9kXlb/ZV9X/2VfV/9iXVT/YFtS/15aUf9jXVX/ZF5W/2NdVv9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9kXlb/ZF5W/2FcVP9gXFP/YVxU/2JdVP9fW1L/TEhC8wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNu - ZwGKhoD+aGJa/2VfV/9kXlb/ZF5W/2VfV/9lX1f/ZV9X/2VfV/9jXlb/Y11V/2ReVv9lX1f/ZV9X/2Vf - V/9kXlb/Y11V/15aUf9eWVH/YVxT/2ReVv9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/Y15V/2Ne - Vf9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2ReVv9kXlb/ZV9X/19aUf95dG7/hoJ9/4aCff+FgXz/hYF7/4SA - e/+DgHr/hYF7/4WBfP+Ggnz/hoJ9/4aCff94c2z/a2Ve/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZF9X/2Re - Vv9kXlb/ZF5W/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2NdVf9jXVX/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/Y11V/2JdVP9kXlb/ZF5W/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZF5X/2BbUv9cV0//XVlQ/2FcVP9kXlb/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZF9X/2VfV/9lX1f/Y11W/2FcU/9hXFT/ZF5W/2VfV/9kXlb/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2VfV/9lX1f/ZV9X/2Vf - V/9lX1f/ZV9X/2ReVv9iXVX/Y11W/2ReVv9kXlb/ZF5W/2NeVv9hXVT/Yl1U/2JdVP9iXVT/X1pS/0xI - Qv0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACFgXoLiYWA/2hjW/9lYFj/ZF9X/2RfV/9kX1f/ZWBY/2VgWP9lYFj/ZF9X/2RfV/9kX1f/ZWBY/2Vg - WP9lYFj/ZF9X/2NeVv9hXVT/YFtT/2JdVf9kX1f/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9jX1f/Y15W/2RfV/9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9jXlb/ZF9X/2RfV/9fWlL/gHx1/4eDff+Hg33/hoJ8/4WB - e/+DgHr/hIB6/4SBe/+FgXz/hoJ8/4eDff+EgHv/d3Ns/2plXv9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Rf - V/9kX1f/Y15W/2NeVv9kX1f/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9kX1f/Y15W/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9jXlb/ZF9X/2RfWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9jXlb/YV1U/2NeV/9kX1f/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9jXlb/ZF9X/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9jXlf/YV1V/2JdVf9jXlb/ZF9X/2RfV/9kX1f/ZF9X/2RfV/9jXlb/Yl5W/2Bb - Uv9NSUP/T0tECQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAhYF6FoiEf/9nY1v/ZWBY/2RfV/9kX1f/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9kX1f/ZF9X/2Vg - WP9lYFj/ZWBY/2RfV/9kX1f/Yl1W/2JdVP9jXlb/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZF9X/2JdVv9jXlb/Y15W/2NeVv9kX1f/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9kX1f/ZF9X/2RfV/9jXlb/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9jXlb/YVxT/2FcVP9hXFT/XlpR/4WBe/+Hg33/h4N9/4WB - fP+EgHv/g395/4J/ef+Df3r/gn55/4J+ef+Fgnz/gn54/3Zya/9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZF9X/2RfV/9kX1f/ZF9X/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZGBY/2RfV/9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9kX1f/ZF9X/2RfV/9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9kX1f/ZF9X/2RfV/9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9kX1f/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/Yl1V/19bUv9gW1P/YVxU/2JdVf9jXlb/ZF9X/2VgWP9kX1f/Y15W/2Jd - Vf9fW1L/TUlD/09LRBIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAIWBeyGGgnz/ZmJa/2NeVv9kX1f/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9kX1f/ZF9X/2Rf - V/9lYFj/ZWBY/2VgWP9kX1f/ZF9X/2RfV/9jXlb/Y15X/2RfV/9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZF9X/2NeVv9iXlb/Y15W/2NeVv9jXlb/ZF9X/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZF9X/2RfV/9lYFj/ZWBY/2VgWP9kX1f/Y15W/2JdVv9jXlb/Y15W/2Rf - V/9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9jXlf/YV1U/2BbU/9gW1P/YFtS/2FdVf+Hg33/h4N9/4eD - ff+Ggnz/hIF7/4SBe/+EgXv/hIB7/4F+eP+Cfnn/hIB6/4F9d/92cmr/ZWBY/2VgWP9kX1f/Y15W/2Rf - V/9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2NeVv9jXlb/Yl1V/2RfV/9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2RfV/9kX1f/ZF9X/2VgWP9lYFj/ZWBY/2VgWP9kX1f/ZF9X/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2VgWP9lYFj/ZWBY/2Vg - WP9lYFj/ZWBY/2VgWP9lYFj/ZF9X/2FcVP9gW1P/X1pR/19aUf9eWVD/X1tS/2FcVP9jXlb/Y15W/2Jd - Vf9iXVT/X1pS/05JQ/9PS0QbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACGgXsshYJ7/2ZhWP9iXVT/ZF9W/2ZhWP9mYVj/ZmFY/2ZhWP9lYFf/ZWBX/2Vg - V/9lYFf/ZmFY/2ZhWP9mYVj/ZWBX/2VgV/9mYVj/ZWBX/2VgV/9lYFf/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9kX1b/ZF9W/2VgV/9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9kX1f/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9jXlX/Y19W/2Rf - Vv9lYFf/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZWBX/2RfVv9iXlT/YVxT/2BbUv9mYln/iIR+/4iE - fv+IhH7/iIR+/4iEfv+Hg37/h4N+/4aCfP+DgHr/g4B6/4SBe/+AfXb/c29m/2ZhWP9mYVj/ZWBX/2Ne - Vf9lYFf/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Vg - V/9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9jXlT/YFtS/19aUf9kX1b/ZWBX/2VgV/9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9lYFj/ZWBX/2Vg - V/9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9jXlX/YVxT/2FdU/9gW1L/XVhP/11XT/9dV0//XVhP/2Fc - U/9iXlT/Yl5U/2BbUv9PS0T/T0tEJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAhoJ7N4N/eP9lYVj/Y15V/2VgV/9mYVj/ZmFY/2ZhWP9mYVj/ZWBX/2Vg - V/9lYFf/ZWBX/2ZhWP9mYVj/ZmFY/2VgV/9mYVj/ZmFY/2ZhWP9lYFf/ZWBX/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZWBX/2VgV/9lYFf/ZmFY/2ZhWP9lYFf/ZF9W/2Rf - Vv9lYFf/ZWBX/2VgV/9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9iXlT/amVd/4mF - fv+JhX7/iYV+/4mFfv+JhX7/iYV+/4eEff+Hg3z/hoJ7/4eDff+IhH3/gH11/29rYv9mYVj/ZmFY/2Zh - WP9kX1b/ZWBX/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Vg - V/9kX1b/ZWBX/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9lYFf/Yl5V/2FcU/9hXVP/ZWBX/2VgV/9lYFf/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Vg - V/9lYFf/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9lYFf/ZF9X/2NeVf9jXlX/Yl1U/11YT/9dV0//XVdP/11X - T/9eWVD/YFxS/2FdU/9gW1L/UUxF/09KRDMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIaBekGCfXb/Z2JZ/2VgV/9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Vg - V/9lYFf/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZF9W/2VgV/9lYFf/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2VgV/9jXlX/Y19V/2VgV/9mYVj/ZmFY/2Zh - WP9mYVj/ZWBY/2VgV/9lYFf/ZWBX/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/Y15V/2xp - YP+JhX7/iYV+/4mFfv+JhX7/iYV+/4eEff+Hg3z/h4R9/4iEff+IhH7/iYV+/4B8dv9vamL/ZmFY/2Zh - WP9mYVj/ZF9W/2RfVv9lYFf/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9lYFf/ZGBX/2RfVv9lYFf/ZWBX/2ZhWP9mYVj/ZWBX/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2RfV/9kX1b/ZWBX/2ZhWP9lYFf/ZWBX/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZWBY/2Zh - WP9lYFf/ZWBX/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2Zh - WP9mYVj/ZmFY/2ZhWP9mYVj/ZmFY/2ZhWP9lYFf/ZWBX/2VgV/9kX1b/Y19W/2RfVv9fWVH/XVdP/11X - T/9dV0//XlhQ/19aUf9fWlH/XlpR/1FNRf9PSkQ/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFgXpNgXx1/2hiWv9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/ZmBY/2VfWP9mYFj/ZV9Y/2VfV/9lX1f/ZmBY/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9mYFj/ZF5X/2RfV/9mYFj/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/ZmBY/2ZgWP9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2Nd - Vf9uaWL/ioV//4mEfv+JhH7/ioV//4mEfv+Hg33/h4J9/4mEfv+KhX//ioV//4qFf/99eXL/b2pi/2dh - Wf9nYVn/Z2FZ/2VfV/9lX1f/ZmBY/2dhWf9mYFj/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/ZmBY/2VfV/9kX1f/ZF5W/2ReV/9mYFj/ZmBY/2ZgWP9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9mYFj/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2Zg - WP9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9mYFj/ZWBY/2ReVv9mYFj/Z2FZ/2ZgWP9lYFj/ZWBY/2ZgWP9mYFj/ZWBY/2VfV/9lX1f/Yl1V/15a - Uf9dWFD/XVlQ/15aUf9dWFD/XVhQ/1xYT/9RTEb/T0pESwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhoF6V396c/9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2ZgWP9lX1j/ZV9X/2VfV/9kXlb/ZF5W/2Zg - WP9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2ZgWP9mYFj/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2ZgWP9mYFj/ZmBY/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/ZmBZ/2ZgWP9mYFj/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9jXVX/Y11V/25pYv9taGH/bWhi/29qY/9xbGX/cWxl/3JtZv92cWv/d3Js/3dybP96dW7/bmhg/2xm - Xv9nYVn/Z2FZ/2dhWf9lX1j/ZV9X/2ZgWP9mYFj/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9mYFj/ZF5W/2NdVf9jXVb/ZF5W/2ZgWP9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2Vf - V/9jXlb/ZV9X/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9mYFj/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/ZF5W/19bUv9fWlL/Y15W/2dhWf9mYFj/ZWBY/2ZgWP9nYVn/ZmBY/2ZgWP9kXlf/ZF5W/2Ne - Vv9kXlf/ZF5W/2NeVv9hXFP/X1pS/11YUP9cV0//UUxG/05JQ1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIaBe2N9d3D/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9mYFj/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9lX1f/YVxU/2Bb - U/9iXVX/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2ZgWP9lX1j/ZmBY/2ZgWP9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/ZV9X/2NdVf9iXVT/YVxU/2FbU/9gW1P/YVtT/2FcVP9eWVH/XllR/15ZUf9eWVH/X1pS/2Re - Vv9nYVn/Z2FZ/2dhWf9kX1f/ZF5W/2ReVv9lX1f/ZmBY/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2VfV/9jXVX/ZF5W/2VfV/9mYFj/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/ZmBY/2Re - Vv9eWVH/XVhQ/15ZUf9lX1f/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9mYFj/ZmBY/2dh - Wf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dhWf9nYVn/Z2FZ/2dh - Wf9nYVn/Z2FZ/2FcVP9dWFD/XVhQ/2NdVf9nYVn/ZmBY/2VgWP9mYFj/Z2FZ/2dhWf9mYFj/ZF5W/2Fc - VP9iXFT/ZF5W/2VfWP9lX1f/Y11V/2JcVf9fWlH/XFhQ/1FMRv9NSUJjAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGgXttenZv/2diWv9mYVn/Z2Ja/2di - Wv9nYlr/ZmFZ/2ZhWf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9mYVn/ZF9X/2Bb - U/9eWlL/YFtT/2VgWP9nYlr/Z2Ja/2ZhWf9lYFn/ZWBY/2ZhWf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmFZ/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9mYVn/ZWBZ/2VhWf9lYFn/ZmFZ/2ZhWf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9mYVn/Yl5W/2FdVf9jXlf/ZWBY/2ZhWf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9mYVn/ZWBY/2VgWP9mYVn/ZmFZ/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2Zh - Wf9gXFT/XllR/15ZUf9eWVH/YFtU/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9lYFj/ZF9X/2NfV/9mYVn/Z2Ja/2ZhWf9lYVn/ZmFZ/2diWv9nYlr/ZmFZ/2Rf - WP9jXlb/Yl1W/2RfV/9lYFj/ZWBY/2VgWP9kX1j/Yl1V/19aUv9UT0n/T0pEbgAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhYF6eXhzbP9mYVn/ZWBZ/2Zh - Wf9nYlr/Z2Ja/2ZhWf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmFZ/2Ne - V/9gW1P/XlpS/2BcVP9lYFj/ZmFZ/2diWv9mYVn/ZWBY/2RfWP9lYFj/ZmFZ/2diWv9nYlr/Z2Ja/2Zh - Wf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9mYVn/Y19X/2RfV/9lYFj/ZWBZ/2VgWf9mYVn/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9mYVn/Y15X/2FdVf9jX1f/ZWBY/2VgWP9mYVn/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmFZ/2VgWP9mYVn/ZmJa/2ZhWf9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9mYVn/YVxU/15ZUf9eWVH/XllR/2FdVf9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmJa/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmFa/2ZhWv9nYlr/Z2Ja/2Zh - Wf9lYFj/ZF9X/2NeVv9kX1f/ZWBY/2RfV/9kX1f/ZF9Y/2NeV/9gW1P/VFFK/1BLRXsAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJWRjId3cmv/ZmFZ/2Zh - Wf9lYFn/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmFZ/2Zh - Wf9mYVn/ZGBY/2NeVv9jXlb/ZmFZ/2diWv9mYVn/ZmFZ/2ZhWf9lYFj/ZWBY/2diWv9nYlr/Z2Ja/2di - Wv9mYVn/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9mYVn/ZmFZ/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9mYVn/Y19X/2BbU/9iXVX/ZF9X/2VgWP9lYFj/ZmFZ/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/ZmFZ/2ZhWf9lYFj/ZmFZ/2ZhWf9mYVn/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/ZmFZ/2VgWP9lYFj/ZmFZ/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9mYVn/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/ZmFZ/2RfV/9hXFT/X1pS/2NeVv9mYVn/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2ZhWf9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2Zh - Wf9lYVn/ZmFZ/2RfWP9jX1f/ZGBY/2VgWP9lYFj/ZWBY/2VgWP9kYFj/YVxU/1VRSv9FQTyJAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUkYyWdnFq/2hj - W/9oY1v/Z2Ja/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2di - Wv9nYlr/aGNb/2hjW/9nYlv/Z2Ja/2hjW/9oY1v/aGNb/2ZhWf9mYVn/ZmFZ/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/ZmFZ/2Vg - WP9mYVn/Z2Ja/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/ZmJa/2JdVf9gXFP/Y15X/2ZhWf9mYlr/ZmFa/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2diWv9nYlr/Z2Ja/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9nYlr/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9nYlr/Z2Ja/2ZhWf9nYlr/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9nYlr/Z2Ja/2diWv9mYVn/ZmFZ/2ZhWf9mYlr/Z2Ja/2ZhWf9mYVr/Z2Ja/2RfV/9YU03/REE8lgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJCLpHVw - af9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9mYVr/ZmFZ/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2Vh - Wf9kX1j/ZF9Y/2ZhWv9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2VgWP9hXVX/YFxU/2VgWf9nYlr/Z2Ja/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2diWv9nYlr/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9nYlr/Z2Ja/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2ZhWf9mYVn/Z2Ja/2dj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2ZhWv9mYVr/ZmFZ/2ZhWf9mYVn/ZmFZ/2diWv9lYFj/W1dQ/0VB - PKUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJOP - i7Nzbmf/aGNb/2hjW/9oY1v/aGNb/2diWv9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9nYlr/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9mYVn/ZmFZ/2diWv9nYlr/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2diWv9jXlf/Yl1V/2JeVv9nYlr/Z2Ja/2diWv9nYlr/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9nYlr/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9nYlr/Z2Ja/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2diWv9mYVn/ZWBY/2Vg - WP9nYlr/Z2Ja/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2diWv9nYlr/Z2Jb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/ZmJa/2ZiWv9mYVr/Z2Ja/2diWv9nYlr/Z2Ja/2ZhWf9mYVn/ZmFZ/2ZhWf9nYlr/Z2Ja/19a - U/9JRT+yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACSjonCcm1l/2hjW/9oY1v/aGNb/2hjW/9nYlr/aGNa/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNa/2diWv9oY1r/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2diWv9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9nYlr/ZGBX/2RfWP9lYVn/aGNa/2hjWv9nYlr/Z2Ja/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjWv9nYlr/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjWv9nYlr/aGNa/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9nY1r/ZmFZ/2diWv9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2di - Wf9lYFj/ZmFY/2diWv9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjWv9lYFj/Y15V/2ZhWf9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hjW/9oY1v/aGNb/2hj - W/9oY1v/aGNa/2diWv9nYlr/Z2Ja/2hjWv9oY1v/aGNa/2diWv9nYlr/Z2Ja/2diWv9nYlr/Z2Ja/2di - Wv9hXFT/S0dBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAkY2G0XFsZP9pZFv/aWRb/2lkW/9pZFv/aGNa/2hjWv9oY1r/aGNb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2diWf9oY1r/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oY1r/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2hjWv9oY1r/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/Z2JZ/2VhWP9nYln/aGNa/2lkW/9oY1r/ZmFZ/2di - Wf9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oY1r/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9nYln/ZmFY/2hj - Wv9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oY1v/aGNa/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aGNa/2diWv9oY1r/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aGNa/2hjWv9oY1r/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oY1r/Z2JZ/2VfV/9mYVn/aGNa/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2hjWv9nY1r/Z2Na/2hjWv9pZFv/aWRb/2hjWv9nYln/Z2JZ/2diWf9oY1r/aGNa/2hj - Wv9nYlr/Yl1V/0xIQs4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJCMhd5vamH/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2hjWv9oY1r/aGNa/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9nYln/aGNa/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aGNa/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9nYlr/aGNa/2hjWv9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2diWf9mYln/aGNa/2hjW/9pZFv/Z2JZ/2Zh - WP9mYVj/aGNa/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aGNa/2hj - Wv9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2diWf9oY1r/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/3NuZv+Ggnv/joqE/46K - hP+NiYP/jYmD/42Jgv+MiIH/jIiB/4uIgf+Kh4D/ioZ//4eDfP97d2//aGNa/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oZFv/aGNa/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9oY1r/Z2Na/2hjWv9oY1r/aGNa/2diWf9nY1r/Z2Ja/2ZiWf9nYln/aGNa/2hj - Wv9nYln/Z2JZ/2JdVP9OSkTdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACOioTtbWhg/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oY1v/Z2Ja/2hj - Wv9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9oY1r/aGNa/2hj - Wv9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2hj - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aGNa/2hjWv9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9nYlr/Z2Na/2hjWv9oY1v/aGNb/2Zh - Wv9lYFj/ZWBY/2diWv9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9nYlr/aGNb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2ZhWf9xbGX/jYmE/42J - hP+NiYT/jYmE/42JhP+NiYT/jYmE/42JhP+OioX/jYqE/42KhP+LiIH/fnpz/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2hjW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lkW/9pZFv/aWRb/2lk - W/9pZFv/aWRb/2lkW/9pZFv/aGNa/2hjWv9nY1r/Z2Na/2djWv9nYlr/Z2Na/2diWv9mYln/Z2Ja/2hj - Wv9nYlr/Z2JZ/2diWf9jX1b/T0tF7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAjYmD/GxnX/9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2hj - W/9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9oY1v/aGNb/2hj - W/9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2hj - W/9mYlr/Z2Nb/2lkXP9pZFz/aWRc/2lkXP9pZFz/aGNc/2hjW/9pZFz/aGNb/2hjW/9oY1v/aGNb/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aGNb/2diWv9oY1v/aGNc/2hj - W/9mYVn/ZF9X/2RgWP9nYlr/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aGNb/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9lYFj/eXVv/42J - hP+NiYT/jYmE/42JhP+NiYT/jYmE/42JhP+NiYT/jYmE/42JhP+NiYT/g395/3dza/9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9oZFz/aGNb/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aGNb/2diW/9oY1v/aGNb/2lkXP9oY1v/Z2Nb/2ZiWv9mYVn/ZWBZ/2di - Wv9nYlr/ZmFZ/2ZhWv9mYlr/ZGBY/1FNRvwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAh4R9DIuHgv9rZl//aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aGNb/2lk - XP9oY1v/aGNb/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9nYlr/ZWFZ/2diWv9pZFz/aWRc/2lkXP9pZFz/aWRc/2hjW/9oY1v/aGNb/2hjW/9oY1v/Z2Jb/2hj - W/9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9nYlv/Z2Jb/2hj - W/9oY1v/Z2Ja/2VgWP9lYFj/aGNb/2lkXP9pZFz/aGNb/2hjW/9oY1v/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2hjW/9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9nYlv/ZF9Y/4aD - ff+NioT/jYqE/42KhP+NioT/jYqE/42KhP+NioT/jYqE/42KhP+NioT/jYqE/3x4cf9vamP/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9oY1v/aGNb/2diW/9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2hkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aGNb/2lkXP9pZFz/aWRc/2hjW/9nYlr/ZWBZ/2Vg - WP9lYVn/ZWBY/2RfWP9kX1j/ZF9Y/2NeVv9RTUb/U1BJDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiEfRqJhYD/a2Ze/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2hjW/9pZFz/aWRc/2lkXP9oY1v/Z2Ja/2diWv9oY1v/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aGNb/2diWv9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9nY1v/Z2Nb/2hjW/9oY1v/aGNb/2di - Wv9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/Z2Ja/2di - Wv9pZFz/aWRc/2hjW/9lYVn/Z2Ja/2lkXP9pZFz/aWRc/2diWv9mYVn/ZmFZ/2hkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/ZmFa/2xn - YP+NioT/jYqE/42KhP+NioT/jYqE/42KhP+NioT/jYqE/42KhP+NioT/jYqE/4qGgP94dG3/bmlh/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9oY1v/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aGRc/2hjW/9oY1v/aGNb/2lkXP9pZFz/aWRc/2lk - XP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXP9pZFz/aGNb/2Zh - Wv9mYVr/Z2Ja/2VhWf9kX1j/Y15W/2NeV/9hXVX/UU1H/1NPSBsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIhH4piIR+/2xnX/9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/Z2Jb/2diWv9lYFn/aGNb/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2lkXP9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/amVd/2lk - XP9oY1v/aWRc/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2hj - W/9nY1v/aWRc/2lkXP9pZFz/Z2Ja/2hjW/9qZV3/amVd/2lkXP9mYVr/ZmFZ/2ZhWv9pZFz/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aWRc/2di - Wv97eHH/jouF/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jouF/46Lhf+FgXv/dnJq/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXf9pZFz/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9oY1v/Z2Ja/2hjW/9pZFz/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lk - XP9oY1z/aGNc/2lkXP9mYlr/ZWBY/2RfWP9kX1j/ZWBY/1RRSv9TT0krAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIR9OYWCe/9rZl//amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aGNb/2ZiWv9lYFn/ZF9Y/2diWv9pZFz/amVd/2pl - Xf9qZV3/amVd/2plXf9pZFz/aWRc/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lk - XP9pZFz/aWRc/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9nY1v/ZmFa/2diWv9nYlr/Z2Jb/2ZiWv9nYlr/aWRc/2lkXP9nY1v/ZmFZ/2diWv9oY1v/aWRc/2lk - XP9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2llXf9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2hj - W/9nYlv/ioeB/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jouF/46Lhf+Oi4X/fnpz/3Rv - aP9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/aGNc/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9oY1v/ZWBZ/2RgWP9mYVr/aGNb/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aWRc/2hkXP9pZFz/amVd/2lk - XP9pZFz/aWRc/2hjXP9nY1v/ZmFZ/2VgWP9mYVn/ZmJa/2ZhWv9WUkv/U1BJPAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiEfkmDf3j/a2Ze/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aWVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/aWRd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9pZFz/Z2Jb/2ZhWf9oY1v/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/aWRc/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9pZFz/aWRc/2lkXP9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/aGNb/2VgWf9kX1j/ZF9Y/2RgWP9kYFj/ZmFZ/2ZiWv9nYlr/ZmFZ/2ZhWv9nYlv/aWRc/2pl - Xf9oY1v/aGNb/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/aWRc/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lk - XP9nYlv/dXFp/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jouF/46Lhf+Oi4X/jImD/3dy - a/9uaWL/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aWRc/2hj - XP9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9pZFz/Z2Ja/2RfWP9jXlf/ZGBY/2hj - W/9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9pZFz/aGNc/2lk - XP9oZFz/aWRc/2hkXP9nYlv/ZmFa/2RfWP9kYFj/ZWFZ/2diWv9nYlr/V1NM/1NQSUwAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIhH1bgHt1/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2lkXP9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9pZFz/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9pZFz/aWRc/2lkXP9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2lkXP9kX1j/Yl1V/2JdVv9kX1j/ZmJa/2ZhWv9mYVr/ZmJa/2ZhWf9mYVr/aGNb/2lk - XP9qZV3/aWRc/2hjW/9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9pZFz/Z2Ja/4iEff+PjIb/j4yG/4+Mhv+PjIb/j4yG/4+Mhv+PjIb/j4yG/4+Mhv+PjIb/j4yG/4WB - e/90cGj/a2Zf/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lk - XP9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aWRc/2lkXP9pZFz/amVd/2lk - XP9pZFz/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/aWRc/2hjW/9nYlr/ZWBY/2Vg - Wf9nYlv/aWRc/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2lk - XP9pZFz/aGNb/2diWv9nYlr/ZmFa/2VgWf9kX1f/ZF9Y/2VgWf9mYlr/ZmFa/1hVTv9UUElfAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIN9bH14cf9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9qZV3/aWRc/2lkXP9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/ZWFZ/2JdVv9iXVb/ZWFZ/2hjW/9oY1v/aGNb/2xnYP9+enP/hoJ8/3p2 - b/90b2f/a2Ze/2plXf9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9qZV3/aWRc/3Rwaf+QjYf/kI2H/4+Mhv+PjIb/kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CN - h/98eHH/c25m/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tm - Xv9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2plXf9rZl7/amVd/2hj - XP9oY1v/aWRc/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9qZV3/aWRc/2diW/9nYlv/Z2Nb/2hjXP9nYlv/ZmFa/2diWv9oY1v/aGNb/2hjW/9cWFH/VVJLcAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+Lhn96dm//a2Ze/2tm - Xv9rZl7/a2Ze/2plXf9qZV3/a2Ze/2tmXv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2plXf9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2lkXP9pZFz/amZe/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2ZhWv9jX1f/Yl1W/2RgWP9nYlv/aGNb/2hjW/9lYVn/g4B5/4+M - hv+UkIv/ko+J/46KhP+Cfnj/eXVu/3BrZP9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2lkXf+JhoD/kI2H/5CNh/+PjIb/kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CN - h/+MiYP/dHBo/25pYf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZl7/amVd/2plXf9rZl7/amVd/2lkXP9qZV3/a2Ze/2tm - Xv9qZV3/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9qZV3/aWRd/2hjXP9oY1z/aGNb/2lkXP9qZV3/aWRc/2hjW/9oY1v/aWRc/2lkXf9qZV3/YFxU/1JO - SIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXk46QeXRu/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2hjW/9pZFz/amVd/2tm - Xv9rZl7/a2Ze/2plXf9oZFz/aGRc/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9oY1z/ZWBZ/2NeV/9kX1j/ZmFa/2hjW/9nYlv/YVxV/397 - df+QjYf/kI2H/5GNiP+Tj4n/lJCL/5SQi/+RjYj/jIiD/4F9d/94dGz/bGdf/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2lkXf96dm//kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CN - h/+QjYf/gX12/3JtZv9rZl//a2Ze/2tmXv9qZV3/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amZe/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2plXf9qZV3/a2Ze/2plXf9qZV3/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVe/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2lkXf9qZV3/aWRd/2lkXf9qZV3/a2Ze/2plXf9qZV3/aWVd/2llXf9qZV3/a2Ze/2Jd - Vv9NSkOUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlpKNondz - bP9rZl7/a2Ze/2tmXv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2lkXP9pZFz/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9pZV3/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/aGNc/2lkXP9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/aWRd/2diW/9lYFn/ZF9Y/2ZhWf9nYlv/Z2Ja/2Fd - Vf9xbWb/kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kY6I/5OPiv+UkIv/lJCK/5CMh/+Lh4H/e3Zv/3hz - bP9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2plXf9taGH/jYqE/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CN - h/+QjYf/jouF/3Rwaf9vamL/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/amVd/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVe/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV7/a2Ze/2tmXv9rZl7/amVd/2lkXP9pZF3/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9jXlb/TUlEpQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJSR - jLR1cWr/a2Ze/2tmXv9rZl7/a2Ze/2pmXv9qZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2plXf9oY1v/Z2Jb/2lkXP9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2pl - Xf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2lkXf9pZFz/aWRc/2hkXP9pZV3/aWRc/2di - W/9kYFj/ZWBZ/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CNh/+QjYf/kI2H/5CNh/+Sjon/lJCK/5SR - jP+Tj4r/j4uF/4iEfv96dm7/cm1m/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/g395/5CNh/+QjYf/kI2H/5CNh/+QjYf/j4yG/5CNh/+QjYf/kI2H/5CN - h/+QjYf/kI2H/4J/eP9ybWX/bGdf/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2plXf9qZV3/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/a2Ze/2tmXv9rZl7/amZe/2plXf9pZF3/aWRd/2pl - Xf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/Y19X/01KRLcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACTkIrGdG9o/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2pl - Xf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/aWRc/2lkXP9qZV3/a2Ze/2tmXv9rZl7/amVd/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2hj - W/9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9pZF3/amVd/2plXf9qZV3/a2Ze/2pl - Xf9nYlv/ZmFa/2FdVf+IhH7/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5OPiv+UkIv/lJCL/5KPif+NioT/gn54/3l1bf9xbGT/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/eHNs/5GNiP+RjYj/kY2I/5GNiP+RjYj/kI2H/46Lhv+PjIb/kI2H/5GN - iP+RjYj/kY2I/5CLhv9zb2f/b2pi/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/aWRc/2hjXP9pZFz/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/a2Ze/2pl - Xf9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2VgWf9OSkTJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAko6H2HJtZf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/amVe/2tmXv9rZl7/a2Ze/2plXf9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2pl - Xf9oY1v/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/aWRd/2plXf9qZV3/amVd/2tm - Xv9pZFz/ZmFa/2hkXP9iXVb/e3dx/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+Sjon/k4+K/5SQi/+UkIv/kY2I/4yIgv9/e3T/eHRs/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/b2tj/4+Lhf+RjYj/kY2I/5GNiP+RjYj/kY2I/5CNh/+OjIb/j4yG/5CN - h/+RjYj/kY2I/5GNiP+BfXf/b2pj/2xnX/9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2pl - Xf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2lkXP9mYVr/ZmFZ/2hjW/9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9lYVn/T0tF2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJCMhepwa2P/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/amVd/2pl - Xf9rZl7/aGNb/2VgWf9oZFz/ZF9Y/21oYf+QjYf/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5KOif+UkIr/lZGM/5OQ - iv+QjIb/ioeB/3t2b/93c2z/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9sZ1//bWhg/4qGgP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kI2H/5GN - iP+RjYj/kY2I/5GNiP+OioX/cGtj/21oYf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2pl - Xf9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9oZFz/ZmFa/2VgWf9oY1v/amVd/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9qZV3/ZmFa/1FNR+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACOioT6bmlh/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amZe/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/amVd/2ll - Xf9qZV3/a2Ze/2diW/9lYVn/aWRc/2ZhWv9gXFT/jYqE/4+Mh/+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/k4+K/5SQi/+UkIv/ko+J/42Jg/9/e3T/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9sZ1//bGdf/4aCe/+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/fHhx/21oYP9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2pl - Xf9pZFz/aWRc/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/aGNb/2ZhWf9mYVn/aWRc/2plXf9rZl7/a2Ze/2tm - Xv9qZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2diW/9ST0j8Yl1WAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACJhH4OjYiD/25pYf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVe/2lk - XP9qZV3/a2Ze/2tmXv9pZFz/aGNc/2lkXP9nYlv/XlpS/4B9d/+Oi4b/kY2I/5CNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+OioX/gHx2/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2xnX/9uaWH/bmlh/4N/eP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GNiP+RjYj/kY2I/5GN - iP+RjYj/kY2I/5GNiP+RjYj/ioaA/21oYP9taGD/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2pl - Xv9oY1v/ZWBZ/2ZhWf9pZFz/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2hjXP9lYVn/ZmFZ/2plXf9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9pZFz/VFFK/1dTTBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAiYV+IYqGgP9uaWH/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/a2Ze/2xnX/9sZ1//a2Ze/2plXf9pZFz/aGNb/15aU/9yb2n/jouG/4+Mh/+Ni4b/j4yH/5CN - iP+Rjon/kY6J/5CNiP+RjYj/kY6J/5GOif+Rjon/kY6J/5GOif+Rjon/kY6J/5GOif+Rjon/kY6J/5GO - if+Rjon/kY6J/5GOif+Rjon/kY6J/5GOif+NioX/dG9n/3FsZf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9wa2P/cWxk/4N/eP+Rjon/kY6J/5GOif+Rjon/kY6J/5GOif+Rjon/kY6J/5GO - if+Rjon/kY6J/5GOif+Rjon/kI2I/3NuZ/9taGD/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9pZFz/ZF9Y/2NeV/9jXlf/aGNb/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/ZWFZ/2diW/9qZV3/bGdf/2xn - X/9sZ1//a2df/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZl7/amVd/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVe/1dTTP9XU0wlAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAImFfjaGg33/bWhg/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/aWRc/2lkXP9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWVd/2hjW/9jXlf/aGRe/46Lhv+Niob/jImE/46L - hv+QjYj/kY6J/5GOif+RjYj/kY6J/5GOif+Rjon/kY6J/5GOif+Rjon/kY6J/5GOif+Rjon/kY6J/5GO - if+Rjon/kY6J/5GOif+Rjon/kY6J/5GOif+NioX/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/21oYP9wa2P/cWxl/4aCfP+Rjon/kY6J/5GOif+Rjon/kY6J/5GOif+Rjon/kY6J/5GO - if+Rjon/kY6J/5GOif+Rjon/kY6J/356c/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pm - Xv9pZV3/aGNb/2VgWf9jX1f/ZF9Y/2diW/9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//aWVd/2ZiWv9oY1v/amVd/2xn - X/9sZ1//bGdf/2tmXv9rZl7/amZe/2tmXv9rZl7/a2Ze/2pmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXv9qZl7/a2Ze/2tmXv9rZl//a2Zf/2pm - Xv9qZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9ZVE3/VlNMOQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIhX5LhIB5/21oYP9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2lkXf9pZF3/a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/Z2Jb/2FdVf+MiYP/jYqF/42J - hP+QjYf/ko6J/5KPiv+Sjon/ko6J/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko6J/5KOif+Sj4r/ko+K/5KPiv+Oi4b/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/25pYf9ybWb/c25n/4iFf/+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/4mFf/9pZV3/aWRc/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/amVd/2llXf9qZV3/aWRd/2tmXv9rZl7/amVe/2plXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9qZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXv9nY1v/aGNb/2tm - Xv9sZ1//bGdf/2xnX/9rZl7/amZe/2pmXv9qZV7/amVe/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmX/9rZl//a2Zf/2tm - Xv9qZl7/a2Ze/2plXf9qZV7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/WlZQ/1dTTE4AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIR+X4B8dP9rZl7/amVd/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9jXlf/fnt1/42L - hf+Ni4X/kY6J/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sjon/ko+K/5KPiv+Oi4b/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/3FsZP90cGj/eXVt/4yJg/+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/4+Lhv9taWH/aGNb/2hkXP9qZV7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2plXf9qZV7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV7/aGNc/2ll - Xf9rZl7/bGdf/2tmXv9qZV3/amVe/2tmXv9qZV7/a2Ze/2tmXv9qZV7/aWRc/2lkXP9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/amZe/2pmXv9rZl7/a2Ze/2tnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/11YUv9XU0xhAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIeDfXN7d3D/aWRc/2hjW/9qZV3/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/Yl5W/29s - Zf+OjIb/kI2H/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Oi4b/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bmlh/3RvZ/92cWr/f3t0/5CNiP+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5GOif91cWn/Z2Jb/2ZhWv9nYlv/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2pl - Xf9rZl7/a2Ze/2tmXv9mYVn/ZF9Y/2VgWf9oY1z/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZl7/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tnX/9sZ1//bGdf/2tmXv9qZV7/aWVd/2plXf9fWlP/WFNNdgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWk42IeHNt/2hjW/9oY1v/amVd/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWRc/2Fd - Vf9hXVb/kI2I/5KOif+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Pi4b/c25n/25pYf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//c25n/3hzbP96dm7/iIR+/5KPiv+Sjon/kY6J/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv96dm//aGNc/2ZhWv9lYFj/ZmFa/2plXf9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9rZl7/a2Ze/2pmXv9qZV3/amVe/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9qZV3/Y15X/2NeV/9jXlf/ZWFZ/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9rZl7/YV1V/01K - RIoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlZGMnXdzbP9oY1v/aGNb/2pl - Xf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWRc/2Rf - WP9gW1T/W1ZP/4qHgf+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KOif+Rjon/ko+K/5KP - iv+Sj4r/ko+K/5KOif+Sj4r/ko+K/5KPiv+Sj4r/i4iC/4iEfv+Ggnz/eXVt/2xnX/9rZl7/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2pmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9xbWX/eHNs/3p2b/+Df3j/j4yH/5KPiv+Sj4r/kY6J/5GNiP+Sjon/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv9+enT/amVd/2diW/9mYVr/ZWBZ/2diW/9qZV3/bGdf/2xn - X/9sZ1//bGdf/2tmXv9nYlv/Z2Jb/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2lkXP9pZFz/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//amVd/2NeV/9jXlf/Y15X/2VhWf9qZV7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVe/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2Je - Vv9NSUOfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJOQirFzb2n/aWRc/2pl - Xf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lkXP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9rZl7/Z2Jb/2Vg - Wf9jXlf/Y15X/1tWT/97eHL/ko6J/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+QjYj/kI2I/5KO - if+Sj4r/ko6J/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/lpKN/5SRi/+NiYP/e3dv/29q - Yv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/3Ju - Zv96dm//fXly/4F9d/+MiIP/kY2I/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KOif+QjYj/kI2I/5GO - if+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Cfnj/a2Ze/2tmXv9pZF3/Z2Jb/2ZiWv9oY1v/amVd/2xn - X/9sZ1//bGdf/2xnX/9qZV7/ZWBZ/2VgWf9nYlv/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2pl - Xv9rZl7/a2Ze/2tmXv9rZl7/amVd/2hjXP9oY1z/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9lYFj/ZF9Y/2NfV/9nY1v/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl//a2Zf/2tmX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9pZFz/aWRc/2lkXP9qZV3/amVd/2plXf9rZl7/bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2tm - Xv9jX1f/TUpDtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSjojGc25n/2tm - Xv9rZ1//bGdf/2plXf9nY1v/ZWBZ/2djW/9oY1z/aWRd/2tmXv9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lkXP9nYlv/aWRc/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//amVd/2Nf - V/9jXlf/Y19X/2NeV/9cWFD/a2di/5GNiP+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/j4yH/4+M - h/+Rjon/ko+K/5KOif+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+TkIv/lpKN/5WS - jP+Pi4X/gn53/3dza/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9vamP/d3Jr/315 - cv9+enT/hIF6/42JhP+RjYj/j42I/4+Mh/+Sjon/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Rjon/kI2I/4+N - iP+RjYj/ko+K/5KPiv+Sj4r/ko+K/5KPiv+FgXv/amZe/2tmXv9sZ1//a2Ze/2plXf9pZFz/amVd/2pl - Xv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2VgWf9kX1j/ZGBZ/2plXf9sZ1//bGdf/2xnX/9rZl7/amVd/2pl - Xf9qZV3/a2Ze/2tmXv9rZl7/amVd/2hjW/9nYlv/aGNb/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVe/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2pmXv9qZl7/a2Ze/2xnX/9qZl7/a2Ze/2xnX/9sZ1//a2Ze/2plXf9qZV3/amVe/2pl - Xf9pZF3/aGRc/2hjXP9oY1v/aWRc/2lkXP9pZFz/amVd/2tmXv9rZl7/amVe/2plXv9rZl7/a2Ze/2xn - X/9rZl7/ZWBZ/05LRMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkY2H2nFt - Zf9sZ1//bGdf/2tmXv9oY1v/ZF9Y/2NeV/9jXlf/ZF9Y/2VgWP9pZFz/a2Ze/2ZhWv9kX1j/ZmFZ/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/Z2Nb/2lkXf9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//a2Ze/2di - Wv9jXlf/ZF9Y/2diW/9mYlr/Yl1W/19bVP+QjYj/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5GN - iP+QjYj/kY6J/5KOif+Sjon/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+Sj4r/lZGM/5aSjf+Tj4n/jYmD/356c/95dG3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//c29n/3Vwaf9+enT/gX13/4SA - ev+JhYD/jouG/5KPiv+Rjon/kI2I/4+NiP+PjYj/kY2I/5GOif+Sjon/ko+K/5KPiv+Sj4r/ko+K/5KP - iv+RjYj/ko6J/5KPiv+Sj4r/ko+K/5KPiv+Cf3j/amVd/2plXf9rZl7/bGdf/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9oZFz/Z2Ja/2hjXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2pl - Xf9pZF3/a2Ze/2xnX/9sZ1//a2Ze/2lkXP9mYlr/ZWFZ/2diW/9qZV3/a2Ze/2xnX/9sZ1//a2Ze/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9qZl7/a2Ze/2xnX/9sZ1//amZe/2tmXv9rZl7/a2Ze/2plXf9qZV3/amVd/2pl - Xf9qZV3/aGNc/2diW/9oY1v/aGNc/2lkXP9nY1v/Z2Jb/2lkXP9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9sZ1//a2Ze/2diWv9RTUfcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI+L - he9wa2P/bGdf/2xnX/9rZl7/Z2Nb/2RfWP9jXlf/ZF9Y/2VgWf9mYVr/aWVd/2lkXf9jX1f/Y15X/2Ne - V/9pZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2plXf9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2hj - W/9jXlf/Y15X/2VgWf9rZl7/a2Ze/2hjXP9iXVb/iYaA/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/lJGL/5WSjf+VkYz/lJCK/5CMh/+LiIH/fHhx/3p2bv94c2z/a2Ze/2pl - Xf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/90b2j/dnJr/3hzbP+Cfnf/hH95/4aCe/+Ig33/ioaA/4+L - hv+Sj4r/k5CL/5OQi/+TkIv/k4+K/5KOiv+Sj4r/kY2J/4+Nh/+QjYf/kY6J/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/9/e3X/aWRd/2plXf9rZl7/bGdf/2tmXv9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9rZ1//a2Ze/2xnX/9pZF3/aGNb/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2tmXv9oY1z/ZmFa/2ZhWv9nYlv/aWRd/2tmXv9qZV3/amVd/2pl - Xv9qZV7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9qZV3/amVd/2hjW/9oY1v/aWRc/2lkXP9pZF3/aWRc/2lkXP9pZFz/amVd/2plXf9rZl7/amVd/2pm - Xv9rZl7/a2Ze/2xnX/9oZFz/U09J8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIB8 - dQaNiYP/bmli/2xnX/9sZ1//bGdf/2tmXv9pZFz/Z2Nb/2hjXP9pZFz/aWRc/2plXf9nY1v/Y15X/2Ne - V/9lYFj/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xf9jX1f/Y15X/2NeV/9pZFz/bGdf/2xnX/9sZ1//Y19Y/3t4cv+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+UkYz/lJGM/5SQi/+TkIv/ko+J/5CM - h/+OioT/joqE/42Jg/+MiIH/jIiB/4yJgv+MiYL/jImC/4yJgv+NiYP/joqF/4+Mhv+Rjoj/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5KPiv+QjYj/joyG/5CNiP+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5KPiv97d3D/aWRc/2plXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//a2Ze/2tmXv9qZV3/ZmFa/2RfWP9nYlv/amVe/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9nY1v/ZmJa/2ZhWv9mYlr/aWRc/2plXf9rZl7/aWRc/2lk - XP9pZF3/a2Ze/2tmXv9sZ1//bGdf/2xnX/9rZl7/amVe/2plXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV3/aWVd/2tmXv9rZl7/a2Ze/2xn - X/9sZ1//a2Ze/2plXf9pZFz/aWRc/2lkXP9pZFz/aWRc/2lkXf9pZFz/aWRc/2lkXP9qZV7/amVe/2pl - Xf9qZV3/amVd/2tmXv9sZ1//aWVd/1RRSv9cWFEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACIhH4dioaB/25pYf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9mYVr/ZWBZ/2Vg - Wf9mYVr/aGNc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xn - X/9nYlr/Y15X/2NeV/9kX1j/a2Ze/2xnX/9sZ1//bGdf/2ZhWv9uamT/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k4+K/5KPiv+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+Sj4r/ko+K/5OPiv+Sj4r/ko+J/5KPif+Sj4r/ko6J/5KPiv+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/ko+K/5CMh/+Rjon/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5CNh/92cWv/aWRd/2tmXv9sZ1//bGdf/2xnX/9sZ1//a2df/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9rZl7/aWRd/2RfWP9jXlf/ZmFa/2plXf9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9kX1j/Y15X/2NeV/9lYFn/aGNb/2plXv9rZl7/a2Ze/2pl - Xf9pZF3/amVd/2tmXv9rZl7/bGdf/2xnX/9sZ1//a2Ze/2plXv9pZF3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV7/aWRc/2lkXP9qZV3/a2Ze/2xn - X/9rZl7/amVe/2plXf9qZV3/amVd/2lkXP9pZFz/aWRd/2lkXP9pZFz/aGNb/2hjW/9pZFz/amVd/2tm - Xv9pZFz/aWRc/2diW/9qZV3/a2Ze/2lkXf9VUUv/VlJMHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAiYR+M4aDff9taGD/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/Y19Y/2Vg - Wf9oY1z/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2lkXf9pZV3/a2Ze/2xn - X/9sZ1//ZGBY/2NeV/9jXlf/ZmFa/2xnX/9sZ1//bGdf/2xnX/9oY1z/Y19Y/5GOif+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OPiv+Sjon/k4+K/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+Tj4r/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/4mGgP9taWH/aWRc/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/amVd/2plXf9qZl7/a2Ze/2lkXP9kX1j/ZF9Y/2diW/9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9nYlv/Y15X/2NeV/9jXlf/Y15X/2hjXP9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9qZV3/aWRc/2plXf9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2hjXP9oY1v/aWRd/2tm - Xv9rZl7/a2Ze/2plXf9rZl7/a2Ze/2tmXv9qZV3/amVd/2plXf9pZFz/Z2Ja/2RfWP9kYFj/aGNb/2lk - Xf9qZV3/aWRc/2ZiWv9mYVr/aGNb/2plXf9pZV3/VlNM/1ZSSzQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAImEfkuEgHn/bWhg/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2Ne - V/9oY1v/a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xn - X/9sZ1//a2df/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2RfWP9jXlf/Y15X/2hkXP9sZ1//bGdf/2xnX/9sZ1//amVd/2NeV/+Fgnz/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+PjIf/kY6J/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+Tj4v/k4+K/5OPiv+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+Tj4r/k4+K/5OPiv+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k4+K/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/ko+K/357dP9pZFz/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2lkXP9qZV3/a2Ze/2tmXv9qZV3/aGNc/2hjW/9qZV3/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//aWRc/2NeV/9jXlf/Y15X/2RfWP9pZFz/a2Ze/2xn - X/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xnX/9rZl7/aWRd/2lkXP9qZV3/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9oY1v/Z2Jb/2lk - XP9qZV3/amVe/2plXf9qZV3/amZe/2tmXv9rZl7/aWVd/2lkXf9pZF3/aGRc/2VhWf9jXlf/Y15X/2Zh - Wv9pZF3/a2Ze/2plXf9pZFz/aGNc/2lkXP9qZV3/aWRc/1dUTf9VUUtLAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACIhH5hf3t0/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9qZV3/a2Ze/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9lYFn/Y15X/2VgWP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9kX1j/eHRu/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+PjIb/bWhi/2pmX/+HhH7/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OPiv+Tj4r/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/jImD/3JuZ/9oY1z/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9qZV3/amVd/2tmXv9qZV3/amVd/2llXf9pZF3/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//amVd/2plXf9rZl7/bGdf/2lkXf9kYFj/Y15X/2RfWP9mYVr/amVd/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2xnX/9sZ1//a2Ze/2plXf9qZV3/amZe/2tm - Xv9rZl7/amZe/2pmXv9sZ1//bGdf/2tmXv9qZV3/amVd/2tmXv9rZl7/bGdf/2xnX/9pZF3/Z2Nb/2di - Wv9oY1v/aWRc/2lkXP9pZFz/aWRc/2tmXv9rZl7/amVe/2lkXf9pZFz/aWRd/2hjW/9nYlr/ZF9Y/2Rg - WP9nYlr/amVd/2tmXv9rZl7/a2Ze/2plXf9qZV3/aWRd/2hjXP9aVU//VVJKYQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAh4R9eHt3cP9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/amVd/2lk - XP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/ZWFZ/2NeV/9nYlr/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//Z2Ja/2tn - YP+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+PjIb/cGtk/2hjXP9kX1j/YFxU/3NvaP+Oi4b/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+RjYj/e3dw/2hjW/9oY1z/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2xnX/9sZ1//a2Zf/2xnX/9sZ1//a2Ze/2plXv9qZV7/amVd/2plXf9qZl7/amVd/2pl - Xv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2tmXv9qZV3/a2Ze/2xnX/9rZl7/amVd/2lkXP9nYlr/Z2Nb/2lk - XP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9qZV7/a2Ze/2tm - Xv9rZl7/a2Ze/2lkXP9qZV7/amVe/2tmXv9qZV7/aWRc/2plXf9qZV3/a2Ze/2xnX/9qZV3/aWRc/2di - W/9nY1v/aGRc/2lkXP9pZF3/aGRc/2lkXP9rZl7/amVd/2lkXf9pZV3/aWVd/2llXf9oY1v/Z2Ja/2Zh - Wf9mYVr/Z2Nb/2plXf9rZl7/bGdf/2xnX/9rZl//a2Ze/2plXf9pZFz/XFhR/1ZSS3gAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaTjY96dW7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWVd/2hj - XP9mYlr/aWRc/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2VgWf9jX1j/ZmJa/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2hk - XP9iXVb/j4uG/5OQi/+TkIv/k5CL/5OQi/+PjIb/cGtk/2plXf9rZl7/a2Ze/2ZhWv9iXVb/Yl5X/3x4 - cv+Sj4r/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5KPiv+Df3n/a2df/2djW/9pZF3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmX/9sZ1//bGdf/2tmX/9sZ1//bGdf/2xnX/9qZV3/amVd/2pmXv9rZl7/amVe/2lk - Xf9pZF3/a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2lk - XP9pZFz/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXv9qZV7/amVd/2lkXP9pZFz/amVd/2tm - Xv9sZ1//bGdf/2tmXv9qZV3/amZe/2pmXv9rZl7/amVd/2hkXP9qZV3/amVd/2tmXv9sZ1//amVd/2hj - W/9nY1v/aGNb/2lkXf9qZV3/amVd/2plXf9qZV3/amVd/2lkXP9nYlv/aGNb/2lkXP9oY1v/Z2Jb/2Zi - Wv9lYVn/ZWFZ/2diWv9qZV3/a2Ze/2tmXv9rZl7/bGdf/2xnX/9rZl7/aWRd/19aU/9MSUKQAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVkYyld3Ns/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lk - XP9mYVr/ZWBZ/2lkXP9rZl7/a2Ze/2tmX/9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2pmXv9lYFn/Y15X/2VgWf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/Y15X/4J+ef+TkIv/k5CL/5OQi/+PjIb/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//amVd/2Vh - Wf9hXFX/ZmJa/357df+Sj4n/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/ko+K/4SAe/9uaWP/Z2Ja/2hkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//a2Ze/2pl - Xf9nYlv/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9qZV3/aWRc/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/amVd/2lkXP9pZF3/aWRc/2lk - Xf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2pmXv9rZl7/a2Ze/2plXf9qZV3/amVd/2plXf9rZl7/a2Ze/2lk - Xf9mYlr/Z2Jb/2hjXP9qZV3/amVd/2plXf9qZV3/aWVd/2lkXP9nYlv/ZmJa/2diW/9nYlr/ZmFa/2Zh - Wv9mYlr/Z2Jb/2ZhWv9nYlr/amVd/2plXf9qZV3/a2Ze/2tmXv9sZ1//a2Ze/2plXf9hXFX/S0hCpgAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk5CKvXVxaf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/aWRd/2hjXP9qZV3/amVe/2tmXv9rZl7/a2Ze/2xnX/9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9rZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lk - XP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/ZWBZ/2NeV/9lYFn/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2RgWP90cGr/k5CL/5OQi/+PjIb/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//aWRc/2RfWP9hXFX/ZWFa/3p3cP+PjIb/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+Rjoj/gHx2/2xoYf9mYlr/aGNb/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/bGdf/2xnX/9sZ1//a2Ze/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9oY1v/ZWFZ/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV7/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2lkXf9qZV3/a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//a2Ze/2plXf9pZFz/amVe/2lk - Xf9pZFz/amVd/2pmXv9rZl7/a2Ze/2tmXv9qZl7/a2Ze/2tmXv9qZV7/amVd/2plXf9pZFz/aWRc/2ll - Xf9oY1v/ZmJa/2ZiWv9pZFz/amVd/2plXf9pZV3/aWRd/2lkXP9oY1z/aGNc/2diW/9nYlr/Z2Jb/2Vh - Wf9jXlf/ZGBY/2ZhWf9mYVr/Z2Ja/2hjXP9oY1z/aWVd/2plXf9rZl7/a2Ze/2tmXv9qZV3/Yl1V/0xI - Q78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCNh9VybWb/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2tmXv9rZl7/amVd/2hj - XP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xf9oY1z/aWVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2diWv9jXlf/ZWBZ/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9oY1v/Z2Nc/5OQi/+PjIb/cGtk/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//aWRd/2VhWf9hXVb/YV1W/3FuZv+Fgnz/ko+K/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/4mF - gP93c23/aGNc/2ZhWv9nY1v/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9qZV3/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/aGNc/2ZiWv9pZFz/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2tmXv9pZFz/aWRc/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/aWRc/2tm - Xv9pZV3/aGNc/2hkXP9qZV3/a2Ze/2plXf9qZl7/amZe/2tmXv9rZl7/a2Ze/2plXv9pZFz/ZF9Y/2Rf - WP9mYVr/ZmFa/2ZiWv9mYlr/aWRc/2plXf9qZV3/aGNc/2hjW/9oY1v/aGNc/2hjXP9nYlv/Z2Jb/2di - W/9kX1j/Y15X/2NeV/9jXlf/ZWBZ/2ZiWv9nYlr/ZmFa/2djW/9pZFz/amVd/2tmXv9qZV7/aWRc/2Je - Vv9MSUPXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOioTub2tj/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//a2Ze/2lk - XP9nY1v/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/aWVd/2plXf9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9mYVn/Y15X/2VhWf9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//aWRc/2JeV/+HhH7/b2pj/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2djW/9jXlf/YVxV/2RgWP90cGr/hIF7/5GO - if+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5GPif+HhH7/eHVu/2pm - Xv9lYFn/ZmFa/2hkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//amVe/2lkXP9oZFz/amVd/2xnX/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/aWRc/2lkXP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2ll - Xf9pZF3/amVd/2lkXf9pZFz/amVd/2tmXv9pZF3/amVd/2pmXv9rZl7/a2Ze/2lkXf9qZV3/Z2Jb/2Ne - V/9jXlf/Y15X/2ZhWf9nYlr/Z2Jb/2llXf9qZV3/aWRd/2hjXP9pZFz/aWRc/2plXf9pZFz/aGNc/2di - W/9oY1v/ZF9Y/2NeV/9jXlf/Y15X/2NeV/9kX1j/ZGBY/2NfWP9mYVr/aGNb/2plXf9qZV3/amVd/2hj - XP9jX1f/TkpE7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAfHUJjIiD/25pYv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2tm - Xv9pZFz/aGNb/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9pZV3/ZWBZ/2NeV/9lYFn/a2Ze/2xn - X/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9kYFj/ZmFa/2hjXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2lkXf9nYlv/Y15W/2Fd - Vf9iXVX/bWli/3l1bv+EgXv/joyG/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQ - i/+TkIv/k5CL/5OQi/+TkIv/k5CL/5OQi/+TkIv/k5CL/5CNiP+Gg33/fHhy/3FuZv9mYVr/ZGBY/2Vh - Wf9oY1v/aWVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tnX/9qZV3/amVe/2xnX/9sZ1//bGdf/2xn - X/9rZl7/amZe/2plXv9qZV7/amVd/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2plXv9qZV7/a2Ze/2lkXf9pZFz/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//amVd/2Vg - Wf9kX1j/ZmFa/2plXf9qZl7/amVd/2tmXv9rZl7/aWRd/2plXf9rZl7/a2Ze/2plXf9pZFz/amVd/2Vg - Wf9jXlf/Y15X/2NeV/9lYFn/ZmJa/2diW/9pZFz/amVd/2lkXf9pZV3/aWVd/2tmXv9rZl7/amVd/2lk - Xf9pZFz/aWRc/2ZhWv9jXlf/Y15X/2NeV/9jXlf/Y15X/2NfV/9kYFj/Z2Jb/2lkXf9qZV3/aWRd/2hk - XP9oY1v/ZWBY/1BMRv9ZVU4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiIR+IYmFgP9uaWH/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2plXf9sZ1//bGdf/2xn - X/9rZl7/aWRd/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2djW/9jXlf/ZGBY/2lk - Xf9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//aWVd/2lkXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9qZV3/aGNb/2VhWf9iXlb/YV1V/2BcVf9kYFn/bWli/3NvaP95dnD/f3t1/4F9d/+EgXv/hYJ8/4mF - gP+JhoD/hoN9/4SBe/+Bfnj/f3x2/3t3cf91cWv/b2tl/2hkXP9jXlf/ZF9Y/2VgWf9nYlv/aWRc/2pm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//a2df/2xn - X/9rZl7/amVd/2llXf9qZl7/amZe/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2pmXv9qZV3/aWRc/2lkXP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2di - W/9jXlf/Y15X/2NeV/9pZFz/a2Ze/2tmXv9sZ1//a2Ze/2plXv9qZl7/amZe/2tmXv9pZF3/Z2Nb/2lk - Xf9mYlr/Y15X/2NeV/9kX1j/ZmFa/2diWv9oY1v/aWRc/2lkXf9pZF3/aWVd/2tmXv9sZ1//bGdf/2tm - Xv9rZl7/amVd/2plXf9pZFz/ZmFa/2NfWP9kYFj/ZGBZ/2NeV/9lYFn/Z2Ja/2lkXf9qZV7/amVe/2hk - XP9mYlr/ZmFa/2RfWP9QTEb/U09JIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiEfjmFgnz/bWhg/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9rZl7/bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2tmXv9pZF3/ZmFZ/2Nf - WP9mYVn/amVe/2xnX/9rZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2df/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9oY1z/aGNb/2diW/9mYVr/Y15X/2JeV/9iXlf/Yl1W/2Jd - Vv9iXVX/Yl1W/2JeV/9iXlf/Y15X/2NfWP9kX1j/ZmFa/2hjW/9oZFz/aWRc/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xn - X/9sZ1//bGdf/2pmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl//bGdf/2xn - X/9rZl7/bGdf/2xnX/9rZl7/amZe/2pmXv9qZl7/amVd/2lkXP9nYlv/aWRc/2tmXv9rZl7/bGdf/2xn - X/9mYVr/Y15X/2NeV/9jX1f/aWVd/2tmXv9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9rZl7/amVd/2pl - Xf9qZV7/aGNc/2ZhWf9nY1v/Z2Nb/2hjXP9pZFz/amVd/2tmXv9pZFz/aGNb/2llXf9qZV3/bGdf/2xn - X/9sZ1//a2Ze/2plXf9qZV3/aGNc/2ZiWv9lYFn/ZmJa/2ZhWv9lYFn/Z2Jb/2lkXP9rZl7/a2Ze/2pl - Xf9oY1v/Z2Jb/2djW/9kYFj/Uk9I/1NPSToAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIhH1Rgn53/21o - YP9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aGNb/2lkXf9rZl7/bGdf/2xnX/9sZ1//a2Ze/2hj - XP9jXlf/Y15X/2VgWf9pZFz/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xn - X/9rZl7/amVe/2plXv9qZV3/amVd/2pmXv9qZl7/amZe/2plXf9oY1z/ZmFa/2hjW/9rZl7/a2Zf/2xn - X/9sZ1//aGNc/2RfWP9jXlf/ZWFZ/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2pmXv9rZl7/amVd/2tm - Xv9sZ1//bGdf/2tmXv9rZl7/amVd/2plXf9pZF3/amVd/2plXf9rZl7/aGNc/2hjW/9oZFz/amVd/2pl - Xv9qZV3/amVd/2plXf9oY1z/Z2Nb/2hjW/9mYVr/ZmFZ/2diW/9nYlv/aGNb/2plXf9rZl7/a2Zf/2tm - Xv9qZV3/aWRc/2lkXP9oZFz/aGNb/1hUTf9VUEpUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh4N9bH14 - cf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/aWRc/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xf9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2hjW/9oZFz/a2Ze/2xnX/9sZ1//bGdf/2tm - Xv9pZF3/ZWBZ/2NeV/9jXlf/Z2Ja/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/aWRc/2tmX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2plXv9qZl7/amZe/2pmXv9qZV7/amZe/2pmXv9qZV3/aGNb/2ZiWv9pZFz/a2Ze/2xn - X/9sZ1//bGdf/2tmXv9qZV3/aGNc/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2pl - Xf9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/amVd/2plXf9pZF3/aWRc/2hjW/9nY1v/aWVd/2ll - Xf9pZV3/aWVd/2llXf9pZFz/ZmFa/2ZhWv9nY1v/aGNb/2hkXP9qZV3/amVd/2plXf9rZl7/bGdf/2xn - X/9sZ1//a2Ze/2plXv9pZV3/aWRc/2plXf9dWVL/VlJLbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI6K - hIZ6dW//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aGNb/2hkXP9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9qZV3/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9rZl7/amZe/2hkXP9kX1j/Y15X/2VgWf9qZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//a2Ze/2llXf9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2xnX/9pZFz/aGNc/2pl - Xf9rZl7/bGdf/2tmXv9rZl7/amVd/2plXf9qZV3/amVd/2plXf9rZl7/a2Ze/2llXf9pZFz/aWRc/2pm - Xv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9rZl7/bGdf/2xnX/9rZl7/a2df/2xnX/9sZ1//a2Ze/2tm - Xv9rZl7/bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/amVd/2hjW/9mYVr/ZmJa/2lk - Xf9qZV3/aWVd/2plXf9qZV3/aWRc/2VgWf9lYVn/aGNb/2lkXP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9qZV3/amVd/2llXf9qZV7/YFxV/1JOSIcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACUkYuheHNs/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Zf/2plXf9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/amVe/2tmXv9rZl7/aGNc/2ZhWv9nY1v/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2hj - XP9oY1v/aWRc/2xnX/9sZ1//bGdf/2tmXv9qZV3/amVe/2lkXP9oY1v/aWRd/2tmXv9rZl7/ZmFa/2Vg - Wf9oY1z/amVd/2tmXv9rZl7/a2Ze/2plXv9oY1z/aGNb/2lkXP9pZV3/a2Ze/2tmXv9rZl7/amVd/2lk - Xf9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2xnX/9qZV7/aWRc/2plXf9sZ1//bGdf/2pmXv9rZl7/amVe/2llXf9nYlr/Y19Y/2Vh - Wf9pZFz/aWVd/2lkXf9pZF3/aWVd/2djW/9kYFj/ZmFa/2djW/9pZF3/amVd/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2xnX/9rZl7/aWRc/2llXf9pZV3/amVe/2NeVv9MSUOhAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAk5CJvHVxaf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2tmXv9rZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9nYlv/ZmFZ/2hjW/9rZ1//bGdf/2xnX/9pZF3/amVd/2tmXv9pZF3/aGNb/2lkXP9rZl7/a2Ze/2Rg - WP9kYFj/aGNb/2plXf9rZl7/a2Ze/2tmXv9qZV7/Z2Ja/2diW/9oY1v/Z2Nb/2plXf9rZl7/bGdf/2tm - Xv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9rZl7/bGdf/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//aWRc/2hjW/9pZFz/a2Ze/2tmXv9pZV3/aWVd/2llXf9oZFz/ZGBY/2Ne - V/9kX1j/aGNb/2lkXf9pZF3/aWVd/2lkXP9nY1v/ZWBZ/2VgWf9mYVr/Z2Jb/2plXf9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2tmXv9rZl7/amVe/2plXf9qZV7/aWVd/2llXf9kX1f/TUpEvQAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJCNhtZybWb/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//amVe/2tmXv9rZl7/bGdf/2xnX/9rZl7/amVd/2tmXv9rZl7/a2Ze/2plXf9rZl7/bGdf/2tm - Xv9oY1z/Z2Nb/2hjXP9qZV3/amVe/2plXf9rZl7/a2Ze/2lkXP9oZFz/aWRc/2hjXP9qZV3/a2Ze/2xn - X/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Zf/2lkXf9oY1z/aWRc/2tmXv9qZV3/Z2Jb/2ZiWv9nYlv/Z2Nb/2Ne - V/9jXlf/ZF9Y/2djW/9qZV3/amVd/2tmXv9qZV3/amVd/2plXf9oZFz/Z2Jb/2diW/9qZV3/bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/a2Zf/2tmXv9rZl7/amZe/2lkXf9oZFz/ZGBY/09MRdcAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACQjIbxcGxk/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2plXf9qZV3/aWRc/2lkXP9pZFz/amZe/2tmXv9qZV3/amVd/2plXf9qZV3/amZe/2xn - X/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9sZ1//a2Ze/2tmX/9rZl7/bGdf/2tmXv9sZ1//a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVe/2tmXv9sZ1//aWRd/2VhWf9jXlf/ZGBY/2Vh - Wf9jXlf/Y15X/2RfWP9qZV3/a2df/2xnX/9sZ1//a2Ze/2xnX/9sZ1//a2Ze/2lkXP9mYlr/aWRc/2tm - Xv9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2tmXv9qZV3/amVd/2diW/9ST0jyAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAl5SP9nJuZv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9qZV3/a2Ze/2tm - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2tmXv9rZl7/bGdf/2xn - X/9sZ1//bGdf/2tmXv9qZV3/aWRc/2lkXP9oY1v/aGNb/2plXf9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xn - X/9rZ1//bGdf/2tmXv9rZl7/a2Ze/2xnX/9sZ1//amVe/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/amVe/2xnX/9sZ1//bGdf/2lkXP9kX1j/Y15X/2Ne - V/9kX1j/Y15X/2NeV/9lYFn/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/aWRc/2lk - XP9qZV7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/amVd/2plXv9pZFz/VFFK9gAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKShnM96dm//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9qZV3/aWRd/2llXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2tnX/9rZl7/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9qZV3/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9pZFz/Z2Ja/2diW/9pZF3/amZe/2tmXv9rZl7/bGdf/2xn - X/9sZ1//a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/amVd/2plXf9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2tmXv9sZ1//bGdf/2xnX/9rZl7/a2Ze/2plXf9sZ1//bGdf/2xnX/9qZl7/ZWBZ/2Ne - V/9jXlf/ZF9Y/2NeV/9jXlf/ZmFZ/2plXf9sZ1//a2Ze/2tmXv9qZV3/bGdf/2xnX/9sZ1//amVd/2lk - XP9oY1v/aWRd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWVd/2pmXv9rZl7/aGNb/1VR - S88AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkoZx7j4yF/29qYv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/amVd/2ZhWv9mYlr/aGNc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Zf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZ1//a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/amVd/2djW/9oY1z/aWVd/2plXf9qZl7/a2Ze/2xn - X/9sZ1//a2Ze/2tmXv9sZ1//a2Ze/2tmXv9rZ1//a2Ze/2pmXv9rZl7/a2Ze/2tmXv9sZ1//bGdf/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xnX/9rZl7/aWVd/2llXf9qZV3/a2Ze/2xnX/9sZ1//amVd/2Vg - Wf9jXlf/Y19X/2NfV/9jXlf/Y15X/2ZiWv9pZV3/amVd/2lkXP9oZFz/aWRc/2tmXv9sZ1//a2Ze/2tm - Xv9pZFz/Z2Jb/2hjW/9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2pmXv9qZl7/a2Ze/2Rg - WP9cV1F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkY2HDKuppeWCfXf/bmlh/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9nYlv/Z2Jb/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tn - X/9rZl7/amVd/2pmXv9rZl7/bGdf/2xnX/9rZl7/amVe/2lkXf9nY1v/aGNb/2lkXP9pZFz/amVd/2tm - Xv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2df/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xnX/9rZl7/amZe/2llXf9qZV7/a2Ze/2tmXv9rZl7/a2Ze/2ll - Xf9mYVr/Y15X/2NeV/9jXlf/Y15X/2RfWP9pZF3/amVd/2lkXf9nYlv/ZmJa/2lkXP9rZl7/a2Ze/2tm - Xv9sZ1//a2Ze/2lkXf9nYlv/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmX/9rZl7/a2Ze/2ll - Xf9iXVblZWFZDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpp6I5q6ij74aDfP9ybmb/bWhg/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWRd/2hkXP9pZFz/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Zf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9sZ1//a2Ze/2plXf9qZV7/a2Ze/2tmX/9rZl7/amZe/2plXv9oY1z/ZmFa/2djW/9pZFz/amVd/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Ze/2tmXv9qZV7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/bGdf/2tnX/9rZl7/a2Ze/2plXf9pZFz/amVd/2tmXv9rZl7/amVd/2lk - Xf9oY1v/ZWFZ/2RfWP9kX1j/Y15X/2NeV/9nYlv/a2Ze/2tmX/9rZl7/amVd/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/aGNc/2hkXP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bWhg/29q - Yv9qZV3vZWFaOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJKPiSaxr6q+nZuV/4yI - gv+Cfnj/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/fnpz/315cv97d3H/fHhy/356c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9+eXL/fHdx/3t3cP98eHL/fnly/355 - cv9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/356c/9+enP/fHdy/3x4 - cv9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/f3pz/396c/9/enP/fnpz/355 - cv99eXL/fnly/355cv99eHL/fXhy/355cv99eXL/fXly/314cv99eHL/e3dw/3l1bv96dm//e3dx/315 - cv9+eXL/fnpz/355cv9+eXL/fnpz/396c/9/enP/f3pz/396c/9+eXL/fnly/355cv9+eXL/fXhy/314 - cv9+eXL/fnly/355cv9+eXL/fnly/356c/9+enP/fXly/315cv97d3D/e3dw/315cv9+eXL/fnly/315 - cv98d3H/e3dw/3l1bv94dW7/eXVu/3dzbf93c23/e3dw/356c/9/enP/fnpz/356c/9/enP/f3pz/396 - c/9/enP/f3pz/396c/9/enP/f3pz/3x4cf98eHH/fXhy/396c/9/enP/f3pz/396c/9+enP/gX11/4OA - ef9+e3TAb2tjJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmW - kSaTj4lii4iCfoqFf790bmb/b2lh/3BqYf9wamH/cGph/29pYf9vaWH/b2lh/29pYf9wamH/cGph/3Bq - Yf9wamH/cGph/29pYf9wamH/cGph/3BqYf9wamH/cGph/29qYf9uaGH/bGZf/2xnX/9sZ1//bGZf/2xm - X/9tZ2D/bmlg/29pYf9vaWH/b2lh/29pYf9taGD/bWdg/29pYf9vaWH/b2lh/29pYf9vaWH/cGph/29p - Yf9wamH/b2lh/29pYf9vaWH/b2lh/29pYf9vaWH/b2lh/29pYf9vaWH/cGph/29pYf9vaWH/b2lh/29p - Yf9vaWH/b2lh/29pYf9tZ2D/bGdf/2xnX/9tZ2D/bmlg/25pYP9vaWH/b2lh/29pYf9vaWH/bmlg/29p - Yf9vaWH/b2lh/29pYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3Bq - Yf9wamH/b2lh/21nX/9sZ1//bmhg/29pYf9wamH/cGph/3BqYf9wamH/b2lh/25oYP9taGD/bmhh/29p - Yf9vamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3Bq - Yf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3Bq - Yf9wamH/cGph/29pYf9uaGD/bWhg/21nX/9taGD/bmlg/3BqYf9wamH/cGph/3BqYf9vamH/b2lh/21o - YP9uaGH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9wamH/cGph/3Bq - Yf9vamH/b2lh/29qYf9vaWH/b2lh/29pYf9vamH/b2ph/29pYf9uaWH/b2lh/25pYf9taGD/bWhg/25p - Yf9vamH/b2ph/29qYf9vamH/b2lh/25pYf9vaWH/cGph/3BqYf9wamH/b2ph/29qYf9vamH/b2ph/29p - Yf9vaWH/b2ph/3BqYf9wamH/cGph/29qYf9vamH/b2ph/29qYf9vaWH/bmhh/25pYf9vaWH/b2ph/29q - Yf9vaWH/bmlh/25oYP9tZ1//bWdf/25oYP9tZ1//a2Zf/21nYP9uaGD/b2lh/29qYf9wamH/cGph/3Bq - Yf9wamH/cGph/3BqYf9wamH/cGph/3BqYf9vaWH/b2lh/29qYf9wamH/cGph/21nX/+EgHl/hIB5foN/ - eGJ+enQmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAABybWV/SUM4/0E6L/9BOi//QTov/0A5Lv8/OS3/QDkt/0A5Lf9AOS3/QTov/0E6 - L/9BOi//QTov/0E6L/9BOi7/QDou/0E6L/9BOi//QTov/0E6L/9BOi//QDkt/z43LP89Niv/PDUr/zw1 - K/88NSv/Pjcs/z84Lf8/OCz/QDkt/0A5Lf9AOS3/Pzgt/z43LP8+OCz/QDkt/0A5Lf9AOS7/QDku/0A5 - Lv9AOS3/QTou/0E6L/9AOS3/Pzgt/0A5Lf9AOS3/QDkt/0A5Lf9AOS3/QDkt/0A5Lf9AOS3/QDkt/0A5 - Lf9AOS3/QDkt/0A5Lf8+Nyz/OzQq/zkyKP86Myn/OzUq/z43LP8+Nyz/Pzgt/0A5Lf9AOS3/Pzkt/z84 - Lf9AOS3/QDkt/0A5Lf9BOi7/QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6Lv8+Nyz/PDYr/z84Lf9BOi7/QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0A5 - Lv9AOS3/QDkt/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6Lv8/OCz/PTYs/z02K/89Niz/Pjgs/z84Lf9AOS7/QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTou/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/8+OCz/Pzgt/0A5Lv9BOi//QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTou/z84Lf8+Niz/PTYs/0E6Lv9BOi//QTov/0E6 - L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/9BOi//QTov/0E6L/87NSr/AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAc29of09JQP9HQDb/R0A2/0ZANv9FPzX/RT81/0U+Nf9GQDX/RkA1/0hB - Nv9IQTb/SEE3/0hBN/9IQTf/R0E2/0dANv9IQTb/SEE3/0hBN/9IQTf/SEE3/0hBNv9GPzX/RD40/0M9 - M/9EPjT/RT81/0U/Nf9GPzX/Rj81/0Y/Nf9HQDX/R0A2/0dANv9GPzX/RT41/0dANf9HQTb/R0A2/0dA - Nv9HQDX/RkA1/0Y/Nf9HQDX/R0A2/0dANv9IQTb/R0A2/0dANv9HQDb/Rj81/0Y/Nf9GQDb/R0A2/0dA - Nv9HQDb/R0A2/0dANf9GPzX/Qz0z/0A7Mf8/OTD/QDox/0I8Mv9FPjT/RT81/0Y/Nv9GPzb/RkA2/0Y/ - Nv9GPzb/R0A1/0dANv9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/R0A2/0Y/Nf9HQDb/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9HQTb/Rj81/0dANv9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9IQTb/SEE3/0hBN/9HQDb/RT40/0Q+NP9GQDX/R0A2/0dANv9IQTb/SEE2/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTb/R0A2/0hBNv9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/RT80/0Q+M/9FPzX/SEE2/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9HQDb/RD40/0Q+NP9IQTb/SEE3/0hB - N/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/SEE3/0hBN/9IQTf/QTsy/wAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRvaX9VUEf/TUc+/01HPv9NRz7/TUc+/01HPv9MRT3/SkQ7/0tF - PP9MRj3/TUc+/09JP/9PST//T0k//01HPv9LRTz/TEY8/05IPv9PST//T0k//09JP/9OSD//TUg+/0xG - Pf9LRDv/S0U8/0xGPf9MRj3/S0U8/0tEPP9LRjz/TEY9/01HPv9OSD7/TUc+/01HPv9NSD7/Tkg+/09J - P/9OSD//TEY9/0tEO/9KRDv/TEc9/01HPv9OSD7/Tkg+/05IPv9OSD7/TUc9/0tFO/9LRTv/TEY8/05I - Pv9OSD7/Tkg+/01IPv9NRz7/TUc9/0pEO/9IQzn/SUM6/0pEO/9KRDv/S0U8/01HPf9NRz3/TUc9/01H - Pf9NSD7/TUc9/0xGPP9OSD7/T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09J - P/9PST//T0k//09JP/9PST//T0k//01HPf9LRTz/Tkg+/09JP/9PST//T0k//09JP/9OST//T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09J - P/9PST//Tkg+/01IPv9OSD7/T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//05I - Pv9NRz3/S0U8/0tGPP9NRz3/Tkg+/01HPv9OSD7/T0k//09JP/9PST//T0k//09JP/9PST//T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//05IPv9OSD7/T0k//09JP/9PST//T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//01HPf9LRTv/SUM6/0tFPP9NSD7/T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//TUc+/0tFPP9NRz3/T0k//09J - P/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//09JP/9PST//T0k//0dC - Of8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwa2R/W1VM/1JNQ/9STUP/Uk1E/1NNRP9UTkT/U05E/1BL - Qf9RS0H/UEtB/1JNQ/9VT0X/VU9F/1VPRf9TTUT/UEtC/1NNRP9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9TTUP/UUtC/1FMQv9RTEP/UUxC/1BLQf9PS0D/UUtC/1JNQ/9TTkT/U01D/1JNQ/9STEP/Uk1D/1RO - RP9UTkT/U01E/1JNQ/9RTEL/UEtB/1JMQ/9STUP/U01E/1NNQ/9STUP/U05E/1NNQ/9STUP/UkxD/1NN - Q/9VT0X/VU9F/1VPRf9TTkT/VE5E/1NNRP9STEP/Uk1D/1NNQ/9STEP/UkxD/1FLQv9STEL/Uk1D/1FM - Qv9RTEL/UkxC/1JMQv9STUP/U01E/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1RORP9STUP/Uk1D/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1NO - RP9RTEH/T0pA/01IPv9OSUD/U01D/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1RORP9STkT/UUxC/01IPv9OST//UUxC/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VE5E/1FMQv9RTEL/VU9F/1VP - Rf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VPRf9VT0X/VU9F/1VP - Rf9MSD7/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcWxlf15ZUP9XUUj/V1FJ/1lTSv9aVEv/W1VM/1pV - TP9YUkr/V1FJ/1ZQSP9YUkn/WlRL/1tVTP9aVUv/WlVL/1lTSv9aVUv/W1VM/1tVTP9bVUz/W1VM/1tV - TP9ZVEv/WVNK/1hSSv9XUkn/WVNK/1dRSf9WUEj/VlFI/1hSSf9YUkr/WVNK/1hSSf9WUEj/U05G/1NP - Rv9YUkn/WVNK/1pUS/9ZU0r/WVNK/1hSSv9ZU0r/WVNK/1lTSv9YUkn/WFJJ/1hTSv9ZVEv/WVRL/1lU - S/9ZU0r/WlRL/1pUS/9YUkn/WlVL/1tVTP9bVUz/WlVM/1tVTP9bVUz/WVRL/1lTSv9ZU0r/WVNK/1dS - Sf9WUEj/VVBH/1VQR/9WUUj/WVNK/1pVS/9bVUz/W1VM/1tVTP9bVUz/W1VM/1pVS/9ZU0r/WlVL/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/WlVL/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9aVUv/WVNK/1hSSf9YUkr/WVNK/1pVS/9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1pVS/9YUkr/WFJK/1hSSf9TTkb/Uk5F/1ZQ - SP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1lUS/9XUUn/WFNK/1tV - TP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tVTP9bVUz/W1VM/1tV - TP9bVUz/Uk1F/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNvaH9gWlP/W1ZN/1tVTP9bVk3/XlhP/2Ba - Uf9gWlH/X1pQ/11YTv9bVUz/XVdO/15YT/9eWU//X1lQ/15ZT/9dWE7/X1lQ/2BaUf9gWlH/YFpR/2Ba - Uf9fWlD/XlhP/11YTv9dWE7/XVhP/11YTv9dWE7/XlhP/15YT/9eWE//XVhP/15YT/9dWE//WlVM/1dS - Sv9VUEn/WlRM/11YTv9fWVD/XlhP/1xWTv9cV07/XVdO/15YT/9eWE//XFZN/1pVTP9cVk3/XVhO/19Z - UP9eWVD/XVhP/15ZT/9eWE//XFZN/19ZUP9gWlH/X1pR/19aUP9gWlH/X1pQ/15ZUP9eWE//XVhP/15Y - T/9cV07/W1ZN/1tWTf9cVk3/XVhO/19ZUP9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/XVhO/15Z - UP9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/19aUP9fWlD/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9fWVD/XVhP/11YT/9fWVD/XVhP/15Y - T/9eWVD/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9dWE//XVdO/19Z - UP9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2BaUf9gWlH/YFpR/2Ba - Uf9gWlH/YFpR/1dRSf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2cmt/ZF9X/2BbUv9fWlH/XllQ/2Fc - VP9jXlX/Y15V/2NeVf9iXVT/XllR/2BaUv9hXFP/YFtS/2FbU/9hXFP/X1pR/2JcVP9jXlX/Y15V/2Ne - Vf9jXlX/Y11V/2FcU/9fWlL/X1pS/2FcU/9hXFP/YVxT/2FcU/9hXFP/YlxU/2JcVP9iXVT/Yl1U/2Ba - Uv9cV0//WlRN/11YUP9hW1L/YlxU/2FcU/9fWlH/XllQ/11YUP9gW1L/YVtT/19aUv9cV0//XFdO/19Z - Uf9hXFP/YlxT/2FcU/9fWlH/XllR/19ZUf9iXFT/Y15V/2NdVf9jXVX/Y15V/2NeVf9jXVX/YVtT/2Bb - U/9hXFP/YVxT/2FcU/9hW1P/YVtT/2BbU/9iXVT/Y15V/2NdVf9hXFP/Y11V/2NeVf9jXlX/Y15V/2Jd - VP9iXVT/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXVX/Yl1U/2Nd - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2JdVP9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXVX/YFpS/2Bb - Uv9jXVX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2NeVf9jXlX/Y15V/2Ne - Vf9jXlX/Y15V/2NeVf9aVU3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAendwf2tmXv9lYFj/ZWFY/2Zh - WP9nYln/Z2JZ/2diWf9nYln/ZmFZ/2NfVv9kX1b/ZF9W/2JdVP9hXVT/YFxT/2JdVP9kX1f/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9mYVj/ZF9X/2VgV/9nYln/Z2JZ/2VgV/9lYFf/ZWBX/2ZhWP9mYVj/ZmFZ/2Zh - WP9lYFj/ZF9X/2VgV/9mYVj/ZmFZ/2ZhWP9kX1j/ZF9W/2NeVf9hXVT/YV1U/2FdU/9hXVT/XVlQ/11Z - UP9hXFP/ZWBY/2ZhWf9lYFf/Y15V/2JdVP9iXVX/ZWBY/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2Vg - WP9kX1f/ZF9X/2RfV/9lYFj/ZmFZ/2VgWP9kX1f/ZWBY/2VgWP9kX1b/ZF9X/2ZhWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Yl5V/2Fd - VP9kX1f/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/ZmFZ/2VgWP9mYVn/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9mYVn/ZWBX/2Jd - Vf9kX1b/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2diWf9nYln/Z2JZ/2di - Wf9nYln/Z2JZ/2diWf9nYln/XVhQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH96dH9xbGT/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/aGNb/2djW/9kX1f/YFxU/19bU/9jXlb/Z2Jb/2lk - XP9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9oY1v/Z2Nb/2hjW/9pZFz/amVd/2pl - Xf9oY1v/Z2Nb/2hjW/9qZV3/amVd/2plXf9qZV3/amVd/2hjXP9oY1v/ZmFZ/2NeV/9iXVX/Y15X/2Jd - Vv9jX1f/ZmJa/2lkXP9qZV3/aGNb/2ZhWv9kX1j/ZmFa/2hjW/9qZV3/amVd/2plXf9pZFz/aWRc/2pl - Xf9pZFz/aGNb/2ZhWv9mYlr/aGNb/2lkXP9oY1v/aGNb/2hjW/9oY1v/Z2Ja/2diW/9pZF3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2Rf - WP9hXVX/ZWBY/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2hjW/9nYlr/aGNb/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9pZFz/aGNc/2di - Wv9lYVn/Z2Jb/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2plXf9qZV3/amVd/2pl - Xf9qZV3/amVd/2plXf9qZV3/amVd/2BbVP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBfHZ/cm1m/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/Z2Jb/2JeV/9fW1P/Y15X/2lk - Xf9qZV7/a2Ze/2plXf9qZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2plXf9rZl7/a2Ze/2tm - Xv9rZl7/aWRc/2hkXP9pZFz/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9pZV3/aWVd/2lkXP9jX1f/YV1V/2Nf - V/9kYFj/aGNb/2lkXP9rZl7/amVd/2diWv9kX1j/Yl5X/2djW/9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/amVd/2plXf9oY1v/Z2Ja/2hjW/9pZF3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9pZFz/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9oZFz/a2Ze/2tm - Xv9mYlr/ZF9Y/2hjW/9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9pZF3/aGNb/2lk - XP9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9qZV3/Z2Nb/2hj - W/9pZV3/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2pl - Xf9pZFz/aWRc/2pmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tm - Xv9rZl7/a2Ze/2tmXv9rZl7/a2Ze/2tmXv9hXVX/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgn13f3Nu - Zv9sZ1//bGdf/2tmX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9oZFz/ZGBY/2Vg - Wf9qZV3/a2Ze/2xnX/9qZV3/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2plXv9rZl7/a2Ze/2xnX/9sZ1//a2Ze/2plXf9qZV3/amVd/2plXf9qZV7/ZmFa/2Jd - Vv9kYFj/aGNb/2plXf9qZV7/a2Ze/2plXf9nYlr/Y15X/2RgWP9oY1z/a2Ze/2xnX/9sZ1//a2Ze/2xn - X/9sZ1//a2Ze/2plXf9qZV3/aWRc/2hjXP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9sZ1//aWRc/2ZhWf9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl//aWVd/2pl - Xf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//aWRc/2Vg - WP9lYFn/aWRc/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//Yl1W/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIJ+ - eH9zbmb/bGdf/2xnX/9qZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xf9qZV3/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9sZ1//bGdf/2plXf9oY1v/Z2Ja/2hkXP9pZFz/amVd/2hj - W/9kX1j/ZWBZ/2hjW/9pZV3/amVd/2tmXv9rZl7/aGRc/2VgWP9lYFn/aGNb/2tmXv9sZ1//a2Ze/2tm - Xv9sZ1//bGdf/2tmXv9qZV3/amVd/2lkXP9nY1v/aWRd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2lkXP9qZV3/a2Ze/2xnX/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2tmXv9pZFz/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lk - XP9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/a2Zf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2ll - Xf9mYVn/ZWFZ/2diW/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xv9pZFz/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2JdVv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AACBfXd/cm1l/2xnX/9sZ1//a2Ze/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/amVd/2tmXv9sZ1//bGdf/2xnX/9rZl7/ZmJa/2ZhWv9nYlv/aWRd/2pl - Xf9qZV3/Z2Jb/2VhWf9mYVn/aGNc/2plXf9rZl7/bGdf/2tmXv9qZV3/amVd/2tmXv9sZ1//a2Ze/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//amVd/2plXf9oY1z/ZmFZ/2djW/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9pZF3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xf9lYVn/aGNc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2pl - Xf9qZV3/aWRd/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9pZF3/Z2Nb/2hjW/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9iXVb/AAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAgHx2f3BrZP9qZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//amVd/2lkXf9pZFz/a2Ze/2xnX/9sZ1//bGdf/2lkXf9nYlr/Z2Jb/2pl - Xf9qZV7/amVd/2lkXP9mYVr/ZmFZ/2diW/9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/bGdf/2xnX/9sZ1//bGdf/2plXf9qZV7/aWRc/2ZhWv9oY1v/amVd/2tmXv9sZ1//bGdf/2xn - X/9rZl7/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9pZF3/ZF9Y/2VgWf9qZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/aWRc/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2pl - Xf9pZFz/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//aWRd/2RgWP9jX1j/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//Yl1W/wAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAH98dX9rZ1//Z2Ja/2lkXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV7/amVd/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/bGdf/2xnX/9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pmXv9oZFz/ZmJa/2plXf9sZ1//bGdf/2xnX/9rZl7/aWRc/2hj - XP9qZV3/amVe/2plXf9pZFz/Z2Jb/2ZhWv9oY1v/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV3/amVd/2lkXf9oZFz/aWRc/2lkXP9qZV3/amVd/2pl - Xf9qZV3/aWRd/2diW/9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//amVe/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//amVd/2RfWP9lYFj/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lkXP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9pZFz/aGNc/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2plXf9lYVn/Y19X/2hjXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2JdVv8AAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAACAfHZ/bWlh/2hjXP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV3/ZmFa/2Fc - Vf9lYVn/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9oY1v/aWRc/2plXf9rZl7/a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV7/aGRc/2hjW/9rZl7/bGdf/2xnX/9sZ1//bGdf/2tm - Xv9qZV3/amVd/2plXv9qZV3/amVd/2plXf9pZFz/aWRd/2plXf9qZV3/amVd/2plXf9qZV3/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2plXv9qZV3/amVd/2plXf9qZV3/aWRc/2lk - XP9qZV3/amVd/2hjXP9kYFj/Z2Jb/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//amVd/2diW/9oY1v/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9mYVr/aGNb/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9pZFz/Z2Ja/2diWv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/aGNb/2ZhWv9oY1v/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9iXlb2AAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAgn13f3FsZf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amZe/2Rg - WP9eWVH/YFtU/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9oY1z/ZmFa/2hjW/9qZV3/amZe/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lkXP9pZF3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2plXf9qZV3/a2Ze/2xnX/9sZ1//a2Ze/2tmXv9qZV3/amVd/2plXf9pZFz/amVd/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/amVd/2plXf9qZV3/amVe/2plXf9qZV3/aWRc/2lk - XP9pZFz/a2Ze/2plXf9mYVr/Yl1W/2VhWf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2hjW/9mYlr/Z2Nb/2tnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZ1//aGRc/2llXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//amVd/2diWv9nY1v/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/Y15XzwAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIJ+eH9ybWX/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9qZV3/ZmFa/2VhWf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2pmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/aWVd/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2tmXv9rZl7/amVd/2pl - Xf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2plXf9qZV3/amVd/2plXf9qZV3/aGNc/2di - W/9oY1v/aWRc/2tmXv9rZl7/aGNb/2VgWf9mYVn/aGNc/2tnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9oY1z/aGNb/2hjXP9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/aWRd/2plXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9pZFz/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2Zh - WXsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCfnh/cm1m/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2tmXv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2plXf9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2pl - Xf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/aWRd/2lkXf9pZF3/amVd/2lk - XP9oY1v/aGNb/2lkXP9qZV3/amVd/2lkXP9oY1z/aGNb/2plXv9rZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//aWVd/2lkXP9qZV3/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV3/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2hk - XOVrZl8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg354f3NuZv9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV3/aGNb/2hjXP9pZFz/aWRc/2lk - XP9qZV3/aWRc/2lkXP9oZFz/aWRc/2lkXP9nYlr/aGNb/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9qZV3/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2llXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//cGtj/3Br - Y+9sZ185AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIN/eX9ybWX/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWRc/2pl - Xf9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVe/2ZhWv9nYlv/aWRc/2hk - XP9pZFz/a2Ze/2plXf9pZFz/aWRc/2lkXP9pZFz/aWRd/2lkXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWRc/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9vamL/d3Jr/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3h0bP95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3h0bP94c2z/eXRt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3p1bv+CfXf/jIiC/4yJ - gsB1cWkmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDf3l/cWxl/2tmXv9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2lk - Xf9qZl7/a2Ze/2tmXv9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9nYlv/ZmJa/2lk - XP9qZV3/a2Ze/2tmXv9rZl7/amVd/2plXf9qZV3/amVd/2plXf9qZV3/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9sZ1//amVe/2hjW/9pZF3/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/21oYP91cGn/iYV+25GNh3+YlI9/mZWQf5mVkH+ZlpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+ZlpF/mZaRf5mWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+ZlpF/mpaRf5qWkX+alpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+ZlpF/mZaQf5mWkH+ZlpB/mZaQf5mVkH+ZlpB/mZaQf5mW - kX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5qWkX+alpF/mpaRf5mWkX+YlI9+lpKMYo+L - hCYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhIB6f3FsZf9qZV3/aWRd/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9rZl7/bGdf/2xnX/9rZl7/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2lk - XP9qZV3/bGdf/2xnX/9sZ1//bGdf/2plXf9qZV3/amVd/2plXf9pZFz/aWRc/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9oY1z/aWRc/2tmXv9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2lkXP9qZV3/bGdf/3Vwaf+Df3j0h4N8f3t2bwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIeDfH9zb2f/a2Ze/2tm - Xv9pZFz/aWRc/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9rZl7/a2Zf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/amVd/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9rZl7/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tm - Xv9qZV3/amVd/2xnX/9sZ1//bGdf/2xnX/9rZl7/amVd/2plXf9oY1v/aWRc/2plXf9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//aWRc/2hjXP9pZV3/bGdf/2xn - X/9sZ1//a2Ze/2plXf9uaWH/enVu/4yIgvCOi4WQfXlyGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOi4V3fHdw/2xn - X/9sZ1//a2Ze/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/a2Ze/2tmXv9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/amVd/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9qZV3/aWRc/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV7/aWRd/2tmXv9rZl7/bGdf/2tm - Xv9qZV3/amVd/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXf9pZF3/Z2Ja/2lkXP9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/aGNc/2lk - XP9rZl7/bWhg/3NvZ/+BfXb/ko+K0pKOiGZ/e3UMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmpeSUI6K - hP9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9pZV3/aWRc/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV7/amVd/2tmXv9sZ1//a2Ze/2tmXv9rZ1//bGdf/2xn - X/9sZ1//amVd/2lkXP9pZF3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/aGNb/2VgWf9mYVn/aGNb/2pl - Xf9qZV3/aWRc/2lkXf9rZl7/bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/aWRc/2lkXP9qZV7/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9sZ1//bGdf/2xnX/9sZ1//bGdf/21o - YP9ybmb/gX12/5SQi/OcmZSni4eBPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJSQ - iwyuq6fudG9o/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9nY1v/ZF9Y/2VgWf9oZFz/amVe/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Ze/2plXf9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2plXf9pZFz/aGNb/2lkXP9qZV3/bGdf/2xnX/9sZ1//bGdf/2hjW/9iXVb/YVxV/2Rf - WP9qZV3/aWRc/2lkXP9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9qZV3/aWRd/2lkXP9qZV3/bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9qZV3/bGdf/29qYv90b2j/fXly/46K - hf+bmJPmo6Gcn4+Lhk6EgHkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAuLaycpqXkv9vamL/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9nYlv/YFxU/15aUv9jX1f/aWRc/2tmXv9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2tmXv9pZFz/bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2tmXv9qZV3/aWRd/2lkXP9pZF3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9rZl7/ZF9Y/2Fd - Vv9kX1j/aWRc/2plXf9qZV3/bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//amVd/2ZiWv9nYlv/amVd/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9taGD/cGtk/3Vwaf96dW7/hoJ8/5SRi/+fnJfhqKahrJKO - iWmTkIkoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAJuYkwLPzcumnpuW/3RwaP9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9rZl7/bGdf/2xnX/9rZl7/YV1W/11ZUf9dWVH/Yl1W/2hjXP9sZ1//bGdf/2xn - X/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2xnX/9rZl7/aWRc/2tmXv9sZ1//bGdf/2xn - X/9sZ1//a2Ze/2lkXP9nYlv/amVd/2tmXv9rZl7/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//a2Zf/2di - Wv9lYFn/ZmFa/2plXf9qZV3/a2Ze/2xnX/9sZ1//bGdf/2xnX/9sZ1//bGdf/2plXv9mYVr/Z2Jb/2xo - YP9xbGT/c29n/3Zxav94c2z/f3t0/4yIgf+UkIv/m5iT+qSinNeuq6epop+bgZaTjU6Vko0YAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAjIiCAcLBvnO8urbvmpeS/4WBe/96dm7/eXVt/3l1bf95dW3/eXVt/3l1 - bf95dW3/eXVt/3l1bf93c2z/dXFq/3Zxa/94dGz/eHNs/29rZf9saWL/bWlj/3NvaP94dGz/eXVt/3l1 - bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/d3Jr/3Nvaf90cGr/dnJr/3l1 - bf95dW3/eXVt/3l0bf93c2v/dXFq/3h0bP95dW3/eXVt/3l1bf95dW3/eXVt/3l1bf95dW3/eXVt/3l1 - bf92cmv/dXBq/3Zya/95dG3/fHdw/4N/eP+Ggnv/jImC/5CNh/+PjYb/kI2H/5aTjv+XlI//mZaS/5uY - k/+hn5rvqaei2LCuqcKzsKyqpaKdipiWkGybl5JImpaRKYqGgAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnJmTCKyppU2koZxynZqVf5uXkn+alpF/mpaRf5qW - kX+alpF/mpaRf5mWkX+ZlpF/mJWQf5eUj3+XlI9/l5SPf5eTjn+Wko1/lpKNf5aTjn+Xk45/l5SPf5iU - j3+YlZB/mZWQf5mWkX+alpF/mpaRf5qWkX+alpF/mpaRf5mWkX+ZlZB/mZWQf5iVkH+XlI9/l5SPf5eU - j3+ZlZB/mZWQf5mVkH+ZlZB/mZWQf5mVkH+ZlZB/mZWQf5mVkH+ZlZB/mZWQf5mWkH+ZlpB/mZWQf5mV - kH+YlZB/mJSPf5eUj3+XlI9/mJSPf5eUj3KbmJRmm5iTZZ6alUygnZhMoJ2YTJ6blkCfnJcznZqVJJ2a - lRmLiIIGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - AAAAAAAA//////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///wAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/gA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf8AAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+AAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AH/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAB//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///wAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAD///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//8AAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - Af//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//4AAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - Af//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//wAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/4A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AH/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AB/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAf+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf+AAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/AAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAP+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/+AAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAf//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//8AAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - B///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAf//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAH///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///AAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///wAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAH///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//8AAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH///A - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - D///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAH///8AAAAAAAAAAAAAAAAA/////////////////////////wAAAAAAAAAAAAAAAAP////////// - ///////////////AAAAAAAAAAAAAAAAD/////////////////////////8AAAAAAAAAAAAAAAB////// - ////////////////////wAAAAAAAAAAAAAAAf//////////////////////////gAAAAAAAAAAAAAAf/ - /////////////////////////+AAAAAAAAAAAAAAf///////////////////////////8AAAAAAAAAAA - AA/////////////////////////////8AAAAAAAAAAAf//////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////8yNzAzOTg= - - - \ No newline at end of file diff --git a/PROMS/xxxSync/SyncMany/sync.ico b/PROMS/xxxSync/SyncMany/sync.ico deleted file mode 100644 index 25da3cb6..00000000 Binary files a/PROMS/xxxSync/SyncMany/sync.ico and /dev/null differ diff --git a/PROMS/xxxSync/Thumbs.db b/PROMS/xxxSync/Thumbs.db deleted file mode 100644 index ac1e1a7f..00000000 Binary files a/PROMS/xxxSync/Thumbs.db and /dev/null differ diff --git a/PROMS/xxxSync/frmSync.cs b/PROMS/xxxSync/frmSync.cs deleted file mode 100644 index dcb91903..00000000 --- a/PROMS/xxxSync/frmSync.cs +++ /dev/null @@ -1,535 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.IO; -using System.Xml; -using SevenZip; - -namespace Sync -{ - public partial class frmSync : Form - { - private List _CheckedOut; - private bool IsLoading = false; - public frmSync() - { - InitializeComponent(); - } - private void LoadSettings() - { - if (Properties.Settings.Default["Location"] != null) - Location = Properties.Settings.Default.Location; - if (Properties.Settings.Default["Size"] != null) - Size = Properties.Settings.Default.Size; - if (Properties.Settings.Default.DevelopmentFolder != "") - tbDevelopment.Text = Properties.Settings.Default.DevelopmentFolder; - if (Properties.Settings.Default.SourceSafeFolder != "") - tbSourceSafe.Text = Properties.Settings.Default.SourceSafeFolder; - if(Properties.Settings.Default.MailBoxDevelopmentFolder != "") - tbMailBox.Text = Properties.Settings.Default.MailBoxDevelopmentFolder; - if (Properties.Settings.Default.MailBoxSourceSafeFolder != "") - tbSSMailBox.Text = Properties.Settings.Default.MailBoxSourceSafeFolder; - } - private void frmSync_Load(object sender, EventArgs e) - { - LoadSettings(); - Setup(); - } - private void Setup() - { - // Setup Browse Buttons - btnBrwsDev.Tag = this.tbDevelopment; - btnBrwsSS.Tag = this.tbSourceSafe; - btnBrwsMail.Tag = this.tbMailBox; - btnBrwsSSMail.Tag = this.tbSSMailBox; - - } - private void btnBrowse_Click(object sender, EventArgs e) - { - TextBox tb = (TextBox)((Button)sender).Tag; - fbd.SelectedPath = tb.Text; - if (fbd.ShowDialog() == DialogResult.OK) - tb.Text = fbd.SelectedPath; - } - private void ClearResults() - { - _CheckedOut = new List(); - dgv.DataSource = null; - Application.DoEvents(); - } - private void FindCheckedOut(DirectoryInfo di) - { - FindCheckedOut(di.GetFiles()); - FindCheckedOut(di.GetDirectories()); - } - private void FindCheckedOut(DirectoryInfo[] directoryInfoList) - { - foreach (DirectoryInfo di in directoryInfoList) - FindCheckedOut(di); - } - private void FindCheckedOut(FileInfo[] fileInfoList) - { - foreach (FileInfo fi in fileInfoList) - FindCheckedOut(fi); - } - private void FindCheckedOut(FileInfo fi) - { - if (fi.Name.ToLower().EndsWith("scc")) return; - if (fi.Name.ToLower().EndsWith("sln")) return; - if (fi.Name.ToLower().EndsWith("csproj")) - { - // Find files that have been added to the new Project - List compileList = GetCompileList(fi.FullName); - FileInfo fi1csproj = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if (fi1csproj.Exists) - { - List compileList1 = GetCompileList(fi1csproj.FullName); - CompareLists(compileList, compileList1, fi, fi1csproj); - } - return; - } - if (fi.Name.ToLower().EndsWith("licx")) return; - FileInfo fi1 = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if ((fi1.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly) - AddToResults(fi, fi1); - } - - private void CompareLists(List compileList, List compileList1, FileInfo fi, FileInfo fi1) - { - // If anything is in compileList1 and not in CompileList add it to the results - foreach (string filename in compileList1) - if (!compileList.Contains(filename)) - AddToResults(fi, fi1, filename); - } - private void AddToResults(FileInfo fi, FileInfo fi1, string filename) - { - FileInfo newfi = new FileInfo(fi.DirectoryName + "/" + filename); - FileInfo newfi1 = new FileInfo(fi1.DirectoryName + "/" + filename); - if(!newfi.Exists)AddToResults(newfi, newfi1); // Only add if the file does not exist - } - private List GetCompileList(string fileName) - { - List retval = new List(); - XmlDocument doc = new XmlDocument(); - doc.Load(fileName); - XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); - foreach (XmlAttribute attrib in doc.DocumentElement.Attributes) - if (attrib.Name == "xmlns") - nsmgr.AddNamespace("ns", attrib.Value); - XmlNodeList xl = doc.DocumentElement.SelectNodes(@"//ns:Compile/@Include",nsmgr); - foreach (XmlAttribute xa in xl) - retval.Add(xa.Value); - xl = doc.DocumentElement.SelectNodes(@"//ns:None/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - if(xa.Value.ToUpper().EndsWith("SQL")) - retval.Add(xa.Value); - xl = doc.DocumentElement.SelectNodes(@"//ns:Content/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - if (xa.Value.ToUpper().EndsWith("DLL")) - retval.Add(xa.Value); - xl = doc.DocumentElement.SelectNodes(@"//ns:Content/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - if (xa.Value.ToUpper().EndsWith("XML")) - retval.Add(xa.Value); - xl = doc.DocumentElement.SelectNodes(@"//ns:EmbeddedResource/@Include", nsmgr); - foreach (XmlAttribute xa in xl) - if (!xa.Value.ToUpper().EndsWith("LICX")) - retval.Add(xa.Value); - return retval; - } - private void AddToResults(FileInfo fiSS,FileInfo fiDev) - { - FileCompare fc = new FileCompare(fiDev, fiSS); - //if(!_OnlyContentDifferent || (fc.Different && (fc.DevModified != null))) - if (!_OnlyContentDifferent || (fc.Different)) - _CheckedOut.Add(fc); - //if (tbResults.Text == "") tbResults.Text = "Found:"; - //tbResults.Text += "\r\n" + fiDev.FullName + " - " + ((fiDev.Attributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly ? "" : "ReadOnly"); - } - private void ClearMailBox() - { - DeleteFolder(new DirectoryInfo(tbMailBox.Text)); - DeleteFolder(new DirectoryInfo(tbSSMailBox.Text)); - } - private void DeleteFolder(DirectoryInfo directoryInfo) - { - if (directoryInfo.Exists) - { - AdjustAttributes(directoryInfo); - directoryInfo.Delete(true); - } - } - private void AdjustAttributes(DirectoryInfo directoryInfo) - { - foreach (DirectoryInfo di in directoryInfo.GetDirectories()) - AdjustAttributes(di); - foreach (FileInfo fi in directoryInfo.GetFiles()) - AdjustAttribute(fi); - } - private void AdjustAttribute(FileInfo fi) - { - fi.Attributes &= (fi.Attributes ^ FileAttributes.ReadOnly);// Turn-Off ReadOnly Attribute - fi.Attributes &= (fi.Attributes ^ FileAttributes.Hidden);// Turn-Off Hidden Attribute - } - private void frmSync_FormClosing(object sender, FormClosingEventArgs e) - { - Properties.Settings.Default.Location = Location; - Properties.Settings.Default.Size = Size; - Properties.Settings.Default.DevelopmentFolder = tbDevelopment.Text; - Properties.Settings.Default.SourceSafeFolder = tbSourceSafe.Text; - Properties.Settings.Default.MailBoxDevelopmentFolder = tbMailBox.Text; - Properties.Settings.Default.MailBoxSourceSafeFolder = tbSSMailBox.Text; - Properties.Settings.Default.Save(); - } - private void exitToolStripMenuItem_Click(object sender, EventArgs e) - { - this.Close(); - } - private void clearToolStripMenuItem_Click(object sender, EventArgs e) - { - ClearMailBox(); - } - private void buildToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearMailBox(); - if (_CheckedOut == null) - checkedOutToolStripMenuItem_Click(sender, e); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) - { - fc.MoveDevToMailBox(tbDevelopment.Text, tbMailBox.Text); - fc.MoveSSToMailBox(tbSourceSafe.Text, tbSSMailBox.Text); - } - } - BuildZipOfMailBox(tbMailBox.Text); - } - private void BuildZipOfMailBox(string mailbox) - { - SevenZipCompressor.SetLibraryPath(Application.StartupPath + @"\7z.dll"); - SevenZipCompressor cmpr = new SevenZipCompressor(); - cmpr.PreserveDirectoryRoot = true; - string zipName = string.Format("{0} To SS {1}.7z", mailbox, DateTime.Now.ToString("yyyyMMdd HHmm")); - cmpr.CompressDirectory(mailbox, zipName, "*.*", true); - MessageBox.Show(string.Format("{0} created!", zipName), "Mailbox Zip Created", MessageBoxButtons.OK, MessageBoxIcon.Information); - - //if (System.IO.File.Exists(@"c:\program files\7-zip\7z.exe")) - //{ - // string args = string.Format(@"a -t7z ""{0} To SS {1}.7z"" ""{0}\*.*"" -r", mailbox, DateTime.Now.ToString("yyyyMMdd HHmm")); - // System.Diagnostics.Process p = System.Diagnostics.Process.Start(@"c:\program files\7-zip\7z", args); - // p.WaitForExit(); - //} - //"c:\program files\7-zip\7z" a -t7z "C:\Development\MailBox\Proms To SS 20120424 1850.7z" "C:\Development\MailBox\Proms\*.*" -r - } - private void checkedOutToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindCheckedOut(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void syncAllToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - fc.MoveToDevelopment(); - } - } - private void restoreUnchangedToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if(!fc.Different || fc.DevModified == null) - fc.MoveToDevelopment(); - } - } - private void restoreSelectedToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) fc.MoveToDevelopment(); - } - } - private void restoreAllToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - fc.MoveToDevelopment(); - } - } - private List SelectedList - { - get - { - dgv.EndEdit(); - List fcList = new List(); - foreach (DataGridViewCell dgc in dgv.SelectedCells) - { - FileCompare fc = dgv.Rows[dgc.RowIndex].DataBoundItem as FileCompare; - if (fc != null && fcList.Contains(fc) == false) - fcList.Add(fc); - } - return fcList; - } - } - private void compareToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - CompareOneFile(fc.FileName, fc.SSFileName); - } - } - private static void CompareOneFile(string fileDev, string fileSS) - { - Console.WriteLine("Compare {0} and {1}", fileDev, fileSS); - string progname = string.Empty; - if (System.IO.File.Exists(@"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe")) - progname = @"C:\Program Files\IDM Computer Solutions\UltraCompare\UC.exe"; - if (System.IO.File.Exists(@"C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\UC.exe")) - progname = @"C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\UC.exe"; - // string cmd = string.Format("\"{0}\" -t \"{1}\" \"{2}\"", progname, fc.FileName, fc.SSFileName); - System.Diagnostics.ProcessStartInfo psi = - new System.Diagnostics.ProcessStartInfo(progname, string.Format(@" -t ""{0}"" ""{1}""", fileDev, fileSS)); - System.Diagnostics.Process prc = System.Diagnostics.Process.Start(psi); - } - private void restoreToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - fc.MoveToDevelopment(); - } - } - private void differentToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearResults(); - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void SetColumnWidth() - { - IsLoading = true; - if (Properties.Settings.Default["Widths"] == null) - { - dgv.Columns[0].Width = 60; - dgv.Columns[1].Visible = false; - dgv.Columns[2].Width = 125; - dgv.Columns[3].Width = 125; - dgv.Columns[4].Width = 50; - dgv.Columns[5].Width = 500; - } - else - { - for (int i = 0; i < Properties.Settings.Default.Widths.Count; i++) - { - string sWidth = Properties.Settings.Default.Widths[i]; - if (sWidth == "Invisible") - dgv.Columns[i].Visible = false; - else - dgv.Columns[i].Width = int.Parse(sWidth); - } - } - dgv.Columns[1].Visible = false; - IsLoading = false; - } - private void FindDifferent(DirectoryInfo di) - { - FindDifferent(di.GetFiles()); - FindDifferent(di.GetDirectories()); - } - private void FindDifferent(DirectoryInfo[] directoryInfoList) - { - foreach (DirectoryInfo di in directoryInfoList) - FindDifferent(di); - } - private void FindDifferent(FileInfo[] fileInfoList) - { - foreach (FileInfo fi in fileInfoList) - FindDifferent(fi); - } - private void FindDifferent(FileInfo fi) - { - if (fi.Name.ToLower().EndsWith("scc")) return; - if (fi.Name.ToLower().EndsWith("sln")) return; - if (fi.Name.ToLower().EndsWith("csproj")) - { - // Find files that have been added to the new Project - List compileList = GetCompileList(fi.FullName); - FileInfo fi1csproj = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - if (fi1csproj.Exists) - { - List compileList1 = GetCompileList(fi1csproj.FullName); - CompareLists(compileList, compileList1, fi, fi1csproj); - } - return; - } - if (fi.Name.ToLower().EndsWith("licx")) return; - FileInfo fiD = new FileInfo(fi.FullName.Replace(tbSourceSafe.Text, tbDevelopment.Text)); - FileInfo fiS = fi; - // Only check Read-Only flag, other attributes are unimportant - if (fiS.LastWriteTimeUtc != fiD.LastWriteTimeUtc || (fiS.Attributes & FileAttributes.ReadOnly ) != (fiD.Attributes & FileAttributes.ReadOnly )) - AddToResults(fi, fiD); - } - private void dgv_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e) - { - if (!IsLoading) - { - System.Collections.Specialized.StringCollection widths = new System.Collections.Specialized.StringCollection(); - foreach (DataGridViewColumn col in dgv.Columns) - widths.Add(col.Visible ? col.Width.ToString() : "Invisible"); - Properties.Settings.Default.Widths = widths; - Properties.Settings.Default.Save(); - } - } - private bool _OnlyContentDifferent = false; - private void contentDifferentToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - ClearResults(); - _OnlyContentDifferent = true; - // Walk though Source Safe and check to see if the files in the Development folder are read-only - FindDifferent(new DirectoryInfo(tbSourceSafe.Text)); - _OnlyContentDifferent = false; - dgv.DataSource = _CheckedOut; - SetColumnWidth(); - } - private void frmSync_LocationChanged(object sender, EventArgs e) - { - Rectangle rec = Screen.GetWorkingArea(this); - int newLeft = Left; - int newTop = Top; - if (Math.Abs(Left - rec.X) < 10) newLeft = rec.X; - if (Math.Abs(Top - rec.Y) < 10) newTop = rec.Y; - if (Math.Abs(rec.X + rec.Width - Right) < 10) newLeft = rec.X + rec.Width - Width; - if (Math.Abs(rec.Y + rec.Height - Bottom) < 10) newTop = rec.Y + rec.Height - Height; - if (newTop != Top || newLeft != Left) - Location = new Point(newLeft, newTop); - } - private void restoreReadOnlyToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ReadOnly) fc.MoveToDevelopment(); - } - } - private void listToClipboardToolStripMenuItem_Click(object sender, EventArgs e) - { - dgv.EndEdit(); - StringBuilder sb = new StringBuilder(); - int lenFolder = tbDevelopment.Text.Length; - string lastFolder = ""; - foreach (FileCompare fc in _CheckedOut) - { - if (fc.ToProcess) - { - FileInfo fi = new FileInfo(fc.FileName); - FileInfo fis = new FileInfo(fc.SSFileName); - string folder = fi.Directory.FullName.Substring(lenFolder + 1); - if (folder != lastFolder) - { - sb.Append(folder + ":\r\n"); - lastFolder = folder; - } - sb.Append((fis.Exists ? "" : " =>NEW") + "\t" + fi.Name + "\r\n"); - } - } - try - { - sb.Append("\r\nInternal Release:\r\n"); - sb.Append("\r\nExternal Release:\r\n"); - sb.Append("\r\nTesting Performed:\r\n"); - sb.Append("\r\nTesting Requirements:\r\n"); - Clipboard.Clear(); - Clipboard.SetText(sb.ToString()); - MessageBox.Show(sb.ToString(), "Copied to Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Information); - } - catch (Exception ex) - { - StringBuilder sb2 = new StringBuilder(); - string prefix = ""; - while (ex != null) - { - sb2.AppendLine(string.Format("{0}{1} - {2}",prefix, ex.GetType().Name, ex.Message)); - prefix += " "; - } - MessageBox.Show(sb2.ToString(), "Error saving Clipboard", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void dgv_MouseDown(object sender, MouseEventArgs e) - { - dgv.ClearSelection(); - DataGridView.HitTestInfo info = dgv.HitTest(e.X, e.Y); - if (info.RowIndex < 0) return; - dgv.CurrentCell = dgv[0, info.RowIndex]; - dgv.Rows[info.RowIndex].Selected = true; - } - - private void selectAllToolStripMenuItem_Click(object sender, EventArgs e) - { - if (_CheckedOut == null || _CheckedOut.Count == 0) - { - MessageBox.Show("Don't you really think you should get a list first!", "Hey Moron!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop); - return; - } - foreach (FileCompare fc in _CheckedOut) fc.ToProcess = true; - dgv.Refresh(); - } - - private void selectNoneToolStripMenuItem_Click(object sender, EventArgs e) - { - if (_CheckedOut == null || _CheckedOut.Count == 0) - { - MessageBox.Show("Don't you really think you should get a list first!", "Hey Moron!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop); - return; - } - foreach (FileCompare fc in _CheckedOut) fc.ToProcess = false; - dgv.Refresh(); - } - - private void compareSourceSafeToolStripMenuItem_Click(object sender, EventArgs e) - { - // Compare SS version with SS version from Mailbox - dgv.EndEdit(); - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - CompareOneFile(fc.SSFileName, fc.SSFileName.Replace(tbSourceSafe.Text, tbSSMailBox.Text)); - } - } - - private void compareMailboxToolStripMenuItem_Click(object sender, EventArgs e) - { - // Compare MailBox version with Mailbox Source Safe version - dgv.EndEdit(); - // This should launch UltraCompare with the two files - // Which Item am I on - List fcList = SelectedList; - foreach (FileCompare fc in fcList) - { - CompareOneFile(fc.FileName, fc.FileName.Replace(tbDevelopment.Text, tbSSMailBox.Text)); - } - } - } -} \ No newline at end of file diff --git a/PROMS/xxxSync/iSync-128x128.png b/PROMS/xxxSync/iSync-128x128.png deleted file mode 100644 index b6293d16..00000000 Binary files a/PROMS/xxxSync/iSync-128x128.png and /dev/null differ diff --git a/PROMS/xxxSync/iSync.ico b/PROMS/xxxSync/iSync.ico deleted file mode 100644 index af4a5cb4..00000000 Binary files a/PROMS/xxxSync/iSync.ico and /dev/null differ diff --git a/PROMS/xxxSync/sync.ico b/PROMS/xxxSync/sync.ico deleted file mode 100644 index 25da3cb6..00000000 Binary files a/PROMS/xxxSync/sync.ico and /dev/null differ