diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 85cfca11b..000000000 --- a/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -# Project Files # -################# -*.userprefs -*.pidb -*swp -bin -obj -WebGoat/App_Data/*.txt -*.sqlite* -WebGoat/Configuration/*.config - -# Trash Files # -############### -.DS_Store diff --git a/README b/README deleted file mode 100644 index a5ce616ca..000000000 --- a/README +++ /dev/null @@ -1,64 +0,0 @@ -***************************** Webgoat.NET ********************************** -* Source Code: https://github.com/jerryhoff/WebGoat.NET -* Download zip: https://github.com/jerryhoff/WebGoat.NET/zipball/master -**************************************************************************** - -This web application is a learning platform that attempts to teach about -common web security flaws. It contains generic security flaws that apply to -most web applications. It also contains lessons that specifically pertain to -the .NET framework. The excercises in this app are intented to teach about -web security attacks and how developers can overcome them. - -WARNING: THIS WEB APPLICATION CONTAINS NUMEROUS SECURITY VULNERABILITIES -WHICH WILL RENDER YOUR COMPUTER VERY INSECURURE WHILE RUNNING! IT IS HIGHLY -RECOMMENDED TO COMPLETELY DISCONNECT YOUR COMPUTER FROM ALL NETWORKS WHILE -RUNNING! - -Notes: - - Google Chrome performs filtering for reflected XSS attacks. These attacks - will not work unless chrome is run with the argument - --disable-xss-auditor. -- Some (but not all!) of the lessons require a working SQL database. Setup - guidelines are shown below. - -How To Build And Run under Mac OS X and Linux: - 1. Prerequisites - a. Mono framework for your respective OS. It can be downloaded at - http://www.go-mono.com/mono-downloads/download.html. Make sure - that ALL components get installed, including GTK and xsp. - b. A DB for some of the lessions. Sqlite3 is recommended as it's - faster and easier to use for the purposes of these lessions. - Binaries can be found here: http://www.sqlite.org/download.html - 2. Install the mono framework and sqlite3 binaries. - 3. IMPORTANT: Make sure that the the mono executable is in your PATH. - 4. Grab WebGoat.NET and cd into the root dir. - 5. Run 'xbuild'. There may be a few warnings but there should be no - errors! If there are please let us know. - 6. cd into the WebGoat project and run 'xsp4'. Then open your favorite - browser and go to http://localhost:8080 (or whatever port your - xsp4 is using if you're not using the default). Note: The first run - may take take some time as it's compiling everything on the fly. - 7. If you see the WebGoat.NET page that means you're almost there! Next - step is to click on 'Set Up Database!' - 8. You should see a form with a bunch of setup information for the - database. For 'Data Provider' choose Sqlite. For 'Data File Path' put - in 'db.sqlite3' and for 'Client Executable' put in the sqlite3 - executable of your OS (usually /usr/bin/sqlite3). - 9. Click on 'Test Configuration', followed by 'Rebuild Database' and - hopefully you should be good go! Enjoy your hackathon! - -How to build and run under Windows: - 1. Prerequisites: - a. Visual Studio 2010 and above. - b. Mysql database that's up and running with at least one user - aleady setup with full permissions. - 2. Open WebGoat.sln file via Visual Studio, and click on debug. - 3. You should see the WebGoat.NET page at which point click on - 'Set Up Database'. - 3. You should see a form with a bunch of setup information for the - database. For 'Data Provider' choose MySql. You'll need to fill in - the respective data entries for your mysql db. 'Client Executable' - and 'Data File Path' are not necessary for MySql so you can leave - them empty. - 4. Click on 'Test Configuration', followed by 'Rebuild Database' and - hopefully you should be good go! Enjoy your hackathon! diff --git a/WebGoat.NET.sln b/WebGoat.NET.sln deleted file mode 100644 index 89f8133cd..000000000 --- a/WebGoat.NET.sln +++ /dev/null @@ -1,212 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebGoat.NET", "WebGoat\WebGoat.NET.csproj", "{83B04441-0F79-4424-AAD0-46E0C3CDDAA1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {83B04441-0F79-4424-AAD0-46E0C3CDDAA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {83B04441-0F79-4424-AAD0-46E0C3CDDAA1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {83B04441-0F79-4424-AAD0-46E0C3CDDAA1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {83B04441-0F79-4424-AAD0-46E0C3CDDAA1}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(MonoDevelopProperties) = preSolution - StartupItem = WebGoat\WebGoat.NET.csproj - Policies = $0 - $0.DotNetNamingPolicy = $1 - $1.DirectoryNamespaceAssociation = PrefixedFlat - $1.ResourceNamePolicy = FileFormatDefault - $0.StandardHeader = $2 - $2.Text = - $2.IncludeInNewFiles = True - $0.TextStylePolicy = $3 - $3.inheritsSet = null - $3.scope = text/x-csharp - $0.CSharpFormattingPolicy = $4 - $4.IndentSwitchBody = True - $4.AnonymousMethodBraceStyle = NextLine - $4.PropertyBraceStyle = DoNotChange - $4.PropertyGetBraceStyle = DoNotChange - $4.PropertySetBraceStyle = DoNotChange - $4.EventAddBraceStyle = NextLine - $4.EventRemoveBraceStyle = NextLine - $4.StatementBraceStyle = NextLine - $4.ElseNewLinePlacement = NewLine - $4.CatchNewLinePlacement = NewLine - $4.FinallyNewLinePlacement = NewLine - $4.BeforeMethodDeclarationParentheses = False - $4.BeforeMethodCallParentheses = False - $4.BeforeConstructorDeclarationParentheses = False - $4.NewParentheses = False - $4.SpacesBeforeBrackets = False - $4.inheritsSet = Mono - $4.inheritsScope = text/x-csharp - $4.scope = text/x-csharp - $0.TextStylePolicy = $5 - $5.FileWidth = 120 - $5.inheritsSet = VisualStudio - $5.inheritsScope = text/plain - $5.scope = text/plain - $0.NameConventionPolicy = $6 - $6.Rules = $7 - $7.NamingRule = $8 - $8.Name = Namespaces - $8.AffectedEntity = Namespace - $8.VisibilityMask = VisibilityMask - $8.NamingStyle = PascalCase - $8.IncludeInstanceMembers = True - $8.IncludeStaticEntities = True - $7.NamingRule = $9 - $9.Name = Types - $9.AffectedEntity = Class, Struct, Enum, Delegate - $9.VisibilityMask = VisibilityMask - $9.NamingStyle = PascalCase - $9.IncludeInstanceMembers = True - $9.IncludeStaticEntities = True - $7.NamingRule = $10 - $10.Name = Interfaces - $10.RequiredPrefixes = $11 - $11.String = I - $10.AffectedEntity = Interface - $10.VisibilityMask = VisibilityMask - $10.NamingStyle = PascalCase - $10.IncludeInstanceMembers = True - $10.IncludeStaticEntities = True - $7.NamingRule = $12 - $12.Name = Attributes - $12.RequiredSuffixes = $13 - $13.String = Attribute - $12.AffectedEntity = CustomAttributes - $12.VisibilityMask = VisibilityMask - $12.NamingStyle = PascalCase - $12.IncludeInstanceMembers = True - $12.IncludeStaticEntities = True - $7.NamingRule = $14 - $14.Name = Event Arguments - $14.RequiredSuffixes = $15 - $15.String = EventArgs - $14.AffectedEntity = CustomEventArgs - $14.VisibilityMask = VisibilityMask - $14.NamingStyle = PascalCase - $14.IncludeInstanceMembers = True - $14.IncludeStaticEntities = True - $7.NamingRule = $16 - $16.Name = Exceptions - $16.RequiredSuffixes = $17 - $17.String = Exception - $16.AffectedEntity = CustomExceptions - $16.VisibilityMask = VisibilityMask - $16.NamingStyle = PascalCase - $16.IncludeInstanceMembers = True - $16.IncludeStaticEntities = True - $7.NamingRule = $18 - $18.Name = Methods - $18.AffectedEntity = Methods - $18.VisibilityMask = VisibilityMask - $18.NamingStyle = PascalCase - $18.IncludeInstanceMembers = True - $18.IncludeStaticEntities = True - $7.NamingRule = $19 - $19.Name = Static Readonly Fields - $19.AffectedEntity = ReadonlyField - $19.VisibilityMask = Internal, Protected, Public - $19.NamingStyle = PascalCase - $19.IncludeInstanceMembers = False - $19.IncludeStaticEntities = True - $7.NamingRule = $20 - $20.Name = Fields (Non Private) - $20.AffectedEntity = Field - $20.VisibilityMask = Internal, Protected, Public - $20.NamingStyle = PascalCase - $20.IncludeInstanceMembers = True - $20.IncludeStaticEntities = True - $7.NamingRule = $21 - $21.Name = ReadOnly Fields (Non Private) - $21.AffectedEntity = ReadonlyField - $21.VisibilityMask = Internal, Protected, Public - $21.NamingStyle = PascalCase - $21.IncludeInstanceMembers = True - $21.IncludeStaticEntities = False - $7.NamingRule = $22 - $22.Name = Fields (Private) - $22.AllowedPrefixes = $23 - $23.String = _ - $23.String = m_ - $22.AffectedEntity = Field, ReadonlyField - $22.VisibilityMask = Private - $22.NamingStyle = CamelCase - $22.IncludeInstanceMembers = True - $22.IncludeStaticEntities = False - $7.NamingRule = $24 - $24.Name = Static Fields (Private) - $24.AffectedEntity = Field - $24.VisibilityMask = Private - $24.NamingStyle = CamelCase - $24.IncludeInstanceMembers = False - $24.IncludeStaticEntities = True - $7.NamingRule = $25 - $25.Name = ReadOnly Fields (Private) - $25.AllowedPrefixes = $26 - $26.String = _ - $26.String = m_ - $25.AffectedEntity = ReadonlyField - $25.VisibilityMask = Private - $25.NamingStyle = CamelCase - $25.IncludeInstanceMembers = True - $25.IncludeStaticEntities = False - $7.NamingRule = $27 - $27.Name = Constant Fields - $27.AffectedEntity = ConstantField - $27.VisibilityMask = VisibilityMask - $27.NamingStyle = PascalCase - $27.IncludeInstanceMembers = True - $27.IncludeStaticEntities = True - $7.NamingRule = $28 - $28.Name = Properties - $28.AffectedEntity = Property - $28.VisibilityMask = VisibilityMask - $28.NamingStyle = PascalCase - $28.IncludeInstanceMembers = True - $28.IncludeStaticEntities = True - $7.NamingRule = $29 - $29.Name = Events - $29.AffectedEntity = Event - $29.VisibilityMask = VisibilityMask - $29.NamingStyle = PascalCase - $29.IncludeInstanceMembers = True - $29.IncludeStaticEntities = True - $7.NamingRule = $30 - $30.Name = Enum Members - $30.AffectedEntity = EnumMember - $30.VisibilityMask = VisibilityMask - $30.NamingStyle = PascalCase - $30.IncludeInstanceMembers = True - $30.IncludeStaticEntities = True - $7.NamingRule = $31 - $31.Name = Parameters - $31.AffectedEntity = Parameter - $31.VisibilityMask = VisibilityMask - $31.NamingStyle = CamelCase - $31.IncludeInstanceMembers = True - $31.IncludeStaticEntities = True - $7.NamingRule = $32 - $32.Name = Type Parameters - $32.RequiredPrefixes = $33 - $33.String = T - $32.AffectedEntity = TypeParameter - $32.VisibilityMask = VisibilityMask - $32.NamingStyle = PascalCase - $32.IncludeInstanceMembers = True - $32.IncludeStaticEntities = True - $0.TextStylePolicy = $34 - $34.inheritsSet = null - $34.scope = application/x-ashx - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/WebGoat.NET.suo b/WebGoat.NET.suo deleted file mode 100644 index aa1b304db..000000000 Binary files a/WebGoat.NET.suo and /dev/null differ diff --git a/WebGoat/AddNewUser.aspx b/WebGoat/AddNewUser.aspx deleted file mode 100644 index 66c8d26cc..000000000 --- a/WebGoat/AddNewUser.aspx +++ /dev/null @@ -1,58 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="AddNewUser.aspx.cs" Inherits="OWASP.WebGoat.NET.AddNewUser" %> - - - - - - This page allows you to add a new user - - - - -

Add New User

- <%-- -

- - - - - - -

- --%> -

- -

- -

- - - - - - - - - - - - - - - - - - -
Enter a username:
Choose a password:
Enter your email address:
:
-

- -

-

- -

-
- diff --git a/WebGoat/AddNewUser.aspx.cs b/WebGoat/AddNewUser.aspx.cs deleted file mode 100644 index 419da8416..000000000 --- a/WebGoat/AddNewUser.aspx.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System; -using System.Collections; -using System.Configuration; -using System.Data; -using System.Linq; -using System.Web; -using System.Web.Security; -using System.Web.UI; -using System.Web.UI.HtmlControls; -using System.Web.UI.WebControls; -using System.Web.UI.WebControls.WebParts; - -namespace OWASP.WebGoat.NET -{ - public partial class AddNewUser : System.Web.UI.Page - { - const string passwordQuestion = "What is your favorite color"; - - protected void Page_Load(object sender, EventArgs e) - { - if (!Page.IsPostBack) - SecurityQuestion.Text = passwordQuestion; - } - - protected void CreateAccountButton_Click(object sender, EventArgs e) - { - MembershipCreateStatus createStatus; - - MembershipUser newUser = - Membership.CreateUser(Username.Text, Password.Text, - Email.Text, passwordQuestion, - SecurityAnswer.Text, true, - out createStatus); - - if(newUser == null) - Console.WriteLine("New User is null!"); - - switch (createStatus) - { - case MembershipCreateStatus.Success: - CreateAccountResults.Text = "The user account was successfully created!"; - break; - - case MembershipCreateStatus.DuplicateUserName: - CreateAccountResults.Text = "There already exists a user with this username."; - break; - - case MembershipCreateStatus.DuplicateEmail: - CreateAccountResults.Text = "There already exists a user with this email address."; - break; - - case MembershipCreateStatus.InvalidEmail: - CreateAccountResults.Text = "There email address you provided in invalid."; - break; - - case MembershipCreateStatus.InvalidAnswer: - CreateAccountResults.Text = "There security answer was invalid."; - break; - - case MembershipCreateStatus.InvalidPassword: - CreateAccountResults.Text = "The password you provided is invalid. It must be seven characters long and have at least one non-alphanumeric character."; - break; - - default: - CreateAccountResults.Text = "There was an unknown error; the user account was NOT created."; - break; - } - } - - protected void RegisterUser_CreatingUser(object sender, LoginCancelEventArgs e) - { - /* - string trimmedUserName = RegisterUser.UserName.Trim(); - if (RegisterUser.UserName.Length != trimmedUserName.Length) - { - // Show the error message - InvalidUserNameOrPasswordMessage.Text = "The username cannot contain leading or trailing spaces."; - InvalidUserNameOrPasswordMessage.Visible = true; - - // Cancel the create user workflow - e.Cancel = true; - } - else - { - // Username is valid, make sure that the password does not contain the username - if (RegisterUser.Password.IndexOf(RegisterUser.UserName, StringComparison.OrdinalIgnoreCase) >= 0) - { - // Show the error message - InvalidUserNameOrPasswordMessage.Text = "The username may not appear anywhere in the password."; - InvalidUserNameOrPasswordMessage.Visible = true; - - // Cancel the create user workflow - e.Cancel = true; - } - } - */ - } - } -} - diff --git a/WebGoat/AddNewUser.aspx.designer.cs b/WebGoat/AddNewUser.aspx.designer.cs deleted file mode 100644 index 959cf3856..000000000 --- a/WebGoat/AddNewUser.aspx.designer.cs +++ /dev/null @@ -1,38 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class AddNewUser { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label InvalidUserNameOrPasswordMessage; - - protected System.Web.UI.WebControls.TextBox Username; - - protected System.Web.UI.WebControls.TextBox Password; - - protected System.Web.UI.WebControls.TextBox Email; - - protected System.Web.UI.WebControls.Label SecurityQuestion; - - protected System.Web.UI.WebControls.TextBox SecurityAnswer; - - protected System.Web.UI.WebControls.Button CreateAccountButton; - - protected System.Web.UI.WebControls.Label CreateAccountResults; - } -} diff --git a/WebGoat/App_Code/ConfigFile.cs b/WebGoat/App_Code/ConfigFile.cs deleted file mode 100644 index b5afcf0f9..000000000 --- a/WebGoat/App_Code/ConfigFile.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.IO; - -namespace OWASP.WebGoat.NET.App_Code -{ - public class ConfigFile - { - private string _filePath; - - private IDictionary _settings = new Dictionary(); - private IDictionary _settingComments = new Dictionary(); - - private UTF8Encoding _encoding = new UTF8Encoding(); - - private const char SPLIT_CHAR = '='; - - public ConfigFile(string fileName) - { - _filePath = fileName; - } - - //TODO: Obviously no checks for problems, so when you get time do it like bhudda. - public void Load() - { - string comment = string.Empty; - - //It's all or nothing here buddy. - foreach (string line in File.ReadAllLines(_filePath)) - { - - if (line.Length == 0) - continue; - - if (line[0] == '#') - { - comment = line; - continue; - } - - string[] tokens = line.Split(SPLIT_CHAR); - - if (tokens.Length >=2) - { - string key = tokens[0].ToLower(); - _settings[key] = tokens[1]; - - if (!string.IsNullOrEmpty(comment)) - _settingComments[key] = comment; - } - - comment = string.Empty; - } - } - - public void Save() - { - using (FileStream stream = File.Create(_filePath)) - { - byte[] data = ToByteArray(); - - stream.Write(data, 0, data.Length); - } - } - - private byte[] ToByteArray() - { - StringBuilder builder = new StringBuilder(); - - foreach (var pair in _settings) - { - if (_settingComments.ContainsKey(pair.Key)) - { - builder.Append(_settingComments[pair.Key]); - builder.AppendLine(); - } - - builder.AppendFormat("{0}={1}", pair.Key, pair.Value); - builder.AppendLine(); - } - - return _encoding.GetBytes(builder.ToString()); - } - - public string Get(string key) - { - key = key.ToLower(); - - if (_settings.ContainsKey(key)) - return _settings[key]; - - return string.Empty; - } - - public void Set(string key, string value) - { - _settings[key.ToLower()] = value; - } - - public void Remove(string key) - { - _settings.Remove(key.ToLower()); - } - } -} - diff --git a/WebGoat/App_Code/CookieManager.cs b/WebGoat/App_Code/CookieManager.cs deleted file mode 100644 index 3a7606f87..000000000 --- a/WebGoat/App_Code/CookieManager.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Web; -using System.Web.Security; - -namespace OWASP.WebGoat.NET.App_Code -{ - public class CookieManager - { - public CookieManager() - { - } - - public static HttpCookie SetCookie(FormsAuthenticationTicket ticket, string cookieId, string cookieValue) - { - string encrypted_ticket = FormsAuthentication.Encrypt(ticket); //encrypt the ticket - - // put ticket into the cookie - HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted_ticket); - - //set expiration date - if (ticket.IsPersistent) - cookie.Expires = ticket.Expiration; - - return cookie; - - //TODO: Not sure if not adding this extra cookie will give us problems. Let's try and see. -// response.Cookies.Add(cookie); - - //save the customerNumber as a cookie to fix the "server farm" issue we were facing -// HttpCookie cookie_id = new HttpCookie("customerNumber", ds.Tables[0].Rows[0]["customerNumber"].ToString()); -// cookie_id.Expires = DateTime.Now.AddDays(14); //expires in 2 weeks -// response.Cookies.Add(cookie_id); - } - } -} - diff --git a/WebGoat/App_Code/CustomerLoginData.cs b/WebGoat/App_Code/CustomerLoginData.cs deleted file mode 100644 index fa431889b..000000000 --- a/WebGoat/App_Code/CustomerLoginData.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Web; - -namespace OWASP.WebGoat.NET -{ - public class CustomerLoginData - { - public string email = string.Empty; - public string password = string.Empty; - public bool isLoggedIn = false; - public string message = string.Empty; - - public CustomerLoginData(string email, string password, bool isLoggedIn) - { - this.email = email; - this.password = password; - this.isLoggedIn = isLoggedIn; - } - public String Message - { - get - { - return this.message; - } - set - { - value = message; - } - } - - } -} diff --git a/WebGoat/App_Code/DB/DbConstants.cs b/WebGoat/App_Code/DB/DbConstants.cs deleted file mode 100644 index 69e86efba..000000000 --- a/WebGoat/App_Code/DB/DbConstants.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.IO; - -namespace OWASP.WebGoat.NET.App_Code.DB -{ - public class DbConstants - { - //Keys - public const string KEY_DB_TYPE = "dbtype"; - public const string KEY_CLIENT_EXEC = "client"; - public const string KEY_HOST = "host"; - public const string KEY_PORT = "port"; - public const string KEY_FILE_NAME = "filename"; - public const string KEY_DATABASE = "database"; - public const string KEY_UID = "uid"; - public const string KEY_PWD = "pwd"; - - //DB Types - public const string DB_TYPE_MYSQL = "MySql"; - public const string DB_TYPE_SQLITE = "Sqlite"; - public const string CONFIG_EXT = "config"; - - //DB Scripts - private const string SCRIPT_DIR = "DB_Scripts"; - public static readonly string DB_CREATE_MYSQL_SCRIPT = Path.Combine(SCRIPT_DIR, "create_webgoatcoins.sql"); - public static readonly string DB_CREATE_SQLITE_SCRIPT = Path.Combine(SCRIPT_DIR, "create_webgoatcoins_sqlite3.sql"); - public static readonly string DB_LOAD_MYSQL_SCRIPT = Path.Combine(SCRIPT_DIR, "load_webgoatcoins.sql"); - public static readonly string DB_LOAD_SQLITE_SCRIPT = Path.Combine(SCRIPT_DIR, "load_webgoatcoins_sqlite3.sql"); - } -} diff --git a/WebGoat/App_Code/DB/DbProviderFactory.cs b/WebGoat/App_Code/DB/DbProviderFactory.cs deleted file mode 100644 index 59c5f1d68..000000000 --- a/WebGoat/App_Code/DB/DbProviderFactory.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using log4net; -using System.Reflection; - -namespace OWASP.WebGoat.NET.App_Code.DB -{ - //NOT THREAD SAFE! - public class DbProviderFactory - { - private static ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - public static IDbProvider Create(ConfigFile configFile) - { - configFile.Load(); - - string dbType = configFile.Get(DbConstants.KEY_DB_TYPE); - - log.Info("Creating provider for" + dbType); - - switch (dbType) - { - case DbConstants.DB_TYPE_MYSQL: - return new MySqlDbProvider(configFile); - case DbConstants.DB_TYPE_SQLITE: - return new SqliteDbProvider(configFile); - default: - throw new Exception(string.Format("Don't know Data Provider type {0}", dbType)); - } - } - } -} \ No newline at end of file diff --git a/WebGoat/App_Code/DB/DummyDbProvider.cs b/WebGoat/App_Code/DB/DummyDbProvider.cs deleted file mode 100644 index b3e58ad60..000000000 --- a/WebGoat/App_Code/DB/DummyDbProvider.cs +++ /dev/null @@ -1,130 +0,0 @@ -using System; -using System.Data; - -namespace OWASP.WebGoat.NET.App_Code.DB -{ - public class DummyDbProvider : IDbProvider - { - - public bool TestConnection() - { - return true; - } - - public ConfigFile DbConfigFile - { - get; set; - } - - public DataSet GetCatalogData() - { - return null; - } - - public bool IsValidCustomerLogin(string email, string password) - { - return false; - } - - public bool RecreateGoatDb() - { - return false; - } - - public string GetCustomerEmail(string customerNumber) - { - return string.Empty; - } - - public DataSet GetCustomerDetails(string customerNumber) - { - return null; - } - - public DataSet GetOffice(string city) - { - return null; - } - - public DataSet GetComments(string productCode) - { - return null; - } - - public string AddComment(string productCode, string email, string comment) - { - return string.Empty; - } - - public string UpdateCustomerPassword(int customerNumber, string password) - { - return string.Empty; - } - - public string[] GetSecurityQuestionAndAnswer(string email) - { - return null; - } - - public string GetPasswordByEmail(string email) - { - return string.Empty; - } - - public DataSet GetUsers() - { - return null; - } - - public DataSet GetOrders(int customerID) - { - return null; - } - - public DataSet GetProductDetails(string productCode) - { - return null; - } - - public DataSet GetOrderDetails(int orderNumber) - { - return null; - } - - public DataSet GetPayments(int customerNumber) - { - return null; - } - - public DataSet GetProductsAndCategories() - { - return null; - } - - public DataSet GetProductsAndCategories(int catNumber) - { - return null; - } - - public DataSet GetEmailByName(string name) - { - return null; - } - - public string GetEmailByCustomerNumber(string num) - { - return string.Empty; - } - - public DataSet GetCustomerEmails(string email) - { - return null; - } - - public string Name - { - get { return "Dummy"; } - } - } -} - diff --git a/WebGoat/App_Code/DB/IDbProvider.cs b/WebGoat/App_Code/DB/IDbProvider.cs deleted file mode 100644 index cc9e4fdd9..000000000 --- a/WebGoat/App_Code/DB/IDbProvider.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Data; - -namespace OWASP.WebGoat.NET.App_Code.DB -{ - public interface IDbProvider - { - string Name { get; } - - bool TestConnection(); - - DataSet GetCatalogData(); - - bool IsValidCustomerLogin(string email, string password); - - bool RecreateGoatDb(); - - string GetCustomerEmail(string customerNumber); - - DataSet GetCustomerDetails(string customerNumber); - - DataSet GetOffice(string city); - - DataSet GetComments(string productCode); - - string AddComment(string productCode, string email, string comment); - - string UpdateCustomerPassword(int customerNumber, string password); - - string[] GetSecurityQuestionAndAnswer(string email); - - string GetPasswordByEmail(string email); - - DataSet GetUsers(); - - DataSet GetOrders(int customerID); - - DataSet GetProductDetails(string productCode); - - DataSet GetOrderDetails(int orderNumber); - - DataSet GetPayments(int customerNumber); - - DataSet GetProductsAndCategories(); - - DataSet GetProductsAndCategories(int catNumber); - - DataSet GetEmailByName(string name); - - string GetEmailByCustomerNumber(string num); - - DataSet GetCustomerEmails(string email); - } -} \ No newline at end of file diff --git a/WebGoat/App_Code/DB/MySqlDbProvider.cs b/WebGoat/App_Code/DB/MySqlDbProvider.cs deleted file mode 100644 index 0bc798128..000000000 --- a/WebGoat/App_Code/DB/MySqlDbProvider.cs +++ /dev/null @@ -1,576 +0,0 @@ -using System; -using System.Data; -using MySql.Data.MySqlClient; -using log4net; -using System.Reflection; -using System.Diagnostics; -using System.IO; -using System.Threading; - -namespace OWASP.WebGoat.NET.App_Code.DB -{ - public class MySqlDbProvider : IDbProvider - { - private readonly string _connectionString; - private readonly string _host; - private readonly string _port; - private readonly string _pwd; - private readonly string _uid; - private readonly string _database; - private readonly string _clientExec; - - private readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - public MySqlDbProvider(ConfigFile configFile) - { - if (configFile == null) - _connectionString = string.Empty; - - if (!string.IsNullOrEmpty(configFile.Get(DbConstants.KEY_PWD))) - { - _connectionString = string.Format("SERVER={0};PORT={1};DATABASE={2};UID={3};PWD={4}", - configFile.Get(DbConstants.KEY_HOST), - configFile.Get(DbConstants.KEY_PORT), - configFile.Get(DbConstants.KEY_DATABASE), - configFile.Get(DbConstants.KEY_UID), - configFile.Get(DbConstants.KEY_PWD)); - } - else - { - _connectionString = string.Format("SERVER={0};PORT={1};DATABASE={2};UID={3}", - configFile.Get(DbConstants.KEY_HOST), - configFile.Get(DbConstants.KEY_PORT), - configFile.Get(DbConstants.KEY_DATABASE), - configFile.Get(DbConstants.KEY_UID)); - } - - _uid = configFile.Get(DbConstants.KEY_UID); - _pwd = configFile.Get(DbConstants.KEY_PWD); - _database = configFile.Get(DbConstants.KEY_DATABASE); - _host = configFile.Get(DbConstants.KEY_HOST); - _clientExec = configFile.Get(DbConstants.KEY_CLIENT_EXEC); - _port = configFile.Get(DbConstants.KEY_PORT); - } - - public string Name { get { return DbConstants.DB_TYPE_MYSQL; } } - - - public bool TestConnection() - { - try - { - /*using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - connection.Open(); - MySqlCommand cmd = new MySqlCommand("select * from information_schema.TABLES", connection); - cmd.ExecuteNonQuery(); - connection.Close(); - }*/ - MySqlHelper.ExecuteNonQuery(_connectionString, "select * from information_schema.TABLES"); - - return true; - } - catch (Exception ex) - { - log.Error("Error testing DB", ex); - return false; - } - } - - public DataSet GetCatalogData() - { - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - MySqlDataAdapter da = new MySqlDataAdapter("select * from Products", connection); - DataSet ds = new DataSet(); - - da.Fill(ds); - - return ds; - } - } - - public bool RecreateGoatDb() - { - string args; - - if (string.IsNullOrEmpty(_pwd)) - args = string.Format("--user={0} --database={1} --host={2} --port={3} -f", - _uid, _database, _host, _port); - else - args = string.Format("--user={0} --password={1} --database={2} --host={3} --port={4} -f", - _uid, _pwd, _database, _host, _port); - - log.Info("Running recreate"); - - int retVal1 = Math.Abs(Util.RunProcessWithInput(_clientExec, args, DbConstants.DB_CREATE_MYSQL_SCRIPT)); - int retVal2 = Math.Abs(Util.RunProcessWithInput(_clientExec, args, DbConstants.DB_LOAD_MYSQL_SCRIPT)); - - return Math.Abs(retVal1) + Math.Abs(retVal2) == 0; - } - - public bool IsValidCustomerLogin(string email, string password) - { - //encode password - string encoded_password = Encoder.Encode(password); - - //check email/password - string sql = "select * from CustomerLogin where email = '" + email + - "' and password = '" + encoded_password + "';"; - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - - //TODO: User reader instead (for all calls) - DataSet ds = new DataSet(); - - da.Fill(ds); - - try - { - return ds.Tables[0].Rows.Count != 0; - - } - catch (Exception ex) - { - //Log this and pass the ball along. - log.Error("Error checking login", ex); - - throw new Exception("Error checking login", ex); - } - } - } - - //Find the bugs! - public string CustomCustomerLogin(string email, string password) - { - string error_message = null; - try - { - //get data - string sql = "select * from CustomerLogin where email = '" + email + "';"; - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - //check if email address exists - if (ds.Tables[0].Rows.Count == 0) - { - error_message = "Email Address Not Found!"; - return error_message; - } - - string encoded_password = ds.Tables[0].Rows[0]["Password"].ToString(); - string decoded_password = Encoder.Decode(encoded_password); - - if (password.Trim().ToLower() != decoded_password.Trim().ToLower()) - { - error_message = "Password Not Valid For This Email Address!"; - } - else - { - //login successful - error_message = null; - } - } - - } - catch (MySqlException ex) - { - log.Error("Error with custom customer login", ex); - error_message = ex.Message; - } - catch (Exception ex) - { - log.Error("Error with custom customer login", ex); - } - - return error_message; - } - - public string GetCustomerEmail(string customerNumber) - { - string output = null; - try - { - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - string sql = "select email from CustomerLogin where customerNumber = " + customerNumber; - MySqlCommand command = new MySqlCommand(sql, connection); - output = command.ExecuteScalar().ToString(); - } - } - catch (Exception ex) - { - output = ex.Message; - } - return output; - } - - public DataSet GetCustomerDetails(string customerNumber) - { - string sql = "select Customers.customerNumber, Customers.customerName, Customers.logoFileName, Customers.contactLastName, Customers.contactFirstName, " + - "Customers.phone, Customers.addressLine1, Customers.addressLine2, Customers.city, Customers.state, Customers.postalCode, Customers.country, " + - "Customers.salesRepEmployeeNumber, Customers.creditLimit, CustomerLogin.email, CustomerLogin.password, CustomerLogin.question_id, CustomerLogin.answer " + - "From Customers, CustomerLogin where Customers.customerNumber = CustomerLogin.customerNumber and Customers.customerNumber = " + customerNumber; - - DataSet ds = new DataSet(); - try - { - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - da.Fill(ds); - } - - } - catch (Exception ex) - { - log.Error("Error getting customer details", ex); - - throw new ApplicationException("Error getting customer details", ex); - } - return ds; - - } - - public DataSet GetOffice(string city) - { - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - string sql = "select * from Offices where city = @city"; - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - da.SelectCommand.Parameters.AddWithValue("@city", city); - DataSet ds = new DataSet(); - da.Fill(ds); - return ds; - } - } - - public DataSet GetComments(string productCode) - { - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - string sql = "select * from Comments where productCode = @productCode"; - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - da.SelectCommand.Parameters.AddWithValue("@productCode", productCode); - DataSet ds = new DataSet(); - da.Fill(ds); - return ds; - } - } - - public string AddComment(string productCode, string email, string comment) - { - string sql = "insert into Comments(productCode, email, comment) values ('" + productCode + "','" + email + "','" + comment + "');"; - string output = null; - - try - { - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - connection.Open(); - MySqlCommand command = new MySqlCommand(sql, connection); - command.ExecuteNonQuery(); - } - } - catch (Exception ex) - { - log.Error("Error adding comment", ex); - output = ex.Message; - } - - return output; - } - - public string UpdateCustomerPassword(int customerNumber, string password) - { - string sql = "update CustomerLogin set password = '" + Encoder.Encode(password) + "' where customerNumber = " + customerNumber; - string output = null; - try - { - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - MySqlCommand command = new MySqlCommand(sql, connection); - - int rows_added = command.ExecuteNonQuery(); - - log.Info("Rows Added: " + rows_added + " to comment table"); - } - } - catch (Exception ex) - { - log.Error("Error updating customer password", ex); - output = ex.Message; - } - return output; - } - - public string[] GetSecurityQuestionAndAnswer(string email) - { - string sql = "select SecurityQuestions.question_text, CustomerLogin.answer from CustomerLogin, " + - "SecurityQuestions where CustomerLogin.email = '" + email + "' and CustomerLogin.question_id = " + - "SecurityQuestions.question_id;"; - - string[] qAndA = new string[2]; - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - - DataSet ds = new DataSet(); - da.Fill(ds); - - if (ds.Tables[0].Rows.Count > 0) - { - DataRow row = ds.Tables[0].Rows[0]; - qAndA[0] = row[0].ToString(); - qAndA[1] = row[1].ToString(); - } - } - - return qAndA; - } - - public string GetPasswordByEmail(string email) - { - string result = string.Empty; - try - { - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - //get data - string sql = "select * from CustomerLogin where email = '" + email + "';"; - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - //check if email address exists - if (ds.Tables[0].Rows.Count == 0) - { - result = "Email Address Not Found!"; - } - - string encoded_password = ds.Tables[0].Rows[0]["Password"].ToString(); - string decoded_password = Encoder.Decode(encoded_password); - result = decoded_password; - } - } - catch (Exception ex) - { - result = ex.Message; - } - return result; - } - - public DataSet GetUsers() - { - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - string sql = "select * from CustomerLogin;"; - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - return ds; - } - } - - public DataSet GetOrders(int customerID) - { - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - string sql = "select * from Orders where customerNumber = " + customerID; - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - if (ds.Tables[0].Rows.Count == 0) - return null; - else - return ds; - } - } - - public DataSet GetProductDetails(string productCode) - { - string sql = string.Empty; - MySqlDataAdapter da; - DataSet ds = new DataSet(); - - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - sql = "select * from Products where productCode = '" + productCode + "'"; - da = new MySqlDataAdapter(sql, connection); - da.Fill(ds, "products"); - - sql = "select * from Comments where productCode = '" + productCode + "'"; - da = new MySqlDataAdapter(sql, connection); - da.Fill(ds, "comments"); - - DataRelation dr = new DataRelation("prod_comments", - ds.Tables["products"].Columns["productCode"], //category table - ds.Tables["comments"].Columns["productCode"], //product table - false); - - ds.Relations.Add(dr); - return ds; - } - } - - public DataSet GetOrderDetails(int orderNumber) - { - - string sql = "select Customers.customerName, Orders.customerNumber, Orders.orderNumber, Products.productName, " + - "OrderDetails.quantityOrdered, OrderDetails.priceEach, Products.productImage " + - "from OrderDetails, Products, Orders, Customers where " + - "Customers.customerNumber = Orders.customerNumber " + - "and OrderDetails.productCode = Products.productCode " + - "and Orders.orderNumber = OrderDetails.orderNumber " + - "and OrderDetails.orderNumber = " + orderNumber; - - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - if (ds.Tables[0].Rows.Count == 0) - return null; - else - return ds; - } - } - - public DataSet GetPayments(int customerNumber) - { - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - string sql = "select * from Payments where customerNumber = " + customerNumber; - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - if (ds.Tables[0].Rows.Count == 0) - return null; - else - return ds; - } - } - - public DataSet GetProductsAndCategories() - { - return GetProductsAndCategories(0); - } - - public DataSet GetProductsAndCategories(int catNumber) - { - //TODO: Rerun the database script. - string sql = string.Empty; - MySqlDataAdapter da; - DataSet ds = new DataSet(); - - //catNumber is optional. If it is greater than 0, add the clause to both statements. - string catClause = string.Empty; - if (catNumber >= 1) - catClause += " where catNumber = " + catNumber; - - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - - sql = "select * from Categories" + catClause; - da = new MySqlDataAdapter(sql, connection); - da.Fill(ds, "categories"); - - sql = "select * from Products" + catClause; - da = new MySqlDataAdapter(sql, connection); - da.Fill(ds, "products"); - - - //category / products relationship - DataRelation dr = new DataRelation("cat_prods", - ds.Tables["categories"].Columns["catNumber"], //category table - ds.Tables["products"].Columns["catNumber"], //product table - false); - - ds.Relations.Add(dr); - return ds; - } - } - - public DataSet GetEmailByName(string name) - { - string sql = "select firstName, lastName, email from Employees where firstName like '" + name + "%' or lastName like '" + name + "%'"; - - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - if (ds.Tables[0].Rows.Count == 0) - return null; - else - return ds; - } - } - - public string GetEmailByCustomerNumber(string num) - { - string output = ""; - try - { - - output = (String)MySqlHelper.ExecuteScalar(_connectionString, "select email from CustomerLogin where customerNumber = " + num); - /*using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - string sql = "select email from CustomerLogin where customerNumber = " + num; - MySqlCommand cmd = new MySqlCommand(sql, connection); - output = (string)cmd.ExecuteScalar(); - }*/ - - } - catch (Exception ex) - { - log.Error("Error getting email by customer number", ex); - output = ex.Message; - } - - return output; - } - - public DataSet GetCustomerEmails(string email) - { - string sql = "select email from CustomerLogin where email like '" + email + "%'"; - - - using (MySqlConnection connection = new MySqlConnection(_connectionString)) - { - MySqlDataAdapter da = new MySqlDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - if (ds.Tables[0].Rows.Count == 0) - return null; - else - return ds; - } - } - - } -} diff --git a/WebGoat/App_Code/DB/SqliteDbProvider.cs b/WebGoat/App_Code/DB/SqliteDbProvider.cs deleted file mode 100644 index 0e88a6d86..000000000 --- a/WebGoat/App_Code/DB/SqliteDbProvider.cs +++ /dev/null @@ -1,590 +0,0 @@ -using System; -using System.Data; -using Mono.Data.Sqlite; -using log4net; -using System.Reflection; -using System.IO; -using System.Diagnostics; -using System.Threading; - -namespace OWASP.WebGoat.NET.App_Code.DB -{ - public class SqliteDbProvider : IDbProvider - { - private string _connectionString = string.Empty; - private string _clientExec; - private string _dbFileName; - - ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - public string Name { get { return DbConstants.DB_TYPE_SQLITE; } } - - public SqliteDbProvider(ConfigFile configFile) - { - _connectionString = string.Format("Data Source={0};Version=3", configFile.Get(DbConstants.KEY_FILE_NAME)); - - _clientExec = configFile.Get(DbConstants.KEY_CLIENT_EXEC); - _dbFileName = configFile.Get(DbConstants.KEY_FILE_NAME); - - if (!File.Exists(_dbFileName)) - SqliteConnection.CreateFile(_dbFileName); - } - - public bool TestConnection() - { - try - { - using (SqliteConnection conn = new SqliteConnection(_connectionString)) - { - conn.Open(); - - using (SqliteCommand cmd = conn.CreateCommand()) - { - - cmd.CommandText = "SELECT date('now')"; - cmd.CommandType = CommandType.Text; - cmd.ExecuteReader(); - } - } - return true; - } - catch (Exception ex) - { - log.Error("Error testing DB", ex); - return false; - } - } - - public DataSet GetCatalogData() - { - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - SqliteDataAdapter da = new SqliteDataAdapter("select * from Products", connection); - DataSet ds = new DataSet(); - - da.Fill(ds); - - return ds; - } - } - - public bool IsValidCustomerLogin(string email, string password) - { - //encode password - string encoded_password = Encoder.Encode(password); - - //check email/password - string sql = "select * from CustomerLogin where email = '" + email + "' and password = '" + - encoded_password + "';"; - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - - //TODO: User reader instead (for all calls) - DataSet ds = new DataSet(); - - da.Fill(ds); - - try - { - return ds.Tables[0].Rows.Count == 0; - } - catch (Exception ex) - { - //Log this and pass the ball along. - log.Error("Error checking login", ex); - - throw new Exception("Error checking login", ex); - } - } - } - - public bool RecreateGoatDb() - { - try - { - log.Info("Running recreate"); - string args = string.Format("\"{0}\"", _dbFileName); - string script = Path.Combine(Settings.RootDir, DbConstants.DB_CREATE_SQLITE_SCRIPT); - int retVal1 = Math.Abs(Util.RunProcessWithInput(_clientExec, args, script)); - - script = Path.Combine(Settings.RootDir, DbConstants.DB_LOAD_SQLITE_SCRIPT); - int retVal2 = Math.Abs(Util.RunProcessWithInput(_clientExec, args, script)); - - return Math.Abs(retVal1) + Math.Abs(retVal2) == 0; - } - catch (Exception ex) - { - log.Error("Error rebulding DB", ex); - return false; - } - } - - //Find the bugs! - public string CustomCustomerLogin(string email, string password) - { - string error_message = null; - try - { - //get data - string sql = "select * from CustomerLogin where email = '" + email + "';"; - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - //check if email address exists - if (ds.Tables[0].Rows.Count == 0) - { - error_message = "Email Address Not Found!"; - return error_message; - } - - string encoded_password = ds.Tables[0].Rows[0]["Password"].ToString(); - string decoded_password = Encoder.Decode(encoded_password); - - if (password.Trim().ToLower() != decoded_password.Trim().ToLower()) - { - error_message = "Password Not Valid For This Email Address!"; - } - else - { - //login successful - error_message = null; - } - } - - } - catch (SqliteException ex) - { - log.Error("Error with custom customer login", ex); - error_message = ex.Message; - } - catch (Exception ex) - { - log.Error("Error with custom customer login", ex); - } - - return error_message; - } - - public string GetCustomerEmail(string customerNumber) - { - string output = null; - try - { - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - string sql = "select email from CustomerLogin where customerNumber = " + customerNumber; - SqliteCommand command = new SqliteCommand(sql, connection); - output = command.ExecuteScalar().ToString(); - } - } - catch (Exception ex) - { - output = ex.Message; - } - return output; - } - - public DataSet GetCustomerDetails(string customerNumber) - { - string sql = "select Customers.customerNumber, Customers.customerName, Customers.logoFileName, Customers.contactLastName, Customers.contactFirstName, " + - "Customers.phone, Customers.addressLine1, Customers.addressLine2, Customers.city, Customers.state, Customers.postalCode, Customers.country, " + - "Customers.salesRepEmployeeNumber, Customers.creditLimit, CustomerLogin.email, CustomerLogin.password, CustomerLogin.question_id, CustomerLogin.answer " + - "From Customers, CustomerLogin where Customers.customerNumber = CustomerLogin.customerNumber and Customers.customerNumber = " + customerNumber; - - DataSet ds = new DataSet(); - try - { - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - da.Fill(ds); - } - - } - catch (Exception ex) - { - log.Error("Error getting customer details", ex); - - throw new ApplicationException("Error getting customer details", ex); - } - return ds; - - } - - public DataSet GetOffice(string city) - { - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - string sql = "select * from Offices where city = @city"; - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - da.SelectCommand.Parameters.AddWithValue("@city", city); - DataSet ds = new DataSet(); - da.Fill(ds); - return ds; - } - } - - public DataSet GetComments(string productCode) - { - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - string sql = "select * from Comments where productCode = @productCode"; - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - da.SelectCommand.Parameters.AddWithValue("@productCode", productCode); - DataSet ds = new DataSet(); - da.Fill(ds); - return ds; - } - } - - public string AddComment(string productCode, string email, string comment) - { - string sql = "insert into Comments(productCode, email, comment) values ('" + productCode + "','" + email + "','" + comment + "');"; - string output = null; - - try - { - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - SqliteCommand command = new SqliteCommand(sql, connection); - command.ExecuteNonQuery(); - } - } - catch (Exception ex) - { - log.Error("Error adding comment", ex); - output = ex.Message; - } - - return output; - } - - public string UpdateCustomerPassword(int customerNumber, string password) - { - string sql = "update CustomerLogin set password = '" + Encoder.Encode(password) + "' where customerNumber = " + customerNumber; - string output = null; - try - { - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - SqliteCommand command = new SqliteCommand(sql, connection); - - int rows_added = command.ExecuteNonQuery(); - - log.Info("Rows Added: " + rows_added + " to comment table"); - } - } - catch (Exception ex) - { - log.Error("Error updating customer password", ex); - output = ex.Message; - } - return output; - } - - public string[] GetSecurityQuestionAndAnswer(string email) - { - string sql = "select SecurityQuestions.question_text, CustomerLogin.answer from CustomerLogin, " + - "SecurityQuestions where CustomerLogin.email = '" + email + "' and CustomerLogin.question_id = " + - "SecurityQuestions.question_id;"; - - string[] qAndA = new string[2]; - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - - DataSet ds = new DataSet(); - da.Fill(ds); - - if (ds.Tables[0].Rows.Count > 0) - { - DataRow row = ds.Tables[0].Rows[0]; - qAndA[0] = row[0].ToString(); - qAndA[1] = row[1].ToString(); - } - } - - return qAndA; - } - - public string GetPasswordByEmail(string email) - { - string result = string.Empty; - try - { - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - //get data - string sql = "select * from CustomerLogin where email = '" + email + "';"; - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - //check if email address exists - if (ds.Tables[0].Rows.Count == 0) - { - result = "Email Address Not Found!"; - } - - string encoded_password = ds.Tables[0].Rows[0]["Password"].ToString(); - string decoded_password = Encoder.Decode(encoded_password); - result = decoded_password; - } - } - catch (Exception ex) - { - result = ex.Message; - } - return result; - } - - public DataSet GetUsers() - { - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - string sql = "select * from CustomerLogin;"; - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - return ds; - } - } - - public DataSet GetOrders(int customerID) - { - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - string sql = "select * from Orders where customerNumber = " + customerID; - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - if (ds.Tables[0].Rows.Count == 0) - return null; - else - return ds; - } - } - - public DataSet GetProductDetails(string productCode) - { - string sql = string.Empty; - SqliteDataAdapter da; - DataSet ds = new DataSet(); - - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - sql = "select * from Products where productCode = '" + productCode + "'"; - da = new SqliteDataAdapter(sql, connection); - da.Fill(ds, "products"); - - sql = "select * from Comments where productCode = '" + productCode + "'"; - da = new SqliteDataAdapter(sql, connection); - da.Fill(ds, "comments"); - - DataRelation dr = new DataRelation("prod_comments", - ds.Tables["products"].Columns["productCode"], //category table - ds.Tables["comments"].Columns["productCode"], //product table - false); - - ds.Relations.Add(dr); - return ds; - } - } - - public DataSet GetOrderDetails(int orderNumber) - { - - string sql = "select Customers.customerName, Orders.customerNumber, Orders.orderNumber, Products.productName, " + - "OrderDetails.quantityOrdered, OrderDetails.priceEach, Products.productImage " + - "from OrderDetails, Products, Orders, Customers where " + - "Customers.customerNumber = Orders.customerNumber " + - "and OrderDetails.productCode = Products.productCode " + - "and Orders.orderNumber = OrderDetails.orderNumber " + - "and OrderDetails.orderNumber = " + orderNumber; - - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - if (ds.Tables[0].Rows.Count == 0) - return null; - else - return ds; - } - } - - public DataSet GetPayments(int customerNumber) - { - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - string sql = "select * from Payments where customerNumber = " + customerNumber; - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - if (ds.Tables[0].Rows.Count == 0) - return null; - else - return ds; - } - } - - public DataSet GetProductsAndCategories() - { - return GetProductsAndCategories(0); - } - - public DataSet GetProductsAndCategories(int catNumber) - { - //TODO: Rerun the database script. - string sql = string.Empty; - SqliteDataAdapter da; - DataSet ds = new DataSet(); - - //catNumber is optional. If it is greater than 0, add the clause to both statements. - string catClause = string.Empty; - if (catNumber >= 1) - catClause += " where catNumber = " + catNumber; - - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - sql = "select * from Categories" + catClause; - da = new SqliteDataAdapter(sql, connection); - da.Fill(ds, "categories"); - - sql = "select * from Products" + catClause; - da = new SqliteDataAdapter(sql, connection); - da.Fill(ds, "products"); - - - //category / products relationship - DataRelation dr = new DataRelation("cat_prods", - ds.Tables["categories"].Columns["catNumber"], //category table - ds.Tables["products"].Columns["catNumber"], //product table - false); - - ds.Relations.Add(dr); - return ds; - } - } - - public DataSet GetEmailByName(string name) - { - string sql = "select firstName, lastName, email from Employees where firstName like '" + name + "%' or lastName like '" + name + "%'"; - - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - if (ds.Tables[0].Rows.Count == 0) - return null; - else - return ds; - } - } - - public string GetEmailByCustomerNumber(string num) - { - string output = ""; - try - { - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - string sql = "select email from CustomerLogin where customerNumber = " + num; - SqliteCommand cmd = new SqliteCommand(sql, connection); - output = (string)cmd.ExecuteScalar(); - } - - } - catch (Exception ex) - { - log.Error("Error getting email by customer number", ex); - output = ex.Message; - } - - return output; - } - - public DataSet GetCustomerEmails(string email) - { - string sql = "select email from CustomerLogin where email like '" + email + "%'"; - - - using (SqliteConnection connection = new SqliteConnection(_connectionString)) - { - connection.Open(); - - SqliteDataAdapter da = new SqliteDataAdapter(sql, connection); - DataSet ds = new DataSet(); - da.Fill(ds); - - if (ds.Tables[0].Rows.Count == 0) - return null; - else - return ds; - } - } - - } -} \ No newline at end of file diff --git a/WebGoat/App_Code/Encoder.cs b/WebGoat/App_Code/Encoder.cs deleted file mode 100644 index 99bb022e3..000000000 --- a/WebGoat/App_Code/Encoder.cs +++ /dev/null @@ -1,244 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Web; -using System.IO; -using System.Text; -using System.Security.Cryptography; -using System.Data; -using System.Web.Security; - -namespace OWASP.WebGoat.NET.App_Code -{ - public class Encoder - { - //use for encryption - //encryption methods taken from: http://stackoverflow.com/questions/202011/encrypt-decrypt-string-in-net - private static byte[] _salt = Encoding.ASCII.GetBytes("o6806642kbM7c5"); - - - /// - /// Encrypt the given string using AES. The string can be decrypted using - /// DecryptStringAES(). The sharedSecret parameters must match. - /// - /// The text to encrypt. - /// A password used to generate a key for encryption. - public static string EncryptStringAES(string plainText, string sharedSecret) - { - if (string.IsNullOrEmpty(plainText)) - throw new ArgumentNullException("plainText"); - if (string.IsNullOrEmpty(sharedSecret)) - throw new ArgumentNullException("sharedSecret"); - - string outStr = null; // Encrypted string to return - RijndaelManaged aesAlg = null; // RijndaelManaged object used to encrypt the data. - - try - { - // generate the key from the shared secret and the salt - Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(sharedSecret, _salt); - - // Create a RijndaelManaged object - // with the specified key and IV. - aesAlg = new RijndaelManaged(); - aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8); - aesAlg.IV = key.GetBytes(aesAlg.BlockSize / 8); - - // Create a decrytor to perform the stream transform. - ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); - - // Create the streams used for encryption. - using (MemoryStream msEncrypt = new MemoryStream()) - { - using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) - { - using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) - { - - //Write all data to the stream. - swEncrypt.Write(plainText); - } - } - outStr = Convert.ToBase64String(msEncrypt.ToArray()); - } - } - finally - { - // Clear the RijndaelManaged object. - if (aesAlg != null) - aesAlg.Clear(); - } - - // Return the encrypted bytes from the memory stream. - return outStr; - } - - /// - /// Decrypt the given string. Assumes the string was encrypted using - /// EncryptStringAES(), using an identical sharedSecret. - /// - /// The text to decrypt. - /// A password used to generate a key for decryption. - public static string DecryptStringAES(string cipherText, string sharedSecret) - { - if (string.IsNullOrEmpty(cipherText)) - throw new ArgumentNullException("cipherText"); - if (string.IsNullOrEmpty(sharedSecret)) - throw new ArgumentNullException("sharedSecret"); - - // Declare the RijndaelManaged object - // used to decrypt the data. - RijndaelManaged aesAlg = null; - - // Declare the string used to hold - // the decrypted text. - string plaintext = null; - - try - { - // generate the key from the shared secret and the salt - Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(sharedSecret, _salt); - - // Create a RijndaelManaged object - // with the specified key and IV. - aesAlg = new RijndaelManaged(); - aesAlg.Key = key.GetBytes(aesAlg.KeySize / 8); - aesAlg.IV = key.GetBytes(aesAlg.BlockSize / 8); - - // Create a decrytor to perform the stream transform. - ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); - // Create the streams used for decryption. - byte[] bytes = Convert.FromBase64String(cipherText); - using (MemoryStream msDecrypt = new MemoryStream(bytes)) - { - using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) - { - using (StreamReader srDecrypt = new StreamReader(csDecrypt)) - - // Read the decrypted bytes from the decrypting stream - // and place them in a string. - plaintext = srDecrypt.ReadToEnd(); - } - } - } - finally - { - // Clear the RijndaelManaged object. - if (aesAlg != null) - aesAlg.Clear(); - } - - return plaintext; - } - - /// - /// returns an base64 encoded string - /// - /// string to encode - /// - public static string Encode(string s) - { - byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s); - string output = System.Convert.ToBase64String(bytes); - return output; - } - - /// - /// Converts a string from Base64 - /// - /// Base64 encoded string - /// - public static String Decode(string s) - { - byte[] bytes = System.Convert.FromBase64String(s); - string output = System.Text.Encoding.UTF8.GetString(bytes); - return output; - } - - - /// - /// From http://weblogs.asp.net/navaidakhtar/archive/2008/07/08/converting-data-table-dataset-into-json-string.aspx - /// - /// - /// string - public static string ToJSONString(DataTable dt) - { - string[] StrDc = new string[dt.Columns.Count]; - - string HeadStr = string.Empty; - for (int i = 0; i < dt.Columns.Count; i++) - { - - StrDc[i] = dt.Columns[i].Caption; - HeadStr += "\"" + StrDc[i] + "\" : \"" + StrDc[i] + i.ToString() + "¾" + "\","; - - } - - HeadStr = HeadStr.Substring(0, HeadStr.Length - 1); - StringBuilder Sb = new StringBuilder(); - - Sb.Append("{\"" + dt.TableName + "\" : ["); - for (int i = 0; i < dt.Rows.Count; i++) - { - - string TempStr = HeadStr; - - Sb.Append("{"); - for (int j = 0; j < dt.Columns.Count; j++) - { - - TempStr = TempStr.Replace(dt.Columns[j] + j.ToString() + "¾", dt.Rows[i][j].ToString()); - - } - Sb.Append(TempStr + "},"); - - } - Sb = new StringBuilder(Sb.ToString().Substring(0, Sb.ToString().Length - 1)); - - Sb.Append("]}"); - return Sb.ToString(); - } - - public static string ToJSONSAutocompleteString(string query, DataTable dt) - { - char[] badvalues = { '[', ']', '{', '}'}; - - foreach (char c in badvalues) - query = query.Replace(c, '#'); - - StringBuilder sb = new StringBuilder(); - - sb.Append("{\nquery:'" + query + "',\n"); - sb.Append("suggestions:["); - - for (int i = 0; i < dt.Rows.Count; i++) - { - DataRow row = dt.Rows[i]; - string email = row[0].ToString(); - sb.Append("'" + email + "',"); - } - - sb = new StringBuilder(sb.ToString().Substring(0, sb.ToString().Length - 1)); - sb.Append("],\n"); - sb.Append("data:" + sb.ToString().Substring(sb.ToString().IndexOf('['), (sb.ToString().LastIndexOf(']') - sb.ToString().IndexOf('[')) + 1) + "\n}"); - - return sb.ToString(); - } - - public string EncodeTicket(string token) - { - FormsAuthenticationTicket ticket = - new FormsAuthenticationTicket( - 1, //version - token, //token - DateTime.Now, //issueDate - DateTime.Now.AddDays(14), //expireDate - true, //isPersistent - "customer", //userData (customer role) - FormsAuthentication.FormsCookiePath //cookiePath - ); - - return FormsAuthentication.Encrypt(ticket); //encrypt the ticket - } - - } -} diff --git a/WebGoat/App_Code/Settings.cs b/WebGoat/App_Code/Settings.cs deleted file mode 100644 index b0873633e..000000000 --- a/WebGoat/App_Code/Settings.cs +++ /dev/null @@ -1,81 +0,0 @@ -using System; -using OWASP.WebGoat.NET.App_Code.DB; -using System.IO; -using System.Web; -using log4net; -using System.Reflection; -using System.Diagnostics; -using log4net.Config; -using log4net.Appender; -using log4net.Layout; - -namespace OWASP.WebGoat.NET.App_Code -{ - public class Settings - { - public static readonly string DefaultConfigName = string.Format("Default.{0}", DbConstants.CONFIG_EXT); - private const string PARENT_CONFIG_PATH = "Configuration"; - private const string DATA_FOLDER = "App_Data"; - private const string DEFAULT_SQLITE_NAME = "webgoat_coins.sqlite"; - - private static object _lock = new object(); - private static bool _inited = false; - - private static ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - public static void Init(HttpServerUtility server) - { - lock (_lock) - { - if (Debugger.IsAttached) - BasicConfigurator.Configure(); - else - XmlConfigurator.Configure(); - - string configPath = Path.Combine(PARENT_CONFIG_PATH, DefaultConfigName); - DefaultConfigPath = server.MapPath(configPath); - - RootDir = server.MapPath("."); - - log.Debug("DYLD_FALLBACK_LIBRARY_PATH: " + Environment.GetEnvironmentVariable("DYLD_FALLBACK_LIBRARY_PATH")); - log.Debug("PWD: " + Environment.CurrentDirectory); - - //By default if there's no config let's create a sqlite db. - string defaultConfigPath = DefaultConfigPath; - - string sqlitePath = Path.Combine(DATA_FOLDER, DEFAULT_SQLITE_NAME); - sqlitePath = server.MapPath(sqlitePath); - - if (!File.Exists(defaultConfigPath)) - { - ConfigFile file = new ConfigFile(defaultConfigPath); - - file.Set(DbConstants.KEY_DB_TYPE, DbConstants.DB_TYPE_SQLITE); - file.Set(DbConstants.KEY_FILE_NAME, sqlitePath); - file.Save(); - - CurrentConfigFile = file; - } - else - { - CurrentConfigFile = new ConfigFile(defaultConfigPath); - CurrentConfigFile.Load(); - } - - CurrentDbProvider = DbProviderFactory.Create(CurrentConfigFile); - _inited = true; - } - - } - - public static string RootDir { get; private set; } - - public static IDbProvider CurrentDbProvider { get; set; } - - public static string DefaultConfigPath { get; private set; } - - public static ConfigFile CurrentConfigFile { get; set; } - - public static bool Inited { get { lock (_lock) { return _inited; } } } - } -} \ No newline at end of file diff --git a/WebGoat/App_Code/Util.cs b/WebGoat/App_Code/Util.cs deleted file mode 100644 index a88fa9ff5..000000000 --- a/WebGoat/App_Code/Util.cs +++ /dev/null @@ -1,94 +0,0 @@ -using System; -using System.Diagnostics; -using log4net; -using System.Reflection; -using System.IO; -using System.Threading; - -namespace OWASP.WebGoat.NET.App_Code -{ - public class Util - { - private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - public static int RunProcessWithInput(string cmd, string args, string input) - { - ProcessStartInfo startInfo = new ProcessStartInfo - { - WorkingDirectory = Settings.RootDir, - FileName = cmd, - Arguments = args, - UseShellExecute = false, - RedirectStandardInput = true, - RedirectStandardError = true, - RedirectStandardOutput = true, - }; - - using (Process process = new Process()) - { - process.EnableRaisingEvents = true; - process.StartInfo = startInfo; - - process.OutputDataReceived += (sender, e) => { - if (e.Data != null) - log.Info(e.Data); - }; - - process.ErrorDataReceived += (sender, e) => - { - if (e.Data != null) - log.Error(e.Data); - }; - - AutoResetEvent are = new AutoResetEvent(false); - - process.Exited += (sender, e) => - { - Thread.Sleep(1000); - are.Set(); - log.Info("Process exited"); - - }; - - process.Start(); - - using (StreamReader reader = new StreamReader(new FileStream(input, FileMode.Open))) - { - string line; - string replaced; - while ((line = reader.ReadLine()) != null) - { - if (Environment.OSVersion.Platform == PlatformID.Win32NT) - replaced = line.Replace("DB_Scripts/datafiles/", "DB_Scripts\\\\datafiles\\\\"); - else - replaced = line; - - log.Debug("Line: " + replaced); - - process.StandardInput.WriteLine(replaced); - } - } - - process.StandardInput.Close(); - - - process.BeginOutputReadLine(); - process.BeginErrorReadLine(); - - //NOTE: Looks like we have a mono bug: https://bugzilla.xamarin.com/show_bug.cgi?id=6291 - //have a wait time for now. - - are.WaitOne(10 * 1000); - - if (process.HasExited) - return process.ExitCode; - else //WTF? Should have exited dammit! - { - process.Kill(); - return 1; - } - } - } - } -} - diff --git a/WebGoat/App_Code/VeryWeakRandom.cs b/WebGoat/App_Code/VeryWeakRandom.cs deleted file mode 100644 index ed70a3ce3..000000000 --- a/WebGoat/App_Code/VeryWeakRandom.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; - -namespace OWASP.WebGoat.NET.App_Code -{ - public class VeryWeakRandom - { - private uint _seed = 7; - private uint _helper = 1; - - public VeryWeakRandom() {} - - public VeryWeakRandom(uint seed) - { - _seed = seed; - } - - public uint Next(uint min, uint max) - { - _seed = Peek(min, max); - _helper++; - - return _seed; - } - - public uint Peek(uint min, uint max) - { - if (min >= max) - throw new Exception("Min must be smaller than max"); - - var seed = _seed + _helper; - - if (seed > max) - seed = min; - - return seed; - } - } -} diff --git a/WebGoat/App_Code/WeakMessageDigest.cs b/WebGoat/App_Code/WeakMessageDigest.cs deleted file mode 100644 index 9af3d4216..000000000 --- a/WebGoat/App_Code/WeakMessageDigest.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Text; -using log4net; -using System.Reflection; - -namespace OWASP.WebGoat.NET.App_Code -{ - public class WeakMessageDigest - { - private static readonly ASCIIEncoding ascii = new ASCIIEncoding(); - - private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - public static string GenerateWeakDigest(string msg) - { - string[] tokens = msg.Split(new[] { ' ' }); - - byte[] bytes = new byte[tokens.Length]; - - for(int i=0; i < tokens.Length; i++) - { - string token = tokens[i]; - bytes[i] = GenByte(token); - } - - log.Debug(string.Format("Bytes for {0}...", msg)); - log.Debug(Print(bytes)); - - return ascii.GetString(bytes); - } - - //Algo is dead simple. Just sum up the ASCII value and mod back to a printable char. - public static byte GenByte(string word) - { - int val = 0; - byte bVal; - - foreach(char c in word) - val += (byte) c; - - //NOTE: Need to be between 32 and 126 in the ASCII table to be printable - bVal = (byte) (val % (127 - 32 -1) + 33); - - return bVal; - } - - private static string Print(byte[] bytes) - { - StringBuilder strBuild = new StringBuilder(); - - foreach(byte b in bytes) - strBuild.AppendFormat("{0},", b); - - return strBuild.ToString(); - } - } - -} - diff --git a/WebGoat/App_Code/WeakRandom.cs b/WebGoat/App_Code/WeakRandom.cs deleted file mode 100644 index f0b4ae2ff..000000000 --- a/WebGoat/App_Code/WeakRandom.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; - -namespace OWASP.WebGoat.NET.App_Code -{ - public class WeakRandom - { - private uint _seed = 7; - - public WeakRandom() {} - - public WeakRandom(uint seed) - { - _seed = seed; - } - - public uint Next(uint min, uint max) - { - if (min >= max) - throw new Exception("Min must be smaller than max"); - - unchecked //Just use next number from overflow - { - _seed = _seed * _seed + _seed; - } - - return _seed % (max - min) + min; - } - - public uint Peek(uint min, uint max) - { - if (min >= max) - throw new Exception("Min must be smaller than max"); - - unchecked //Just use next number from overflow - { - var seed = _seed * _seed + _seed; - - return seed % (max - min) + min; - } - } - } -} \ No newline at end of file diff --git a/WebGoat/App_Data/XmlInjectionUsers.xml b/WebGoat/App_Data/XmlInjectionUsers.xml deleted file mode 100644 index c76f29663..000000000 --- a/WebGoat/App_Data/XmlInjectionUsers.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - Todd Smith - todd@example.com</email></user><user><name>Tim Toe</name><email>tim@example.com - - - Al Thompson - al@example.com - - \ No newline at end of file diff --git a/WebGoat/App_Themes/Default/00.reset.css b/WebGoat/App_Themes/Default/00.reset.css deleted file mode 100644 index 6e65b8372..000000000 --- a/WebGoat/App_Themes/Default/00.reset.css +++ /dev/null @@ -1,44 +0,0 @@ -html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td -{ - margin: 0; - padding: 0; - border: 0; - outline: 0; - font-size: 100%; - vertical-align: baseline; - background: transparent; -} -body -{ - line-height: 1; -} -ol, ul -{ - list-style: none; -} -blockquote, q -{ - quotes: none; -} -blockquote:before, blockquote:after, q:before, q:after -{ - content: ''; - content: none; -} -:focus -{ - outline: 0; -} -ins -{ - text-decoration: none; -} -del -{ - text-decoration: line-through; -} -table -{ - border-collapse: collapse; - border-spacing: 0; -} diff --git a/WebGoat/App_Themes/Default/01.960_24_col.css b/WebGoat/App_Themes/Default/01.960_24_col.css deleted file mode 100644 index 4974a2f84..000000000 --- a/WebGoat/App_Themes/Default/01.960_24_col.css +++ /dev/null @@ -1,520 +0,0 @@ -body -{ - min-width: 960px; -} -.container_24 -{ - margin-left: auto; - margin-right: auto; - width: 960px; - -} -.grid_1, .grid_2, .grid_3, .grid_4, .grid_5, .grid_6, .grid_7, .grid_8, .grid_9, .grid_10, .grid_11, .grid_12, .grid_13, .grid_14, .grid_15, .grid_16, .grid_17, .grid_18, .grid_19, .grid_20, .grid_21, .grid_22, .grid_23, .grid_24 -{ - display: inline; - float: left; - margin-left: 5px; - margin-right: 5px; -} -.push_1, .pull_1, .push_2, .pull_2, .push_3, .pull_3, .push_4, .pull_4, .push_5, .pull_5, .push_6, .pull_6, .push_7, .pull_7, .push_8, .pull_8, .push_9, .pull_9, .push_10, .pull_10, .push_11, .pull_11, .push_12, .pull_12, .push_13, .pull_13, .push_14, .pull_14, .push_15, .pull_15, .push_16, .pull_16, .push_17, .pull_17, .push_18, .pull_18, .push_19, .pull_19, .push_20, .pull_20, .push_21, .pull_21, .push_22, .pull_22, .push_23, .pull_23 -{ - position: relative; -} -.alpha -{ - margin-left: 0; -} -.omega -{ - margin-right: 0; -} -.container_24 .grid_1 -{ - width: 30px; -} -.container_24 .grid_2 -{ - width: 70px; -} -.container_24 .grid_3 -{ - width: 110px; -} -.container_24 .grid_4 -{ - width: 150px; -} -.container_24 .grid_5 -{ - width: 190px; -} -.container_24 .grid_6 -{ - width: 230px; -} -.container_24 .grid_7 -{ - width: 270px; -} -.container_24 .grid_8 -{ - width: 310px; -} -.container_24 .grid_9 -{ - width: 350px; -} -.container_24 .grid_10 -{ - width: 390px; -} -.container_24 .grid_11 -{ - width: 430px; -} -.container_24 .grid_12 -{ - width: 470px; -} -.container_24 .grid_13 -{ - width: 510px; -} -.container_24 .grid_14 -{ - width: 550px; -} -.container_24 .grid_15 -{ - width: 590px; -} -.container_24 .grid_16 -{ - width: 630px; -} -.container_24 .grid_17 -{ - width: 670px; -} -.container_24 .grid_18 -{ - width: 710px; -} -.container_24 .grid_19 -{ - width: 750px; -} -.container_24 .grid_20 -{ - width: 790px; -} -.container_24 .grid_21 -{ - width: 830px; -} -.container_24 .grid_22 -{ - width: 870px; -} -.container_24 .grid_23 -{ - width: 910px; -} -.container_24 .grid_24 -{ - width: 950px; -} -.container_24 .prefix_1 -{ - padding-left: 40px; -} -.container_24 .prefix_2 -{ - padding-left: 80px; -} -.container_24 .prefix_3 -{ - padding-left: 120px; -} -.container_24 .prefix_4 -{ - padding-left: 160px; -} -.container_24 .prefix_5 -{ - padding-left: 200px; -} -.container_24 .prefix_6 -{ - padding-left: 240px; -} -.container_24 .prefix_7 -{ - padding-left: 280px; -} -.container_24 .prefix_8 -{ - padding-left: 320px; -} -.container_24 .prefix_9 -{ - padding-left: 360px; -} -.container_24 .prefix_10 -{ - padding-left: 400px; -} -.container_24 .prefix_11 -{ - padding-left: 440px; -} -.container_24 .prefix_12 -{ - padding-left: 480px; -} -.container_24 .prefix_13 -{ - padding-left: 520px; -} -.container_24 .prefix_14 -{ - padding-left: 560px; -} -.container_24 .prefix_15 -{ - padding-left: 600px; -} -.container_24 .prefix_16 -{ - padding-left: 640px; -} -.container_24 .prefix_17 -{ - padding-left: 680px; -} -.container_24 .prefix_18 -{ - padding-left: 720px; -} -.container_24 .prefix_19 -{ - padding-left: 760px; -} -.container_24 .prefix_20 -{ - padding-left: 800px; -} -.container_24 .prefix_21 -{ - padding-left: 840px; -} -.container_24 .prefix_22 -{ - padding-left: 880px; -} -.container_24 .prefix_23 -{ - padding-left: 920px; -} -.container_24 .suffix_1 -{ - padding-right: 40px; -} -.container_24 .suffix_2 -{ - padding-right: 80px; -} -.container_24 .suffix_3 -{ - padding-right: 120px; -} -.container_24 .suffix_4 -{ - padding-right: 160px; -} -.container_24 .suffix_5 -{ - padding-right: 200px; -} -.container_24 .suffix_6 -{ - padding-right: 240px; -} -.container_24 .suffix_7 -{ - padding-right: 280px; -} -.container_24 .suffix_8 -{ - padding-right: 320px; -} -.container_24 .suffix_9 -{ - padding-right: 360px; -} -.container_24 .suffix_10 -{ - padding-right: 400px; -} -.container_24 .suffix_11 -{ - padding-right: 440px; -} -.container_24 .suffix_12 -{ - padding-right: 480px; -} -.container_24 .suffix_13 -{ - padding-right: 520px; -} -.container_24 .suffix_14 -{ - padding-right: 560px; -} -.container_24 .suffix_15 -{ - padding-right: 600px; -} -.container_24 .suffix_16 -{ - padding-right: 640px; -} -.container_24 .suffix_17 -{ - padding-right: 680px; -} -.container_24 .suffix_18 -{ - padding-right: 720px; -} -.container_24 .suffix_19 -{ - padding-right: 760px; -} -.container_24 .suffix_20 -{ - padding-right: 800px; -} -.container_24 .suffix_21 -{ - padding-right: 840px; -} -.container_24 .suffix_22 -{ - padding-right: 880px; -} -.container_24 .suffix_23 -{ - padding-right: 920px; -} -.container_24 .push_1 -{ - left: 40px; -} -.container_24 .push_2 -{ - left: 80px; -} -.container_24 .push_3 -{ - left: 120px; -} -.container_24 .push_4 -{ - left: 160px; -} -.container_24 .push_5 -{ - left: 200px; -} -.container_24 .push_6 -{ - left: 240px; -} -.container_24 .push_7 -{ - left: 280px; -} -.container_24 .push_8 -{ - left: 320px; -} -.container_24 .push_9 -{ - left: 360px; -} -.container_24 .push_10 -{ - left: 400px; -} -.container_24 .push_11 -{ - left: 440px; -} -.container_24 .push_12 -{ - left: 480px; -} -.container_24 .push_13 -{ - left: 520px; -} -.container_24 .push_14 -{ - left: 560px; -} -.container_24 .push_15 -{ - left: 600px; -} -.container_24 .push_16 -{ - left: 640px; -} -.container_24 .push_17 -{ - left: 680px; -} -.container_24 .push_18 -{ - left: 720px; -} -.container_24 .push_19 -{ - left: 760px; -} -.container_24 .push_20 -{ - left: 800px; -} -.container_24 .push_21 -{ - left: 840px; -} -.container_24 .push_22 -{ - left: 880px; -} -.container_24 .push_23 -{ - left: 920px; -} -.container_24 .pull_1 -{ - left: -40px; -} -.container_24 .pull_2 -{ - left: -80px; -} -.container_24 .pull_3 -{ - left: -120px; -} -.container_24 .pull_4 -{ - left: -160px; -} -.container_24 .pull_5 -{ - left: -200px; -} -.container_24 .pull_6 -{ - left: -240px; -} -.container_24 .pull_7 -{ - left: -280px; -} -.container_24 .pull_8 -{ - left: -320px; -} -.container_24 .pull_9 -{ - left: -360px; -} -.container_24 .pull_10 -{ - left: -400px; -} -.container_24 .pull_11 -{ - left: -440px; -} -.container_24 .pull_12 -{ - left: -480px; -} -.container_24 .pull_13 -{ - left: -520px; -} -.container_24 .pull_14 -{ - left: -560px; -} -.container_24 .pull_15 -{ - left: -600px; -} -.container_24 .pull_16 -{ - left: -640px; -} -.container_24 .pull_17 -{ - left: -680px; -} -.container_24 .pull_18 -{ - left: -720px; -} -.container_24 .pull_19 -{ - left: -760px; -} -.container_24 .pull_20 -{ - left: -800px; -} -.container_24 .pull_21 -{ - left: -840px; -} -.container_24 .pull_22 -{ - left: -880px; -} -.container_24 .pull_23 -{ - left: -920px; -} -.clear -{ - clear: both; - display: block; - overflow: hidden; - visibility: hidden; - width: 0; - height: 0; -} -.clearfix:before, .clearfix:after -{ - content: '\0020'; - display: block; - overflow: hidden; - visibility: hidden; - width: 0; - height: 0; -} -.clearfix:after -{ - clear: both; -} -.clearfix -{ - zoom: 1; -} diff --git a/WebGoat/App_Themes/Default/02.text.css b/WebGoat/App_Themes/Default/02.text.css deleted file mode 100644 index c7aa02746..000000000 --- a/WebGoat/App_Themes/Default/02.text.css +++ /dev/null @@ -1,57 +0,0 @@ -body -{ - font: 13px/1.5 'Segoe UI','Helvetica Neue',Arial,'Liberation Sans',FreeSans,sans-serif; -} - -a:focus -{ - outline: 1px dotted; -} -hr -{ - border: 0 #ccc solid; - border-top-width: 1px; - clear: both; - height: 0; -} -h1 -{ - font-size: 25px; -} -h2 -{ - font-size: 23px; -} -h3 -{ - font-size: 21px; -} -h4 -{ - font-size: 19px; -} -h5 -{ - font-size: 17px; -} -h6 -{ - font-size: 15px; -} -ol -{ - list-style: decimal; -} -ul -{ - list-style: disc; -} -li -{ - -} -p, dl, hr, h1, h2, h3, h4, h5, h6, ol, ul, pre, table, address, fieldset -{ - margin-bottom: 20px; - text-align: left; -} diff --git a/WebGoat/App_Themes/Default/03.layout.css b/WebGoat/App_Themes/Default/03.layout.css deleted file mode 100644 index 5e0bce49a..000000000 --- a/WebGoat/App_Themes/Default/03.layout.css +++ /dev/null @@ -1,201 +0,0 @@ -body -{ - min-height:100%; - text-align: center; - /* background-color: #e7f0fa; */ - background-color: #ffffff; - margin:0; - padding:0; - height:100%; - padding-bottom:10px; -} -.container_16 -{ - display: block; - text-align: left; - min-height:100%; - position:relative; -} -.HeaderTop -{ - display: block; -} -.branding -{ - background-image: url('./images/logo.png'); - background-repeat: no-repeat; - height: 69px; -} -.branding-x2 -{ - background-image: url('./images/logo2.png'); - background-repeat: no-repeat; - height: 67px; -} -.eisk-info -{ - color: #14283C; - font-size: 12px; - line-height: normal; - /* border-right: 1px solid #D6E0E4;*/ -} -.eisk-info a -{ - color: #2489b0; - text-decoration: none; -} -.eisk-info a:hover -{ - color: #1e7495; - text-decoration: none; -} -.HeaderGrad -{ - background-image: url('./images/header-grad.png'); - height: 96px; - width: 100%; -} -.Header -{ - padding-top: 20px; -} - -.HeadingMain h1 -{ - font-size: 5em; -} - -.HeadingMain h2 -{ - font-size: 3em; - margin-top: -1em; -} -.UtilityMenu -{ - color: #90B9D2; - text-align: right; -} -.UtilityMenu a, .UtilityMenu a:visited -{ - color: #fff; - text-decoration: none; -} -.UtilityMenu a:hover, .UtilityMenu a:active -{ - color: #e3eff6; -} - - -.ContentMain -{ - min-height:100%; - height:100%; - background-color: #fff; - /* border-bottom: solid 1px #cdd5de; */ - text-align: left; - padding-bottom: 120px; -} -.Content -{ - padding-left: 50px; -} -.ContentArea a -{ - color: #4D8FCF; - -} -.ContentArea a:hover -{ - color: #417BAF; -} -.ContentArea ul -{ - list-style: square inside none; -} -.title-regular, .title-regular-2, .title-regular-3, .title-regular-4 -{ - color: #2D5883; - font-weight: normal; - text-transform: uppercase; - } -.title-regular -{ - border-bottom: 1px solid #D6E7F1; - -} -.title-regular-2 -{ - border: none; - font-size: 1.5em; - margin-bottom: 10px; -} -.title-regular-3 -{ - border: none; - font-size: 1.25em; - margin-bottom: 5px; -} -. .round-box -{ - -moz-border-radius: 6px; -} -.FooterMain -{ - text-align: left; - padding: 20px 0; - bottom:0; - width:100%; - height:60px; -} -.grid-viewer -{ - overflow: auto; - margin: 0; -} -.button-right -{ - float: right; - position: relative; - top: 10px !important; -} -.ui-datepicker-trigger -{ - left: 5px; - position: relative; - top: 6px; - cursor: pointer; -} -.ui-datepicker-div select -{ - padding: 0; -} - -.align-right -{ - text-align: right; -} -.required-field-indicator -{ - color: #CF0C2F; - vertical-align: sub; -} - -table.customerdata { - border-width: 2px; - border-spacing: 5px; - border-style: dotted; - border-color: gray; - border-collapse: collapse; - background-color: rgb(250, 240, 230); - margin-left:auto; - margin-right:auto; - width:75%; -} - -table.customerdata td { - border-width: 1px; - padding: 5px; - border-style: inset; - border-color: gray; - background-color: white; -} \ No newline at end of file diff --git a/WebGoat/App_Themes/Default/BreadCrumb.css b/WebGoat/App_Themes/Default/BreadCrumb.css deleted file mode 100644 index 82b9c500b..000000000 --- a/WebGoat/App_Themes/Default/BreadCrumb.css +++ /dev/null @@ -1,94 +0,0 @@ -/* Float Clearing - ---------------------------------------------------------------------*/ - -.module:after -{ - clear: both; - content: "."; - display: block; - height: 0; - visibility: hidden; -} - -/* float clearing for IE6 */ -* html .module -{ - height: 1%; - overflow: visible; -} - -/* float clearing for IE7 */ -* + html .module -{ - min-height: 1%; -} - -/* Breadcrumb Styles - ---------------------------------------------------------------------*/ - -.breadCrumb -{ - margin: 0; - padding: 0; - /* float: left;*/ - display: block; - height: 21px; - overflow: hidden; - /*width: 990px;*/ - padding: 5px 0; - background: #fff; -} -.bc-container -{ - margin: 0; - padding: 0; - height: 21px; - display: block; -} -.bc-seperator -{ - display: block; - float: left; - position: relative; - height: 21px; - overflow: hidden; - line-height: 21px; - margin: 0px 6px 0px 0; - padding: 0px 10px 0px 0; - font-size: .9167em; - background: url(./images/Chevron.gif) no-repeat 100% 0; -} - - -.breadCrumb a -{ - display: block; - position: relative; - height: 21px; - line-height: 21px; - overflow: hidden; - float: left; - color:#2D5883; - text-decoration:none; -} -.bc-container .first -{ - height: 16px !important; - text-indent: -1000em; - width: 16px; - padding: 0; - margin-top: 2px; - overflow: hidden; - background: url(./images/IconHome.gif) no-repeat 0 0; -} -.bc-container .first:hover -{ - background-position: 0 -16px; -} -.bc-container .last -{ - background: none; - margin-right: 0; - padding-right: 0; -} - diff --git a/WebGoat/App_Themes/Default/Forms.css b/WebGoat/App_Themes/Default/Forms.css deleted file mode 100644 index 72ce32859..000000000 --- a/WebGoat/App_Themes/Default/Forms.css +++ /dev/null @@ -1,196 +0,0 @@ -/* -------------------------------------------------------------- - - forms.css - * Sets up some default styling for forms - * Gives you classes to enhance your forms - - Usage: - * For text fields, use class .title or .text - * For inline forms, use .inline (even when using columns) - --------------------------------------------------------------- */ - -label -{ - font-weight: normal; -} -fieldset -{ - padding: 1.4em; - margin: 0 0 1.5em 0; - border: 1px solid #ccc; -} -legend -{ - font-weight: bold; - font-size: 1.2em; -} - - -/* Form fields --------------------------------------------------------------- */ - -input[type=text], input[type=password], input.text, input.title, textarea, select -{ - background-color: #fff; - border: 1px solid #bbb; -} -input[type=text]:focus, input[type=password]:focus, input.text:focus, input.title:focus, textarea:focus, select:focus -{ - border-color: #666; -} - -input[type=text], input[type=password], input.text, input.title, textarea, select -{ - margin: 0.5em 0; -} - -input.text, input.title -{ - width: 300px; - padding: 5px; -} -input.title -{ - font-size: 1.5em; -} -textarea -{ - padding: 5px; -} - -input[type=checkbox], input[type=radio], input.checkbox, input.radio -{ - position: relative; - top: .25em; -} - -form.inline -{ - line-height: 3; -} -form.inline p -{ - margin-bottom: 0; -} - - -/* Success, notice and error boxes --------------------------------------------------------------- */ - -.error, .notice, .success, .message, .product, .product2, .logo -{ - padding: .8em; - margin-bottom: 1em; - border: 2px solid #ddd; -} - -.error -{ - background: #FBE3E4; - color: #8a1f11; - border-color: #FBC2C4; -} -.notice -{ - background: #FFF6BF; - color: #514721; - border-color: #FFD324; -} -.success -{ - background: #E6EFC2; - color: #264409; - border-color: #C6D880; -} -.message -{ - background: #FFFFFF; - color: #264409; - border-color: #C6D880; -} - -.product, .product2 -{ - background: #ffffff; - border-color: #463E3F; - border: 5px solid #ddd; - -moz-border-radius: 15px; - margin-left:auto; - margin-right:auto; - width:50%; -} - -.product2 -{ - width:80%; - text-transform:uppercase; - border-color: #6D6968; - padding:30px; -} -.logo -{ - display: block; - margin-left: auto; - margin-right: auto; - text-align: center; -} - - -.error a -{ - color: #8a1f11; -} -.notice a -{ - color: #514721; -} -.success a -{ - color: #264409; -} -.product a -{ - color: #264409; -} -.product2 a -{ - color: #264409; -} - - -/*MODIFIED TO FIT THE APP'S NEEDS*/ - -input[type="checkbox"], input[type="radio"], input.checkbox, input.radio -{ - top: 0.05em; -} - -/*AUTOCLEAR COLOR*/ - -.default -{ - color: Gray; -} -/*header search box*/ -.UtilityMenu .search-box .text -{ - width: 200px; -} -select -{ - padding: 5px; -} - -.validator -{ - color:Red; -} - -/* TINY */ -.tiny -{ - font-family: verdana,arial,helvetica,sans-serif; - font-size: x-small; - color: #E47911; -} \ No newline at end of file diff --git a/WebGoat/App_Themes/Default/WebGoat.skin b/WebGoat/App_Themes/Default/WebGoat.skin deleted file mode 100644 index dfa8c0b07..000000000 --- a/WebGoat/App_Themes/Default/WebGoat.skin +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - -
- Sorry, no data available. -
-
-
- - - - - - \ No newline at end of file diff --git a/WebGoat/App_Themes/Default/buttons.css b/WebGoat/App_Themes/Default/buttons.css deleted file mode 100644 index 56ecfa410..000000000 --- a/WebGoat/App_Themes/Default/buttons.css +++ /dev/null @@ -1,262 +0,0 @@ -/* button ----------------------------------------------- */ -.button { - display: inline-block; - zoom: 1; /* zoom and *display = ie7 hack for display:inline-block */ - *display: inline; - vertical-align: baseline; - margin: 0 2px; - outline: none; - cursor: pointer; - text-align: center; - text-decoration: none; - font: 14px/100% Arial, Helvetica, sans-serif; - padding: .5em 2em .55em; - text-shadow: 0 1px 1px rgba(0,0,0,.3); - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - border-radius: .5em; - -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2); - -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2); - box-shadow: 0 1px 2px rgba(0,0,0,.2); - /* default color */ - color: #d9eef7 !important; - border: solid 1px #0076a3; - background: #0095cd; - background: -webkit-gradient(linear, left top, left bottom, from(#00adee), to(#0078a5)); - background: -moz-linear-gradient(top, #00adee, #0078a5); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00adee', endColorstr='#0078a5'); -} -.button:hover { - text-decoration: none; - /* default color */ - background: #007ead; - background: -webkit-gradient(linear, left top, left bottom, from(#0095cc), to(#00678e)); - background: -moz-linear-gradient(top, #0095cc, #00678e); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0095cc', endColorstr='#00678e'); -} -.button:active { - position: relative; - top: 1px; - /* default color */ - color: #80bed6 !important; - background: -webkit-gradient(linear, left top, left bottom, from(#0078a5), to(#00adee)); - background: -moz-linear-gradient(top, #0078a5, #00adee); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0078a5', endColorstr='#00adee'); -} - -.bigrounded { - -webkit-border-radius: 2em; - -moz-border-radius: 2em; - border-radius: 2em; -} -.medium { - font-size: 12px; - padding: .4em 1.5em .42em; -} -.small { - font-size: 11px; - padding: .2em 1em .275em; -} - -/* color styles ----------------------------------------------- */ - -/* black */ -.black { - color: #d7d7d7 !important; - border: solid 1px #333; - background: #333; - background: -webkit-gradient(linear, left top, left bottom, from(#666), to(#000)); - background: -moz-linear-gradient(top, #666, #000); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#666666', endColorstr='#000000'); -} -.black:hover { - background: #000 !important; - background: -webkit-gradient(linear, left top, left bottom, from(#444), to(#000)); - background: -moz-linear-gradient(top, #444, #000); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#444444', endColorstr='#000000'); -} -.black:active { - color: #666 !important; - background: -webkit-gradient(linear, left top, left bottom, from(#000), to(#444)); - background: -moz-linear-gradient(top, #000, #444); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#000000', endColorstr='#666666'); -} - -/* gray */ -.gray { - color: #e9e9e9 !important; - border: solid 1px #555; - background: #6e6e6e; - background: -webkit-gradient(linear, left top, left bottom, from(#888), to(#575757)); - background: -moz-linear-gradient(top, #888, #575757); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#888888', endColorstr='#575757'); -} -.gray:hover { - background: #616161 !important; - background: -webkit-gradient(linear, left top, left bottom, from(#757575), to(#4b4b4b)); - background: -moz-linear-gradient(top, #757575, #4b4b4b); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#757575', endColorstr='#4b4b4b'); -} -.gray:active { - color: #afafaf !important; - background: -webkit-gradient(linear, left top, left bottom, from(#575757), to(#888)); - background: -moz-linear-gradient(top, #575757, #888); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#575757', endColorstr='#888888'); -} - -/* white */ -.white { - color: #606060 !important; - border: solid 1px #b7b7b7; - background: #fff; - background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#ededed)); - background: -moz-linear-gradient(top, #fff, #ededed); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed'); -} -.white:hover { - background: #ededed !important; - background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#dcdcdc)); - background: -moz-linear-gradient(top, #fff, #dcdcdc); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#dcdcdc'); -} -.white:active { - color: #999 !important; - background: -webkit-gradient(linear, left top, left bottom, from(#ededed), to(#fff)); - background: -moz-linear-gradient(top, #ededed, #fff); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#ffffff'); -} - -/* orange */ -.orange { - color: #fef4e9 !important; - border: solid 1px #da7c0c; - background: #f78d1d; - background: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f47a20)); - background: -moz-linear-gradient(top, #faa51a, #f47a20); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#faa51a', endColorstr='#f47a20'); -} -.orange:hover { - background: #f47c20 !important; - background: -webkit-gradient(linear, left top, left bottom, from(#f88e11), to(#f06015)); - background: -moz-linear-gradient(top, #f88e11, #f06015); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f88e11', endColorstr='#f06015'); -} -.orange:active { - color: #fcd3a5 !important; - background: -webkit-gradient(linear, left top, left bottom, from(#f47a20), to(#faa51a)); - background: -moz-linear-gradient(top, #f47a20, #faa51a); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f47a20', endColorstr='#faa51a'); -} - -/* red */ -.red { - color: #faddde !important; - border: solid 1px #980c10; - background: #d81b21; - background: -webkit-gradient(linear, left top, left bottom, from(#ed1c24), to(#aa1317)); - background: -moz-linear-gradient(top, #ed1c24, #aa1317); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ed1c24', endColorstr='#aa1317'); -} -.red:hover { - background: #b61318; - background: -webkit-gradient(linear, left top, left bottom, from(#c9151b), to(#a11115)); - background: -moz-linear-gradient(top, #c9151b, #a11115); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c9151b', endColorstr='#a11115'); -} -.red:active { - color: #de898c !important; - background: -webkit-gradient(linear, left top, left bottom, from(#aa1317), to(#ed1c24)); - background: -moz-linear-gradient(top, #aa1317, #ed1c24); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#aa1317', endColorstr='#ed1c24'); -} - -/* blue */ -.blue { - color: #d9eef7 !important; - border: solid 1px #0076a3; - background: #0095cd; - background: -webkit-gradient(linear, left top, left bottom, from(#00adee), to(#0078a5)); - background: -moz-linear-gradient(top, #00adee, #0078a5); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00adee', endColorstr='#0078a5'); -} -.blue:hover { - background: #007ead; - background: -webkit-gradient(linear, left top, left bottom, from(#0095cc), to(#00678e)); - background: -moz-linear-gradient(top, #0095cc, #00678e); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0095cc', endColorstr='#00678e'); -} -.blue:active { - color: #80bed6 !important; - background: -webkit-gradient(linear, left top, left bottom, from(#0078a5), to(#00adee)); - background: -moz-linear-gradient(top, #0078a5, #00adee); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0078a5', endColorstr='#00adee'); -} - -/* rosy */ -.rosy { - color: #fae7e9 !important; - border: solid 1px #b73948; - background: #da5867; - background: -webkit-gradient(linear, left top, left bottom, from(#f16c7c), to(#bf404f)); - background: -moz-linear-gradient(top, #f16c7c, #bf404f); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f16c7c', endColorstr='#bf404f'); -} -.rosy:hover { - background: #ba4b58 !important; - background: -webkit-gradient(linear, left top, left bottom, from(#cf5d6a), to(#a53845)); - background: -moz-linear-gradient(top, #cf5d6a, #a53845); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cf5d6a', endColorstr='#a53845'); -} -.rosy:active { - color: #dca4ab !important; - background: -webkit-gradient(linear, left top, left bottom, from(#bf404f), to(#f16c7c)); - background: -moz-linear-gradient(top, #bf404f, #f16c7c); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bf404f', endColorstr='#f16c7c'); -} - -/* green */ -.green { - color: #e8f0de !important; - border: solid 1px #538312; - background: #64991e; - background: -webkit-gradient(linear, left top, left bottom, from(#7db72f), to(#4e7d0e)); - background: -moz-linear-gradient(top, #7db72f, #4e7d0e); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7db72f', endColorstr='#4e7d0e'); -} -.green:hover { - background: #538018; - background: -webkit-gradient(linear, left top, left bottom, from(#6b9d28), to(#436b0c)); - background: -moz-linear-gradient(top, #6b9d28, #436b0c); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#6b9d28', endColorstr='#436b0c'); -} -.green:active { - color: #a9c08c !important; - background: -webkit-gradient(linear, left top, left bottom, from(#4e7d0e), to(#7db72f)); - background: -moz-linear-gradient(top, #4e7d0e, #7db72f); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4e7d0e', endColorstr='#7db72f'); -} - -/* pink */ -.pink { - color: #feeef5 !important; - border: solid 1px #d2729e; - background: #f895c2; - background: -webkit-gradient(linear, left top, left bottom, from(#feb1d3), to(#f171ab)); - background: -moz-linear-gradient(top, #feb1d3, #f171ab); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#feb1d3', endColorstr='#f171ab'); -} -.pink:hover { - background: #d57ea5; - background: -webkit-gradient(linear, left top, left bottom, from(#f4aacb), to(#e86ca4)); - background: -moz-linear-gradient(top, #f4aacb, #e86ca4); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f4aacb', endColorstr='#e86ca4'); -} -.pink:active { - color: #f3c3d9 !important; - background: -webkit-gradient(linear, left top, left bottom, from(#f171ab), to(#feb1d3)); - background: -moz-linear-gradient(top, #f171ab, #feb1d3); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f171ab', endColorstr='#feb1d3'); -} - diff --git a/WebGoat/App_Themes/Default/grids.css b/WebGoat/App_Themes/Default/grids.css deleted file mode 100644 index fab4ad529..000000000 --- a/WebGoat/App_Themes/Default/grids.css +++ /dev/null @@ -1,115 +0,0 @@ -/*GRID STYLES*/ -.GridView -{ - color: #484848; - border: 1px solid #D1E0EF; - font-size: 12px; -} -.GridView td, .GridView tr, .GridView th -{ - padding: 4px; - width: 200px; -} -.HeaderStyle -{ - background-color: #005f9c; - color: white; - font-weight: bold; -} -.RowStyle -{ - background-color: #DFEFFF; - vertical-align: top; -} -.AlternatingRowStyle -{ - background-color: #fff; -} -.SelectedRowStyle -{ - background-color: #a7cbec; -} -.PagerStyle -{ -} - -.PagerStyle table -{ - margin:10px; -} - -.PagerStyle td, .PagerStyle tr, .PagerStyle th -{ - width:auto !important; - padding:0; -} - -.PagerStyle span, .PagerStyle a -{ - border: 1px solid #dfefff; - font-size: 10px; - font-weight: bold; - margin-right: 4px; - padding: 4px 8px; - text-decoration:none; -} -.PagerStyle span -{ - background-color: #dfefff; - } -.PagerStyle a -{ - - color:#005F9C;} -.PagerStyle a:hover{background-color: #dfefff;} - -.FooterStyle -{ - background-color: #92b2ce; -} -.HeaderStyle a -{ - color: White; - text-decoration: none; - background: url(./images/listing/sort-regular.png) right center no-repeat; - display:block; -} -.GridIcon -{ - position: relative; - top: 8px; - display:block; -} -.ico-edit -{ - background-image: url('./images/listing/ico-edit.png'); - background-repeat: no-repeat; - height: 24px; -} -.ico-view -{ - background-image: url('./images/listing/ico-view.png'); - background-repeat: no-repeat; - height:24px;} -/** Grid Header Styles Ends ***/ - -/*** Sorting styles ***/ -.sortasc-row, .sortdesc-row -{ - background-color: #eef9fe; -} - -.sortasc-header a, .sortdesc-header a -{ - display: block; -} -.sortasc-header a -{ - background: url(./images/listing/asc.png) right center no-repeat; -} -.sortdesc-header a -{ - background: url(./images/listing/desc.png) right center no-repeat; -} - -/*** Sorting styles ends ***/ diff --git a/WebGoat/App_Themes/Default/images/Chevron.gif b/WebGoat/App_Themes/Default/images/Chevron.gif deleted file mode 100644 index ef4233145..000000000 Binary files a/WebGoat/App_Themes/Default/images/Chevron.gif and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/ChevronOverlay.png b/WebGoat/App_Themes/Default/images/ChevronOverlay.png deleted file mode 100644 index 184ee63cb..000000000 Binary files a/WebGoat/App_Themes/Default/images/ChevronOverlay.png and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/IconHome.gif b/WebGoat/App_Themes/Default/images/IconHome.gif deleted file mode 100644 index 0ab9e101c..000000000 Binary files a/WebGoat/App_Themes/Default/images/IconHome.gif and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/blank.gif b/WebGoat/App_Themes/Default/images/blank.gif deleted file mode 100644 index 35d42e808..000000000 Binary files a/WebGoat/App_Themes/Default/images/blank.gif and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/calendar.png b/WebGoat/App_Themes/Default/images/calendar.png deleted file mode 100644 index c4f974224..000000000 Binary files a/WebGoat/App_Themes/Default/images/calendar.png and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/eisk-logo.png b/WebGoat/App_Themes/Default/images/eisk-logo.png deleted file mode 100644 index c49931f3e..000000000 Binary files a/WebGoat/App_Themes/Default/images/eisk-logo.png and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/extras/ico-delete.png b/WebGoat/App_Themes/Default/images/extras/ico-delete.png deleted file mode 100644 index 496f1cbb4..000000000 Binary files a/WebGoat/App_Themes/Default/images/extras/ico-delete.png and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/extras/loader-modal.gif b/WebGoat/App_Themes/Default/images/extras/loader-modal.gif deleted file mode 100644 index 7d098dd18..000000000 Binary files a/WebGoat/App_Themes/Default/images/extras/loader-modal.gif and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/header-grad.png b/WebGoat/App_Themes/Default/images/header-grad.png deleted file mode 100644 index 16c4f5e98..000000000 Binary files a/WebGoat/App_Themes/Default/images/header-grad.png and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/listing/asc.png b/WebGoat/App_Themes/Default/images/listing/asc.png deleted file mode 100644 index 80bfe4b69..000000000 Binary files a/WebGoat/App_Themes/Default/images/listing/asc.png and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/listing/desc.png b/WebGoat/App_Themes/Default/images/listing/desc.png deleted file mode 100644 index 7a8c12e5a..000000000 Binary files a/WebGoat/App_Themes/Default/images/listing/desc.png and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/listing/ico-edit.png b/WebGoat/App_Themes/Default/images/listing/ico-edit.png deleted file mode 100644 index de2b1d07f..000000000 Binary files a/WebGoat/App_Themes/Default/images/listing/ico-edit.png and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/listing/ico-view.png b/WebGoat/App_Themes/Default/images/listing/ico-view.png deleted file mode 100644 index 0f4db8e0d..000000000 Binary files a/WebGoat/App_Themes/Default/images/listing/ico-view.png and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/listing/sort-regular.png b/WebGoat/App_Themes/Default/images/listing/sort-regular.png deleted file mode 100644 index 71735a037..000000000 Binary files a/WebGoat/App_Themes/Default/images/listing/sort-regular.png and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/logo.png b/WebGoat/App_Themes/Default/images/logo.png deleted file mode 100644 index 50134dd9c..000000000 Binary files a/WebGoat/App_Themes/Default/images/logo.png and /dev/null differ diff --git a/WebGoat/App_Themes/Default/images/logo2.png b/WebGoat/App_Themes/Default/images/logo2.png deleted file mode 100644 index 7485fddad..000000000 Binary files a/WebGoat/App_Themes/Default/images/logo2.png and /dev/null differ diff --git a/WebGoat/App_Themes/Default/left-menu.css b/WebGoat/App_Themes/Default/left-menu.css deleted file mode 100644 index 002cb3f85..000000000 --- a/WebGoat/App_Themes/Default/left-menu.css +++ /dev/null @@ -1,60 +0,0 @@ -ul#menu * -{ - outline: none; -} -ul#menu -{ - text-align: left; -} -ul#menu, ul#menu ul -{ - list-style-type: none; - margin: 0; - padding: 0; - width: 15em; -} - -ul#menu a -{ - display: block; - text-decoration: none; -} - -ul#menu li -{ - margin-top: 1px; -} - -ul#menu li a -{ - background-color: #D6E7F1; - color: #000000; - padding: 0.5em; -} - -ul#menu li a:hover, -{ - background-color: #c3dae6 !important; -} - -ul#menu li ul li a -{ - background-color: #f0f9ff; - color: #000; - padding-left: 20px; -} - -ul#menu li ul li a:hover -{ - background-color: #e1f4fd !important; - border-left: 5px #99C4DF solid; - padding-left: 15px; -} - -ul#menu .SelectedNode -{ - background-color: #C2E0EF !important; - border-left: 5px #99C4DF solid; - padding-left: 15px; -} - diff --git a/WebGoat/App_Themes/Default/styles.css b/WebGoat/App_Themes/Default/styles.css deleted file mode 100644 index e056d5cf9..000000000 --- a/WebGoat/App_Themes/Default/styles.css +++ /dev/null @@ -1,6 +0,0 @@ - -.autocomplete-w1 { background:url(img/shadow.png) no-repeat bottom right; position:absolute; top:0px; left:0px; margin:8px 0 0 6px; /* IE6 fix: */ _background:none; _margin:0; } -.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; } -.autocomplete .selected { background:#F0F0F0; } -.autocomplete div { padding:2px 5px; white-space:nowrap; } -.autocomplete strong { font-weight:normal; color:#3399FF; } diff --git a/WebGoat/ChangePassword.aspx b/WebGoat/ChangePassword.aspx deleted file mode 100644 index 3f5313469..000000000 --- a/WebGoat/ChangePassword.aspx +++ /dev/null @@ -1,38 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ChangePassword.aspx.cs" Inherits="OWASP.WebGoat.NET.ChangePassword" %> - - - - -

Change Password

- - - - - -Old Password:  -
- -New Password:  -
- -Confirmation:  - -
- - - - -
- - - -
- - - Your password has been changed! - - - -
- -
\ No newline at end of file diff --git a/WebGoat/ChangePassword.aspx.cs b/WebGoat/ChangePassword.aspx.cs deleted file mode 100644 index eaa27041e..000000000 --- a/WebGoat/ChangePassword.aspx.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using System.Web; -using System.Web.UI; - -namespace OWASP.WebGoat.NET -{ - public partial class ChangePassword : System.Web.UI.Page - { - } -} - diff --git a/WebGoat/ChangePassword.aspx.designer.cs b/WebGoat/ChangePassword.aspx.designer.cs deleted file mode 100644 index 1181a2e30..000000000 --- a/WebGoat/ChangePassword.aspx.designer.cs +++ /dev/null @@ -1,38 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class ChangePassword { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.HtmlControls.HtmlGenericControl lblHeader; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.ChangePassword ChangePwdCtrl; - - protected System.Web.UI.WebControls.TextBox CurrentPassword; - - protected System.Web.UI.WebControls.TextBox NewPassword; - - protected System.Web.UI.WebControls.TextBox ConfirmNewPassword; - - protected System.Web.UI.WebControls.Button ChangePasswordPushButton; - - protected System.Web.UI.WebControls.Button CancelPushButton; - - protected System.Web.UI.WebControls.Literal FailureText; - - protected System.Web.UI.WebControls.Button ContinuePushButton; - } -} diff --git a/WebGoat/Code/DatabaseUtilities.cs b/WebGoat/Code/DatabaseUtilities.cs deleted file mode 100644 index c91f10422..000000000 --- a/WebGoat/Code/DatabaseUtilities.cs +++ /dev/null @@ -1,253 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Data; -using System.IO; -using System.Text; -using System.Configuration; -using Mono.Data.Sqlite; - -namespace OWASP.WebGoat.NET -{ - public class DatabaseUtilities - { - private SqliteConnection conn = null; - private string GoatDBFile = HttpContext.Current.Server.MapPath ("~/App_Data/") + "goatdb.sqlite"; - - private SqliteConnection GetGoatDBConnection () - { - if (conn == null) { - //set the physical path to the SQLite database - string connectionstring = "Data Source=" + GoatDBFile; - - //create the connection - conn = new SqliteConnection (connectionstring); - conn.Open (); - } - return conn; - } - - public Boolean RecreateGoatDB () - { - if (File.Exists (GoatDBFile)) - File.Delete (GoatDBFile); - - SqliteConnection.CreateFile (GoatDBFile); - SqliteConnection cn = GetGoatDBConnection (); - CreateTables (cn); - AddDataToTables (cn); - //create the tables - cn.Close (); - return true; - } - - public void RunSQLFromFile (SqliteConnection cn, String filename) - { - using (FileStream fs = new FileStream(filename, FileMode.Open)) { - using (StreamReader sr = new StreamReader(fs, Encoding.UTF8)) { - String line = String.Empty; - while ((line = sr.ReadLine ()) != null) { - line = line.Trim (); - if (line.StartsWith ("--")) - continue; - DoNonQuery (line, cn); - } - } - } - } - - public void CreateTables (SqliteConnection cn) - { - String filename = HttpContext.Current.Server.MapPath ("~/App_Data/") + "tables.sql"; - RunSQLFromFile (cn, filename); - } - - public void AddDataToTables (SqliteConnection cn) - { - String filename = HttpContext.Current.Server.MapPath ("~/App_Data/") + "tabledata.sql"; - RunSQLFromFile (cn, filename); - } - - private string DoNonQuery (String SQL, SqliteConnection conn) - { - var cmd = new SqliteCommand (SQL, conn); - var output = string.Empty; - - try { - cmd.ExecuteNonQuery (); - output += "
SQL Executed: " + SQL; - } catch (SqliteException ex) { - output += "
SQL Exception: " + ex.Message; - output += SQL; - } catch (Exception ex) { - output += "
Exception: " + ex.Message; - output += SQL; - } - return output; - } - - private string DoScalar (String SQL, SqliteConnection conn) - { - var cmd = new SqliteCommand (SQL, conn); - var output = string.Empty; - - try { - output = (string)cmd.ExecuteScalar (); - } catch (SqliteException ex) { - output += "
SQL Exception: " + ex.Message + " - "; - output += SQL; - } catch (Exception ex) { - output += "
Exception: " + ex.Message + " - "; - output += SQL; - } - return output; - } - /* - private DataTable DoQuery (string SQL) - { - string GoatDBFile = "URI=file:" + HttpContext.Current.Server.MapPath ("~/App_Data/") + "goatdb.sqlite"; - var cn = new System.Data.SQLite.SQLiteConnection (GoatDBFile); - cn.Open (); - - var da = new System.Data.SQLite.SQLiteDataAdapter (SQL, cn); - var dt = new DataTable (); - da.Fill (dt); - cn.Close (); - return dt; - } - */ - - - //this SQLite provider does not support datatables, so dumping query contents into a string - //TODO change this so there is no formatting - //TODO send back as an array or a dictionary or something - //TODO Do formatting in the page itself - /* - private string DoQuery (string SQL, SqliteConnection conn) - { - string result = string.Empty; - var cmd = new SqliteCommand (SQL, conn); - using (var reader = cmd.ExecuteReader ()) { - while (reader.Read ()) { - for (int i = 0; i < reader.FieldCount; ++i) { - result += "" + reader.GetName (i) + ": " + reader [i] + "
"; - } - result += "

"; - } - } - - return result; - } - */ - private DataTable DoQuery (string SQL, SqliteConnection conn) - { - var cmd = new SqliteCommand (SQL, conn); - DataTable dt = new DataTable (); - using (var reader = cmd.ExecuteReader ()) { - - // Add all the columns. - for (int i = 0; i < reader.FieldCount; i++) { - DataColumn col = new DataColumn (); - col.DataType = reader.GetFieldType (i); - col.ColumnName = reader.GetName (i); - dt.Columns.Add (col); - } - - - while (reader.Read()) { - DataRow row = dt.NewRow (); - for (int i = 0; i < reader.FieldCount; i++) { - // Ignore Null fields. - if (reader.IsDBNull (i)) - continue; - - if (reader.GetFieldType (i) == typeof(String)) { - row [dt.Columns [i].ColumnName] = reader.GetString (i); - } else if (reader.GetFieldType (i) == typeof(Int16)) { - row [dt.Columns [i].ColumnName] = reader.GetInt16 (i); - } else if (reader.GetFieldType (i) == typeof(Int32)) { - row [dt.Columns [i].ColumnName] = reader.GetInt32 (i); - } else if (reader.GetFieldType (i) == typeof(Int64)) { - row [dt.Columns [i].ColumnName] = reader.GetInt64 (i); - } else if (reader.GetFieldType (i) == typeof(Boolean)) { - row [dt.Columns [i].ColumnName] = reader.GetBoolean (i); - } else if (reader.GetFieldType (i) == typeof(Byte)) { - row [dt.Columns [i].ColumnName] = reader.GetByte (i); - } else if (reader.GetFieldType (i) == typeof(Char)) { - row [dt.Columns [i].ColumnName] = reader.GetChar (i); - } else if (reader.GetFieldType (i) == typeof(DateTime)) { - row [dt.Columns [i].ColumnName] = reader.GetDateTime (i); - } else if (reader.GetFieldType (i) == typeof(Decimal)) { - row [dt.Columns [i].ColumnName] = reader.GetDecimal (i); - } else if (reader.GetFieldType (i) == typeof(Double)) { - row [dt.Columns [i].ColumnName] = reader.GetDouble (i); - } else if (reader.GetFieldType (i) == typeof(float)) { - row [dt.Columns [i].ColumnName] = reader.GetFloat (i); - } else if (reader.GetFieldType (i) == typeof(Guid)) { - row [dt.Columns [i].ColumnName] = reader.GetGuid (i); - } - } - - dt.Rows.Add (row); - } - } - - return dt; - } - - public string GetEmailByUserID (string userid) - { - if (userid.Length > 4) - userid = userid.Substring (0, 4); - String output = (String)DoScalar ("SELECT Email FROM UserList WHERE UserID = '" + userid + "'", GetGoatDBConnection ()); - if (output != null) - return output; - else - return "Email for userid: " + userid + " not found

"; - } - - public DataTable GetMailingListInfoByEmailAddress (string email) - { - string sql = "SELECT FirstName, LastName, Email FROM MailingList where Email = '" + email + "'"; - DataTable result = DoQuery (sql, GetGoatDBConnection ()); - return result; - } - - public string AddToMailingList (string first, string last, string email) - { - string sql = "insert into mailinglist (firstname, lastname, email) values ('" + first + "', '" + last + "', '" + email + "')"; - string result = DoNonQuery (sql, GetGoatDBConnection ()); - return result; - } - - public DataTable GetAllPostings () - { - string sql = "SELECT Title, Email, Message FROM Postings"; - DataTable result = DoQuery (sql, GetGoatDBConnection ()); - return result; - } - - public string AddNewPosting (String title, String email, String message) - { - string sql = "insert into Postings(title, email, message) values ('" + title + "','" + email + "','" + message + "')"; - string result = DoNonQuery (sql, GetGoatDBConnection ()); - return result; - } - - public DataTable GetPostingLinks () - { - string sql = "SELECT PostingID, Title FROM Postings"; - DataTable result = DoQuery (sql, GetGoatDBConnection ()); - return result; - } - public DataTable GetPostingByID(int id) - { - string sql = "SELECT Title, Email, Message FROM Postings where PostingID=" + id; - DataTable result = DoQuery (sql, GetGoatDBConnection ()); - return result; - } - - } -} \ No newline at end of file diff --git a/WebGoat/Code/IOHelper.cs b/WebGoat/Code/IOHelper.cs deleted file mode 100644 index aedde6d1d..000000000 --- a/WebGoat/Code/IOHelper.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.IO; - -namespace OWASP.WebGoat.NET -{ - public class IOHelper - { - public static string ReadAllFromFile(string path) - { - FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read); - StreamReader sr = new StreamReader(fs); - string data = sr.ReadToEnd(); - sr.Close(); - return data; - } - } -} \ No newline at end of file diff --git a/WebGoat/Code/SQLiteMembershipProvider.cs b/WebGoat/Code/SQLiteMembershipProvider.cs deleted file mode 100644 index bb1cd0e57..000000000 --- a/WebGoat/Code/SQLiteMembershipProvider.cs +++ /dev/null @@ -1,1959 +0,0 @@ -using System; -using System.Collections.Specialized; -using System.Configuration; -using System.Configuration.Provider; -using System.Data; -using Mono.Data.Sqlite; -using System.Globalization; -using System.Security.Cryptography; -using System.Text; -using System.Text.RegularExpressions; -using System.Web.Security; - -namespace TechInfoSystems.Data.SQLite -{ - ///

- /// Provides a Membership implementation whose data is stored in a SQLite database. - /// - public sealed class SQLiteMembershipProvider : MembershipProvider - { - #region Private Fields - - private const string _httpTransactionId = "SQLiteTran"; - private const int NEW_PASSWORD_LENGTH = 8; - private const string APP_TB_NAME = "[aspnet_Applications]"; - private const string USER_TB_NAME = "[aspnet_Users]"; - private const string USERS_IN_ROLES_TB_NAME = "[aspnet_UsersInRoles]"; - private const string PROFILE_TB_NAME = "[aspnet_Profile]"; - private const int MAX_APPLICATION_NAME_LENGTH = 256; - private const int MAX_USERNAME_LENGTH = 256; - private const int MAX_PASSWORD_LENGTH = 128; - private const int MAX_PASSWORD_ANSWER_LENGTH = 128; - private const int MAX_EMAIL_LENGTH = 256; - private const int MAX_PASSWORD_QUESTION_LENGTH = 256; - private static string _connectionString; - private static string _applicationName; - private static string _applicationId; - private static bool _enablePasswordReset; - private static bool _enablePasswordRetrieval; - private static bool _requiresQuestionAndAnswer; - private static bool _requiresUniqueEmail; - private static int _maxInvalidPasswordAttempts; - private static int _passwordAttemptWindow; - private static MembershipPasswordFormat _passwordFormat; - private static int _minRequiredNonAlphanumericCharacters; - private static int _minRequiredPasswordLength; - private static string _passwordStrengthRegularExpression; - private static readonly DateTime _minDate = DateTime.ParseExact ("01/01/1753", "d", CultureInfo.InvariantCulture); - - #endregion - - #region Public Properties - - /// - /// The name of the application using the custom membership provider. - /// - /// - /// - /// The name of the application using the custom membership provider. - /// - public override string ApplicationName { - get { return _applicationName; } - set { - if (value.Length > MAX_APPLICATION_NAME_LENGTH) - throw new ProviderException (String.Format ("SQLiteMembershipProvider error: applicationName must be less than or equal to {0} characters.", MAX_APPLICATION_NAME_LENGTH)); - - _applicationName = value; - _applicationId = GetApplicationId (_applicationName); - } - } - - /// - /// Indicates whether the membership provider is configured to allow users to reset their passwords. - /// - /// - /// true if the membership provider supports password reset; otherwise, false. The default is true. - /// - public override bool EnablePasswordReset { - get { return _enablePasswordReset; } - } - - /// - /// Indicates whether the membership provider is configured to allow users to retrieve their passwords. - /// - /// - /// true if the membership provider is configured to support password retrieval; otherwise, false. The default is false. - /// - public override bool EnablePasswordRetrieval { - get { return _enablePasswordRetrieval; } - } - - /// - /// Gets a value indicating whether the membership provider is configured to require the user to answer a password question for password reset and retrieval. - /// - /// - /// true if a password answer is required for password reset and retrieval; otherwise, false. The default is true. - /// - public override bool RequiresQuestionAndAnswer { - get { return _requiresQuestionAndAnswer; } - } - - /// - /// Gets a value indicating whether the membership provider is configured to require a unique e-mail address for each user name. - /// - /// - /// true if the membership provider requires a unique e-mail address; otherwise, false. The default is true. - /// - public override bool RequiresUniqueEmail { - get { return _requiresUniqueEmail; } - } - - /// - /// Gets the number of invalid password or password-answer attempts allowed before the membership user is locked out. - /// - /// - /// - /// The number of invalid password or password-answer attempts allowed before the membership user is locked out. - /// - public override int MaxInvalidPasswordAttempts { - get { return _maxInvalidPasswordAttempts; } - } - - /// - /// Gets the number of minutes in which a maximum number of invalid password or password-answer attempts are allowed before the membership user is locked out. - /// - /// - /// - /// The number of minutes in which a maximum number of invalid password or password-answer attempts are allowed before the membership user is locked out. - /// - public override int PasswordAttemptWindow { - get { return _passwordAttemptWindow; } - } - - /// - /// Gets a value indicating the format for storing passwords in the membership data store. - /// - /// - /// - /// One of the values indicating the format for storing passwords in the data store. - /// - public override MembershipPasswordFormat PasswordFormat { - get { return _passwordFormat; } - } - - /// - /// Gets the minimum number of special characters that must be present in a valid password. - /// - /// - /// - /// The minimum number of special characters that must be present in a valid password. - /// - public override int MinRequiredNonAlphanumericCharacters { - get { return _minRequiredNonAlphanumericCharacters; } - } - - /// - /// Gets the minimum length required for a password. - /// - /// - /// - /// The minimum length required for a password. - /// - public override int MinRequiredPasswordLength { - get { return _minRequiredPasswordLength; } - } - - /// - /// Gets the regular expression used to evaluate a password. - /// - /// - /// - /// A regular expression used to evaluate a password. - /// - public override string PasswordStrengthRegularExpression { - get { return _passwordStrengthRegularExpression; } - } - - #endregion - - #region Public Methods - - /// - /// Initializes the provider. - /// - /// The friendly name of the provider. - /// A collection of the name/value pairs representing the provider-specific attributes specified in the configuration for this provider. - /// - /// The name of the provider is null. - /// - /// - /// The name of the provider has a length of zero. - /// - /// - /// An attempt is made to call on a provider after the provider has already been initialized. - /// - public override void Initialize (string name, NameValueCollection config) - { - // Initialize values from web.config. - if (config == null) - throw new ArgumentNullException ("config"); - - if (string.IsNullOrEmpty (name)) - name = "SQLiteMembershipProvider"; - - if (String.IsNullOrEmpty (config ["description"])) { - config.Remove ("description"); - config.Add ("description", "SQLite Membership provider"); - } - - // Initialize the abstract base class. - base.Initialize (name, config); - - _maxInvalidPasswordAttempts = Convert.ToInt32 (GetConfigValue (config ["maxInvalidPasswordAttempts"], "50")); - _passwordAttemptWindow = Convert.ToInt32 (GetConfigValue (config ["passwordAttemptWindow"], "10")); - _minRequiredNonAlphanumericCharacters = Convert.ToInt32 (GetConfigValue (config ["minRequiredNonalphanumericCharacters"], "1")); - _minRequiredPasswordLength = Convert.ToInt32 (GetConfigValue (config ["minRequiredPasswordLength"], "7")); - _passwordStrengthRegularExpression = Convert.ToString (GetConfigValue (config ["passwordStrengthRegularExpression"], "")); - _enablePasswordReset = Convert.ToBoolean (GetConfigValue (config ["enablePasswordReset"], "true")); - _enablePasswordRetrieval = Convert.ToBoolean (GetConfigValue (config ["enablePasswordRetrieval"], "false")); - _requiresQuestionAndAnswer = Convert.ToBoolean (GetConfigValue (config ["requiresQuestionAndAnswer"], "false")); - _requiresUniqueEmail = Convert.ToBoolean (GetConfigValue (config ["requiresUniqueEmail"], "false")); - - ValidatePwdStrengthRegularExpression (); - - if (_minRequiredNonAlphanumericCharacters > _minRequiredPasswordLength) { - throw new System.Web.HttpException ("SQLiteMembershipProvider configuration error: minRequiredNonalphanumericCharacters can not be greater than minRequiredPasswordLength. Check the web configuration file (web.config)."); - } - - string temp_format = config ["passwordFormat"]; - if (temp_format == null) { - temp_format = "Hashed"; - } - - switch (temp_format) { - case "Clear": - _passwordFormat = MembershipPasswordFormat.Clear; - break; - case "Hashed": - _passwordFormat = MembershipPasswordFormat.Hashed; - break; - case "Encrypted": - _passwordFormat = MembershipPasswordFormat.Encrypted; - break; - default: - throw new ProviderException ("Password format not supported."); - } - - if ((PasswordFormat == MembershipPasswordFormat.Hashed) && EnablePasswordRetrieval) { - throw new ProviderException ("SQLiteMembershipProvider configuration error: enablePasswordRetrieval can not be set to true when passwordFormat is set to \"Hashed\". Check the web configuration file (web.config)."); - } - - // Initialize SqliteConnection. - ConnectionStringSettings ConnectionStringSettings = ConfigurationManager.ConnectionStrings [config ["connectionStringName"]]; - - if (ConnectionStringSettings == null || ConnectionStringSettings.ConnectionString == null || ConnectionStringSettings.ConnectionString.Trim ().Length == 0) { - throw new ProviderException ("Connection string is empty for SQLiteMembershipProvider. Check the web configuration file (web.config)."); - } - - _connectionString = ConnectionStringSettings.ConnectionString; - - // Get application name - if (config ["applicationName"] == null || config ["applicationName"].Trim () == "") { - this.ApplicationName = System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath; - } else { - this.ApplicationName = config ["applicationName"]; - } - - // Check for invalid parameters in the config - config.Remove ("connectionStringName"); - config.Remove ("enablePasswordRetrieval"); - config.Remove ("enablePasswordReset"); - config.Remove ("requiresQuestionAndAnswer"); - config.Remove ("applicationName"); - config.Remove ("requiresUniqueEmail"); - config.Remove ("maxInvalidPasswordAttempts"); - config.Remove ("passwordAttemptWindow"); - config.Remove ("commandTimeout"); - config.Remove ("passwordFormat"); - config.Remove ("name"); - config.Remove ("minRequiredPasswordLength"); - config.Remove ("minRequiredNonalphanumericCharacters"); - config.Remove ("passwordStrengthRegularExpression"); - - if (config.Count > 0) { - string key = config.GetKey (0); - if (!string.IsNullOrEmpty (key)) { - throw new ProviderException (String.Concat ("SQLiteMembershipProvider configuration error: Unrecognized attribute: ", key)); - } - } - - // Verify a record exists in the application table. - VerifyApplication (); - } - - /// - /// Processes a request to update the password for a membership user. - /// - /// The user to update the password for. - /// The current password for the specified user. - /// The new password for the specified user. - /// - /// true if the password was updated successfully; otherwise, false. - /// - public override bool ChangePassword (string username, string oldPassword, string newPassword) - { - SecUtility.CheckParameter (ref username, true, true, true, MAX_USERNAME_LENGTH, "username"); - SecUtility.CheckParameter (ref oldPassword, true, true, false, MAX_PASSWORD_LENGTH, "oldPassword"); - SecUtility.CheckParameter (ref newPassword, true, true, false, MAX_PASSWORD_LENGTH, "newPassword"); - - string salt; - MembershipPasswordFormat passwordFormat; - if (!CheckPassword (username, oldPassword, true, out salt, out passwordFormat)) - return false; - - if (newPassword.Length < this.MinRequiredPasswordLength) { - throw new ArgumentException (String.Format (CultureInfo.CurrentCulture, "The password must be at least {0} characters.", this.MinRequiredPasswordLength)); - } - - int numNonAlphaNumericChars = 0; - for (int i = 0; i < newPassword.Length; i++) { - if (!char.IsLetterOrDigit (newPassword, i)) { - numNonAlphaNumericChars++; - } - } - if (numNonAlphaNumericChars < this.MinRequiredNonAlphanumericCharacters) { - throw new ArgumentException (String.Format (CultureInfo.CurrentCulture, "There must be at least {0} non alpha numeric characters.", this.MinRequiredNonAlphanumericCharacters)); - } - if ((this.PasswordStrengthRegularExpression.Length > 0) && !Regex.IsMatch (newPassword, this.PasswordStrengthRegularExpression)) { - throw new ArgumentException ("The password does not match the regular expression in the config file."); - } - - string encodedPwd = EncodePassword (newPassword, passwordFormat, salt); - if (encodedPwd.Length > MAX_PASSWORD_LENGTH) { - throw new ArgumentException (String.Format (CultureInfo.CurrentCulture, "The password is too long: it must not exceed {0} chars after encrypting.", MAX_PASSWORD_LENGTH)); - } - - ValidatePasswordEventArgs args = new ValidatePasswordEventArgs (username, newPassword, false); - - OnValidatingPassword (args); - - if (args.Cancel) { - if (args.FailureInformation != null) - throw args.FailureInformation; - else - throw new MembershipPasswordException ("Change password canceled due to new password validation failure."); - } - - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "UPDATE " + USER_TB_NAME + - " SET Password = $Password, LastPasswordChangedDate = $LastPasswordChangedDate " + - " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$Password", encodedPwd); - cmd.Parameters.AddWithValue ("$LastPasswordChangedDate", DateTime.UtcNow); - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - return (cmd.ExecuteNonQuery () > 0); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Processes a request to update the password question and answer for a membership user. - /// - /// The user to change the password question and answer for. - /// The password for the specified user. - /// The new password question for the specified user. - /// The new password answer for the specified user. - /// - /// true if the password question and answer are updated successfully; otherwise, false. - /// - public override bool ChangePasswordQuestionAndAnswer (string username, string password, string newPasswordQuestion, string newPasswordAnswer) - { - SecUtility.CheckParameter (ref username, true, true, true, MAX_USERNAME_LENGTH, "username"); - SecUtility.CheckParameter (ref password, true, true, false, MAX_PASSWORD_LENGTH, "password"); - - string salt, encodedPasswordAnswer; - MembershipPasswordFormat passwordFormat; - if (!CheckPassword (username, password, true, out salt, out passwordFormat)) - return false; - - SecUtility.CheckParameter (ref newPasswordQuestion, this.RequiresQuestionAndAnswer, this.RequiresQuestionAndAnswer, false, MAX_PASSWORD_QUESTION_LENGTH, "newPasswordQuestion"); - if (newPasswordAnswer != null) { - newPasswordAnswer = newPasswordAnswer.Trim (); - } - - SecUtility.CheckParameter (ref newPasswordAnswer, this.RequiresQuestionAndAnswer, this.RequiresQuestionAndAnswer, false, MAX_PASSWORD_ANSWER_LENGTH, "newPasswordAnswer"); - if (!string.IsNullOrEmpty (newPasswordAnswer)) { - encodedPasswordAnswer = EncodePassword (newPasswordAnswer.ToLower (CultureInfo.InvariantCulture), passwordFormat, salt); - } else { - encodedPasswordAnswer = newPasswordAnswer; - } - SecUtility.CheckParameter (ref encodedPasswordAnswer, this.RequiresQuestionAndAnswer, this.RequiresQuestionAndAnswer, false, MAX_PASSWORD_ANSWER_LENGTH, "newPasswordAnswer"); - - - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "UPDATE " + USER_TB_NAME + - " SET PasswordQuestion = $Question, PasswordAnswer = $Answer" + - " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - cmd.Parameters.AddWithValue ("$Question", newPasswordQuestion); - cmd.Parameters.AddWithValue ("$Answer", encodedPasswordAnswer); - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - return (cmd.ExecuteNonQuery () > 0); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Adds a new membership user to the data source. - /// - /// The user name for the new user. - /// The password for the new user. - /// The e-mail address for the new user. - /// The password question for the new user. - /// The password answer for the new user - /// Whether or not the new user is approved to be validated. - /// The unique identifier from the membership data source for the user. - /// A enumeration value indicating whether the user was created successfully. - /// - /// A object populated with the information for the newly created user. - /// - public override MembershipUser CreateUser (string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status) - { - #region Validation - - if (!SecUtility.ValidateParameter (ref password, true, true, false, MAX_PASSWORD_LENGTH)) { - status = MembershipCreateStatus.InvalidPassword; - return null; - } - - string salt = GenerateSalt (); - string encodedPassword = EncodePassword (password, PasswordFormat, salt); - if (encodedPassword.Length > MAX_PASSWORD_LENGTH) { - status = MembershipCreateStatus.InvalidPassword; - return null; - } - - if (passwordAnswer != null) { - passwordAnswer = passwordAnswer.Trim (); - } - - string encodedPasswordAnswer; - if (!string.IsNullOrEmpty (passwordAnswer)) { - if (passwordAnswer.Length > MAX_PASSWORD_ANSWER_LENGTH) { - status = MembershipCreateStatus.InvalidAnswer; - return null; - } - encodedPasswordAnswer = EncodePassword (passwordAnswer.ToLower (CultureInfo.InvariantCulture), PasswordFormat, salt); - } else { - encodedPasswordAnswer = passwordAnswer; - } - - if (!SecUtility.ValidateParameter (ref encodedPasswordAnswer, RequiresQuestionAndAnswer, true, false, MAX_PASSWORD_ANSWER_LENGTH)) { - status = MembershipCreateStatus.InvalidAnswer; - return null; - } - - if (!SecUtility.ValidateParameter (ref username, true, true, true, MAX_USERNAME_LENGTH)) { - status = MembershipCreateStatus.InvalidUserName; - return null; - } - - if (!SecUtility.ValidateParameter (ref email, this.RequiresUniqueEmail, this.RequiresUniqueEmail, false, MAX_EMAIL_LENGTH)) { - status = MembershipCreateStatus.InvalidEmail; - return null; - } - - if (!SecUtility.ValidateParameter (ref passwordQuestion, this.RequiresQuestionAndAnswer, true, false, MAX_PASSWORD_QUESTION_LENGTH)) { - status = MembershipCreateStatus.InvalidQuestion; - return null; - } - - if ((providerUserKey != null) && !(providerUserKey is Guid)) { - status = MembershipCreateStatus.InvalidProviderUserKey; - return null; - } - - if (password.Length < this.MinRequiredPasswordLength) { - status = MembershipCreateStatus.InvalidPassword; - return null; - } - - int numNonAlphaNumericChars = 0; - for (int i = 0; i < password.Length; i++) { - if (!char.IsLetterOrDigit (password, i)) { - numNonAlphaNumericChars++; - } - } - - if (numNonAlphaNumericChars < this.MinRequiredNonAlphanumericCharacters) { - status = MembershipCreateStatus.InvalidPassword; - return null; - } - - if ((this.PasswordStrengthRegularExpression.Length > 0) && !Regex.IsMatch (password, this.PasswordStrengthRegularExpression)) { - status = MembershipCreateStatus.InvalidPassword; - return null; - } - - #endregion - - ValidatePasswordEventArgs args = new ValidatePasswordEventArgs (username, password, true); - - OnValidatingPassword (args); - - if (args.Cancel) { - status = MembershipCreateStatus.InvalidPassword; - return null; - } - - if (RequiresUniqueEmail && !String.IsNullOrEmpty (GetUserNameByEmail (email))) { - status = MembershipCreateStatus.DuplicateEmail; - return null; - } - - MembershipUser u = GetUser (username, false); - - if (u == null) { - DateTime createDate = DateTime.UtcNow; - - if (providerUserKey == null) { - providerUserKey = Guid.NewGuid (); - } else { - if (!(providerUserKey is Guid)) { - status = MembershipCreateStatus.InvalidProviderUserKey; - return null; - } - } - - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "INSERT INTO " + USER_TB_NAME + - " (UserId, Username, LoweredUsername, ApplicationId, Email, LoweredEmail, Comment, Password, " + - " PasswordFormat, PasswordSalt, PasswordQuestion, PasswordAnswer, IsApproved, IsAnonymous, " + - " LastActivityDate, LastLoginDate, LastPasswordChangedDate, CreateDate, " + - " IsLockedOut, LastLockoutDate, FailedPasswordAttemptCount, FailedPasswordAttemptWindowStart, " + - " FailedPasswordAnswerAttemptCount, FailedPasswordAnswerAttemptWindowStart) " + - " Values ($UserId, $Username, $LoweredUsername, $ApplicationId, $Email, $LoweredEmail, $Comment, $Password, " + - " $PasswordFormat, $PasswordSalt, $PasswordQuestion, $PasswordAnswer, $IsApproved, $IsAnonymous, " + - " $LastActivityDate, $LastLoginDate, $LastPasswordChangedDate, $CreateDate, " + - " $IsLockedOut, $LastLockoutDate, $FailedPasswordAttemptCount, $FailedPasswordAttemptWindowStart, " + - " $FailedPasswordAnswerAttemptCount, $FailedPasswordAnswerAttemptWindowStart)"; - - DateTime nullDate = _minDate; - - cmd.Parameters.AddWithValue ("$UserId", providerUserKey.ToString ()); - cmd.Parameters.AddWithValue ("$Username", username); - cmd.Parameters.AddWithValue ("$LoweredUsername", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - cmd.Parameters.AddWithValue ("$Email", email); - cmd.Parameters.AddWithValue ("$LoweredEmail", (email != null ? email.ToLowerInvariant () : null)); - cmd.Parameters.AddWithValue ("$Comment", null); - cmd.Parameters.AddWithValue ("$Password", encodedPassword); - cmd.Parameters.AddWithValue ("$PasswordFormat", PasswordFormat.ToString ()); - cmd.Parameters.AddWithValue ("$PasswordSalt", salt); - cmd.Parameters.AddWithValue ("$PasswordQuestion", passwordQuestion); - cmd.Parameters.AddWithValue ("$PasswordAnswer", encodedPasswordAnswer); - cmd.Parameters.AddWithValue ("$IsApproved", isApproved); - cmd.Parameters.AddWithValue ("$IsAnonymous", false); - cmd.Parameters.AddWithValue ("$LastActivityDate", createDate); - cmd.Parameters.AddWithValue ("$LastLoginDate", createDate); - cmd.Parameters.AddWithValue ("$LastPasswordChangedDate", createDate); - cmd.Parameters.AddWithValue ("$CreateDate", createDate); - cmd.Parameters.AddWithValue ("$IsLockedOut", false); - cmd.Parameters.AddWithValue ("$LastLockoutDate", nullDate); - cmd.Parameters.AddWithValue ("$FailedPasswordAttemptCount", 0); - cmd.Parameters.AddWithValue ("$FailedPasswordAttemptWindowStart", nullDate); - cmd.Parameters.AddWithValue ("$FailedPasswordAnswerAttemptCount", 0); - cmd.Parameters.AddWithValue ("$FailedPasswordAnswerAttemptWindowStart", nullDate); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - if (cmd.ExecuteNonQuery () > 0) { - status = MembershipCreateStatus.Success; - } else { - status = MembershipCreateStatus.UserRejected; - } - } - } catch { - status = MembershipCreateStatus.ProviderError; - - throw; - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - - return GetUser (username, false); - } else { - status = MembershipCreateStatus.DuplicateUserName; - } - - return null; - } - - /// - /// Removes a user from the membership data source. - /// - /// The name of the user to delete. - /// true to delete data related to the user from the database; false to leave data related to the user in the database. - /// - /// true if the user was successfully deleted; otherwise, false. - /// - public override bool DeleteUser (string username, bool deleteAllRelatedData) - { - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - if (cn.State == ConnectionState.Closed) - cn.Open (); - - // Get UserId if necessary. - string userId = null; - if (deleteAllRelatedData) { - cmd.CommandText = "SELECT UserId FROM " + USER_TB_NAME + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - userId = cmd.ExecuteScalar () as string; - } - - cmd.CommandText = "DELETE FROM " + USER_TB_NAME + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - int rowsAffected = cmd.ExecuteNonQuery (); - - if (deleteAllRelatedData && (!String.IsNullOrEmpty ((userId)))) { - // Delete from user/role relationship table. - cmd.CommandText = "DELETE FROM " + USERS_IN_ROLES_TB_NAME + " WHERE UserId = $UserId"; - cmd.Parameters.Clear (); - cmd.Parameters.AddWithValue ("$UserId", userId); - cmd.ExecuteNonQuery (); - - // Delete from profile table. - cmd.CommandText = "DELETE FROM " + PROFILE_TB_NAME + " WHERE UserId = $UserId"; - cmd.Parameters.Clear (); - cmd.Parameters.AddWithValue ("$UserId", userId); - cmd.ExecuteNonQuery (); - } - - return (rowsAffected > 0); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Gets a collection of all the users in the data source in pages of data. - /// - /// The index of the page of results to return. is zero-based. - /// The size of the page of results to return. - /// The total number of matched users. - /// - /// A collection that contains a page of objects beginning at the page specified by . - /// - public override MembershipUserCollection GetAllUsers (int pageIndex, int pageSize, out int totalRecords) - { - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT Count(*) FROM " + USER_TB_NAME + " WHERE ApplicationId = $ApplicationId AND IsAnonymous='0'"; - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - totalRecords = Convert.ToInt32 (cmd.ExecuteScalar ()); - - MembershipUserCollection users = new MembershipUserCollection (); - - if (totalRecords <= 0) { - return users; - } - - cmd.CommandText = "SELECT UserId, Username, Email, PasswordQuestion," + - " Comment, IsApproved, IsLockedOut, CreateDate, LastLoginDate," + - " LastActivityDate, LastPasswordChangedDate, LastLockoutDate " + - " FROM " + USER_TB_NAME + - " WHERE ApplicationId = $ApplicationId AND IsAnonymous='0' " + - " ORDER BY Username Asc"; - - using (SqliteDataReader reader = cmd.ExecuteReader()) { - int counter = 0; - int startIndex = pageSize * pageIndex; - int endIndex = startIndex + pageSize - 1; - - while (reader.Read()) { - if (counter >= startIndex) { - MembershipUser u = GetUserFromReader (reader); - users.Add (u); - } - - if (counter >= endIndex) { - cmd.Cancel (); - } - - counter++; - } - - return users; - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Gets the number of users currently accessing the application. - /// - /// - /// The number of users currently accessing the application. - /// - public override int GetNumberOfUsersOnline () - { - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT Count(*) FROM " + USER_TB_NAME + - " WHERE LastActivityDate > $LastActivityDate AND ApplicationId = $ApplicationId"; - - TimeSpan onlineSpan = new TimeSpan (0, Membership.UserIsOnlineTimeWindow, 0); - DateTime compareTime = DateTime.UtcNow.Subtract (onlineSpan); - - cmd.Parameters.AddWithValue ("$LastActivityDate", compareTime); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - return Convert.ToInt32 (cmd.ExecuteScalar ()); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Gets the password for the specified user name from the data source. - /// - /// The user to retrieve the password for. - /// The password answer for the user. - /// - /// The password for the specified user name. - /// - public override string GetPassword (string username, string answer) - { - if (!EnablePasswordRetrieval) { - throw new ProviderException ("Password retrieval not enabled."); - } - - if (PasswordFormat == MembershipPasswordFormat.Hashed) { - throw new ProviderException ("Cannot retrieve hashed passwords."); - } - - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT Password, PasswordFormat, PasswordSalt, PasswordAnswer, IsLockedOut FROM " - + USER_TB_NAME + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - using (SqliteDataReader dr = cmd.ExecuteReader((CommandBehavior.SingleRow))) { - string password, passwordAnswer, passwordSalt; - MembershipPasswordFormat passwordFormat; - - if (dr.HasRows) { - dr.Read (); - - if (dr.GetBoolean (4)) - throw new MembershipPasswordException ("The supplied user is locked out."); - - password = dr.GetString (0); - passwordFormat = (MembershipPasswordFormat)Enum.Parse (typeof(MembershipPasswordFormat), dr.GetString (1)); - passwordSalt = dr.GetString (2); - passwordAnswer = (dr.GetValue (3) == DBNull.Value ? String.Empty : dr.GetString (3)); - } else { - throw new MembershipPasswordException ("The supplied user name is not found."); - } - - if (RequiresQuestionAndAnswer && !ComparePasswords (answer, passwordAnswer, passwordSalt, passwordFormat)) { - UpdateFailureCount (username, "passwordAnswer", false); - - throw new MembershipPasswordException ("Incorrect password answer."); - } - - if (passwordFormat == MembershipPasswordFormat.Encrypted) { - password = UnEncodePassword (password, passwordFormat); - } - - return password; - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Gets information from the data source for a user. Provides an option to update the last-activity date/time stamp for the user. - /// - /// The name of the user to get information for. - /// true to update the last-activity date/time stamp for the user; false to return user information without updating the last-activity date/time stamp for the user. - /// - /// A object populated with the specified user's information from the data source. - /// - public override MembershipUser GetUser (string username, bool userIsOnline) - { - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT UserId, Username, Email, PasswordQuestion," - + " Comment, IsApproved, IsLockedOut, CreateDate, LastLoginDate," - + " LastActivityDate, LastPasswordChangedDate, LastLockoutDate" - + " FROM " + USER_TB_NAME + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - MembershipUser user = null; - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - using (SqliteDataReader dr = cmd.ExecuteReader()) { - if (dr.HasRows) { - dr.Read (); - user = GetUserFromReader (dr); - } - } - - if (userIsOnline) { - cmd.CommandText = "UPDATE " + USER_TB_NAME - + " SET LastActivityDate = $LastActivityDate" - + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$LastActivityDate", DateTime.UtcNow); - - cmd.ExecuteNonQuery (); - } - - return user; - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Gets user information from the data source based on the unique identifier for the membership user. Provides an option to update the last-activity date/time stamp for the user. - /// - /// The unique identifier for the membership user to get information for. - /// true to update the last-activity date/time stamp for the user; false to return user information without updating the last-activity date/time stamp for the user. - /// - /// A object populated with the specified user's information from the data source. - /// - public override MembershipUser GetUser (object providerUserKey, bool userIsOnline) - { - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT UserId, Username, Email, PasswordQuestion," - + " Comment, IsApproved, IsLockedOut, CreateDate, LastLoginDate," - + " LastActivityDate, LastPasswordChangedDate, LastLockoutDate" - + " FROM " + USER_TB_NAME + " WHERE UserId = $UserId"; - - cmd.Parameters.AddWithValue ("$UserId", providerUserKey.ToString ()); - - MembershipUser user = null; - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - using (SqliteDataReader dr = cmd.ExecuteReader()) { - if (dr.HasRows) { - dr.Read (); - user = GetUserFromReader (dr); - } - } - - if (userIsOnline) { - cmd.CommandText = "UPDATE " + USER_TB_NAME - + " SET LastActivityDate = $LastActivityDate" - + " WHERE UserId = $UserId"; - - cmd.Parameters.AddWithValue ("$LastActivityDate", DateTime.UtcNow); - cmd.ExecuteNonQuery (); - } - - return user; - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Unlocks the user. - /// - /// The username. - /// Returns true if user was unlocked; otherwise returns false. - public override bool UnlockUser (string username) - { - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "UPDATE " + USER_TB_NAME - + " SET IsLockedOut = '0', FailedPasswordAttemptCount = 0," - + " FailedPasswordAttemptWindowStart = $MinDate, FailedPasswordAnswerAttemptCount = 0," - + " FailedPasswordAnswerAttemptWindowStart = $MinDate" - + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$MinDate", _minDate); - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - return (cmd.ExecuteNonQuery () > 0); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Gets the user name associated with the specified e-mail address. - /// - /// The e-mail address to search for. - /// - /// The user name associated with the specified e-mail address. If no match is found, return null. - /// - public override string GetUserNameByEmail (string email) - { - if (email == null) - return null; - - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT Username" + - " FROM " + USER_TB_NAME + " WHERE LoweredEmail = $Email AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$Email", email.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - return (cmd.ExecuteScalar () as string); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Resets a user's password to a new, automatically generated password. - /// - /// The user to reset the password for. - /// The password answer for the specified user. - /// The new password for the specified user. - /// username is not found in the membership database.- or -The - /// change password action was canceled by a subscriber to the System.Web.Security.Membership.ValidatePassword - /// event and the property was null.- or -An - /// error occurred while retrieving the password from the database. - /// - /// is set to false. - /// username is an empty string (""), contains a comma, or is longer than 256 characters. - /// - or -passwordAnswer is an empty string or is longer than 128 characters and - /// is true.- or -passwordAnswer is longer - /// than 128 characters after encoding. - /// username is null.- or -passwordAnswer is null and - /// is true. - /// passwordAnswer is invalid. - or -The user account is currently locked out. - public override string ResetPassword (string username, string passwordAnswer) - { - string salt; - MembershipPasswordFormat passwordFormat; - string passwordFromDb; - int status; - int failedPwdAttemptCount; - int failedPwdAnswerAttemptCount; - bool isApproved; - DateTime lastLoginDate; - DateTime lastActivityDate; - if (!this.EnablePasswordReset) { - throw new NotSupportedException ("This provider is not configured to allow password resets. To enable password reset, set enablePasswordReset to \"true\" in the configuration file."); - } - SecUtility.CheckParameter (ref username, true, true, true, 0x100, "username"); - - GetPasswordWithFormat (username, out status, out passwordFromDb, out passwordFormat, out salt, out failedPwdAttemptCount, out failedPwdAnswerAttemptCount, out isApproved, out lastLoginDate, out lastActivityDate); - - if (status != 0) { - if (IsStatusDueToBadPassword (status)) { - throw new MembershipPasswordException (GetExceptionText (status)); - } - throw new ProviderException (GetExceptionText (status)); - } - - string encodedPwdAnswer; - if (passwordAnswer != null) { - passwordAnswer = passwordAnswer.Trim (); - } - if (!string.IsNullOrEmpty (passwordAnswer)) { - encodedPwdAnswer = EncodePassword (passwordAnswer.ToLower (CultureInfo.InvariantCulture), passwordFormat, salt); - } else { - encodedPwdAnswer = passwordAnswer; - } - SecUtility.CheckParameter (ref encodedPwdAnswer, this.RequiresQuestionAndAnswer, this.RequiresQuestionAndAnswer, false, MAX_PASSWORD_ANSWER_LENGTH, "passwordAnswer"); - - string newPassword = Membership.GeneratePassword (NEW_PASSWORD_LENGTH, MinRequiredNonAlphanumericCharacters); - - ValidatePasswordEventArgs e = new ValidatePasswordEventArgs (username, newPassword, false); - this.OnValidatingPassword (e); - if (e.Cancel) { - if (e.FailureInformation != null) { - throw e.FailureInformation; - } - throw new ProviderException ("The custom password validation failed."); - } - - // From this point on the only logic I need to implement is that contained in aspnet_Membership_ResetPassword. - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT PasswordAnswer, IsLockedOut FROM " + USER_TB_NAME - + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - using (SqliteDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow)) { - string passwordAnswerFromDb; - if (dr.HasRows) { - dr.Read (); - - if (Convert.ToBoolean (dr.GetValue (1))) - throw new MembershipPasswordException ("The supplied user is locked out."); - - passwordAnswerFromDb = dr.GetValue (0) as string; - } else { - throw new MembershipPasswordException ("The supplied user name is not found."); - } - - if (RequiresQuestionAndAnswer && !ComparePasswords (passwordAnswer, passwordAnswerFromDb, salt, passwordFormat)) { - UpdateFailureCount (username, "passwordAnswer", false); - - throw new MembershipPasswordException ("Incorrect password answer."); - } - } - - cmd.CommandText = "UPDATE " + USER_TB_NAME - + " SET Password = $Password, LastPasswordChangedDate = $LastPasswordChangedDate," - + " FailedPasswordAttemptCount = 0, FailedPasswordAttemptWindowStart = $MinDate," - + " FailedPasswordAnswerAttemptCount = 0, FailedPasswordAnswerAttemptWindowStart = $MinDate" - + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId AND IsLockedOut = 0"; - - cmd.Parameters.Clear (); - cmd.Parameters.AddWithValue ("$Password", EncodePassword (newPassword, passwordFormat, salt)); - cmd.Parameters.AddWithValue ("$LastPasswordChangedDate", DateTime.UtcNow); - cmd.Parameters.AddWithValue ("$MinDate", _minDate); - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cmd.ExecuteNonQuery () > 0) { - return newPassword; - } else { - throw new MembershipPasswordException ("User not found, or user is locked out. Password not reset."); - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Updates information about a user in the data source. - /// - /// A object that represents the user to update and the updated information for the user. - public override void UpdateUser (MembershipUser user) - { - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "UPDATE " + USER_TB_NAME + - " SET Email = $Email, LoweredEmail = $LoweredEmail, Comment = $Comment," + - " IsApproved = $IsApproved" + - " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$Email", user.Email); - cmd.Parameters.AddWithValue ("$LoweredEmail", user.Email.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$Comment", user.Comment); - cmd.Parameters.AddWithValue ("$IsApproved", user.IsApproved); - cmd.Parameters.AddWithValue ("$Username", user.UserName.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - cmd.ExecuteNonQuery (); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Verifies that the specified user name and password exist in the data source. - /// - /// The name of the user to validate. - /// The password for the specified user. - /// - /// true if the specified username and password are valid; otherwise, false. - /// - public override bool ValidateUser (string username, string password) - { - if (!SecUtility.ValidateParameter (ref username, true, true, true, MAX_USERNAME_LENGTH) || !SecUtility.ValidateParameter (ref password, true, true, false, MAX_PASSWORD_LENGTH)) { - return false; - } - - string salt; - MembershipPasswordFormat passwordFormat; - bool isAuthenticated = CheckPassword (username, password, true, out salt, out passwordFormat); - - if (isAuthenticated) { - // User is authenticated. Update last activity and last login dates. - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "UPDATE " + USER_TB_NAME - + " SET LastActivityDate = $UtcNow, LastLoginDate = $UtcNow" - + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$UtcNow", DateTime.UtcNow); - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - cmd.ExecuteNonQuery (); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - return isAuthenticated; - } - - /// - /// Gets a collection of membership users where the user name contains the specified user name to match. - /// - /// The user name to search for. - /// The index of the page of results to return. is zero-based. - /// The size of the page of results to return. - /// The total number of matched users. - /// - /// A collection that contains a page of objects beginning at the page specified by . - /// - public override MembershipUserCollection FindUsersByName (string usernameToMatch, int pageIndex, int pageSize, out int totalRecords) - { - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT Count(*) FROM " + USER_TB_NAME + - "WHERE LoweredUsername LIKE $UsernameSearch AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$UsernameSearch", usernameToMatch.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - totalRecords = Convert.ToInt32 (cmd.ExecuteScalar ()); - - MembershipUserCollection users = new MembershipUserCollection (); - - if (totalRecords <= 0) { - return users; - } - - cmd.CommandText = "SELECT UserId, Username, Email, PasswordQuestion," - + " Comment, IsApproved, IsLockedOut, CreateDate, LastLoginDate," - + " LastActivityDate, LastPasswordChangedDate, LastLockoutDate " - + " FROM " + USER_TB_NAME - + " WHERE LoweredUsername LIKE $UsernameSearch AND ApplicationId = $ApplicationId " - + " ORDER BY Username Asc"; - - using (SqliteDataReader dr = cmd.ExecuteReader()) { - int counter = 0; - int startIndex = pageSize * pageIndex; - int endIndex = startIndex + pageSize - 1; - - while (dr.Read()) { - if (counter >= startIndex) { - MembershipUser u = GetUserFromReader (dr); - users.Add (u); - } - - if (counter >= endIndex) { - cmd.Cancel (); - } - - counter++; - } - } - - return users; - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Gets a collection of membership users where the e-mail address contains the specified e-mail address to match. - /// - /// The e-mail address to search for. - /// The index of the page of results to return. is zero-based. - /// The size of the page of results to return. - /// The total number of matched users. - /// - /// A collection that contains a page of objects beginning at the page specified by . - /// - public override MembershipUserCollection FindUsersByEmail (string emailToMatch, int pageIndex, int pageSize, out int totalRecords) - { - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT Count(*) FROM " + USER_TB_NAME - + " WHERE LoweredEmail LIKE $EmailSearch AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$EmailSearch", emailToMatch.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - totalRecords = Convert.ToInt32 (cmd.ExecuteScalar ()); - - MembershipUserCollection users = new MembershipUserCollection (); - - if (totalRecords <= 0) { - return users; - } - - cmd.CommandText = "SELECT UserId, Username, Email, PasswordQuestion," - + " Comment, IsApproved, IsLockedOut, CreateDate, LastLoginDate," - + " LastActivityDate, LastPasswordChangedDate, LastLockoutDate" - + " FROM " + USER_TB_NAME - + " WHERE LoweredEmail LIKE $EmailSearch AND ApplicationId = $ApplicationId" - + " ORDER BY Username Asc"; - - using (SqliteDataReader dr = cmd.ExecuteReader()) { - int counter = 0; - int startIndex = pageSize * pageIndex; - int endIndex = startIndex + pageSize - 1; - - while (dr.Read()) { - if (counter >= startIndex) { - MembershipUser u = GetUserFromReader (dr); - users.Add (u); - } - - if (counter >= endIndex) { - cmd.Cancel (); - } - - counter++; - } - } - - return users; - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - #endregion - - #region Private Methods - - private static void ValidatePwdStrengthRegularExpression () - { - // Validate regular expression, if supplied. - if (_passwordStrengthRegularExpression == null) - _passwordStrengthRegularExpression = String.Empty; - - _passwordStrengthRegularExpression = _passwordStrengthRegularExpression.Trim (); - if (_passwordStrengthRegularExpression.Length > 0) { - try { - new Regex (_passwordStrengthRegularExpression); - } catch (ArgumentException ex) { - throw new ProviderException (ex.Message, ex); - } - } - } - - private static void VerifyApplication () - { - // Verify a record exists in the application table. - if (!String.IsNullOrEmpty (_applicationId)) - return; - - // No record exists in the application table. Create one now. - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "INSERT INTO " + APP_TB_NAME + " (ApplicationId, ApplicationName, Description) VALUES ($ApplicationId, $ApplicationName, $Description)"; - - _applicationId = Guid.NewGuid ().ToString (); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - cmd.Parameters.AddWithValue ("ApplicationName", _applicationName); - cmd.Parameters.AddWithValue ("Description", String.Empty); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - cmd.ExecuteNonQuery (); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - private static string GetApplicationId (string appName) - { - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT ApplicationId FROM aspnet_Applications WHERE ApplicationName = $AppName"; - cmd.Parameters.AddWithValue ("$AppName", appName); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - return cmd.ExecuteScalar () as string; - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - private static string GetConfigValue (string configValue, string defaultValue) - { - // A helper function to retrieve config values from the configuration file. - if (String.IsNullOrEmpty (configValue)) - return defaultValue; - - return configValue; - } - - private MembershipUser GetUserFromReader (IDataRecord reader) - { - // A helper function that takes the current row from the SqliteDataReader - // and hydrates a MembershipUser from the values. Called by the MembershipUser.GetUser implementation. - // Datareader is filled with SQL specifying these fields: - // SELECT UserId, Username, Email, PasswordQuestion," - // + " Comment, IsApproved, IsLockedOut, CreateDate, LastLoginDate," - // + " LastActivityDate, LastPasswordChangedDate, LastLockoutDate" - // + " FROM " + USER_TB_NAME - if (reader.GetString (1) == "") - return null; - object providerUserKey = null; - string strGooid = Guid.NewGuid ().ToString (); - - if (reader.GetValue (0).ToString ().Length > 0) - providerUserKey = new Guid (reader.GetValue (0).ToString ()); - else - providerUserKey = new Guid (strGooid); - - string username = reader.GetString (1); - - string email = (reader.GetValue (2) == DBNull.Value ? String.Empty : reader.GetString (2)); - - string passwordQuestion = (reader.GetValue (3) == DBNull.Value ? String.Empty : reader.GetString (3)); - - string comment = (reader.GetValue (4) == DBNull.Value ? String.Empty : reader.GetString (4)); - - bool isApproved = reader.GetBoolean (5); - - bool isLockedOut = reader.GetBoolean (6); - - DateTime creationDate = reader.GetDateTime (7); - - DateTime lastLoginDate = reader.GetDateTime (8); - - DateTime lastActivityDate = reader.GetDateTime (9); - - DateTime lastPasswordChangedDate = reader.GetDateTime (10); - - DateTime lastLockedOutDate = reader.GetDateTime (11); - - MembershipUser user = new MembershipUser (this.Name, - username, - providerUserKey, - email, - passwordQuestion, - comment, - isApproved, - isLockedOut, - creationDate, - lastLoginDate, - lastActivityDate, - lastPasswordChangedDate, - lastLockedOutDate); - - return user; - } - - private void UpdateFailureCount (string username, string failureType, bool isAuthenticated) - { - // A helper method that performs the checks and updates associated with password failure tracking. - if (!((failureType == "password") || (failureType == "passwordAnswer"))) { - throw new ArgumentException ("Invalid value for failureType parameter. Must be 'password' or 'passwordAnswer'.", "failureType"); - } - - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT FailedPasswordAttemptCount, FailedPasswordAttemptWindowStart, " - + " FailedPasswordAnswerAttemptCount, FailedPasswordAnswerAttemptWindowStart, IsLockedOut " - + " FROM " + USER_TB_NAME - + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - int failedPasswordAttemptCount = 0; - int failedPasswordAnswerAttemptCount = 0; - DateTime failedPasswordAttemptWindowStart = _minDate; - DateTime failedPasswordAnswerAttemptWindowStart = _minDate; - bool isLockedOut = false; - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - using (SqliteDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow)) { - if (dr.HasRows) { - dr.Read (); - - failedPasswordAttemptCount = dr.GetInt32 (0); - failedPasswordAttemptWindowStart = dr.GetDateTime (1); - failedPasswordAnswerAttemptCount = dr.GetInt32 (2); - failedPasswordAnswerAttemptWindowStart = dr.GetDateTime (3); - isLockedOut = dr.GetBoolean (4); - } - } - - if (isLockedOut) - return; // Just exit without updating any fields if user is locked out. - - if (isAuthenticated) { - // User is valid, so make sure certain fields have been reset. - if ((failedPasswordAttemptCount > 0) || (failedPasswordAnswerAttemptCount > 0)) { - cmd.CommandText = "UPDATE " + USER_TB_NAME - + " SET FailedPasswordAttemptCount = 0, FailedPasswordAttemptWindowStart = $MinDate, " - + " FailedPasswordAnswerAttemptCount = 0, FailedPasswordAnswerAttemptWindowStart = $MinDate, IsLockedOut = '0' " - + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.Clear (); - cmd.Parameters.AddWithValue ("$MinDate", _minDate); - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - cmd.ExecuteNonQuery (); - } - - return; - } - - // If we get here that means isAuthenticated = false, which means the user did not log on successfully. - // Log the failure and possibly lock out the user if she exceeded the number of allowed attempts. - DateTime windowStart = _minDate; - int failureCount = 0; - if (failureType == "password") { - windowStart = failedPasswordAttemptWindowStart; - failureCount = failedPasswordAttemptCount; - } else if (failureType == "passwordAnswer") { - windowStart = failedPasswordAnswerAttemptWindowStart; - failureCount = failedPasswordAnswerAttemptCount; - } - - DateTime windowEnd = windowStart.AddMinutes (PasswordAttemptWindow); - - if (failureCount == 0 || DateTime.UtcNow > windowEnd) { - // First password failure or outside of PasswordAttemptWindow. - // Start a new password failure count from 1 and a new window starting now. - - if (failureType == "password") - cmd.CommandText = "UPDATE " + USER_TB_NAME - + " SET FailedPasswordAttemptCount = $Count, " - + " FailedPasswordAttemptWindowStart = $WindowStart " - + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - if (failureType == "passwordAnswer") - cmd.CommandText = "UPDATE " + USER_TB_NAME - + " SET FailedPasswordAnswerAttemptCount = $Count, " - + " FailedPasswordAnswerAttemptWindowStart = $WindowStart " - + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.Clear (); - cmd.Parameters.AddWithValue ("$Count", 1); - cmd.Parameters.AddWithValue ("$WindowStart", DateTime.UtcNow); - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cmd.ExecuteNonQuery () < 0) - throw new ProviderException ("Unable to update failure count and window start."); - } else { - if (failureCount++ >= MaxInvalidPasswordAttempts) { - // Password attempts have exceeded the failure threshold. Lock out the user. - cmd.CommandText = "UPDATE " + USER_TB_NAME - + " SET IsLockedOut = '1', LastLockoutDate = $LastLockoutDate, FailedPasswordAttemptCount = $Count " - + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.Clear (); - cmd.Parameters.AddWithValue ("$LastLockoutDate", DateTime.UtcNow); - cmd.Parameters.AddWithValue ("$Count", failureCount); - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cmd.ExecuteNonQuery () < 0) - throw new ProviderException ("Unable to lock out user."); - } else { - // Password attempts have not exceeded the failure threshold. Update - // the failure counts. Leave the window the same. - - if (failureType == "password") - cmd.CommandText = "UPDATE " + USER_TB_NAME - + " SET FailedPasswordAttemptCount = $Count" - + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - if (failureType == "passwordAnswer") - cmd.CommandText = "UPDATE " + USER_TB_NAME - + " SET FailedPasswordAnswerAttemptCount = $Count" - + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.Clear (); - cmd.Parameters.AddWithValue ("$Count", failureCount); - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cmd.ExecuteNonQuery () < 0) - throw new ProviderException ("Unable to update failure count."); - } - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - private bool ComparePasswords (string password, string dbpassword, string salt, MembershipPasswordFormat passwordFormat) - { - // Compares password values based on the MembershipPasswordFormat. - string pass1 = password; - string pass2 = dbpassword; - - switch (passwordFormat) { - case MembershipPasswordFormat.Encrypted: - pass2 = UnEncodePassword (dbpassword, passwordFormat); - break; - case MembershipPasswordFormat.Hashed: - pass1 = EncodePassword (password, passwordFormat, salt); - break; - default: - break; - } - - if (pass1 == pass2) { - return true; - } - - return false; - } - - private bool CheckPassword (string username, string password, bool failIfNotApproved, out string salt, out MembershipPasswordFormat passwordFormat) - { - string encodedPwdFromDatabase; // If passwordFormat = "Clear", password is not encoded. - int status; - int failedPwdAttemptCount; - int failedPwdAnswerAttemptCount; - bool isApproved; - DateTime lastLoginDate; - DateTime lastActivityDate; - GetPasswordWithFormat (username, out status, out encodedPwdFromDatabase, out passwordFormat, out salt, out failedPwdAttemptCount, out failedPwdAnswerAttemptCount, out isApproved, out lastLoginDate, out lastActivityDate); - if (status != 0) { - return false; - } - if (!isApproved && failIfNotApproved) { - return false; - } - string encodedPwdFromUser = EncodePassword (password, passwordFormat, salt); - bool isAuthenticated = encodedPwdFromDatabase.Equals (encodedPwdFromUser); - if ((isAuthenticated && (failedPwdAttemptCount == 0)) && (failedPwdAnswerAttemptCount == 0)) { - return true; - } - - UpdateFailureCount (username, "password", isAuthenticated); - - return isAuthenticated; - } - - /// - /// Gets several pieces of information for a user from the database. - /// - /// The username to search for. - /// The return status of the method. Possible values are: 0 = User is found and not locked; - /// 1 = User not found; 99 = User is locked. These values match the return values of the corresponding method in - /// SqlMembershipProvider, so don't blame me for this goofy implementation. - /// The password as stored in the database. If it is stored encrypted, the encrypted value - /// is returned. The calling method is responsible for decrypting it. - /// The password format as stored in the database. Possible values: Clear, Hashed, Encrypted. - /// The password salt as stored in the database. - /// The failed password attempt count as stored in the database. - /// The failed password answer attempt count as stored in the database. - /// if set to true the user is approved (not locked out). - /// The last login date. - /// The last activity date. - private static void GetPasswordWithFormat (string username, out int status, out string password, out MembershipPasswordFormat passwordFormat, out string passwordSalt, out int failedPasswordAttemptCount, out int failedPasswordAnswerAttemptCount, out bool isApproved, out DateTime lastLoginDate, out DateTime lastActivityDate) - { - SqliteConnection cn = GetDBConnectionForMembership (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT Password, PasswordFormat, PasswordSalt, FailedPasswordAttemptCount," - + " FailedPasswordAnswerAttemptCount, IsApproved, IsLockedOut, LastLoginDate, LastActivityDate" - + " FROM " + USER_TB_NAME + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - using (SqliteDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow)) { - if (dr.HasRows) { - dr.Read (); - - password = dr.GetString (0); - passwordFormat = (MembershipPasswordFormat)Enum.Parse (typeof(MembershipPasswordFormat), dr.GetString (1)); - passwordSalt = dr.GetString (2); - failedPasswordAttemptCount = dr.GetInt32 (3); - failedPasswordAnswerAttemptCount = dr.GetInt32 (4); - isApproved = dr.GetBoolean (5); - status = dr.GetBoolean (6) ? 99 : 0; // 99 = User is locked; 0 = User is found & not locked - lastLoginDate = dr.GetDateTime (7); - lastActivityDate = dr.GetDateTime (8); - } else { - status = 1; // User not found - password = null; - passwordFormat = MembershipPasswordFormat.Clear; - passwordSalt = null; - failedPasswordAttemptCount = 0; - failedPasswordAnswerAttemptCount = 0; - isApproved = false; - lastLoginDate = DateTime.UtcNow; - lastActivityDate = DateTime.UtcNow; - } - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - private string EncodePassword (string password, MembershipPasswordFormat passwordFormat, string salt) - { - // Encrypts, Hashes, or leaves the password clear based on the PasswordFormat. - if (String.IsNullOrEmpty (password)) - return password; - - byte[] bytes = Encoding.Unicode.GetBytes (password); - byte[] src = Convert.FromBase64String (salt); - byte[] dst = new byte[src.Length + bytes.Length]; - byte[] inArray; - - Buffer.BlockCopy (src, 0, dst, 0, src.Length); - Buffer.BlockCopy (bytes, 0, dst, src.Length, bytes.Length); - - switch (passwordFormat) { - case MembershipPasswordFormat.Clear: - return password; - case MembershipPasswordFormat.Encrypted: - inArray = EncryptPassword (dst); - break; - case MembershipPasswordFormat.Hashed: - HashAlgorithm algorithm = HashAlgorithm.Create (Membership.HashAlgorithmType); - if (algorithm == null) { - throw new ProviderException (String.Concat ("SQLiteMembershipProvider configuration error: HashAlgorithm.Create() does not recognize the hash algorithm ", Membership.HashAlgorithmType, ".")); - } - inArray = algorithm.ComputeHash (dst); - - break; - default: - throw new ProviderException ("Unsupported password format."); - } - - return Convert.ToBase64String (inArray); - } - - private string UnEncodePassword (string encodedPassword, MembershipPasswordFormat passwordFormat) - { - // Decrypts or leaves the password clear based on the PasswordFormat. - string password = encodedPassword; - - switch (passwordFormat) { - case MembershipPasswordFormat.Clear: - break; - case MembershipPasswordFormat.Encrypted: - byte[] bytes = base.DecryptPassword (Convert.FromBase64String (password)); - if (bytes == null) { - password = null; - } else { - password = Encoding.Unicode.GetString (bytes, 0x10, bytes.Length - 0x10); - } - break; - case MembershipPasswordFormat.Hashed: - throw new ProviderException ("Cannot unencode a hashed password."); - default: - throw new ProviderException ("Unsupported password format."); - } - - return password; - } - - private static byte[] HexToByte (string hexString) - { - // Converts a hexadecimal string to a byte array. Used to convert encryption - // key values from the configuration. - byte[] returnBytes = new byte[hexString.Length / 2]; - for (int i = 0; i < returnBytes.Length; i++) - returnBytes [i] = Convert.ToByte (hexString.Substring (i * 2, 2), 16); - return returnBytes; - } - - private static string GenerateSalt () - { - byte[] data = new byte[0x10]; - new RNGCryptoServiceProvider ().GetBytes (data); - return Convert.ToBase64String (data); - } - - private static bool IsStatusDueToBadPassword (int status) - { - return (((status >= 2) && (status <= 6)) || (status == 99)); - } - - private static string GetExceptionText (int status) - { - string exceptionText; - switch (status) { - case 0: - return string.Empty; - - case 1: - exceptionText = "The user was not found."; - break; - - case 2: - exceptionText = "The password supplied is wrong."; - break; - - case 3: - exceptionText = "The password-answer supplied is wrong."; - break; - - case 4: - exceptionText = "The password supplied is invalid. Passwords must conform to the password strength requirements configured for the default provider."; - break; - - case 5: - exceptionText = "The password-question supplied is invalid. Note that the current provider configuration requires a valid password question and answer. As a result, a CreateUser overload that accepts question and answer parameters must also be used."; - break; - - case 6: - exceptionText = "The password-answer supplied is invalid."; - break; - - case 7: - exceptionText = "The E-mail supplied is invalid."; - break; - - case 99: - exceptionText = "The user account has been locked out."; - break; - - default: - exceptionText = "The Provider encountered an unknown error."; - break; - } - return exceptionText; - } - - /// - /// Get a reference to the database connection used for membership. If a transaction is currently in progress, and the - /// connection string of the transaction connection is the same as the connection string for the membership provider, - /// then the connection associated with the transaction is returned, and it will already be open. If no transaction is in progress, - /// a new is created and returned. It will be closed and must be opened by the caller - /// before using. - /// - /// A object. - /// The transaction is stored in . That means transaction support is limited - /// to web applications. For other types of applications, there is no transaction support unless this code is modified. - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] - private static SqliteConnection GetDBConnectionForMembership () - { - // Look in the HTTP context bag for a previously created connection and transaction. Return if found and its connection - // string matches that of the Membership connection string; otherwise return a fresh connection. - if (System.Web.HttpContext.Current != null) { - SqliteTransaction tran = (SqliteTransaction)System.Web.HttpContext.Current.Items [_httpTransactionId]; - if ((tran != null) && (String.Equals (tran.Connection.ConnectionString, _connectionString))) - return tran.Connection; - } - - return new SqliteConnection (_connectionString); - } - - /// - /// Determines whether a database transaction is in progress for the Membership provider. - /// - /// - /// true if a database transaction is in progress; otherwise, false. - /// - /// A transaction is considered in progress if an instance of is found in the - /// Items property and its connection string is equal to the Membership - /// provider's connection string. Note that this implementation of never adds a - /// to , but it is possible that - /// another data provider in this application does. This may be because other data is also stored in this SQLite database, - /// and the application author wants to provide transaction support across the individual providers. If an instance of - /// does not exist (for example, if the calling application is not a web application), - /// this method always returns false. - private static bool IsTransactionInProgress () - { - if (System.Web.HttpContext.Current == null) - return false; - - SqliteTransaction tran = (SqliteTransaction)System.Web.HttpContext.Current.Items [_httpTransactionId]; - - if ((tran != null) && (String.Equals (tran.Connection.ConnectionString, _connectionString))) - return true; - else - return false; - } - - #endregion - } - - /// - /// Provides general purpose validation functionality. - /// - internal class SecUtility - { - /// - /// Checks the parameter and throws an exception if one or more rules are violated. - /// - /// The parameter to check. - /// When true, verify is not null. - /// When true verify is not an empty string. - /// When true verify does not contain a comma. - /// The maximum allowed length of . - /// Name of the parameter to check. This is passed to the exception if one is thrown. - /// Thrown when is null and is true. - /// Thrown if does not satisfy one of the remaining requirements. - /// This method performs the same implementation as Microsoft's version at System.Web.Util.SecUtility. - internal static void CheckParameter (ref string param, bool checkForNull, bool checkIfEmpty, bool checkForCommas, int maxSize, string paramName) - { - if (param == null) { - if (checkForNull) { - throw new ArgumentNullException (paramName); - } - } else { - param = param.Trim (); - if (checkIfEmpty && (param.Length < 1)) { - throw new ArgumentException (String.Format ("The parameter '{0}' must not be empty.", paramName), paramName); - } - if ((maxSize > 0) && (param.Length > maxSize)) { - throw new ArgumentException (String.Format ("The parameter '{0}' is too long: it must not exceed {1} chars in length.", paramName, maxSize.ToString (CultureInfo.InvariantCulture)), paramName); - } - if (checkForCommas && param.Contains (",")) { - throw new ArgumentException (String.Format ("The parameter '{0}' must not contain commas.", paramName), paramName); - } - } - } - - /// - /// Verifies that conforms to all requirements. - /// - /// The parameter to check. - /// When true, verify is not null. - /// When true verify is not an empty string. - /// When true verify does not contain a comma. - /// The maximum allowed length of . - /// Returns true if all requirements are met; otherwise returns false. - internal static bool ValidateParameter (ref string param, bool checkForNull, bool checkIfEmpty, bool checkForCommas, int maxSize) - { - if (param == null) { - return !checkForNull; - } - param = param.Trim (); - return (((!checkIfEmpty || (param.Length >= 1)) && ((maxSize <= 0) || (param.Length <= maxSize))) && (!checkForCommas || !param.Contains (","))); - } - - } - -} \ No newline at end of file diff --git a/WebGoat/Code/SQLiteProfileProvider.cs b/WebGoat/Code/SQLiteProfileProvider.cs deleted file mode 100644 index 511b01500..000000000 --- a/WebGoat/Code/SQLiteProfileProvider.cs +++ /dev/null @@ -1,1144 +0,0 @@ -using System; -using System.Collections.Specialized; -using System.ComponentModel; -using System.Configuration; -using System.Configuration.Provider; -using System.Data; -using Mono.Data.Sqlite; -using System.Globalization; -using System.IO; -using System.Runtime.Serialization.Formatters.Binary; -using System.Text; -using System.Web.Profile; -using System.Xml.Serialization; - -namespace TechInfoSystems.Data.SQLite -{ - /// - /// Provides a Profile implementation whose data is stored in a SQLite database. - /// - public sealed class SQLiteProfileProvider : ProfileProvider - { - #region Private Fields - - private static string _connectionString; - private const string HTTP_TRANSACTION_ID = "SQLiteTran"; - private const string USER_TB_NAME = "[aspnet_Users]"; - private const string PROFILE_TB_NAME = "[aspnet_Profile]"; - private const string APP_TB_NAME = "[aspnet_Applications]"; - private const int MAX_APPLICATION_NAME_LENGTH = 256; - private static string _applicationId; - private static string _applicationName; - private static string _membershipApplicationId; - private static string _membershipApplicationName; - - #endregion - - #region Public Properties - - /// - /// Gets or sets the name of the currently running application. - /// - /// - /// - /// A that contains the application's shortened name, which does not contain a full path or extension, for example, SimpleAppSettings. - /// - public override string ApplicationName { - get { return _applicationName; } - set { - if (value.Length > MAX_APPLICATION_NAME_LENGTH) - throw new ProviderException (String.Format ("SQLiteProfileProvider error: applicationName must be less than or equal to {0} characters.", MAX_APPLICATION_NAME_LENGTH)); - - _applicationName = value; - _applicationId = GetApplicationId (_applicationName); - } - } - - /// - /// Gets or sets the name of the application used by the Membership provider. - /// - /// - /// - /// The name of the application used by the Membership provider. - /// - public static string MembershipApplicationName { - get { return _membershipApplicationName; } - set { - if (value.Length > MAX_APPLICATION_NAME_LENGTH) - throw new ProviderException (String.Format ("SQLiteProfileProvider error: membershipApplicationName must be less than or equal to {0} characters.", MAX_APPLICATION_NAME_LENGTH)); - - _membershipApplicationName = value; - _membershipApplicationId = GetApplicationId (_membershipApplicationName); - } - } - - #endregion - - #region Public Methods - - /// - /// Initializes the provider. - /// - /// The friendly name of the provider. - /// A collection of the name/value pairs representing the provider-specific attributes specified in the configuration for this provider. - /// - /// The name of the provider is null. - /// - /// - /// The name of the provider has a length of zero. - /// - /// - /// An attempt is made to call on a provider after the provider has already been initialized. - /// - public override void Initialize (string name, NameValueCollection config) - { - if (config == null) - throw new ArgumentNullException ("config"); - - if (string.IsNullOrEmpty (name)) - name = "SQLiteProfileProvider"; - - - if (string.IsNullOrEmpty (config ["description"])) { - config.Remove ("description"); - config.Add ("description", "SQLite Profile Provider"); - } - - base.Initialize (name, config); - - // Initialize SqliteConnection. - ConnectionStringSettings connectionStringSettings = ConfigurationManager.ConnectionStrings [config ["connectionStringName"]]; - - if (connectionStringSettings == null || String.IsNullOrEmpty (connectionStringSettings.ConnectionString)) { - throw new ProviderException ("Connection String is empty for SQLiteProfileProvider. Check the web configuration file (web.config)."); - } - _connectionString = connectionStringSettings.ConnectionString; - - if (config ["applicationName"] == null || config ["applicationName"].Trim () == "") { - ApplicationName = System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath; - } else { - ApplicationName = config ["applicationName"]; - } - - if (config ["membershipApplicationName"] == null || config ["membershipApplicationName"].Trim () == "") { - MembershipApplicationName = _applicationName; - } else { - MembershipApplicationName = config ["membershipApplicationName"]; - } - - // Check for invalid parameters in the config - config.Remove ("connectionStringName"); - config.Remove ("applicationName"); - config.Remove ("membershipApplicationName"); - - if (config.Count > 0) { - string attribUnrecognized = config.GetKey (0); - if (!String.IsNullOrEmpty (attribUnrecognized)) - throw new ProviderException ("Unrecognized attribute: " + attribUnrecognized); - } - - // Verify a record exists in the application table. - VerifyApplication (); - } - - /// - /// Retrieves profile property information and values from a SQL Server profile database. - /// - /// The that contains user profile information. - /// A containing profile information for the properties to be retrieved. - /// A containing profile property information and values. - public override SettingsPropertyValueCollection GetPropertyValues (SettingsContext sc, SettingsPropertyCollection properties) - { - SettingsPropertyValueCollection svc = new SettingsPropertyValueCollection (); - if (properties.Count < 1) - return svc; - - string username = (string)sc ["UserName"]; - foreach (SettingsProperty prop in properties) { - if (prop.SerializeAs == SettingsSerializeAs.ProviderSpecific) { - if (prop.PropertyType.IsPrimitive || prop.PropertyType == typeof(string)) - prop.SerializeAs = SettingsSerializeAs.String; - else - prop.SerializeAs = SettingsSerializeAs.Xml; - } - svc.Add (new SettingsPropertyValue (prop)); - } - - if (!String.IsNullOrEmpty (username)) { - GetPropertyValuesFromDatabase (username, svc); - } - return svc; - } - - /// - /// Updates the SQLite profile database with the specified property values. - /// - /// The that contains user profile information. - /// A containing profile information and - /// values for the properties to be updated. - public override void SetPropertyValues (SettingsContext sc, SettingsPropertyValueCollection properties) - { - string username = (string)sc ["UserName"]; - bool userIsAuthenticated = (bool)sc ["IsAuthenticated"]; - if (string.IsNullOrEmpty (username) || properties.Count < 1) - return; - - string names = String.Empty; - string values = String.Empty; - byte[] buf = null; - - PrepareDataForSaving (ref names, ref values, ref buf, true, properties, userIsAuthenticated); - - if (names.Length == 0) - return; - - SqliteTransaction tran = null; - SqliteConnection cn = GetDbConnectionForProfile (); - try { - if (cn.State == ConnectionState.Closed) - cn.Open (); - - if (!IsTransactionInProgress ()) - tran = cn.BeginTransaction (); - - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT UserId FROM " + USER_TB_NAME + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId;"; - - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _membershipApplicationId); - - string userId = cmd.ExecuteScalar () as string; - - if ((userId == null) && (userIsAuthenticated)) - return; // User is logged on but no record exists in user table. This should never happen, but if it doesn, just exit. - - if (userId == null) { - // User is anonymous and no record exists in user table. Add it. - userId = Guid.NewGuid ().ToString (); - - CreateAnonymousUser (username, cn, tran, userId); - } - - cmd.CommandText = "SELECT COUNT(*) FROM " + PROFILE_TB_NAME + " WHERE UserId = $UserId"; - cmd.Parameters.Clear (); - cmd.Parameters.AddWithValue ("$UserId", userId); - - if (Convert.ToInt64 (cmd.ExecuteScalar ()) > 0) { - cmd.CommandText = "UPDATE " + PROFILE_TB_NAME + " SET PropertyNames = $PropertyNames, PropertyValuesString = $PropertyValuesString, PropertyValuesBinary = $PropertyValuesBinary, LastUpdatedDate = $LastUpdatedDate WHERE UserId = $UserId"; - } else { - cmd.CommandText = "INSERT INTO " + PROFILE_TB_NAME + " (UserId, PropertyNames, PropertyValuesString, PropertyValuesBinary, LastUpdatedDate) VALUES ($UserId, $PropertyNames, $PropertyValuesString, $PropertyValuesBinary, $LastUpdatedDate)"; - } - cmd.Parameters.Clear (); - cmd.Parameters.AddWithValue ("$UserId", userId); - cmd.Parameters.AddWithValue ("$PropertyNames", names); - cmd.Parameters.AddWithValue ("$PropertyValuesString", values); - cmd.Parameters.AddWithValue ("$PropertyValuesBinary", buf); - cmd.Parameters.AddWithValue ("$LastUpdatedDate", DateTime.UtcNow); - - cmd.ExecuteNonQuery (); - - // Update activity field - cmd.CommandText = "UPDATE " + USER_TB_NAME + " SET LastActivityDate = $LastActivityDate WHERE UserId = $UserId"; - cmd.Parameters.Clear (); - cmd.Parameters.AddWithValue ("$LastActivityDate", DateTime.UtcNow); - cmd.Parameters.AddWithValue ("$UserId", userId); - cmd.ExecuteNonQuery (); - - if (tran != null) - tran.Commit (); - } - } catch { - if (tran != null) { - try { - tran.Rollback (); - } catch (SqliteException) { - } - } - - throw; - } finally { - if (tran != null) - tran.Dispose (); - - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Deletes profile properties and information for the supplied list of profiles. - /// - /// A of information about profiles that are to be deleted. - /// - /// The number of profiles deleted from the data source. - /// - public override int DeleteProfiles (ProfileInfoCollection profiles) - { - if (profiles == null) - throw new ArgumentNullException ("profiles"); - - if (profiles.Count < 1) - throw new ArgumentException ("Profiles collection is empty", "profiles"); - - int numDeleted = 0; - SqliteTransaction tran = null; - SqliteConnection cn = GetDbConnectionForProfile (); - try { - if (cn.State == ConnectionState.Closed) - cn.Open (); - - if (!IsTransactionInProgress ()) - tran = cn.BeginTransaction (); - - foreach (ProfileInfo profile in profiles) { - if (DeleteProfile (cn, tran, profile.UserName.Trim ())) - numDeleted++; - } - - // Commit the transaction if it's the one we created in this method. - if (tran != null) - tran.Commit (); - } catch { - if (tran != null) { - try { - tran.Rollback (); - } catch (SqliteException) { - } - } - - throw; - } finally { - if (tran != null) - tran.Dispose (); - - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - - return numDeleted; - } - - /// - /// When overridden in a derived class, deletes profile properties and information for profiles that match the supplied list of user names. - /// - /// A string array of user names for profiles to be deleted. - /// - /// The number of profiles deleted from the data source. - /// - public override int DeleteProfiles (string[] usernames) - { - int numDeleted = 0; - SqliteTransaction tran = null; - SqliteConnection cn = GetDbConnectionForProfile (); - try { - if (cn.State == ConnectionState.Closed) - cn.Open (); - - if (!IsTransactionInProgress ()) - tran = cn.BeginTransaction (); - - foreach (string username in usernames) { - if (DeleteProfile (cn, tran, username)) - numDeleted++; - } - - // Commit the transaction if it's the one we created in this method. - if (tran != null) - tran.Commit (); - } catch { - if (tran != null) { - try { - tran.Rollback (); - } catch (SqliteException) { - } - } - - throw; - } finally { - if (tran != null) - tran.Dispose (); - - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - - return numDeleted; - } - - /// - /// Deletes all user-profile data for profiles in which the last activity date occurred before the specified date. - /// - /// One of the values, specifying whether anonymous, authenticated, or both types of profiles are deleted. - /// A that identifies which user profiles are considered inactive. If the value of a user profile occurs on or before this date and time, the profile is considered inactive. - /// - /// The number of profiles deleted from the data source. - /// - public override int DeleteInactiveProfiles (ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate) - { - SqliteConnection cn = GetDbConnectionForProfile (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "DELETE FROM " + PROFILE_TB_NAME + " WHERE UserId IN (SELECT UserId FROM " + USER_TB_NAME - + " WHERE ApplicationId = $ApplicationId AND LastActivityDate <= $LastActivityDate" - + GetClauseForAuthenticationOptions (authenticationOption) + ")"; - - cmd.Parameters.AddWithValue ("$ApplicationId", _membershipApplicationId); - cmd.Parameters.AddWithValue ("$LastActivityDate", userInactiveSinceDate); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - return cmd.ExecuteNonQuery (); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Returns the number of profiles in which the last activity date occurred on or before the specified date. - /// - /// One of the values, specifying whether anonymous, authenticated, or both types of profiles are returned. - /// A that identifies which user profiles are considered inactive. If the of a user profile occurs on or before this date and time, the profile is considered inactive. - /// - /// The number of profiles in which the last activity date occurred on or before the specified date. - /// - public override int GetNumberOfInactiveProfiles (ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate) - { - SqliteConnection cn = GetDbConnectionForProfile (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT COUNT(*) FROM " + USER_TB_NAME + " u, " + PROFILE_TB_NAME + " p " + - "WHERE u.ApplicationId = $ApplicationId AND u.LastActivityDate <= $LastActivityDate AND u.UserId = p.UserId" + GetClauseForAuthenticationOptions (authenticationOption); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - cmd.Parameters.AddWithValue ("$ApplicationId", _membershipApplicationId); - cmd.Parameters.AddWithValue ("$LastActivityDate", userInactiveSinceDate); - - return cmd.ExecuteNonQuery (); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Retrieves user profile data for all profiles in the data source. - /// - /// One of the values, specifying whether anonymous, authenticated, or both types of profiles are returned. - /// The index of the page of results to return. - /// The size of the page of results to return. - /// When this method returns, contains the total number of profiles. - /// - /// A containing user-profile information for all profiles in the data source. - /// - public override ProfileInfoCollection GetAllProfiles (ProfileAuthenticationOption authenticationOption, int pageIndex, int pageSize, out int totalRecords) - { - string sqlQuery = "SELECT u.UserName, u.IsAnonymous, u.LastActivityDate, p.LastUpdatedDate, length(p.PropertyNames) + length(p.PropertyValuesString) FROM " - + USER_TB_NAME + " u, " + PROFILE_TB_NAME + " p WHERE u.ApplicationId = $ApplicationId AND u.UserId = p.UserId " - + GetClauseForAuthenticationOptions (authenticationOption); - - SqliteParameter prm = new SqliteParameter ("$ApplicationId", DbType.String, 36); - prm.Value = _membershipApplicationId; - - SqliteParameter[] args = new SqliteParameter[1]; - args [0] = prm; - return GetProfilesForQuery (sqlQuery, args, pageIndex, pageSize, out totalRecords); - } - - /// - /// Retrieves user-profile data from the data source for profiles in which the last activity date occurred on or before the specified date. - /// - /// One of the values, specifying whether anonymous, authenticated, or both types of profiles are returned. - /// A that identifies which user profiles are considered inactive. If the of a user profile occurs on or before this date and time, the profile is considered inactive. - /// The index of the page of results to return. - /// The size of the page of results to return. - /// When this method returns, contains the total number of profiles. - /// - /// A containing user-profile information about the inactive profiles. - /// - public override ProfileInfoCollection GetAllInactiveProfiles (ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate, int pageIndex, int pageSize, out int totalRecords) - { - string sqlQuery = "SELECT u.UserName, u.IsAnonymous, u.LastActivityDate, p.LastUpdatedDate, length(p.PropertyNames) + length(p.PropertyValuesString) FROM " - + USER_TB_NAME + " u, " + PROFILE_TB_NAME + " p WHERE u.ApplicationId = $ApplicationId AND u.UserId = p.UserId AND u.LastActivityDate <= $LastActivityDate" - + GetClauseForAuthenticationOptions (authenticationOption); - - SqliteParameter prm1 = new SqliteParameter ("$ApplicationId", DbType.String, 256); - prm1.Value = _membershipApplicationId; - SqliteParameter prm2 = new SqliteParameter ("$LastActivityDate", DbType.DateTime); - prm2.Value = userInactiveSinceDate; - - SqliteParameter[] args = new SqliteParameter[2]; - args [0] = prm1; - args [1] = prm2; - - return GetProfilesForQuery (sqlQuery, args, pageIndex, pageSize, out totalRecords); - } - - /// - /// Retrieves profile information for profiles in which the user name matches the specified user names. - /// - /// One of the values, specifying whether anonymous, authenticated, or both types of profiles are returned. - /// The user name to search for. - /// The index of the page of results to return. - /// The size of the page of results to return. - /// When this method returns, contains the total number of profiles. - /// - /// A containing user-profile information for profiles where the user name matches the supplied parameter. - /// - public override ProfileInfoCollection FindProfilesByUserName (ProfileAuthenticationOption authenticationOption, string usernameToMatch, int pageIndex, int pageSize, out int totalRecords) - { - string sqlQuery = "SELECT u.UserName, u.IsAnonymous, u.LastActivityDate, p.LastUpdatedDate, length(p.PropertyNames) + length(p.PropertyValuesString) FROM " - + USER_TB_NAME + " u, " + PROFILE_TB_NAME + " p WHERE u.ApplicationId = $ApplicationId AND u.UserId = p.UserId AND u.LoweredUserName LIKE $UserName" - + GetClauseForAuthenticationOptions (authenticationOption); - - SqliteParameter prm1 = new SqliteParameter ("$ApplicationId", DbType.String, 256); - prm1.Value = _membershipApplicationId; - SqliteParameter prm2 = new SqliteParameter ("$UserName", DbType.String, 256); - prm2.Value = usernameToMatch.ToLowerInvariant (); - - SqliteParameter[] args = new SqliteParameter[2]; - args [0] = prm1; - args [1] = prm2; - - return GetProfilesForQuery (sqlQuery, args, pageIndex, pageSize, out totalRecords); - } - - /// - /// Retrieves profile information for profiles in which the last activity date occurred on or before the specified date and the user name matches the specified user name. - /// - /// One of the values, specifying whether anonymous, authenticated, or both types of profiles are returned. - /// The user name to search for. - /// A that identifies which user profiles are considered inactive. If the value of a user profile occurs on or before this date and time, the profile is considered inactive. - /// The index of the page of results to return. - /// The size of the page of results to return. - /// When this method returns, contains the total number of profiles. - /// - /// A containing user profile information for inactive profiles where the user name matches the supplied parameter. - /// - public override ProfileInfoCollection FindInactiveProfilesByUserName (ProfileAuthenticationOption authenticationOption, string usernameToMatch, DateTime userInactiveSinceDate, int pageIndex, int pageSize, out int totalRecords) - { - string sqlQuery = "SELECT u.UserName, u.IsAnonymous, u.LastActivityDate, p.LastUpdatedDate, length(p.PropertyNames) + length(p.PropertyValuesString) FROM " - + USER_TB_NAME + " u, " + PROFILE_TB_NAME + " p WHERE u.ApplicationId = $ApplicationId AND u.UserId = p.UserId AND u.UserName LIKE $UserName AND u.LastActivityDate <= $LastActivityDate" - + GetClauseForAuthenticationOptions (authenticationOption); - - SqliteParameter prm1 = new SqliteParameter ("$ApplicationId", DbType.String, 256); - prm1.Value = _membershipApplicationId; - SqliteParameter prm2 = new SqliteParameter ("$UserName", DbType.String, 256); - prm2.Value = usernameToMatch.ToLowerInvariant (); - SqliteParameter prm3 = new SqliteParameter ("$LastActivityDate", DbType.DateTime); - prm3.Value = userInactiveSinceDate; - - SqliteParameter[] args = new SqliteParameter[3]; - args [0] = prm1; - args [1] = prm2; - args [2] = prm3; - - return GetProfilesForQuery (sqlQuery, args, pageIndex, pageSize, out totalRecords); - } - - #endregion - - #region Private Methods - - private static void CreateAnonymousUser (string username, SqliteConnection cn, SqliteTransaction tran, string userId) - { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "INSERT INTO " + USER_TB_NAME - + " (UserId, Username, LoweredUsername, ApplicationId, Email, LoweredEmail, Comment, Password," - + " PasswordFormat, PasswordSalt, PasswordQuestion," - + " PasswordAnswer, IsApproved, IsAnonymous," - + " CreateDate, LastPasswordChangedDate, LastActivityDate," - + " LastLoginDate, IsLockedOut, LastLockoutDate," - + " FailedPasswordAttemptCount, FailedPasswordAttemptWindowStart," - + " FailedPasswordAnswerAttemptCount, FailedPasswordAnswerAttemptWindowStart)" - + " Values($UserId, $Username, $LoweredUsername, $ApplicationId, $Email, $LoweredEmail, $Comment, $Password," - + " $PasswordFormat, $PasswordSalt, $PasswordQuestion, $PasswordAnswer, $IsApproved, $IsAnonymous, $CreateDate, $LastPasswordChangedDate," - + " $LastActivityDate, $LastLoginDate, $IsLockedOut, $LastLockoutDate," - + " $FailedPasswordAttemptCount, $FailedPasswordAttemptWindowStart," - + " $FailedPasswordAnswerAttemptCount, $FailedPasswordAnswerAttemptWindowStart)"; - - cmd.Transaction = tran; - - DateTime nullDate = DateTime.MinValue; - DateTime nowDate = DateTime.UtcNow; - - cmd.Parameters.Add ("$UserId", DbType.String).Value = userId; - cmd.Parameters.Add ("$Username", DbType.String, 256).Value = username; - cmd.Parameters.Add ("$LoweredUsername", DbType.String, 256).Value = username.ToLowerInvariant (); - cmd.Parameters.Add ("$ApplicationId", DbType.String, 256).Value = _membershipApplicationId; - cmd.Parameters.Add ("$Email", DbType.String, 256).Value = String.Empty; - cmd.Parameters.Add ("$LoweredEmail", DbType.String, 256).Value = String.Empty; - cmd.Parameters.Add ("$Comment", DbType.String, 3000).Value = null; - cmd.Parameters.Add ("$Password", DbType.String, 128).Value = Guid.NewGuid ().ToString (); - cmd.Parameters.Add ("$PasswordFormat", DbType.String, 128).Value = System.Web.Security.Membership.Provider.PasswordFormat.ToString (); - cmd.Parameters.Add ("$PasswordSalt", DbType.String, 128).Value = String.Empty; - cmd.Parameters.Add ("$PasswordQuestion", DbType.String, 256).Value = null; - cmd.Parameters.Add ("$PasswordAnswer", DbType.String, 128).Value = null; - cmd.Parameters.Add ("$IsApproved", DbType.Boolean).Value = true; - cmd.Parameters.Add ("$IsAnonymous", DbType.Boolean).Value = true; - cmd.Parameters.Add ("$CreateDate", DbType.DateTime).Value = nowDate; - cmd.Parameters.Add ("$LastPasswordChangedDate", DbType.DateTime).Value = nullDate; - cmd.Parameters.Add ("$LastActivityDate", DbType.DateTime).Value = nowDate; - cmd.Parameters.Add ("$LastLoginDate", DbType.DateTime).Value = nullDate; - cmd.Parameters.Add ("$IsLockedOut", DbType.Boolean).Value = false; - cmd.Parameters.Add ("$LastLockoutDate", DbType.DateTime).Value = nullDate; - cmd.Parameters.Add ("$FailedPasswordAttemptCount", DbType.Int32).Value = 0; - cmd.Parameters.Add ("$FailedPasswordAttemptWindowStart", DbType.DateTime).Value = nullDate; - cmd.Parameters.Add ("$FailedPasswordAnswerAttemptCount", DbType.Int32).Value = 0; - cmd.Parameters.Add ("$FailedPasswordAnswerAttemptWindowStart", DbType.DateTime).Value = nullDate; - - if (cn.State != ConnectionState.Open) - cn.Open (); - - cmd.ExecuteNonQuery (); - } - } - - private static void ParseDataFromDb (string[] names, string values, byte[] buf, SettingsPropertyValueCollection properties) - { - if (names == null || values == null || buf == null || properties == null) - return; - - for (int iter = 0; iter < names.Length / 4; iter++) { - string name = names [iter * 4]; - SettingsPropertyValue pp = properties [name]; - - if (pp == null) // property not found - continue; - - int startPos = Int32.Parse (names [iter * 4 + 2], CultureInfo.InvariantCulture); - int length = Int32.Parse (names [iter * 4 + 3], CultureInfo.InvariantCulture); - - if (length == -1 && !pp.Property.PropertyType.IsValueType) { // Null Value - pp.PropertyValue = null; - pp.IsDirty = false; - pp.Deserialized = true; - } - if (names [iter * 4 + 1] == "S" && startPos >= 0 && length > 0 && values.Length >= startPos + length) { - pp.PropertyValue = Deserialize (pp, values.Substring (startPos, length)); - } - - if (names [iter * 4 + 1] == "B" && startPos >= 0 && length > 0 && buf.Length >= startPos + length) { - byte[] buf2 = new byte[length]; - - Buffer.BlockCopy (buf, startPos, buf2, 0, length); - pp.PropertyValue = Deserialize (pp, buf2); - } - } - } - - private static void GetPropertyValuesFromDatabase (string username, SettingsPropertyValueCollection svc) - { - string[] names = null; - string values = null; - byte[] buffer = null; - - SqliteConnection cn = GetDbConnectionForProfile (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT UserId FROM " + USER_TB_NAME + " WHERE LoweredUsername = $UserName AND ApplicationId = $ApplicationId"; - cmd.Parameters.AddWithValue ("$UserName", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _membershipApplicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - string userId = cmd.ExecuteScalar () as string; - - if (userId != null) { - // User exists? - cmd.CommandText = "SELECT PropertyNames, PropertyValuesString, PropertyValuesBinary FROM " + PROFILE_TB_NAME + " WHERE UserId = $UserId"; - cmd.Parameters.Clear (); - cmd.Parameters.AddWithValue ("$UserId", userId); - - - using (SqliteDataReader dr = cmd.ExecuteReader()) { - if (dr.Read ()) { - names = dr.GetString (0).Split (':'); - values = dr.GetString (1); - int length = (int)dr.GetBytes (2, 0L, null, 0, 0); - buffer = new byte[length]; - dr.GetBytes (2, 0L, buffer, 0, length); - } - } - - cmd.CommandText = "UPDATE " + USER_TB_NAME + " SET LastActivityDate = $LastActivityDate WHERE UserId = $UserId"; - cmd.Parameters.Clear (); - cmd.Parameters.AddWithValue ("$LastActivityDate", DateTime.UtcNow); - cmd.Parameters.AddWithValue ("$UserId", userId); - - cmd.ExecuteNonQuery (); - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - - if (names != null && names.Length > 0) { - ParseDataFromDb (names, values, buffer, svc); - } - } - - private static string GetApplicationId (string appName) - { - SqliteConnection cn = GetDbConnectionForProfile (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT ApplicationId FROM aspnet_Applications WHERE ApplicationName = $AppName"; - cmd.Parameters.AddWithValue ("$AppName", appName); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - return cmd.ExecuteScalar () as string; - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - private static void VerifyApplication () - { - // Verify a record exists in the application table. - if (String.IsNullOrEmpty (_applicationId) || String.IsNullOrEmpty (_membershipApplicationName)) { - // No record exists in the application table for either the profile application and/or the membership application. Create it. - SqliteConnection cn = GetDbConnectionForProfile (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "INSERT INTO " + APP_TB_NAME + " (ApplicationId, ApplicationName, Description) VALUES ($ApplicationId, $ApplicationName, $Description)"; - - string profileApplicationId = Guid.NewGuid ().ToString (); - - cmd.Parameters.AddWithValue ("$ApplicationId", profileApplicationId); - cmd.Parameters.AddWithValue ("$ApplicationName", _applicationName); - cmd.Parameters.AddWithValue ("$Description", String.Empty); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - // Insert record for the profile application. - if (String.IsNullOrEmpty (_applicationId)) { - cmd.ExecuteNonQuery (); - - _applicationId = profileApplicationId; - } - - // Insert record for the membership application. - if ((_applicationName != _membershipApplicationName) && (String.IsNullOrEmpty (_membershipApplicationId))) { - _membershipApplicationId = Guid.NewGuid ().ToString (); - - cmd.Parameters ["$ApplicationId"].Value = _membershipApplicationId; - cmd.Parameters ["$ApplicationName"].Value = _membershipApplicationName; - - cmd.ExecuteNonQuery (); - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - } - - private static ProfileInfoCollection GetProfilesForQuery (string sqlQuery, SqliteParameter[] args, int pageIndex, int pageSize, out int totalRecords) - { - if (pageIndex < 0) - throw new ArgumentException ("Page index must be non-negative", "pageIndex"); - - if (pageSize < 1) - throw new ArgumentException ("Page size must be positive", "pageSize"); - - long lBound = (long)pageIndex * pageSize; - long uBound = lBound + pageSize - 1; - - if (uBound > Int32.MaxValue) { - throw new ArgumentException ("pageIndex*pageSize too large"); - } - - SqliteConnection cn = GetDbConnectionForProfile (); - try { - ProfileInfoCollection profiles = new ProfileInfoCollection (); - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = sqlQuery; - - for (int iter = 0; iter < args.Length; iter++) { - cmd.Parameters.Add (args [iter]); - } - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - using (SqliteDataReader dr = cmd.ExecuteReader()) { - totalRecords = 0; - while (dr.Read()) { - totalRecords++; - if ((totalRecords - 1 < lBound) || (totalRecords - 1 > uBound)) - continue; - - string username = dr.GetString (0); - bool isAnon = dr.GetBoolean (1); - DateTime dtLastActivity = dr.GetDateTime (2); - DateTime dtLastUpdated = dr.GetDateTime (3); - int size = dr.GetInt32 (4); - profiles.Add (new ProfileInfo (username, isAnon, dtLastActivity, dtLastUpdated, size)); - } - - return profiles; - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - private static bool DeleteProfile (SqliteConnection cn, SqliteTransaction tran, string username) - { - bool deleteSuccessful = false; - - if (cn.State != ConnectionState.Open) - cn.Open (); - - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT UserId FROM " + USER_TB_NAME + " WHERE LoweredUsername = $Username AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _membershipApplicationId); - - if (tran != null) - cmd.Transaction = tran; - - string userId = cmd.ExecuteScalar () as string; - if (userId != null) { - cmd.CommandText = "DELETE FROM " + PROFILE_TB_NAME + " WHERE UserId = $UserId"; - cmd.Parameters.Clear (); - cmd.Parameters.Add ("$UserId", DbType.String, 36).Value = userId; - - deleteSuccessful = (cmd.ExecuteNonQuery () != 0); - } - - return (deleteSuccessful); - } - } - - private static object Deserialize (SettingsPropertyValue prop, object obj) - { - object val = null; - - ////////////////////////////////////////////// - // Step 1: Try creating from Serialized value - if (obj != null) { - if (obj is string) { - val = GetObjectFromString (prop.Property.PropertyType, prop.Property.SerializeAs, (string)obj); - } else { - MemoryStream ms = new MemoryStream ((byte[])obj); - try { - val = (new BinaryFormatter ()).Deserialize (ms); - } finally { - ms.Close (); - } - } - - if (val != null && !prop.Property.PropertyType.IsAssignableFrom (val.GetType ())) // is it the correct type - val = null; - } - - ////////////////////////////////////////////// - // Step 2: Try creating from default value - if (val == null) { - if (prop.Property.DefaultValue == null || prop.Property.DefaultValue.ToString () == "[null]") { - if (prop.Property.PropertyType.IsValueType) - return Activator.CreateInstance (prop.Property.PropertyType); - else - return null; - } - if (!(prop.Property.DefaultValue is string)) { - val = prop.Property.DefaultValue; - } else { - val = GetObjectFromString (prop.Property.PropertyType, prop.Property.SerializeAs, (string)prop.Property.DefaultValue); - } - - if (val != null && !prop.Property.PropertyType.IsAssignableFrom (val.GetType ())) // is it the correct type - throw new ArgumentException ("Could not create from default value for property: " + prop.Property.Name); - } - - ////////////////////////////////////////////// - // Step 3: Create a new one by calling the parameterless constructor - if (val == null) { - if (prop.Property.PropertyType == typeof(string)) - val = ""; - else - val = Activator.CreateInstance (prop.Property.PropertyType); - } - return val; - } - - private static void PrepareDataForSaving (ref string allNames, ref string allValues, ref byte[] buf, bool binarySupported, SettingsPropertyValueCollection properties, bool userIsAuthenticated) - { - StringBuilder names = new StringBuilder (); - StringBuilder values = new StringBuilder (); - - MemoryStream ms = (binarySupported ? new MemoryStream () : null); - try { - bool anyItemsToSave = false; - - foreach (SettingsPropertyValue pp in properties) { - if (pp.IsDirty) { - if (!userIsAuthenticated) { - bool allowAnonymous = (bool)pp.Property.Attributes ["AllowAnonymous"]; - if (!allowAnonymous) - continue; - } - anyItemsToSave = true; - break; - } - } - - if (!anyItemsToSave) - return; - - foreach (SettingsPropertyValue pp in properties) { - if (!userIsAuthenticated) { - bool allowAnonymous = (bool)pp.Property.Attributes ["AllowAnonymous"]; - if (!allowAnonymous) - continue; - } - - if (!pp.IsDirty && pp.UsingDefaultValue) // Not fetched from DB and not written to - continue; - - int len, startPos = 0; - string propValue = null; - - if (pp.Deserialized && pp.PropertyValue == null) { - len = -1; - } else { - object sVal = SerializePropertyValue (pp); - - if (sVal == null) { - len = -1; - } else { - if (!(sVal is string) && !binarySupported) { - sVal = Convert.ToBase64String ((byte[])sVal); - } - - if (sVal is string) { - propValue = (string)sVal; - len = propValue.Length; - startPos = values.Length; - } else { - byte[] b2 = (byte[])sVal; - - if (ms != null) { - startPos = (int)ms.Position; - ms.Write (b2, 0, b2.Length); - ms.Position = startPos + b2.Length; - } - - len = b2.Length; - } - } - } - - names.Append (pp.Name + ":" + ((propValue != null) ? "S" : "B") + ":" + startPos.ToString (CultureInfo.InvariantCulture) + ":" + len.ToString (CultureInfo.InvariantCulture) + ":"); - - if (propValue != null) - values.Append (propValue); - } - - if (binarySupported) { - buf = ms.ToArray (); - } - } finally { - if (ms != null) - ms.Close (); - } - - allNames = names.ToString (); - allValues = values.ToString (); - } - - private static string ConvertObjectToString (object propValue, Type type, SettingsSerializeAs serializeAs, bool throwOnError) - { - if (serializeAs == SettingsSerializeAs.ProviderSpecific) { - if (type == typeof(string) || type.IsPrimitive) - serializeAs = SettingsSerializeAs.String; - else - serializeAs = SettingsSerializeAs.Xml; - } - - try { - switch (serializeAs) { - case SettingsSerializeAs.String: - TypeConverter converter = TypeDescriptor.GetConverter (type); - if (converter != null && converter.CanConvertTo (typeof(String)) && converter.CanConvertFrom (typeof(String))) - return converter.ConvertToString (propValue); - throw new ArgumentException ("Unable to convert type " + type.ToString () + " to string", "type"); - case SettingsSerializeAs.Binary: - MemoryStream ms = new MemoryStream (); - try { - BinaryFormatter bf = new BinaryFormatter (); - bf.Serialize (ms, propValue); - byte[] buffer = ms.ToArray (); - return Convert.ToBase64String (buffer); - } finally { - ms.Close (); - } - - case SettingsSerializeAs.Xml: - XmlSerializer xs = new XmlSerializer (type); - StringWriter sw = new StringWriter (CultureInfo.InvariantCulture); - - xs.Serialize (sw, propValue); - return sw.ToString (); - } - } catch (Exception) { - if (throwOnError) - throw; - } - return null; - } - - private static object SerializePropertyValue (SettingsPropertyValue prop) - { - object val = prop.PropertyValue; - if (val == null) - return null; - - if (prop.Property.SerializeAs != SettingsSerializeAs.Binary) - return ConvertObjectToString (val, prop.Property.PropertyType, prop.Property.SerializeAs, prop.Property.ThrowOnErrorSerializing); - - MemoryStream ms = new MemoryStream (); - try { - BinaryFormatter bf = new BinaryFormatter (); - bf.Serialize (ms, val); - return ms.ToArray (); - } finally { - ms.Close (); - } - } - - private static object GetObjectFromString (Type type, SettingsSerializeAs serializeAs, string attValue) - { - // Deal with string types - if (type == typeof(string) && (string.IsNullOrEmpty (attValue) || serializeAs == SettingsSerializeAs.String)) - return attValue; - - // Return null if there is nothing to convert - if (string.IsNullOrEmpty (attValue)) - return null; - - // Convert based on the serialized type - switch (serializeAs) { - - case SettingsSerializeAs.Binary: - byte[] buf = Convert.FromBase64String(attValue); - MemoryStream ms = null; - try - { - ms = new MemoryStream(buf); - return (new BinaryFormatter()).Deserialize(ms); - } - finally - { - if (ms != null) - ms.Close(); - } - - - case SettingsSerializeAs.Xml: - StringReader sr = new StringReader (attValue); - XmlSerializer xs = new XmlSerializer (type); - return xs.Deserialize (sr); - - case SettingsSerializeAs.String: - TypeConverter converter = TypeDescriptor.GetConverter (type); - if (converter != null && converter.CanConvertTo (typeof(String)) && converter.CanConvertFrom (typeof(String))) - return converter.ConvertFromString (attValue); - throw new ArgumentException ("Unable to convert type: " + type.ToString () + " from string", "type"); - - default: - return null; - } - } - - private static string GetClauseForAuthenticationOptions (ProfileAuthenticationOption authenticationOption) - { - switch (authenticationOption) { - case ProfileAuthenticationOption.Anonymous: - return " AND IsAnonymous='1' "; - - case ProfileAuthenticationOption.Authenticated: - return " AND IsAnonymous='0' "; - - case ProfileAuthenticationOption.All: - return " "; - - default: - throw new InvalidEnumArgumentException (String.Format ("Unknown ProfileAuthenticationOption value: {0}.", authenticationOption.ToString ())); - } - } - - /// - /// Get a reference to the database connection used for profile. If a transaction is currently in progress, and the - /// connection string of the transaction connection is the same as the connection string for the profile provider, - /// then the connection associated with the transaction is returned, and it will already be open. If no transaction is in progress, - /// a new is created and returned. It will be closed and must be opened by the caller - /// before using. - /// - /// A object. - /// The transaction is stored in . That means transaction support is limited - /// to web applications. For other types of applications, there is no transaction support unless this code is modified. - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] - private static SqliteConnection GetDbConnectionForProfile () - { - // Look in the HTTP context bag for a previously created connection and transaction. Return if found and its connection - // string matches that of the Profile connection string; otherwise return a fresh connection. - if (System.Web.HttpContext.Current != null) { - SqliteTransaction tran = (SqliteTransaction)System.Web.HttpContext.Current.Items [HTTP_TRANSACTION_ID]; - - if ((tran != null) && (String.Equals (tran.Connection.ConnectionString, _connectionString))) - return tran.Connection; - } - - return new SqliteConnection (_connectionString); - } - - /// - /// Determines whether a database transaction is in progress for the Profile provider. - /// - /// - /// true if a database transaction is in progress; otherwise, false. - /// - /// A transaction is considered in progress if an instance of is found in the - /// Items property and its connection string is equal to the Profile - /// provider's connection string. Note that this implementation of never adds a - /// to , but it is possible that - /// another data provider in this application does. This may be because other data is also stored in this SQLite database, - /// and the application author wants to provide transaction support across the individual providers. If an instance of - /// does not exist (for example, if the calling application is not a web application), - /// this method always returns false. - private static bool IsTransactionInProgress () - { - if (System.Web.HttpContext.Current == null) - return false; - - SqliteTransaction tran = (SqliteTransaction)System.Web.HttpContext.Current.Items [HTTP_TRANSACTION_ID]; - - if ((tran != null) && (String.Equals (tran.Connection.ConnectionString, _connectionString))) - return true; - else - return false; - } - - #endregion - - } -} diff --git a/WebGoat/Code/SQLiteRoleProvider.cs b/WebGoat/Code/SQLiteRoleProvider.cs deleted file mode 100644 index e29c6324b..000000000 --- a/WebGoat/Code/SQLiteRoleProvider.cs +++ /dev/null @@ -1,763 +0,0 @@ -using System; -using System.Collections.Specialized; -using System.Configuration; -using System.Configuration.Provider; -using System.Data; -using Mono.Data.Sqlite; -using System.Web.Security; - -namespace TechInfoSystems.Data.SQLite -{ - /// - /// Provides a Role implementation whose data is stored in a SQLite database. - /// - public sealed class SQLiteRoleProvider : RoleProvider - { - #region Private Fields - - private const string HTTP_TRANSACTION_ID = "SQLiteTran"; - private const string APP_TB_NAME = "[aspnet_Applications]"; - private const string ROLE_TB_NAME = "[aspnet_Roles]"; - private const string USER_TB_NAME = "[aspnet_Users]"; - private const string USERS_IN_ROLES_TB_NAME = "[aspnet_UsersInRoles]"; - private const int MAX_USERNAME_LENGTH = 256; - private const int MAX_ROLENAME_LENGTH = 256; - private const int MAX_APPLICATION_NAME_LENGTH = 256; - private static string _applicationId; - private static string _applicationName; - private static string _membershipApplicationId; - private static string _membershipApplicationName; - private static string _connectionString; - - #endregion - - #region Public Properties - - /// - /// Gets or sets the name of the application to store and retrieve role information for. - /// - /// - /// - /// The name of the application to store and retrieve role information for. - /// - public override string ApplicationName { - get { return _applicationName; } - set { - if (value.Length > MAX_APPLICATION_NAME_LENGTH) - throw new ProviderException (String.Format ("SQLiteRoleProvider error: applicationName must be less than or equal to {0} characters.", MAX_APPLICATION_NAME_LENGTH)); - - _applicationName = value; - _applicationId = GetApplicationId (_applicationName); - } - } - - /// - /// Gets or sets the name of the application used by the Membership provider. - /// - /// - /// - /// The name of the application used by the Membership provider. - /// - public static string MembershipApplicationName { - get { return _membershipApplicationName; } - set { - if (value.Length > MAX_APPLICATION_NAME_LENGTH) - throw new ProviderException (String.Format ("SQLiteRoleProvider error: membershipApplicationName must be less than or equal to {0} characters.", MAX_APPLICATION_NAME_LENGTH)); - - _membershipApplicationName = value; - _membershipApplicationId = ((_applicationName == _membershipApplicationName) ? _applicationId : GetApplicationId (_membershipApplicationName)); - } - } - - #endregion - - #region Public Methods - - /// - /// Initializes the provider. - /// - /// The friendly name of the provider. - /// A collection of the name/value pairs representing the provider-specific attributes specified in the configuration for this provider. - /// - /// The name of the provider is null. - /// - /// - /// The name of the provider has a length of zero. - /// - /// - /// An attempt is made to call on a provider after the provider has already been initialized. - /// - public override void Initialize (string name, NameValueCollection config) - { - // Initialize values from web.config. - if (config == null) - throw new ArgumentNullException ("config"); - - if (name == null || name.Length == 0) - name = "SQLiteRoleProvider"; - - if (String.IsNullOrEmpty (config ["description"])) { - config.Remove ("description"); - config.Add ("description", "SQLite Role provider"); - } - - // Initialize the abstract base class. - base.Initialize (name, config); - - // Initialize SqliteConnection. - ConnectionStringSettings connectionStringSettings = ConfigurationManager.ConnectionStrings [config ["connectionStringName"]]; - - if (connectionStringSettings == null || connectionStringSettings.ConnectionString.Trim () == "") { - throw new ProviderException ("Connection string is empty for SQLiteRoleProvider. Check the web configuration file (web.config)."); - } - - _connectionString = connectionStringSettings.ConnectionString; - - // Get application name - if (config ["applicationName"] == null || config ["applicationName"].Trim () == "") { - this.ApplicationName = System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath; - } else { - this.ApplicationName = config ["applicationName"]; - } - - // Get Membership application name - if (config ["membershipApplicationName"] == null || config ["membershipApplicationName"].Trim () == "") { - MembershipApplicationName = ApplicationName; - } else { - MembershipApplicationName = config ["membershipApplicationName"]; - } - - // Check for invalid parameters in the config - config.Remove ("connectionStringName"); - config.Remove ("applicationName"); - config.Remove ("membershipApplicationName"); - config.Remove ("name"); - - if (config.Count > 0) { - string key = config.GetKey (0); - if (!string.IsNullOrEmpty (key)) { - throw new ProviderException (String.Concat ("SQLiteRoleProvider configuration error: Unrecognized attribute: ", key)); - } - } - - // Verify a record exists in the application table. - VerifyApplication (); - } - - /// - /// Adds the specified user names to the specified roles for the configured applicationName. - /// - /// A string array of user names to be added to the specified roles. - /// A string array of the role names to add the specified user names to. - public override void AddUsersToRoles (string[] usernames, string[] roleNames) - { - foreach (string roleName in roleNames) { - if (!RoleExists (roleName)) { - throw new ProviderException ("Role name not found."); - } - } - - foreach (string username in usernames) { - if (username.IndexOf (',') > 0) { - throw new ArgumentException ("User names cannot contain commas."); - } - - foreach (string roleName in roleNames) { - if (IsUserInRole (username, roleName)) { - throw new ProviderException ("User is already in role."); - } - } - } - - SqliteTransaction tran = null; - SqliteConnection cn = GetDbConnectionForRole (); - try { - if (cn.State == ConnectionState.Closed) - cn.Open (); - - if (!IsTransactionInProgress ()) - tran = cn.BeginTransaction (); - - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "INSERT INTO " + USERS_IN_ROLES_TB_NAME - + " (UserId, RoleId)" - + " SELECT u.UserId, r.RoleId" - + " FROM " + USER_TB_NAME + " u, " + ROLE_TB_NAME + " r" - + " WHERE (u.LoweredUsername = $Username) AND (u.ApplicationId = $MembershipApplicationId)" - + " AND (r.LoweredRoleName = $RoleName) AND (r.ApplicationId = $ApplicationId)"; - - SqliteParameter userParm = cmd.Parameters.Add ("$Username", DbType.String, MAX_USERNAME_LENGTH); - SqliteParameter roleParm = cmd.Parameters.Add ("$RoleName", DbType.String, MAX_ROLENAME_LENGTH); - cmd.Parameters.AddWithValue ("$MembershipApplicationId", _membershipApplicationId); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - foreach (string username in usernames) { - foreach (string roleName in roleNames) { - userParm.Value = username.ToLowerInvariant (); - roleParm.Value = roleName.ToLowerInvariant (); - cmd.ExecuteNonQuery (); - } - } - - // Commit the transaction if it's the one we created in this method. - if (tran != null) - tran.Commit (); - } - } catch { - if (tran != null) { - try { - tran.Rollback (); - } catch (SqliteException) { - } - } - throw; - } finally { - if (tran != null) - tran.Dispose (); - - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Adds a new role to the data source for the configured applicationName. - /// - /// The name of the role to create. - public override void CreateRole (string roleName) - { - if (roleName.IndexOf (',') > 0) { - throw new ArgumentException ("Role names cannot contain commas."); - } - - if (RoleExists (roleName)) { - throw new ProviderException ("Role name already exists."); - } - - if (!SecUtility.ValidateParameter (ref roleName, true, true, false, MAX_ROLENAME_LENGTH)) { - throw new ProviderException (String.Format ("The role name is too long: it must not exceed {0} chars in length.", MAX_ROLENAME_LENGTH)); - } - - SqliteConnection cn = GetDbConnectionForRole (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "INSERT INTO " + ROLE_TB_NAME - + " (RoleId, RoleName, LoweredRoleName, ApplicationId) " - + " Values ($RoleId, $RoleName, $LoweredRoleName, $ApplicationId)"; - - cmd.Parameters.AddWithValue ("$RoleId", Guid.NewGuid ().ToString ()); - cmd.Parameters.AddWithValue ("$RoleName", roleName); - cmd.Parameters.AddWithValue ("$LoweredRoleName", roleName.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - cmd.ExecuteNonQuery (); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Removes a role from the data source for the configured applicationName. - /// - /// The name of the role to delete. - /// If true, throw an exception if has one or more members and do not delete . - /// - /// true if the role was successfully deleted; otherwise, false. - /// - public override bool DeleteRole (string roleName, bool throwOnPopulatedRole) - { - if (!RoleExists (roleName)) { - throw new ProviderException ("Role does not exist."); - } - - if (throwOnPopulatedRole && GetUsersInRole (roleName).Length > 0) { - throw new ProviderException ("Cannot delete a populated role."); - } - - SqliteTransaction tran = null; - SqliteConnection cn = GetDbConnectionForRole (); - try { - if (cn.State == ConnectionState.Closed) - cn.Open (); - - if (!IsTransactionInProgress ()) - tran = cn.BeginTransaction (); - - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "DELETE FROM " + USERS_IN_ROLES_TB_NAME + " WHERE (RoleId IN" - + " (SELECT RoleId FROM " + ROLE_TB_NAME + " WHERE LoweredRoleName = $RoleName))"; - - cmd.Parameters.AddWithValue ("$RoleName", roleName.ToLowerInvariant ()); - - cmd.ExecuteNonQuery (); - } - - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "DELETE FROM " + ROLE_TB_NAME + " WHERE LoweredRoleName = $RoleName AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$RoleName", roleName.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - cmd.ExecuteNonQuery (); - } - - // Commit the transaction if it's the one we created in this method. - if (tran != null) - tran.Commit (); - } catch { - if (tran != null) { - try { - tran.Rollback (); - } catch (SqliteException) { - } - } - - throw; - } finally { - if (tran != null) - tran.Dispose (); - - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - - return true; - } - - /// - /// Gets a list of all the roles for the configured applicationName. - /// - /// - /// A string array containing the names of all the roles stored in the data source for the configured applicationName. - /// - public override string[] GetAllRoles () - { - string tmpRoleNames = String.Empty; - - SqliteConnection cn = GetDbConnectionForRole (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT RoleName FROM " + ROLE_TB_NAME + " WHERE ApplicationId = $ApplicationId"; - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - using (SqliteDataReader dr = cmd.ExecuteReader()) { - while (dr.Read()) { - tmpRoleNames += dr.GetString (0) + ","; - } - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - - if (tmpRoleNames.Length > 0) { - // Remove trailing comma. - tmpRoleNames = tmpRoleNames.Substring (0, tmpRoleNames.Length - 1); - return tmpRoleNames.Split (','); - } - - return new string[0]; - } - - /// - /// Gets a list of the roles that a specified user is in for the configured applicationName. - /// - /// The user to return a list of roles for. - /// - /// A string array containing the names of all the roles that the specified user is in for the configured applicationName. - /// - public override string[] GetRolesForUser (string username) - { - string tmpRoleNames = String.Empty; - - SqliteConnection cn = GetDbConnectionForRole (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT r.RoleName FROM " + ROLE_TB_NAME + " r INNER JOIN " + USERS_IN_ROLES_TB_NAME - + " uir ON r.RoleId = uir.RoleId INNER JOIN " + USER_TB_NAME + " u ON uir.UserId = u.UserId" - + " WHERE (u.LoweredUsername = $Username) AND (u.ApplicationId = $MembershipApplicationId)"; - - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$MembershipApplicationId", _membershipApplicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - using (SqliteDataReader dr = cmd.ExecuteReader()) { - while (dr.Read()) { - tmpRoleNames += dr.GetString (0) + ","; - } - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - - if (tmpRoleNames.Length > 0) { - // Remove trailing comma. - tmpRoleNames = tmpRoleNames.Substring (0, tmpRoleNames.Length - 1); - return tmpRoleNames.Split (','); - } - - return new string[0]; - } - - /// - /// Gets the users in role. - /// - /// Name of the role. - /// Returns the users in role. - public override string[] GetUsersInRole (string roleName) - { - string tmpUserNames = String.Empty; - - SqliteConnection cn = GetDbConnectionForRole (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT u.Username FROM " + USER_TB_NAME + " u INNER JOIN " + USERS_IN_ROLES_TB_NAME - + " uir ON u.UserId = uir.UserId INNER JOIN " + ROLE_TB_NAME + " r ON uir.RoleId = r.RoleId" - + " WHERE (r.LoweredRoleName = $RoleName) AND (r.ApplicationId = $ApplicationId)"; - - cmd.Parameters.AddWithValue ("$RoleName", roleName.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - using (SqliteDataReader dr = cmd.ExecuteReader()) { - while (dr.Read()) { - tmpUserNames += dr.GetString (0) + ","; - } - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - - if (tmpUserNames.Length > 0) { - // Remove trailing comma. - tmpUserNames = tmpUserNames.Substring (0, tmpUserNames.Length - 1); - return tmpUserNames.Split (','); - } - - return new string[0]; - } - - /// - /// Gets a value indicating whether the specified user is in the specified role for the configured applicationName. - /// - /// The user name to search for. - /// The role to search in. - /// - /// true if the specified user is in the specified role for the configured applicationName; otherwise, false. - /// - public override bool IsUserInRole (string username, string roleName) - { - SqliteConnection cn = GetDbConnectionForRole (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT COUNT(*) FROM " + USERS_IN_ROLES_TB_NAME + " uir INNER JOIN " - + USER_TB_NAME + " u ON uir.UserId = u.UserId INNER JOIN " + ROLE_TB_NAME + " r ON uir.RoleId = r.RoleId " - + " WHERE u.LoweredUsername = $Username AND u.ApplicationId = $MembershipApplicationId" - + " AND r.LoweredRoleName = $RoleName AND r.ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$Username", username.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$RoleName", roleName.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$MembershipApplicationId", _membershipApplicationId); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - return (Convert.ToInt64 (cmd.ExecuteScalar ()) > 0); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Removes the specified user names from the specified roles for the configured applicationName. - /// - /// A string array of user names to be removed from the specified roles. - /// A string array of role names to remove the specified user names from. - public override void RemoveUsersFromRoles (string[] usernames, string[] roleNames) - { - foreach (string roleName in roleNames) { - if (!RoleExists (roleName)) { - throw new ProviderException ("Role name not found."); - } - } - - foreach (string username in usernames) { - foreach (string roleName in roleNames) { - if (!IsUserInRole (username, roleName)) { - throw new ProviderException ("User is not in role."); - } - } - } - - SqliteTransaction tran = null; - SqliteConnection cn = GetDbConnectionForRole (); - try { - if (cn.State == ConnectionState.Closed) - cn.Open (); - - if (!IsTransactionInProgress ()) - tran = cn.BeginTransaction (); - - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "DELETE FROM " + USERS_IN_ROLES_TB_NAME - + " WHERE UserId = (SELECT UserId FROM " + USER_TB_NAME + " WHERE LoweredUsername = $Username AND ApplicationId = $MembershipApplicationId)" - + " AND RoleId = (SELECT RoleId FROM " + ROLE_TB_NAME + " WHERE LoweredRoleName = $RoleName AND ApplicationId = $ApplicationId)"; - - SqliteParameter userParm = cmd.Parameters.Add ("$Username", DbType.String, MAX_USERNAME_LENGTH); - SqliteParameter roleParm = cmd.Parameters.Add ("$RoleName", DbType.String, MAX_ROLENAME_LENGTH); - cmd.Parameters.AddWithValue ("$MembershipApplicationId", _membershipApplicationId); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - foreach (string username in usernames) { - foreach (string roleName in roleNames) { - userParm.Value = username.ToLowerInvariant (); - roleParm.Value = roleName.ToLowerInvariant (); - cmd.ExecuteNonQuery (); - } - } - - // Commit the transaction if it's the one we created in this method. - if (tran != null) - tran.Commit (); - } - } catch { - if (tran != null) { - try { - tran.Rollback (); - } catch (SqliteException) { - } - } - - throw; - } finally { - if (tran != null) - tran.Dispose (); - - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Gets a value indicating whether the specified role name already exists in the role data source for the configured applicationName. - /// - /// The name of the role to search for in the data source. - /// - /// true if the role name already exists in the data source for the configured applicationName; otherwise, false. - /// - public override bool RoleExists (string roleName) - { - SqliteConnection cn = GetDbConnectionForRole (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT COUNT(*) FROM " + ROLE_TB_NAME + - " WHERE LoweredRoleName = $RoleName AND ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$RoleName", roleName.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - return (Convert.ToInt64 (cmd.ExecuteScalar ()) > 0); - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - /// - /// Gets an array of user names in a role where the user name contains the specified user name to match. - /// - /// The role to search in. - /// The user name to search for. - /// - /// A string array containing the names of all the users where the user name matches and the user is a member of the specified role. - /// - public override string[] FindUsersInRole (string roleName, string usernameToMatch) - { - string tmpUserNames = String.Empty; - - SqliteConnection cn = GetDbConnectionForRole (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT u.Username FROM " + USERS_IN_ROLES_TB_NAME + " uir INNER JOIN " + USER_TB_NAME - + " u ON uir.UserId = u.UserId INNER JOIN " + ROLE_TB_NAME + " r ON r.RoleId = uir.RoleId" - + " WHERE u.LoweredUsername LIKE $UsernameSearch AND r.LoweredRoleName = $RoleName AND u.ApplicationId = $MembershipApplicationId" - + " AND r.ApplicationId = $ApplicationId"; - - cmd.Parameters.AddWithValue ("$UsernameSearch", usernameToMatch); - cmd.Parameters.AddWithValue ("$RoleName", roleName.ToLowerInvariant ()); - cmd.Parameters.AddWithValue ("$MembershipApplicationId", _membershipApplicationId); - cmd.Parameters.AddWithValue ("$ApplicationId", _applicationId); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - using (SqliteDataReader dr = cmd.ExecuteReader()) { - while (dr.Read()) { - tmpUserNames += dr.GetString (0) + ","; - } - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - - if (tmpUserNames.Length > 0) { - // Remove trailing comma. - tmpUserNames = tmpUserNames.Substring (0, tmpUserNames.Length - 1); - return tmpUserNames.Split (','); - } - - return new string[0]; - } - - #endregion - - #region Private Methods - - private static string GetApplicationId (string appName) - { - SqliteConnection cn = GetDbConnectionForRole (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "SELECT ApplicationId FROM aspnet_Applications WHERE ApplicationName = $AppName"; - cmd.Parameters.AddWithValue ("$AppName", appName); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - return cmd.ExecuteScalar () as string; - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - - private void VerifyApplication () - { - // Verify a record exists in the application table. - if (String.IsNullOrEmpty (_applicationId) || String.IsNullOrEmpty (_membershipApplicationName)) { - // No record exists in the application table for either the role application and/or the membership application. Create it. - SqliteConnection cn = GetDbConnectionForRole (); - try { - using (SqliteCommand cmd = cn.CreateCommand()) { - cmd.CommandText = "INSERT INTO " + APP_TB_NAME + " (ApplicationId, ApplicationName, Description) VALUES ($ApplicationId, $ApplicationName, $Description)"; - - string roleApplicationId = Guid.NewGuid ().ToString (); - - cmd.Parameters.AddWithValue ("$ApplicationId", roleApplicationId); - cmd.Parameters.AddWithValue ("$ApplicationName", _applicationName); - cmd.Parameters.AddWithValue ("$Description", String.Empty); - - if (cn.State == ConnectionState.Closed) - cn.Open (); - - // Insert record for the role application. - if (String.IsNullOrEmpty (_applicationId)) { - cmd.ExecuteNonQuery (); - - _applicationId = roleApplicationId; - } - - if (String.IsNullOrEmpty (_membershipApplicationId)) { - if (_applicationName == _membershipApplicationName) { - // Use the app name for the membership app name. - MembershipApplicationName = ApplicationName; - } else { - // Need to insert record for the membership application. - _membershipApplicationId = Guid.NewGuid ().ToString (); - - cmd.Parameters ["$ApplicationId"].Value = _membershipApplicationId; - cmd.Parameters ["$ApplicationName"].Value = _membershipApplicationName; - - cmd.ExecuteNonQuery (); - } - } - } - } finally { - if (!IsTransactionInProgress ()) - cn.Dispose (); - } - } - } - - /// - /// Get a reference to the database connection used for Role. If a transaction is currently in progress, and the - /// connection string of the transaction connection is the same as the connection string for the Role provider, - /// then the connection associated with the transaction is returned, and it will already be open. If no transaction is in progress, - /// a new is created and returned. It will be closed and must be opened by the caller - /// before using. - /// - /// A object. - /// The transaction is stored in . That means transaction support is limited - /// to web applications. For other types of applications, there is no transaction support unless this code is modified. - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] - private static SqliteConnection GetDbConnectionForRole () - { - // Look in the HTTP context bag for a previously created connection and transaction. Return if found and its connection - // string matches that of the Role connection string; otherwise return a fresh connection. - if (System.Web.HttpContext.Current != null) { - const string HTTP_TRANSACTION_ID = "SQLiteTran"; - SqliteTransaction tran = (SqliteTransaction)System.Web.HttpContext.Current.Items [HTTP_TRANSACTION_ID]; - if ((tran != null) && (String.Equals (tran.Connection.ConnectionString, _connectionString))) - return tran.Connection; - } - - return new SqliteConnection (_connectionString); - } - - /// - /// Determines whether a database transaction is in progress for the Role provider. - /// - /// - /// true if a database transaction is in progress; otherwise, false. - /// - /// A transaction is considered in progress if an instance of is found in the - /// Items property and its connection string is equal to the Role - /// provider's connection string. Note that this implementation of never adds a - /// to , but it is possible that - /// another data provider in this application does. This may be because other data is also stored in this SQLite database, - /// and the application author wants to provide transaction support across the individual providers. If an instance of - /// does not exist (for example, if the calling application is not a web application), - /// this method always returns false. - private static bool IsTransactionInProgress () - { - if (System.Web.HttpContext.Current == null) - return false; - - SqliteTransaction tran = (SqliteTransaction)System.Web.HttpContext.Current.Items [HTTP_TRANSACTION_ID]; - - if ((tran != null) && (String.Equals (tran.Connection.ConnectionString, _connectionString))) - return true; - else - return false; - } - - #endregion - } -} \ No newline at end of file diff --git a/WebGoat/Configuration/Default.config b/WebGoat/Configuration/Default.config deleted file mode 100644 index 3ed7cdc33..000000000 --- a/WebGoat/Configuration/Default.config +++ /dev/null @@ -1 +0,0 @@ -dbtype=MySql \ No newline at end of file diff --git a/WebGoat/Content/About.aspx b/WebGoat/Content/About.aspx deleted file mode 100644 index 0dece0aea..000000000 --- a/WebGoat/Content/About.aspx +++ /dev/null @@ -1,20 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="About.aspx.cs" Inherits="OWASP.WebGoat.NET.About" %> - - - - This is the About Page... - - - -

About WebGoat.NET

-WebGoat.NET: Copyright 2011 Jerry Hoff -
-Questions or Comments? Please contact jerry@owasp.org -

-This application made possible through the funding and support of -Infrared Security, LLC -

- -
-
- \ No newline at end of file diff --git a/WebGoat/Content/About.aspx.cs b/WebGoat/Content/About.aspx.cs deleted file mode 100644 index 1cfcab1de..000000000 --- a/WebGoat/Content/About.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class About : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/About.aspx.designer.cs b/WebGoat/Content/About.aspx.designer.cs deleted file mode 100644 index 3fd0430b8..000000000 --- a/WebGoat/Content/About.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class About { - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/BasicAuth.aspx b/WebGoat/Content/BasicAuth.aspx deleted file mode 100644 index 4b556129d..000000000 --- a/WebGoat/Content/BasicAuth.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="BasicAuth.aspx.cs" Inherits="OWASP.WebGoat.NET.BasicAuth" %> - - - - diff --git a/WebGoat/Content/BasicAuth.aspx.cs b/WebGoat/Content/BasicAuth.aspx.cs deleted file mode 100644 index fd51b7705..000000000 --- a/WebGoat/Content/BasicAuth.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class BasicAuth : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/BasicAuth.aspx.designer.cs b/WebGoat/Content/BasicAuth.aspx.designer.cs deleted file mode 100644 index d0a4cca44..000000000 --- a/WebGoat/Content/BasicAuth.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class BasicAuth { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/CSRFDemo.aspx b/WebGoat/Content/CSRFDemo.aspx deleted file mode 100644 index 801b0b918..000000000 --- a/WebGoat/Content/CSRFDemo.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="CSRFDemo.aspx.cs" Inherits="OWASP.WebGoat.NET.CSRFDemo" %> - - - - diff --git a/WebGoat/Content/CSRFDemo.aspx.cs b/WebGoat/Content/CSRFDemo.aspx.cs deleted file mode 100644 index 70086ac0f..000000000 --- a/WebGoat/Content/CSRFDemo.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class CSRFDemo : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/CSRFDemo.aspx.designer.cs b/WebGoat/Content/CSRFDemo.aspx.designer.cs deleted file mode 100644 index b18134302..000000000 --- a/WebGoat/Content/CSRFDemo.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class CSRFDemo { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/Challenge1.aspx b/WebGoat/Content/Challenge1.aspx deleted file mode 100644 index 5e382df6d..000000000 --- a/WebGoat/Content/Challenge1.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="Challenge1.aspx.cs" Inherits="OWASP.WebGoat.NET.Challenge1" %> - - - - diff --git a/WebGoat/Content/Challenge1.aspx.cs b/WebGoat/Content/Challenge1.aspx.cs deleted file mode 100644 index 26aeec2b3..000000000 --- a/WebGoat/Content/Challenge1.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class Challenge1 : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/Challenge1.aspx.designer.cs b/WebGoat/Content/Challenge1.aspx.designer.cs deleted file mode 100644 index cb9edf8e6..000000000 --- a/WebGoat/Content/Challenge1.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class Challenge1 { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/Challenge2.aspx b/WebGoat/Content/Challenge2.aspx deleted file mode 100644 index 6a154e727..000000000 --- a/WebGoat/Content/Challenge2.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="Challenge2.aspx.cs" Inherits="OWASP.WebGoat.NET.Challenge2" %> - - - - diff --git a/WebGoat/Content/Challenge2.aspx.cs b/WebGoat/Content/Challenge2.aspx.cs deleted file mode 100644 index 8408c6eb8..000000000 --- a/WebGoat/Content/Challenge2.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class Challenge2 : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/Challenge2.aspx.designer.cs b/WebGoat/Content/Challenge2.aspx.designer.cs deleted file mode 100644 index ae5ef7db8..000000000 --- a/WebGoat/Content/Challenge2.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class Challenge2 { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/Challenge3.aspx b/WebGoat/Content/Challenge3.aspx deleted file mode 100644 index 48e97dd6c..000000000 --- a/WebGoat/Content/Challenge3.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="Challenge3.aspx.cs" Inherits="OWASP.WebGoat.NET.Challenge3" %> - - - - diff --git a/WebGoat/Content/Challenge3.aspx.cs b/WebGoat/Content/Challenge3.aspx.cs deleted file mode 100644 index 2b0222069..000000000 --- a/WebGoat/Content/Challenge3.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class Challenge3 : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/Challenge3.aspx.designer.cs b/WebGoat/Content/Challenge3.aspx.designer.cs deleted file mode 100644 index 13a1409d6..000000000 --- a/WebGoat/Content/Challenge3.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class Challenge3 { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/ChangePwd.aspx b/WebGoat/Content/ChangePwd.aspx deleted file mode 100644 index b744baa0d..000000000 --- a/WebGoat/Content/ChangePwd.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ChangePwd.aspx.cs" Inherits="OWASP.WebGoat.NET.ChangePwd" %> - - - - diff --git a/WebGoat/Content/ChangePwd.aspx.cs b/WebGoat/Content/ChangePwd.aspx.cs deleted file mode 100644 index 2b18056fe..000000000 --- a/WebGoat/Content/ChangePwd.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class ChangePwd : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/ChangePwd.aspx.designer.cs b/WebGoat/Content/ChangePwd.aspx.designer.cs deleted file mode 100644 index d861547aa..000000000 --- a/WebGoat/Content/ChangePwd.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class ChangePwd { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/ClientSideStorage.aspx b/WebGoat/Content/ClientSideStorage.aspx deleted file mode 100644 index e5f8f9fae..000000000 --- a/WebGoat/Content/ClientSideStorage.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ClientSideStorage.aspx.cs" Inherits="OWASP.WebGoat.NET.ClientSideStorage" %> - - - - diff --git a/WebGoat/Content/ClientSideStorage.aspx.cs b/WebGoat/Content/ClientSideStorage.aspx.cs deleted file mode 100644 index c46ee60d4..000000000 --- a/WebGoat/Content/ClientSideStorage.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class ClientSideStorage : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/ClientSideStorage.aspx.designer.cs b/WebGoat/Content/ClientSideStorage.aspx.designer.cs deleted file mode 100644 index 47f75949e..000000000 --- a/WebGoat/Content/ClientSideStorage.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class ClientSideStorage { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/CommandInjection.aspx b/WebGoat/Content/CommandInjection.aspx deleted file mode 100644 index 1bbcb88a7..000000000 --- a/WebGoat/Content/CommandInjection.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="CommandInjection.aspx.cs" Inherits="OWASP.WebGoat.NET.CommandInjection" %> - - - - diff --git a/WebGoat/Content/CommandInjection.aspx.cs b/WebGoat/Content/CommandInjection.aspx.cs deleted file mode 100644 index 334bf47d1..000000000 --- a/WebGoat/Content/CommandInjection.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class CommandInjection : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/CommandInjection.aspx.designer.cs b/WebGoat/Content/CommandInjection.aspx.designer.cs deleted file mode 100644 index 0f0a56cf4..000000000 --- a/WebGoat/Content/CommandInjection.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class CommandInjection { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/DomXSS.aspx b/WebGoat/Content/DomXSS.aspx deleted file mode 100644 index 2a13ae436..000000000 --- a/WebGoat/Content/DomXSS.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="DomXSS.aspx.cs" Inherits="OWASP.WebGoat.NET.DomXSS" %> - - - - diff --git a/WebGoat/Content/DomXSS.aspx.cs b/WebGoat/Content/DomXSS.aspx.cs deleted file mode 100644 index f1d63ba39..000000000 --- a/WebGoat/Content/DomXSS.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class DomXSS : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/DomXSS.aspx.designer.cs b/WebGoat/Content/DomXSS.aspx.designer.cs deleted file mode 100644 index 140140087..000000000 --- a/WebGoat/Content/DomXSS.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class DomXSS { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/EmbeddedError.aspx b/WebGoat/Content/EmbeddedError.aspx deleted file mode 100644 index 479f8191b..000000000 --- a/WebGoat/Content/EmbeddedError.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="EmbeddedError.aspx.cs" Inherits="OWASP.WebGoat.NET.EmbeddedError" %> - - - - diff --git a/WebGoat/Content/EmbeddedError.aspx.cs b/WebGoat/Content/EmbeddedError.aspx.cs deleted file mode 100644 index b6c4dcdd8..000000000 --- a/WebGoat/Content/EmbeddedError.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class EmbeddedError : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/EmbeddedError.aspx.designer.cs b/WebGoat/Content/EmbeddedError.aspx.designer.cs deleted file mode 100644 index d6eed26a3..000000000 --- a/WebGoat/Content/EmbeddedError.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class EmbeddedError { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/EncryptVSEncode.aspx b/WebGoat/Content/EncryptVSEncode.aspx deleted file mode 100644 index 8b3d9429e..000000000 --- a/WebGoat/Content/EncryptVSEncode.aspx +++ /dev/null @@ -1,38 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="EncryptVSEncode.aspx.cs" Inherits="OWASP.WebGoat.NET.EncryptVSEncode" %> - - - This page illustrates multiple encoding algorithms - type in a string and observe the output. - - - - - - -

Encoding Basics

- - - Enter String to Protect: - - - - - Enter Encryption Password (optional): - - - - - -
diff --git a/WebGoat/Content/EncryptVSEncode.aspx.cs b/WebGoat/Content/EncryptVSEncode.aspx.cs deleted file mode 100644 index aac8a197c..000000000 --- a/WebGoat/Content/EncryptVSEncode.aspx.cs +++ /dev/null @@ -1,138 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Security.Cryptography; -using System.Drawing; -using OWASP.WebGoat.NET.App_Code; -using System.Text; - -namespace OWASP.WebGoat.NET -{ - public partial class EncryptVSEncode : System.Web.UI.Page - { - public string Password { get; set; } - - enum WG_Hash - { - Sha1=1, - Sha256 - }; - - private string hardCodedKey = "key"; - - protected void Page_Load(object sender, EventArgs e) - { - Password = "123456"; - } - - protected void btnGO_Click(object sender, EventArgs e) - { - //url encoded - //base64 - //sha1 - //encryption with password - - string secret = txtString.Text; - string key = String.IsNullOrEmpty(txtPassword.Text) ? hardCodedKey : txtPassword.Text; - - Table t = new Table(); - t.Width = new Unit("100%"); - - t.Rows.Add(MakeRow("Custom Crypto", CustomCryptoEncrypt(secret))); - t.Rows.Add(MakeRow("URL Encoded:", Server.UrlEncode(secret))); - t.Rows.Add(MakeRow("Base64 Encoded:", Base64(secret))); - t.Rows.Add(MakeRow("SHA1 Hashed:", SHA(secret, WG_Hash.Sha1))); - t.Rows.Add(MakeRow("SHA256 Hashed:", SHA(secret, WG_Hash.Sha256))); - t.Rows.Add(MakeRow("Rijndael Encrypted: ", Encypt(secret, key), Color.LightGreen)); - - ContentPlaceHolder cph = (ContentPlaceHolder)this.Master.FindControl("BodyContentPlaceholder"); - cph.Controls.Add(new LiteralControl("

")); - cph.Controls.Add(t); - - - } - - private TableRow MakeRow(string label, string val) - { - TableRow row = new TableRow(); - - TableCell t1 = new TableCell(); - t1.Text = label; - row.Cells.Add(t1); - - TableCell t2 = new TableCell(); - t2.Text = val; - row.Cells.Add(t2); - return row; - } - - private TableRow MakeRow(string label, string val, Color color) - { - TableRow row = new TableRow(); - row.BackColor = color; - - TableCell t1 = new TableCell(); - t1.Text = label; - row.Cells.Add(t1); - - TableCell t2 = new TableCell(); - t2.Text = val; - row.Cells.Add(t2); - return row; - } - - private string Base64(string s) - { - byte[] bytes = System.Text.ASCIIEncoding.ASCII.GetBytes(s); - return System.Convert.ToBase64String(bytes); - } - - private string SHA(string s, WG_Hash hash) - { - byte[] bytes = System.Text.ASCIIEncoding.ASCII.GetBytes(s); - byte[] result; - HashAlgorithm sha = null; - - switch (hash) - { - case WG_Hash.Sha1: - sha = new SHA1Managed(); - break; - case WG_Hash.Sha256: - sha = new SHA256Managed(); - break; - } - result = sha.ComputeHash(bytes); - return System.Convert.ToBase64String(result); - } - - private string Encypt(string s, string key) - { - string result = OWASP.WebGoat.NET.App_Code.Encoder.EncryptStringAES(s, key); - return result; - } - - private string CustomCryptoEncrypt(String s) - { - byte[] bytes = Encoding.UTF8.GetBytes(s); - // needs work but you get the point - for (int i = 0; i < bytes.Length; i++) - { - if (i % 2 == 0) - { - bytes[i] = (byte)(bytes[i] | 2); - } - else - { - bytes[i] = (byte)(bytes[i] & 2); - } - - } - - return Encoding.UTF8.GetString(bytes); - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/EncryptVSEncode.aspx.designer.cs b/WebGoat/Content/EncryptVSEncode.aspx.designer.cs deleted file mode 100644 index 96aa8e469..000000000 --- a/WebGoat/Content/EncryptVSEncode.aspx.designer.cs +++ /dev/null @@ -1,28 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class EncryptVSEncode { - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.TextBox txtString; - - protected System.Web.UI.WebControls.TextBox txtPassword; - - protected System.Web.UI.WebControls.Button btnGo; - } -} diff --git a/WebGoat/Content/Error.aspx b/WebGoat/Content/Error.aspx deleted file mode 100644 index b91e24219..000000000 --- a/WebGoat/Content/Error.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="Error.aspx.cs" Inherits="OWASP.WebGoat.NET.Error" %> - - - - diff --git a/WebGoat/Content/Error.aspx.cs b/WebGoat/Content/Error.aspx.cs deleted file mode 100644 index 55a413afa..000000000 --- a/WebGoat/Content/Error.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class Error : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/Error.aspx.designer.cs b/WebGoat/Content/Error.aspx.designer.cs deleted file mode 100644 index 56ebacf4c..000000000 --- a/WebGoat/Content/Error.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class Error { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/ExploitDebug.aspx b/WebGoat/Content/ExploitDebug.aspx deleted file mode 100644 index 28fde6c47..000000000 --- a/WebGoat/Content/ExploitDebug.aspx +++ /dev/null @@ -1,24 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" - CodeBehind="ExploitDebug.aspx.cs" Inherits="OWASP.WebGoat.NET.ExploitDebug" %> - - - - -

Errors that happen on the server side should not be exposed to the client. All debugging - info should also be hidden.

- - - - - - -
Click here to throw a server exception and show debugging info: - -
- - - - This webpage will display sensitive debugging information from the server when an error occurs. This can help an - attacker learn about the internals of the system which may be invaluable during attacks. Try to obtain debugging - information from this page. - diff --git a/WebGoat/Content/ExploitDebug.aspx.cs b/WebGoat/Content/ExploitDebug.aspx.cs deleted file mode 100644 index c8b18db86..000000000 --- a/WebGoat/Content/ExploitDebug.aspx.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Text; - -namespace OWASP.WebGoat.NET -{ - public partial class ExploitDebug : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - } - - protected void btnGo_Click(object sender, EventArgs e) - { - StringBuilder strBuilder = new StringBuilder(); - - strBuilder.AppendFormat("Current Dir: {0}", Environment.CurrentDirectory); - strBuilder.AppendLine(); - - strBuilder.AppendFormat("UserName: {0}", Environment.UserName); - strBuilder.AppendLine(); - - strBuilder.AppendFormat("Machine Name: {0}", Environment.MachineName); - strBuilder.AppendLine(); - - strBuilder.AppendFormat("OS Version: {0}", Environment.OSVersion); - strBuilder.AppendLine(); - - throw new Exception(strBuilder.ToString()); - } - } -} diff --git a/WebGoat/Content/ExploitDebug.aspx.designer.cs b/WebGoat/Content/ExploitDebug.aspx.designer.cs deleted file mode 100644 index 5b15e883b..000000000 --- a/WebGoat/Content/ExploitDebug.aspx.designer.cs +++ /dev/null @@ -1,24 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class ExploitDebug { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Button btnGo; - - protected System.Web.UI.WebControls.Content Content3; - } -} diff --git a/WebGoat/Content/FlashScripting.aspx b/WebGoat/Content/FlashScripting.aspx deleted file mode 100644 index 9f5ca038f..000000000 --- a/WebGoat/Content/FlashScripting.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="FlashScripting.aspx.cs" Inherits="OWASP.WebGoat.NET.FlashScripting" %> - - - - diff --git a/WebGoat/Content/FlashScripting.aspx.cs b/WebGoat/Content/FlashScripting.aspx.cs deleted file mode 100644 index a25661f9c..000000000 --- a/WebGoat/Content/FlashScripting.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class FlashScripting : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/FlashScripting.aspx.designer.cs b/WebGoat/Content/FlashScripting.aspx.designer.cs deleted file mode 100644 index 888644d91..000000000 --- a/WebGoat/Content/FlashScripting.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class FlashScripting { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/ForcedBrowsing.aspx b/WebGoat/Content/ForcedBrowsing.aspx deleted file mode 100644 index 14368f2e2..000000000 --- a/WebGoat/Content/ForcedBrowsing.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ForcedBrowsing.aspx.cs" Inherits="OWASP.WebGoat.NET.ForcedBrowsing" %> - - - - diff --git a/WebGoat/Content/ForcedBrowsing.aspx.cs b/WebGoat/Content/ForcedBrowsing.aspx.cs deleted file mode 100644 index bacd37ce4..000000000 --- a/WebGoat/Content/ForcedBrowsing.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class ForcedBrowsing : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/ForcedBrowsing.aspx.designer.cs b/WebGoat/Content/ForcedBrowsing.aspx.designer.cs deleted file mode 100644 index d06bf1982..000000000 --- a/WebGoat/Content/ForcedBrowsing.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class ForcedBrowsing { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/ForgotPassword.aspx b/WebGoat/Content/ForgotPassword.aspx deleted file mode 100644 index e27fa3a97..000000000 --- a/WebGoat/Content/ForgotPassword.aspx +++ /dev/null @@ -1,57 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ForgotPassword.aspx.cs" Inherits="OWASP.WebGoat.NET.ForgotPassword" %> - - - - - - - -

Forgot Password

- - - - -
- Forgot your password huh? No problem, we've got you covered. Enter your email address to get started -
- -

- -

- -
- -
- -

- -
- - - -
- -
-

- -

- -
- -
- -

- -
- - -

-

- -
-
- - - - -
diff --git a/WebGoat/Content/ForgotPassword.aspx.cs b/WebGoat/Content/ForgotPassword.aspx.cs deleted file mode 100644 index 98a7504ef..000000000 --- a/WebGoat/Content/ForgotPassword.aspx.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using OWASP.WebGoat.NET.App_Code; -using OWASP.WebGoat.NET.App_Code.DB; - -namespace OWASP.WebGoat.NET -{ - public partial class ForgotPassword : System.Web.UI.Page - { - private IDbProvider du = Settings.CurrentDbProvider; - - protected void Page_Load(object sender, EventArgs e) - { - if (!Page.IsPostBack) - { - PanelForgotPasswordStep2.Visible = false; - PanelForgotPasswordStep3.Visible = false; - } - } - - protected void ButtonCheckEmail_Click(object sender, EventArgs e) - { - string[] result = du.GetSecurityQuestionAndAnswer(txtEmail.Text); - - if (string.IsNullOrEmpty(result[0])) - { - labelQuestion.Text = "That email address was not found in our database!"; - PanelForgotPasswordStep2.Visible = false; - PanelForgotPasswordStep3.Visible = false; - - return; - } - labelQuestion.Text = "Here is the question we have on file for you: " + result[0] + ""; - PanelForgotPasswordStep2.Visible = true; - PanelForgotPasswordStep3.Visible = false; - - - HttpCookie cookie = new HttpCookie("encr_sec_qu_ans"); - - //encode twice for more security! - - cookie.Value = Encoder.Encode(Encoder.Encode(result[1])); - - Response.Cookies.Add(cookie); - } - - protected void ButtonRecoverPassword_Click(object sender, EventArgs e) - { - try - { - //get the security question answer from the cookie - string encrypted_password = Request.Cookies["encr_sec_qu_ans"].Value.ToString(); - - //decode it (twice for extra security!) - string security_answer = Encoder.Decode(Encoder.Decode(encrypted_password)); - - if (security_answer.Trim().ToLower().Equals(txtAnswer.Text.Trim().ToLower())) - { - PanelForgotPasswordStep1.Visible = false; - PanelForgotPasswordStep2.Visible = false; - PanelForgotPasswordStep3.Visible = true; - labelPassword.Text = "Security Question Challenge Successfully Completed!
Your password is: " + getPassword(txtEmail.Text); - } - } - catch (Exception ex) - { - labelMessage.Text = "An unknown error occurred - Do you have cookies turned on? Further Details: " + ex.Message; - } - } - - string getPassword(string email) - { - string password = du.GetPasswordByEmail(email); - return password; - } - - } -} \ No newline at end of file diff --git a/WebGoat/Content/ForgotPassword.aspx.designer.cs b/WebGoat/Content/ForgotPassword.aspx.designer.cs deleted file mode 100644 index e577bfdb9..000000000 --- a/WebGoat/Content/ForgotPassword.aspx.designer.cs +++ /dev/null @@ -1,38 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class ForgotPassword { - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Panel PanelForgotPasswordStep1; - - protected System.Web.UI.WebControls.Literal labelMessage; - - protected System.Web.UI.WebControls.TextBox txtEmail; - - protected System.Web.UI.WebControls.Button ButtonCheckEmail; - - protected System.Web.UI.WebControls.Panel PanelForgotPasswordStep2; - - protected System.Web.UI.WebControls.Literal labelQuestion; - - protected System.Web.UI.WebControls.TextBox txtAnswer; - - protected System.Web.UI.WebControls.Button ButtonCheckAnswer; - - protected System.Web.UI.WebControls.Panel PanelForgotPasswordStep3; - - protected System.Web.UI.WebControls.Literal labelPassword; - } -} diff --git a/WebGoat/Content/FormBasedAuth.aspx b/WebGoat/Content/FormBasedAuth.aspx deleted file mode 100644 index fff6c363d..000000000 --- a/WebGoat/Content/FormBasedAuth.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="FormBasedAuth.aspx.cs" Inherits="OWASP.WebGoat.NET.FormBasedAuth" %> - - - - diff --git a/WebGoat/Content/FormBasedAuth.aspx.cs b/WebGoat/Content/FormBasedAuth.aspx.cs deleted file mode 100644 index 0bcbe6958..000000000 --- a/WebGoat/Content/FormBasedAuth.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class FormBasedAuth : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/FormBasedAuth.aspx.designer.cs b/WebGoat/Content/FormBasedAuth.aspx.designer.cs deleted file mode 100644 index 262c8a6e8..000000000 --- a/WebGoat/Content/FormBasedAuth.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class FormBasedAuth { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/Global.asax b/WebGoat/Content/Global.asax deleted file mode 100644 index c991ad195..000000000 --- a/WebGoat/Content/Global.asax +++ /dev/null @@ -1 +0,0 @@ -<%@ Application Inherits="DotNetGoat.Global" %> diff --git a/WebGoat/Content/Global.asax.cs b/WebGoat/Content/Global.asax.cs deleted file mode 100644 index ece34de8d..000000000 --- a/WebGoat/Content/Global.asax.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections; -using System.ComponentModel; -using System.Web; -using System.Web.SessionState; - -namespace DotNetGoat -{ - public class Global : System.Web.HttpApplication - { - - protected virtual void Application_Start (Object sender, EventArgs e) - { - } - - protected virtual void Session_Start (Object sender, EventArgs e) - { - } - - protected virtual void Application_BeginRequest (Object sender, EventArgs e) - { - } - - protected virtual void Application_EndRequest (Object sender, EventArgs e) - { - } - - protected virtual void Application_AuthenticateRequest (Object sender, EventArgs e) - { - } - - protected virtual void Application_Error (Object sender, EventArgs e) - { - } - - protected virtual void Session_End (Object sender, EventArgs e) - { - } - - protected virtual void Application_End (Object sender, EventArgs e) - { - } - } -} - diff --git a/WebGoat/Content/HeaderInjection.aspx b/WebGoat/Content/HeaderInjection.aspx deleted file mode 100644 index d61d0ff9a..000000000 --- a/WebGoat/Content/HeaderInjection.aspx +++ /dev/null @@ -1,11 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="HeaderInjection.aspx.cs" Inherits="OWASP.WebGoat.NET.HeaderInjection" EnableEventValidation="false" %> - - - - -

Headers

- -
-

Cookies

- -
\ No newline at end of file diff --git a/WebGoat/Content/HeaderInjection.aspx.cs b/WebGoat/Content/HeaderInjection.aspx.cs deleted file mode 100644 index 47b665ea2..000000000 --- a/WebGoat/Content/HeaderInjection.aspx.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Collections; -using System.Collections.Specialized; - -namespace OWASP.WebGoat.NET -{ - public partial class HeaderInjection : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - if (Request.QueryString["Cookie"] != null) - { - HttpCookie cookie = new HttpCookie("UserAddedCookie"); - cookie.Value = Request.QueryString["Cookie"]; - - Response.Cookies.Add(cookie); - } - else if (Request.QueryString["Header"] != null) - { - NameValueCollection newHeader = new NameValueCollection(); - newHeader.Add("newHeader", Request.QueryString["Header"]); - Response.Headers.Add(newHeader); - } - - - - //Headers - lblHeaders.Text = Request.Headers.ToString().Replace("&", "
"); - - //Cookies - ArrayList colCookies = new ArrayList(); - for (int i = 0; i < Request.Cookies.Count; i++) - colCookies.Add(Request.Cookies[i]); - - gvCookies.DataSource = colCookies; - gvCookies.DataBind(); - - //possibly going to be used later for something interesting - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/HeaderInjection.aspx.designer.cs b/WebGoat/Content/HeaderInjection.aspx.designer.cs deleted file mode 100644 index 0da94b4ee..000000000 --- a/WebGoat/Content/HeaderInjection.aspx.designer.cs +++ /dev/null @@ -1,24 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class HeaderInjection { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label lblHeaders; - - protected System.Web.UI.WebControls.GridView gvCookies; - } -} diff --git a/WebGoat/Content/HiddenField.aspx b/WebGoat/Content/HiddenField.aspx deleted file mode 100644 index 4ddab679b..000000000 --- a/WebGoat/Content/HiddenField.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="HiddenField.aspx.cs" Inherits="OWASP.WebGoat.NET.HiddenField" %> - - - - diff --git a/WebGoat/Content/HiddenField.aspx.cs b/WebGoat/Content/HiddenField.aspx.cs deleted file mode 100644 index 2a531c116..000000000 --- a/WebGoat/Content/HiddenField.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class HiddenField : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/HiddenField.aspx.designer.cs b/WebGoat/Content/HiddenField.aspx.designer.cs deleted file mode 100644 index 8d5970105..000000000 --- a/WebGoat/Content/HiddenField.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class HiddenField { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/InjectionExercise.aspx b/WebGoat/Content/InjectionExercise.aspx deleted file mode 100644 index cc8935de5..000000000 --- a/WebGoat/Content/InjectionExercise.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="InjectionExercise.aspx.cs" Inherits="OWASP.WebGoat.NET.InjectionExercise" %> - - - - diff --git a/WebGoat/Content/InjectionExercise.aspx.cs b/WebGoat/Content/InjectionExercise.aspx.cs deleted file mode 100644 index 4c00e8d9f..000000000 --- a/WebGoat/Content/InjectionExercise.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class InjectionExercise : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/InjectionExercise.aspx.designer.cs b/WebGoat/Content/InjectionExercise.aspx.designer.cs deleted file mode 100644 index 26c83ed15..000000000 --- a/WebGoat/Content/InjectionExercise.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class InjectionExercise { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/JSONInjection.aspx b/WebGoat/Content/JSONInjection.aspx deleted file mode 100644 index 5b040ee1f..000000000 --- a/WebGoat/Content/JSONInjection.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="JSONInjection.aspx.cs" Inherits="OWASP.WebGoat.NET.JSONInjection" %> - - - - diff --git a/WebGoat/Content/JSONInjection.aspx.cs b/WebGoat/Content/JSONInjection.aspx.cs deleted file mode 100644 index aeb4a66ad..000000000 --- a/WebGoat/Content/JSONInjection.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class JSONInjection : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/JSONInjection.aspx.designer.cs b/WebGoat/Content/JSONInjection.aspx.designer.cs deleted file mode 100644 index 11a1923e8..000000000 --- a/WebGoat/Content/JSONInjection.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class JSONInjection { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/LogInjection.aspx b/WebGoat/Content/LogInjection.aspx deleted file mode 100644 index 397374b39..000000000 --- a/WebGoat/Content/LogInjection.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="LogInjection.aspx.cs" Inherits="OWASP.WebGoat.NET.LogInjection" %> - - - - diff --git a/WebGoat/Content/LogInjection.aspx.cs b/WebGoat/Content/LogInjection.aspx.cs deleted file mode 100644 index 343ccf2ea..000000000 --- a/WebGoat/Content/LogInjection.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class LogInjection : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/LogInjection.aspx.designer.cs b/WebGoat/Content/LogInjection.aspx.designer.cs deleted file mode 100644 index 9e447ca75..000000000 --- a/WebGoat/Content/LogInjection.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class LogInjection { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/LogoutIssues.aspx b/WebGoat/Content/LogoutIssues.aspx deleted file mode 100644 index c4184d463..000000000 --- a/WebGoat/Content/LogoutIssues.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="LogoutIssues.aspx.cs" Inherits="OWASP.WebGoat.NET.LogoutIssues" %> - - - - diff --git a/WebGoat/Content/LogoutIssues.aspx.cs b/WebGoat/Content/LogoutIssues.aspx.cs deleted file mode 100644 index 5ef51d0ba..000000000 --- a/WebGoat/Content/LogoutIssues.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class LogoutIssues : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/LogoutIssues.aspx.designer.cs b/WebGoat/Content/LogoutIssues.aspx.designer.cs deleted file mode 100644 index 6f4c3f781..000000000 --- a/WebGoat/Content/LogoutIssues.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class LogoutIssues { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/MessageDigest.aspx b/WebGoat/Content/MessageDigest.aspx deleted file mode 100644 index de875a45b..000000000 --- a/WebGoat/Content/MessageDigest.aspx +++ /dev/null @@ -1,34 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" - AutoEventWireup="true" CodeBehind="MessageDigest.aspx.cs" Inherits="OWASP.WebGoat.NET.Content.MessageDigest" %> - - - <%-- - Throw in some hints here. Many will have a hard time figuring it out: - - Have in mind we're using ASCII encoding for everything. - - Take a look at the ASCII table. - - Try typing in one character per word, see what you get. - - Type in: Well done! You can now consider yourself an expert hacker! Well almost. Surely this is an easy digest to break! - --%> - - - -

Try to construct a message that has the same digest as:

- -

- -

-

Result:

- - -
- -

An insecure message digest can compromise a system when an attacker can:

- -
    -
  • Figure out a message from the digest.
  • -
  • Replace the existing message with another one with the same digest
  • -
- -

This lesson will demonstrate how weak message digests can be exploited.

-
diff --git a/WebGoat/Content/MessageDigest.aspx.cs b/WebGoat/Content/MessageDigest.aspx.cs deleted file mode 100644 index 5df562543..000000000 --- a/WebGoat/Content/MessageDigest.aspx.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Web; -using System.Web.UI; -using OWASP.WebGoat.NET.App_Code; -using log4net; -using System.Reflection; - -namespace OWASP.WebGoat.NET.Content -{ - public partial class MessageDigest : System.Web.UI.Page - { - private readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private const string MSG = "Well done! You can now consider yourself an expert hacker! Well almost. Surely this is an easy digest to break!"; - - public void Page_Load(object sender, EventArgs args) - { - lblDigest.Text = WeakMessageDigest.GenerateWeakDigest(MSG); - } - - public void btnDigest_Click(object sender, EventArgs args) - { - string result = WeakMessageDigest.GenerateWeakDigest(txtBoxMsg.Text); - - log.Info(string.Format("Result for {0} is: {1}", txtBoxMsg.Text, result)); - lblResultDigest.Text = result; - } - } -} - diff --git a/WebGoat/Content/MessageDigest.aspx.designer.cs b/WebGoat/Content/MessageDigest.aspx.designer.cs deleted file mode 100644 index 434c30f60..000000000 --- a/WebGoat/Content/MessageDigest.aspx.designer.cs +++ /dev/null @@ -1,30 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.Content { - - - public partial class MessageDigest { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label lblDigest; - - protected System.Web.UI.WebControls.TextBox txtBoxMsg; - - protected System.Web.UI.WebControls.Button btnDigest; - - protected System.Web.UI.WebControls.Label lblResultDigest; - - protected System.Web.UI.WebControls.Content Content3; - } -} diff --git a/WebGoat/Content/ParamTampering.aspx b/WebGoat/Content/ParamTampering.aspx deleted file mode 100644 index bd5687c8c..000000000 --- a/WebGoat/Content/ParamTampering.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ParamTampering.aspx.cs" Inherits="OWASP.WebGoat.NET.ParamTampering" %> - - - - diff --git a/WebGoat/Content/ParamTampering.aspx.cs b/WebGoat/Content/ParamTampering.aspx.cs deleted file mode 100644 index 38a04ffe7..000000000 --- a/WebGoat/Content/ParamTampering.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class ParamTampering : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/ParamTampering.aspx.designer.cs b/WebGoat/Content/ParamTampering.aspx.designer.cs deleted file mode 100644 index 344137525..000000000 --- a/WebGoat/Content/ParamTampering.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class ParamTampering { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/PathManipulation.aspx b/WebGoat/Content/PathManipulation.aspx deleted file mode 100644 index b426e9716..000000000 --- a/WebGoat/Content/PathManipulation.aspx +++ /dev/null @@ -1,18 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" - CodeBehind="PathManipulation.aspx.cs" Inherits="OWASP.WebGoat.NET.PathManipulation" %> - - - This lesson illustrates the common problem of trusting a user-supplied filename, then using it to generate a file path. Try manipulating the get paramter and download WebGoat.NET's Web.config file! - - - - - - - -

Files available for download

-Here are files available for download. Please click on a file and the download should initiate within 10 seconds.

- -

- - diff --git a/WebGoat/Content/PathManipulation.aspx.cs b/WebGoat/Content/PathManipulation.aspx.cs deleted file mode 100644 index fa46b8ffc..000000000 --- a/WebGoat/Content/PathManipulation.aspx.cs +++ /dev/null @@ -1,116 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.IO; - -namespace OWASP.WebGoat.NET -{ - public partial class PathManipulation : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - //if(Request.QueryString["filename"] == null) - //{ - DirectoryInfo di = new DirectoryInfo(Server.MapPath("~/Downloads")); - int i = 0; - - foreach(FileInfo fi in di.GetFiles()) - { - HyperLink HL = new HyperLink(); - HL.ID = "HyperLink" + i++; - HL.Text = fi.Name; - HL.NavigateUrl = Request.FilePath + "?filename="+fi.Name; - ContentPlaceHolder cph = (ContentPlaceHolder)this.Master.FindControl("BodyContentPlaceholder"); - cph.Controls.Add(HL); - cph.Controls.Add(new LiteralControl("
")); - } - //} - //else - //{ - string filename = Request.QueryString["filename"]; - if(filename != null) - { - try - { - ResponseFile(Request, Response, filename, MapPath("~/Downloads/" + filename), 100); - } - catch (Exception ex) - { - Console.WriteLine(ex.Message); - lblStatus.Text = "File not found: " + filename; - } - } - //} - } - - public static bool ResponseFile(HttpRequest _Request, HttpResponse _Response, string _fileName, string _fullPath, long _speed) - { - try - { - FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); - BinaryReader br = new BinaryReader(myFile); - try - { - - _Response.AddHeader("Accept-Ranges", "bytes"); - _Response.Buffer = false; - long fileLength = myFile.Length; - long startBytes = 0; - - int pack = 10240; //10K bytes - if (_Request.Headers["Range"] != null) - { - _Response.StatusCode = 206; - string[] range = _Request.Headers["Range"].Split(new char[] { '=', '-' }); - startBytes = Convert.ToInt64(range[1]); - } - _Response.AddHeader("Content-Length", (fileLength - startBytes).ToString()); - - if (startBytes != 0) - { - _Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength - 1, fileLength)); - } - - _Response.AddHeader("Connection", "Keep-Alive"); - _Response.ContentType = "application/octet-stream"; - _Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8)); - - br.BaseStream.Seek(startBytes, SeekOrigin.Begin); - int maxCount = (int)Math.Floor((double)((fileLength - startBytes) / pack)) + 1; - - for (int i = 0; i < maxCount; i++) - { - if (_Response.IsClientConnected) - { - _Response.BinaryWrite(br.ReadBytes(pack)); - } - else - { - i = maxCount; - } - } - } - catch(Exception ex) - { - Console.WriteLine(ex.Message); - return false; - } - finally - { - br.Close(); - myFile.Close(); - } - } - catch(Exception ex) - { - Console.WriteLine(ex.Message); - return false; - } - return true; - } - - } -} \ No newline at end of file diff --git a/WebGoat/Content/PathManipulation.aspx.designer.cs b/WebGoat/Content/PathManipulation.aspx.designer.cs deleted file mode 100644 index ecda9e09a..000000000 --- a/WebGoat/Content/PathManipulation.aspx.designer.cs +++ /dev/null @@ -1,24 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class PathManipulation { - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label lblStatus; - } -} diff --git a/WebGoat/Content/PwdComplexity.aspx b/WebGoat/Content/PwdComplexity.aspx deleted file mode 100644 index 86402b6c0..000000000 --- a/WebGoat/Content/PwdComplexity.aspx +++ /dev/null @@ -1,7 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="PwdComplexity.aspx.cs" Inherits="OWASP.WebGoat.NET.PwdComplexity" %> - - - - content 2 - - diff --git a/WebGoat/Content/PwdComplexity.aspx.cs b/WebGoat/Content/PwdComplexity.aspx.cs deleted file mode 100644 index f0eb12974..000000000 --- a/WebGoat/Content/PwdComplexity.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class PwdComplexity : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/Random.aspx b/WebGoat/Content/Random.aspx deleted file mode 100644 index 0fb5b6894..000000000 --- a/WebGoat/Content/Random.aspx +++ /dev/null @@ -1,35 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" - Inherits="OWASP.WebGoat.NET.Content.Random" %> - - - - - - - -

Weak Random Number Generators

- -

A weak number generator can be the source of a system break-in, as it is used in many important situations - such as password salts, SSL handshakes etc.

- -

In the following example, try to predict the next number in the sequence:

- -

- - - - - - -
- -

The next number is: -

- -

- -
- - - - diff --git a/WebGoat/Content/Random.aspx.cs b/WebGoat/Content/Random.aspx.cs deleted file mode 100644 index 501d7abc9..000000000 --- a/WebGoat/Content/Random.aspx.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System; -using OWASP.WebGoat.NET.App_Code; -using System.Collections.Generic; -using System.Text; - -namespace OWASP.WebGoat.NET.Content -{ - public partial class Random : System.Web.UI.Page - { - private const uint MIN = 1; - private const uint MAX = 1000; - private const int INIT_NUMBERS = 5; - - public void Page_Load(object sender, EventArgs args) - { - if (Session["Random"] == null) - Reset(); - - IList numbers = (IList) Session["Numbers"]; - lblSequence.Text = "Sequence: " + Print(numbers); - } - - public void btnOneMore_Click(object sender, EventArgs args) - { - WeakRandom rnd = (WeakRandom) Session["Random"]; - IList numbers = (IList) Session["Numbers"]; - - numbers.Add(rnd.Next(MIN, MAX)); - - lblSequence.Text = "Sequence: " + Print(numbers); - } - - public void btnGo_Click(object sender, EventArgs args) - { - WeakRandom rnd = (WeakRandom) Session["Random"]; - - uint next = rnd.Peek(MIN, MAX); - - if (txtNextNumber.Text == next.ToString()) - lblResult.Text = "You found it!"; - else - lblResult.Text = "Sorry please try again."; - } - - public void btnReset_Click(object sender, EventArgs args) - { - Reset(); - - IList numbers = (IList) Session["Numbers"]; - lblSequence.Text = "Sequence: " + Print(numbers); - } - - private string Print(IList numbers) - { - StringBuilder strBuilder = new StringBuilder(); - - foreach(uint n in numbers) - strBuilder.AppendFormat("{0}, ", n); - - return strBuilder.ToString(); - } - - public void Reset() - { - Session["Random"] = new WeakRandom(); - - var rnd = (WeakRandom) Session["Random"]; - - IList numbers = new List(); - - for(int i=0; i -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.Content { - - - public partial class Random { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label lblSequence; - - protected System.Web.UI.WebControls.Button btnOneMore; - - protected System.Web.UI.WebControls.Button btnReset; - - protected System.Web.UI.WebControls.TextBox txtNextNumber; - - protected System.Web.UI.WebControls.Button btnGo; - - protected System.Web.UI.WebControls.Label lblResult; - - protected System.Web.UI.WebControls.Content Content3; - } -} diff --git a/WebGoat/Content/ReadlineDoS.aspx b/WebGoat/Content/ReadlineDoS.aspx deleted file mode 100644 index b3c730724..000000000 --- a/WebGoat/Content/ReadlineDoS.aspx +++ /dev/null @@ -1,11 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ReadlineDoS.aspx.cs" Inherits="OWASP.WebGoat.NET.ReadlineDoS" %> - - - - -
- -
- -
- diff --git a/WebGoat/Content/ReadlineDoS.aspx.cs b/WebGoat/Content/ReadlineDoS.aspx.cs deleted file mode 100644 index 5fcef7d58..000000000 --- a/WebGoat/Content/ReadlineDoS.aspx.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Web; -using System.Web.UI; -using System.IO; - -namespace OWASP.WebGoat.NET -{ - public partial class ReadlineDoS : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - protected void btnUpload_Click(object sender, EventArgs e) - { - lblFileContent.Text = String.Empty; - Stream fileContents = file1.PostedFile.InputStream; - - using (StreamReader reader = new StreamReader(fileContents)) - { - while (!reader.EndOfStream) - { - lblFileContent.Text += reader.ReadLine() + "
"; - } - } - } - } -} - diff --git a/WebGoat/Content/ReadlineDoS.aspx.designer.cs b/WebGoat/Content/ReadlineDoS.aspx.designer.cs deleted file mode 100644 index 6128b0050..000000000 --- a/WebGoat/Content/ReadlineDoS.aspx.designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class ReadlineDoS { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label lblFileContent; - - protected System.Web.UI.WebControls.FileUpload file1; - - protected System.Web.UI.WebControls.Button btnUpload; - } -} diff --git a/WebGoat/Content/ReflectedXSS.aspx b/WebGoat/Content/ReflectedXSS.aspx deleted file mode 100644 index e97c7f5e1..000000000 --- a/WebGoat/Content/ReflectedXSS.aspx +++ /dev/null @@ -1,41 +0,0 @@ -<%@ Page Title="" validateRequest="false" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ReflectedXSS.aspx.cs" Inherits="OWASP.WebGoat.NET.ReflectedXSS" %> - - - - - This webpage fails to properly validate and encode user-supplied data. Users can add their own HTML and scripts to the page. - See if you can display your session cookie in a dialog box. - - - -

Our Offices

- Need to visit our offices?  Click on a city below and get the details.
-
- - San Francisco | - Boston | - NYC | - Paris | - Tokyo | - Sydney | - London - -
-
- -
- - - - - - - - - - - - -
diff --git a/WebGoat/Content/ReflectedXSS.aspx.cs b/WebGoat/Content/ReflectedXSS.aspx.cs deleted file mode 100644 index 42631a0ae..000000000 --- a/WebGoat/Content/ReflectedXSS.aspx.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Data; -using OWASP.WebGoat.NET.App_Code.DB; -using OWASP.WebGoat.NET.App_Code; - -namespace OWASP.WebGoat.NET -{ - public partial class ReflectedXSS : System.Web.UI.Page - { - private IDbProvider du = Settings.CurrentDbProvider; - - protected void Page_Load(object sender, EventArgs e) - { - if (Request["city"] != null) - LoadCity(Request["city"]); - } - - void LoadCity (String city) - { - DataSet ds = du.GetOffice(city); - lblOutput.Text = "Here are the details for our " + city + " Office"; - dtlView.DataSource = ds.Tables[0]; - dtlView.DataBind(); - } - - void FixedLoadCity (String city) - { - DataSet ds = du.GetOffice(city); - lblOutput.Text = "Here are the details for our " + Server.HtmlEncode(city) + " Office"; - dtlView.DataSource = ds.Tables[0]; - dtlView.DataBind(); - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/ReflectedXSS.aspx.designer.cs b/WebGoat/Content/ReflectedXSS.aspx.designer.cs deleted file mode 100644 index b976707c6..000000000 --- a/WebGoat/Content/ReflectedXSS.aspx.designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class ReflectedXSS { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label lblOutput; - - protected System.Web.UI.WebControls.DetailsView dtlView; - } -} diff --git a/WebGoat/Content/RegexDoS.aspx b/WebGoat/Content/RegexDoS.aspx deleted file mode 100644 index 4d7dbbb95..000000000 --- a/WebGoat/Content/RegexDoS.aspx +++ /dev/null @@ -1,12 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="RegexDoS.aspx.cs" Inherits="OWASP.WebGoat.NET.RegexDoS" %> - - - - -
-Username:  -
-Password:  -
- -
diff --git a/WebGoat/Content/RegexDoS.aspx.cs b/WebGoat/Content/RegexDoS.aspx.cs deleted file mode 100644 index 0941e992f..000000000 --- a/WebGoat/Content/RegexDoS.aspx.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Web; -using System.Web.UI; -using System.Text.RegularExpressions; - -namespace OWASP.WebGoat.NET -{ - public partial class RegexDoS : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - - /// - /// Code from https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS - /// - protected void btnCreate_Click(object sender, EventArgs e) - { - string userName = txtUsername.Text; - string password = txtPassword.Text; - - Regex testPassword = new Regex(userName); - Match match = testPassword.Match(password); - if (match.Success) - { - lblError.Text = "Do not include name in password."; - } - else - { - lblError.Text = "Good password."; - } - } - } -} - diff --git a/WebGoat/Content/RegexDoS.aspx.designer.cs b/WebGoat/Content/RegexDoS.aspx.designer.cs deleted file mode 100644 index 9b81bb3e9..000000000 --- a/WebGoat/Content/RegexDoS.aspx.designer.cs +++ /dev/null @@ -1,31 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ -using System; -using System.Web; -using System.Web.UI; - -namespace OWASP.WebGoat.NET -{ - public partial class RegexDoS - { - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label lblError; - - protected System.Web.UI.WebControls.TextBox txtUsername; - - protected System.Web.UI.WebControls.TextBox txtPassword; - - protected System.Web.UI.WebControls.Button btnUpload; - } -} - diff --git a/WebGoat/Content/ResponseSplitting.aspx b/WebGoat/Content/ResponseSplitting.aspx deleted file mode 100644 index cd7203b5f..000000000 --- a/WebGoat/Content/ResponseSplitting.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ResponseSplitting.aspx.cs" Inherits="OWASP.WebGoat.NET.ResponseSplitting" %> - - - - diff --git a/WebGoat/Content/ResponseSplitting.aspx.cs b/WebGoat/Content/ResponseSplitting.aspx.cs deleted file mode 100644 index 48a5e3562..000000000 --- a/WebGoat/Content/ResponseSplitting.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class ResponseSplitting : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/ResponseSplitting.aspx.designer.cs b/WebGoat/Content/ResponseSplitting.aspx.designer.cs deleted file mode 100644 index a27764814..000000000 --- a/WebGoat/Content/ResponseSplitting.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class ResponseSplitting { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/SQLInjection.aspx b/WebGoat/Content/SQLInjection.aspx deleted file mode 100644 index 3b5c61b27..000000000 --- a/WebGoat/Content/SQLInjection.aspx +++ /dev/null @@ -1,51 +0,0 @@ -<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SQLInjection.aspx.cs" Inherits="OWASP.WebGoat.NET.SQLInjection" MasterPageFile="~/Resources/Master-Pages/Site.Master" %> - - - - Like many data-driven web applications, this page is vulnerable to SQL injection. The page allows users to sign - up for their mailling list. Before adding new users, the page does a check to make sure the email address isn't already - in the database. Exploit this page and retrieve all the email addresses in the database. - - - - - - - -

- Employee Email

- Are you looking to contact one of our employees?  Use this form to find - their email quickly!
-
- Enter the first few letters of their first or last name:
-

- - - - -
Name:
-

-

- -

-
-

- -

-

- - -

-
diff --git a/WebGoat/Content/SQLInjection.aspx.cs b/WebGoat/Content/SQLInjection.aspx.cs deleted file mode 100644 index 76884388f..000000000 --- a/WebGoat/Content/SQLInjection.aspx.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Data; -using OWASP.WebGoat.NET.App_Code.DB; -using OWASP.WebGoat.NET.App_Code; - -namespace OWASP.WebGoat.NET -{ - public partial class SQLInjection : System.Web.UI.Page - { - - private IDbProvider du = Settings.CurrentDbProvider; - - protected void Page_Load (object sender, EventArgs e) - { - - } - - protected void btnFind_Click(object sender, EventArgs e) - { - string name = txtName.Text; - DataSet ds = du.GetEmailByName(name); - - if (ds != null) - { - grdEmail.DataSource = ds.Tables[0]; - grdEmail.DataBind(); - } - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/SQLInjection.aspx.designer.cs b/WebGoat/Content/SQLInjection.aspx.designer.cs deleted file mode 100644 index 23502a107..000000000 --- a/WebGoat/Content/SQLInjection.aspx.designer.cs +++ /dev/null @@ -1,30 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class SQLInjection { - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.TextBox txtName; - - protected System.Web.UI.WebControls.Button btnAdd; - - protected System.Web.UI.WebControls.Label lblOutput; - - protected System.Web.UI.WebControls.GridView grdEmail; - } -} diff --git a/WebGoat/Content/SQLInjectionDiscovery.aspx b/WebGoat/Content/SQLInjectionDiscovery.aspx deleted file mode 100644 index ef4e39f0f..000000000 --- a/WebGoat/Content/SQLInjectionDiscovery.aspx +++ /dev/null @@ -1,42 +0,0 @@ -<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SQLInjectionDiscovery.aspx.cs" Inherits="OWASP.WebGoat.NET.SQLInjectionDiscovery" MasterPageFile="~/Resources/Master-Pages/Site.Master" %> - - - - - Like many data-driven websites, this page will give you a SQL error message if you provide unexpected user input. - Try entering characters used in SQL statements into the textbox and see what happens! - - - - -

- Email Address Finder: -

- - Enter the three digit customer ID to find the customer's email address. Only the first three characters will be recognized. -
- Example: 103 - -

-


- - Enter the Customer ID: - - - -
-
- - -
-

- -

-

-

- - - - -
diff --git a/WebGoat/Content/SQLInjectionDiscovery.aspx.cs b/WebGoat/Content/SQLInjectionDiscovery.aspx.cs deleted file mode 100644 index fbde41012..000000000 --- a/WebGoat/Content/SQLInjectionDiscovery.aspx.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Data; -using OWASP.WebGoat.NET.App_Code.DB; -using OWASP.WebGoat.NET.App_Code; - -namespace OWASP.WebGoat.NET -{ - public partial class SQLInjectionDiscovery : System.Web.UI.Page - { - - private IDbProvider du = Settings.CurrentDbProvider; - - protected void Page_Load (object sender, EventArgs e) - { - - } - - protected void btnFind_Click (object sender, EventArgs e) - { - try - { - string name = txtID.Text.Substring(0, 3); - string output = du.GetEmailByCustomerNumber(name); - - lblOutput.Text = String.IsNullOrEmpty(output) ? "Customer Number does not exist" : output; - } - catch (Exception ex) - { - lblOutput.Text = ex.Message; - } - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/SQLInjectionDiscovery.aspx.designer.cs b/WebGoat/Content/SQLInjectionDiscovery.aspx.designer.cs deleted file mode 100644 index 042871a9d..000000000 --- a/WebGoat/Content/SQLInjectionDiscovery.aspx.designer.cs +++ /dev/null @@ -1,28 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class SQLInjectionDiscovery { - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.TextBox txtID; - - protected System.Web.UI.WebControls.Button btnFind; - - protected System.Web.UI.WebControls.GridView grdEmail; - - protected System.Web.UI.WebControls.Label lblOutput; - } -} diff --git a/WebGoat/Content/SamplePage.aspx b/WebGoat/Content/SamplePage.aspx deleted file mode 100644 index 7bbad9976..000000000 --- a/WebGoat/Content/SamplePage.aspx +++ /dev/null @@ -1,4 +0,0 @@ -<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SamplePage.aspx.cs" Inherits="OWASP.WebGoat.NET.SamplePage" MasterPageFile="~/Resources/Master-Pages/Site.Master"%> - - - diff --git a/WebGoat/Content/SamplePage.aspx.cs b/WebGoat/Content/SamplePage.aspx.cs deleted file mode 100644 index b09947410..000000000 --- a/WebGoat/Content/SamplePage.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class SamplePage : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/SamplePage.aspx.designer.cs b/WebGoat/Content/SamplePage.aspx.designer.cs deleted file mode 100644 index d0bb2a20f..000000000 --- a/WebGoat/Content/SamplePage.aspx.designer.cs +++ /dev/null @@ -1,18 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class SamplePage { - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/SessionExercise.aspx b/WebGoat/Content/SessionExercise.aspx deleted file mode 100644 index b0f8d8543..000000000 --- a/WebGoat/Content/SessionExercise.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="SessionExercise.aspx.cs" Inherits="OWASP.WebGoat.NET.SessionExercise" %> - - - - diff --git a/WebGoat/Content/SessionExercise.aspx.cs b/WebGoat/Content/SessionExercise.aspx.cs deleted file mode 100644 index 3be7ead47..000000000 --- a/WebGoat/Content/SessionExercise.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class SessionExercise : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/SessionExercise.aspx.designer.cs b/WebGoat/Content/SessionExercise.aspx.designer.cs deleted file mode 100644 index a2be8cb78..000000000 --- a/WebGoat/Content/SessionExercise.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class SessionExercise { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/SessionFixation.aspx b/WebGoat/Content/SessionFixation.aspx deleted file mode 100644 index 559f7f6e3..000000000 --- a/WebGoat/Content/SessionFixation.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="SessionFixation.aspx.cs" Inherits="OWASP.WebGoat.NET.SessionFixation" %> - - - - diff --git a/WebGoat/Content/SessionFixation.aspx.cs b/WebGoat/Content/SessionFixation.aspx.cs deleted file mode 100644 index 5469965a2..000000000 --- a/WebGoat/Content/SessionFixation.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class SessionFixation : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/SessionFixation.aspx.designer.cs b/WebGoat/Content/SessionFixation.aspx.designer.cs deleted file mode 100644 index dd9c38acc..000000000 --- a/WebGoat/Content/SessionFixation.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class SessionFixation { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/StoredXSS.aspx b/WebGoat/Content/StoredXSS.aspx deleted file mode 100644 index 3ef83b0fd..000000000 --- a/WebGoat/Content/StoredXSS.aspx +++ /dev/null @@ -1,72 +0,0 @@ -<%@ Page Language="C#" validateRequest="false" AutoEventWireup="true" CodeBehind="StoredXSS.aspx.cs" Inherits="OWASP.WebGoat.NET.StoredXSS" MasterPageFile="~/Resources/Master-Pages/Site.Master" %> - - - This webpage fails to properly validate and encode user-supplied data. Users can add their own HTML and scripts to messages. - See if you can display your session cookie in a dialog box. - - - - - - - -

We'd love to hear from you!

- - Service is always #1 to us, and we would love to hear your feedback. Simply fill out the comment form below and tell us what you think! Please no spam / trolling, and keep it respectful. -

- We will answer your questions in the order they were received. Thank you. - -

- - - - -

- Comment Successfully Added! -
- - - - -

Leave a Comment

- -

- - - - Email: - - - - - - - - Comment: - - - - - - - - -   - - - - - - -

- -
\ No newline at end of file diff --git a/WebGoat/Content/StoredXSS.aspx.cs b/WebGoat/Content/StoredXSS.aspx.cs deleted file mode 100644 index 9b6f8ff79..000000000 --- a/WebGoat/Content/StoredXSS.aspx.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Data; -using OWASP.WebGoat.NET.App_Code.DB; -using OWASP.WebGoat.NET.App_Code; - -namespace OWASP.WebGoat.NET -{ - public partial class StoredXSS : System.Web.UI.Page - { - private IDbProvider du = Settings.CurrentDbProvider; - - protected void Page_Load (object sender, EventArgs e) - { - lblMessage.Visible = false; - txtEmail.Enabled = true; - if (!Page.IsPostBack) - LoadComments(); - - } - - protected void btnSave_Click(object sender, EventArgs e) - { - try - { - string error_message = du.AddComment("user_cmt", txtEmail.Text, txtComment.Text); - txtComment.Text = error_message; - lblMessage.Visible = true; - LoadComments(); - } - catch (Exception ex) - { - lblMessage.Text = ex.Message; - lblMessage.Visible = true; - } - } - - void LoadComments() - { - DataSet ds = du.GetComments("user_cmt"); - string comments = string.Empty; - foreach (DataRow row in ds.Tables[0].Rows) - { - comments += "Email:" + row["email"] + " (Email Address Verified!)
"; - comments += "Comment:
" + row["comment"] + "

"; - - } - lblComments.Text = comments; - } - - void FixedLoadComments() - { - DataSet ds = du.GetComments("user_cmt"); - string comments = string.Empty; - foreach (DataRow row in ds.Tables[0].Rows) - { - comments += "Email:" + Server.HtmlEncode(row["email"].ToString()) + " (Email Address Verified!)
"; - comments += "Comment:
" + Server.HtmlEncode(row["comment"].ToString()) + "

"; - - } - lblComments.Text = comments; - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/StoredXSS.aspx.designer.cs b/WebGoat/Content/StoredXSS.aspx.designer.cs deleted file mode 100644 index 56c06060a..000000000 --- a/WebGoat/Content/StoredXSS.aspx.designer.cs +++ /dev/null @@ -1,52 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class StoredXSS { - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label lblOutput; - - protected System.Web.UI.WebControls.Label lblMessage; - - protected System.Web.UI.WebControls.Label lblComments; - - protected System.Web.UI.WebControls.Table Table1; - - protected System.Web.UI.WebControls.TableRow TableRow1; - - protected System.Web.UI.WebControls.TableCell TableCell1; - - protected System.Web.UI.WebControls.TableCell TableCell2; - - protected System.Web.UI.WebControls.TextBox txtEmail; - - protected System.Web.UI.WebControls.TableRow TableRow2; - - protected System.Web.UI.WebControls.TableCell TableCell3; - - protected System.Web.UI.WebControls.TableCell TableCell4; - - protected System.Web.UI.WebControls.TextBox txtComment; - - protected System.Web.UI.WebControls.TableRow TableRow3; - - protected System.Web.UI.WebControls.TableCell TableCell5; - - protected System.Web.UI.WebControls.TableCell TableCell6; - - protected System.Web.UI.WebControls.Button btnSave; - } -} diff --git a/WebGoat/Content/Trace.aspx b/WebGoat/Content/Trace.aspx deleted file mode 100644 index aaf2a48b5..000000000 --- a/WebGoat/Content/Trace.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="Trace.aspx.cs" Inherits="OWASP.WebGoat.NET.Trace" %> - - - - \ No newline at end of file diff --git a/WebGoat/Content/Trace.aspx.cs b/WebGoat/Content/Trace.aspx.cs deleted file mode 100644 index ebb65ab64..000000000 --- a/WebGoat/Content/Trace.aspx.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class Trace : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - if (Request.QueryString["trace"] == "true") - { - Trace.IsEnabled = true; - } - } - } -} - diff --git a/WebGoat/Content/Trace.aspx.designer.cs b/WebGoat/Content/Trace.aspx.designer.cs deleted file mode 100644 index 88220fe2b..000000000 --- a/WebGoat/Content/Trace.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class Trace { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/Unsafe.aspx b/WebGoat/Content/Unsafe.aspx deleted file mode 100644 index aac0f708b..000000000 --- a/WebGoat/Content/Unsafe.aspx +++ /dev/null @@ -1,31 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" - AutoEventWireup="true" CodeBehind="MessageDigest.aspx.cs" Inherits="OWASP.WebGoat.NET.Content.Unsafe" %> - - - <%-- - Throw in some hints here. Many will have a hard time figuring it out: - -- Write a looong message - --%> - - - - - -

Unsafe blocks in .NET

- -

In this lesson we'll take a look at .NET's unsafe block and how it can be exploited through user input. - When typing a string in the textbox below, the server will read it and compute its reverse. Try to exploit the - server by typing in a 'bad' input.

- -

- -

- -

Result:

- -
- - - - diff --git a/WebGoat/Content/Unsafe.aspx.cs b/WebGoat/Content/Unsafe.aspx.cs deleted file mode 100644 index bdc625573..000000000 --- a/WebGoat/Content/Unsafe.aspx.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.Text; - -namespace OWASP.WebGoat.NET.Content -{ - public partial class Unsafe : System.Web.UI.Page - { - public void Page_Load(object sender, EventArgs args) - { - } - - public unsafe void btnReverse_Click(object sender, EventArgs args) - { - const string msg = "passwor"; - const int INPUT_LEN = 256; - char[] fixedChar = new char[INPUT_LEN]; - - for (int i = 0; i < fixedChar.Length; i++) - fixedChar[i] = '\0'; - - fixed (char* revLine = fixedChar) - { - int lineLen = txtBoxMsg.Text.Length; - - for (int i = 0; i < lineLen; i++) - *(revLine + i) = txtBoxMsg.Text[lineLen - i - 1]; - - char* revCur = revLine; - - lblReverse.Text = string.Empty; - while (*revCur != '\0') - lblReverse.Text += (char)*revCur++; - } - } - } -} - diff --git a/WebGoat/Content/Unsafe.aspx.designer.cs b/WebGoat/Content/Unsafe.aspx.designer.cs deleted file mode 100644 index be23d89a6..000000000 --- a/WebGoat/Content/Unsafe.aspx.designer.cs +++ /dev/null @@ -1,28 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.Content { - - - public partial class Unsafe { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.TextBox txtBoxMsg; - - protected System.Web.UI.WebControls.Button btnReverse; - - protected System.Web.UI.WebControls.Label lblReverse; - - protected System.Web.UI.WebControls.Content Content3; - } -} diff --git a/WebGoat/Content/UploadPathManipulation.aspx b/WebGoat/Content/UploadPathManipulation.aspx deleted file mode 100644 index 67bd3e2c4..000000000 --- a/WebGoat/Content/UploadPathManipulation.aspx +++ /dev/null @@ -1,30 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" - CodeBehind="UploadPathManipulation.aspx.cs" Inherits="OWASP.WebGoat.NET.UploadPathManipulation" %> - - - This lesson illustrates the common problem of trusting a user-supplied filename, then using it to generate a file path. Try uploading a file that will execute on the server. - - - - - - - -

File Upload

- -Select the file you want to upload, then click the Upload Document button -

- - - - - -

Attach a file (PDF, Excel or Plain Text)... -
- -

 

- -
-
- diff --git a/WebGoat/Content/UploadPathManipulation.aspx.cs b/WebGoat/Content/UploadPathManipulation.aspx.cs deleted file mode 100644 index ff531b14c..000000000 --- a/WebGoat/Content/UploadPathManipulation.aspx.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.IO; - -namespace OWASP.WebGoat.NET -{ - public partial class UploadPathManipulation : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - - protected void btnUpload_Click(object sender, EventArgs e) - { - if (FileUpload1.HasFile) - { - try - { - string filename = Path.GetFileName(FileUpload1.FileName); - FileUpload1.SaveAs(Server.MapPath("~/WebGoatCoins/uploads/") + filename); - labelUpload.Text = "
The file " + FileUpload1.FileName + " has been saved in to the WebGoatCoins/uploads directory
"; - - } - catch (Exception ex) - { - labelUpload.Text = "
Upload Failed: " + ex.Message + "
"; - } - finally - { - labelUpload.Visible = true; - } - } - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/UploadPathManipulation.aspx.designer.cs b/WebGoat/Content/UploadPathManipulation.aspx.designer.cs deleted file mode 100644 index 1cb70c23d..000000000 --- a/WebGoat/Content/UploadPathManipulation.aspx.designer.cs +++ /dev/null @@ -1,28 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class UploadPathManipulation { - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label labelUpload; - - protected System.Web.UI.WebControls.FileUpload FileUpload1; - - protected System.Web.UI.WebControls.Button btnUpload; - } -} diff --git a/WebGoat/Content/VerbTampering.aspx b/WebGoat/Content/VerbTampering.aspx deleted file mode 100644 index 846e79a3b..000000000 --- a/WebGoat/Content/VerbTampering.aspx +++ /dev/null @@ -1,7 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="VerbTampering.aspx.cs" Inherits="OWASP.WebGoat.NET.VerbTampering" %> - - - - - - diff --git a/WebGoat/Content/VerbTampering.aspx.cs b/WebGoat/Content/VerbTampering.aspx.cs deleted file mode 100644 index 1300a5799..000000000 --- a/WebGoat/Content/VerbTampering.aspx.cs +++ /dev/null @@ -1,19 +0,0 @@ - -using System; -using System.Web; -using System.Web.UI; - -namespace OWASP.WebGoat.NET -{ - public partial class VerbTampering : System.Web.UI.Page - { - //Probably best if eventually connected to DB - public static string tamperedMessage = "This has not been tampered with yet..."; - - protected void Page_Load(object sender, EventArgs e) - { - lblTampered.Text = tamperedMessage; - } - } -} - diff --git a/WebGoat/Content/VerbTampering.aspx.designer.cs b/WebGoat/Content/VerbTampering.aspx.designer.cs deleted file mode 100644 index 5c96a5b30..000000000 --- a/WebGoat/Content/VerbTampering.aspx.designer.cs +++ /dev/null @@ -1,22 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class VerbTampering { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label lblTampered; - } -} diff --git a/WebGoat/Content/VerbTamperingAttack.aspx b/WebGoat/Content/VerbTamperingAttack.aspx deleted file mode 100644 index 6f5defb5d..000000000 --- a/WebGoat/Content/VerbTamperingAttack.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="VerbTamperingAttack.aspx.cs" Inherits="OWASP.WebGoat.NET.VerbTamperingAttack" %> - - - - \ No newline at end of file diff --git a/WebGoat/Content/VerbTamperingAttack.aspx.cs b/WebGoat/Content/VerbTamperingAttack.aspx.cs deleted file mode 100644 index 2924d44fc..000000000 --- a/WebGoat/Content/VerbTamperingAttack.aspx.cs +++ /dev/null @@ -1,19 +0,0 @@ - -using System; -using System.Web; -using System.Web.UI; - -namespace OWASP.WebGoat.NET -{ - public partial class VerbTamperingAttack : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - if (Request.QueryString["message"] != null) - { - VerbTampering.tamperedMessage = Request.QueryString["message"]; - } - } - } -} - diff --git a/WebGoat/Content/VerbTamperingAttack.aspx.designer.cs b/WebGoat/Content/VerbTamperingAttack.aspx.designer.cs deleted file mode 100644 index 220e2fe22..000000000 --- a/WebGoat/Content/VerbTamperingAttack.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class VerbTamperingAttack { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/Viewstate.aspx b/WebGoat/Content/Viewstate.aspx deleted file mode 100644 index 09c379fb1..000000000 --- a/WebGoat/Content/Viewstate.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="Viewstate.aspx.cs" Inherits="OWASP.WebGoat.NET.Viewstate" %> - - - - diff --git a/WebGoat/Content/Viewstate.aspx.cs b/WebGoat/Content/Viewstate.aspx.cs deleted file mode 100644 index 044c7bf8b..000000000 --- a/WebGoat/Content/Viewstate.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class Viewstate : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/Viewstate.aspx.designer.cs b/WebGoat/Content/Viewstate.aspx.designer.cs deleted file mode 100644 index dc43fe2e8..000000000 --- a/WebGoat/Content/Viewstate.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class Viewstate { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/WSAttacks.aspx b/WebGoat/Content/WSAttacks.aspx deleted file mode 100644 index 0e7842522..000000000 --- a/WebGoat/Content/WSAttacks.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="WSAttacks.aspx.cs" Inherits="OWASP.WebGoat.NET.WSAttacks" %> - - - - diff --git a/WebGoat/Content/WSAttacks.aspx.cs b/WebGoat/Content/WSAttacks.aspx.cs deleted file mode 100644 index 2b068b881..000000000 --- a/WebGoat/Content/WSAttacks.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class WSAttacks : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/WSAttacks.aspx.designer.cs b/WebGoat/Content/WSAttacks.aspx.designer.cs deleted file mode 100644 index f464e6a54..000000000 --- a/WebGoat/Content/WSAttacks.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class WSAttacks { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/WSDL.aspx b/WebGoat/Content/WSDL.aspx deleted file mode 100644 index 27972ae02..000000000 --- a/WebGoat/Content/WSDL.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="WSDL.aspx.cs" Inherits="OWASP.WebGoat.NET.WSDL" %> - - - - diff --git a/WebGoat/Content/WSDL.aspx.cs b/WebGoat/Content/WSDL.aspx.cs deleted file mode 100644 index 6d57513a4..000000000 --- a/WebGoat/Content/WSDL.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class WSDL : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/WSDL.aspx.designer.cs b/WebGoat/Content/WSDL.aspx.designer.cs deleted file mode 100644 index c9581cf04..000000000 --- a/WebGoat/Content/WSDL.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class WSDL { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/Worm.aspx b/WebGoat/Content/Worm.aspx deleted file mode 100644 index 2bc9f6294..000000000 --- a/WebGoat/Content/Worm.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="Worm.aspx.cs" Inherits="OWASP.WebGoat.NET.Worm" %> - - - - diff --git a/WebGoat/Content/Worm.aspx.cs b/WebGoat/Content/Worm.aspx.cs deleted file mode 100644 index f215d8d7f..000000000 --- a/WebGoat/Content/Worm.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class Worm : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/Worm.aspx.designer.cs b/WebGoat/Content/Worm.aspx.designer.cs deleted file mode 100644 index 92930ed39..000000000 --- a/WebGoat/Content/Worm.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class Worm { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/XMLInjection.aspx b/WebGoat/Content/XMLInjection.aspx deleted file mode 100644 index 57af37992..000000000 --- a/WebGoat/Content/XMLInjection.aspx +++ /dev/null @@ -1,7 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="XMLInjection.aspx.cs" Inherits="OWASP.WebGoat.NET.XMLInjection" validateRequest="false" %> - - - - - - diff --git a/WebGoat/Content/XMLInjection.aspx.cs b/WebGoat/Content/XMLInjection.aspx.cs deleted file mode 100644 index 6f5e26745..000000000 --- a/WebGoat/Content/XMLInjection.aspx.cs +++ /dev/null @@ -1,91 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Xml; -using System.Xml.XPath; -using System.Data; -using System.IO; -using System.Text; - -namespace OWASP.WebGoat.NET -{ - public partial class XMLInjection : System.Web.UI.Page - { - List users; - protected void Page_Load(object sender, EventArgs e) - { - - - ReadXml(); - - gvUsers.DataSource = users.ToArray(); - - gvUsers.DataBind(); - -/* - - - Todd Smith - todd@example.com - - - Al Thompson - al@example.com - - -*/ - - //Need to add lesson! - if (Request.QueryString["name"] != null && Request.QueryString["email"] != null) - { - users.Add(new XmlUser(Request.QueryString["name"], Request.QueryString["email"])); - WriteXML(); - } - } - - private void ReadXml() - { - users = new List(); - XmlDocument doc = new XmlDocument(); - doc.Load(Server.MapPath("/App_Data/XmlInjectionUsers.xml")); - foreach (XmlNode node in doc.ChildNodes[1].ChildNodes) - { - if (node.Name == "user") - { - users.Add(new XmlUser(node.ChildNodes[0].InnerText, node.ChildNodes[1].InnerText)); - } - } - } - - private void WriteXML() - { - string xml = ""+ Environment.NewLine +"" + Environment.NewLine; - foreach (XmlUser user in users) - { - xml += "" + Environment.NewLine; - xml += "" + user.Name + "" + Environment.NewLine; - xml += "" + user.Email + "" + Environment.NewLine; - xml += "" + Environment.NewLine; - } - xml += "" +Environment.NewLine; - - XmlTextWriter writer = new XmlTextWriter(Server.MapPath("/App_Data/XmlInjectionUsers.xml"), Encoding.UTF8); - writer.WriteRaw(xml); - writer.Close(); - } - } - - public class XmlUser - { - public string Name { get; set; } - public string Email { get; set; } - - public XmlUser(string name, string email) - { - Name = name; - Email = email; - } - } -} diff --git a/WebGoat/Content/XMLInjection.aspx.designer.cs b/WebGoat/Content/XMLInjection.aspx.designer.cs deleted file mode 100644 index 0da8dfa91..000000000 --- a/WebGoat/Content/XMLInjection.aspx.designer.cs +++ /dev/null @@ -1,22 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class XMLInjection { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.GridView gvUsers; - } -} diff --git a/WebGoat/Content/XPathInjection.aspx b/WebGoat/Content/XPathInjection.aspx deleted file mode 100644 index 2b1ec6de4..000000000 --- a/WebGoat/Content/XPathInjection.aspx +++ /dev/null @@ -1,16 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="XPathInjection.aspx.cs" Inherits="OWASP.WebGoat.NET.XPathInjection" %> - - - -

Our Offices

- Need to find a sales person?  Click on a city below and get the details.
-
- - California | - Oregon | - New York | - Texas - -
-
-
\ No newline at end of file diff --git a/WebGoat/Content/XPathInjection.aspx.cs b/WebGoat/Content/XPathInjection.aspx.cs deleted file mode 100644 index 3c03c6e0d..000000000 --- a/WebGoat/Content/XPathInjection.aspx.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Xml; -using System.Xml.XPath; - -namespace OWASP.WebGoat.NET -{ - public partial class XPathInjection : System.Web.UI.Page - { - // Make into actual lesson - private string xml = "David PalmerPortlandor123-45-6789Jimmy JonesSan Diegoca555-45-6789Tom AndersonNew Yorkny444-45-6789Billy MosesHoustontx333-45-6789"; - protected void Page_Load(object sender, EventArgs e) - { - if (Request.QueryString["state"] != null) - { - FindSalesPerson(Request.QueryString["state"]); - } - } - - private void FindSalesPerson(string state) - { - XmlDocument xDoc = new XmlDocument(); - xDoc.LoadXml(xml); - XmlNodeList list = xDoc.SelectNodes("//salesperson[state='" + state + "']"); - if (list.Count > 0) - { - - } - - } - } -} - diff --git a/WebGoat/Content/XPathInjection.aspx.designer.cs b/WebGoat/Content/XPathInjection.aspx.designer.cs deleted file mode 100644 index ae6081cb7..000000000 --- a/WebGoat/Content/XPathInjection.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class XPathInjection { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/XSSExercise.aspx b/WebGoat/Content/XSSExercise.aspx deleted file mode 100644 index 2224b911c..000000000 --- a/WebGoat/Content/XSSExercise.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="XSSExercise.aspx.cs" Inherits="OWASP.WebGoat.NET.XSSExercise" %> - - - - diff --git a/WebGoat/Content/XSSExercise.aspx.cs b/WebGoat/Content/XSSExercise.aspx.cs deleted file mode 100644 index e1bb22573..000000000 --- a/WebGoat/Content/XSSExercise.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class XSSExercise : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/XSSExercise.aspx.designer.cs b/WebGoat/Content/XSSExercise.aspx.designer.cs deleted file mode 100644 index 9f47c32e5..000000000 --- a/WebGoat/Content/XSSExercise.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class XSSExercise { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Content/jQueryInjection.aspx b/WebGoat/Content/jQueryInjection.aspx deleted file mode 100644 index 90387d617..000000000 --- a/WebGoat/Content/jQueryInjection.aspx +++ /dev/null @@ -1,5 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="jQueryInjection.aspx.cs" Inherits="OWASP.WebGoat.NET.jQueryInjection" %> - - - - diff --git a/WebGoat/Content/jQueryInjection.aspx.cs b/WebGoat/Content/jQueryInjection.aspx.cs deleted file mode 100644 index 69b3cda46..000000000 --- a/WebGoat/Content/jQueryInjection.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class jQueryInjection : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/Content/jQueryInjection.aspx.designer.cs b/WebGoat/Content/jQueryInjection.aspx.designer.cs deleted file mode 100644 index 63798b0cb..000000000 --- a/WebGoat/Content/jQueryInjection.aspx.designer.cs +++ /dev/null @@ -1,20 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class jQueryInjection { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/DB_Scripts/create_webgoatcoins.sql b/WebGoat/DB_Scripts/create_webgoatcoins.sql deleted file mode 100644 index 7c01d41b1..000000000 --- a/WebGoat/DB_Scripts/create_webgoatcoins.sql +++ /dev/null @@ -1,170 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2005 Actuate Corporation. - * All rights reserved. This file and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Actuate Corporation - initial implementation - * - * Classic Models Inc. sample database developed as part of the - * Eclipse BIRT Project. For more information, see http:\\www.eclipse.org\birt - * - *******************************************************************************/ -/******************************************************************************* -* Changes made Jan 2012 - Copyright 2012 -* Updated BIRT to be the webgoat coins database -* Images copyright US Mint and the Perth Mint -* Contributers: -* Jerry Hoff - Infrared Security, LLC -* -*******************************************************************************/ - - - -/* Recommended DATABASE name is classicmodels. */ - -/* CREATE DATABASE classicmodels; */ -/* USE classicmodels; */ - -/* DROP the existing tables. Comment this out if it is not needed. */ - -/* webgoat.net note: use name webgoat_coins" */ - - -DROP TABLE Customers; -DROP TABLE CustomerLogin; -DROP TABLE SecurityQuestions; -DROP TABLE Employees; -DROP TABLE Offices; -DROP TABLE OrderDetails; -DROP TABLE Orders; -DROP TABLE Payments; -DROP TABLE Products; -DROP TABLE Categories; -DROP TABLE Comments; - - -/* Create the full set of Classic Models Tables */ - -CREATE TABLE Customers ( - customerNumber INTEGER NOT NULL AUTO_INCREMENT, - customerName VARCHAR(50) NOT NULL, - logoFileName VARCHAR(100) NULL, - contactLastName VARCHAR(50) NOT NULL, - contactFirstName VARCHAR(50) NOT NULL, - phone VARCHAR(50) NOT NULL, - addressLine1 VARCHAR(50) NOT NULL, - addressLine2 VARCHAR(50) NULL, - city VARCHAR(50) NOT NULL, - state VARCHAR(50) NULL, - postalCode VARCHAR(15) NULL, - country VARCHAR(50) NOT NULL, - salesRepEmployeeNumber INTEGER NULL, - creditLimit DOUBLE NULL, - PRIMARY KEY (customerNumber) -); - -CREATE TABLE CustomerLogin ( - email VARCHAR(100) NOT NULL, - customerNumber INTEGER NOT NULL, - password VARCHAR(40) NOT NULL, - question_id SMALLINT NULL, - answer VARCHAR(50) NULL, - PRIMARY KEY (email) -); - -CREATE TABLE SecurityQuestions ( - question_id SMALLINT NOT NULL AUTO_INCREMENT, - question_text VARCHAR(400) NOT NULL, - PRIMARY KEY (question_id) -); - - -CREATE TABLE Employees ( - employeeNumber INTEGER NOT NULL AUTO_INCREMENT, - lastName VARCHAR(50) NOT NULL, - firstName VARCHAR(50) NOT NULL, - extension VARCHAR(10) NOT NULL, - email VARCHAR(100) NOT NULL, - officeCode VARCHAR(10) NOT NULL, - reportsTo INTEGER NULL, - jobTitle VARCHAR(50) NOT NULL, - PRIMARY KEY (employeeNumber) -); - -CREATE TABLE Offices ( - officeCode VARCHAR(10) NOT NULL, - city VARCHAR(50) NOT NULL, - phone VARCHAR(50) NOT NULL, - addressLine1 VARCHAR(50) NOT NULL, - addressLine2 VARCHAR(50) NULL, - state VARCHAR(50) NULL, - country VARCHAR(50) NOT NULL, - postalCode VARCHAR(15) NOT NULL, - territory VARCHAR(10) NOT NULL, - PRIMARY KEY (officeCode) -); - -CREATE TABLE OrderDetails ( - orderNumber INTEGER NOT NULL, - productCode VARCHAR(15) NOT NULL, - quantityOrdered INTEGER NOT NULL, - priceEach DOUBLE NOT NULL, - orderLineNumber SMALLINT NOT NULL, - PRIMARY KEY (orderNumber, productCode) -); - -CREATE TABLE Orders ( - orderNumber INTEGER NOT NULL AUTO_INCREMENT, - orderDate DATETIME NOT NULL, - requiredDate DATETIME NOT NULL, - shippedDate DATETIME NULL, - status VARCHAR(15) NOT NULL, - comments TEXT NULL, - customerNumber INTEGER NOT NULL, - PRIMARY KEY (orderNumber) -); - - -CREATE TABLE Payments ( - customerNumber INTEGER NOT NULL, - cardType VARCHAR(50) NOT NULL, - creditCardNumber VARCHAR(50) NOT NULL, - verificationCode SMALLINT NOT NULL, - cardExpirationMonth VARCHAR(3) NOT NULL, - cardExpirationYear VARCHAR(5) NOT NULL, - confirmationCode VARCHAR(50) NOT NULL, - paymentDate DATETIME NOT NULL, - amount DOUBLE NOT NULL, - PRIMARY KEY (customerNumber, confirmationCode) -); - -CREATE TABLE Categories( - catNumber INTEGER NOT NULL AUTO_INCREMENT, - catName VARCHAR(50) NOT NULL, - catDesc TEXT NOT NULL, - PRIMARY KEY (catNumber) -); - -CREATE TABLE Products ( - productCode VARCHAR(15) NOT NULL, - productName VARCHAR(200) NOT NULL, - catNumber INTEGER NOT NULL, - productImage VARCHAR(100) NOT NULL, - productVendor VARCHAR(50) NOT NULL, - productDescription TEXT NOT NULL, - quantityInStock SMALLINT NOT NULL, - buyPrice DOUBLE NOT NULL, - MSRP DOUBLE NOT NULL, - PRIMARY KEY (productCode) -); - -CREATE TABLE Comments( - commentNumber INTEGER NOT NULL AUTO_INCREMENT, - productCode VARCHAR(15) NOT NULL, - email VARCHAR(100) NOT NULL, - comment TEXT NOT NULL, - PRIMARY KEY (commentNumber) -); diff --git a/WebGoat/DB_Scripts/create_webgoatcoins_sqlite3.sql b/WebGoat/DB_Scripts/create_webgoatcoins_sqlite3.sql deleted file mode 100644 index 930b90ccf..000000000 --- a/WebGoat/DB_Scripts/create_webgoatcoins_sqlite3.sql +++ /dev/null @@ -1,170 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2005 Actuate Corporation. - * All rights reserved. This file and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Actuate Corporation - initial implementation - * - * Classic Models Inc. sample database developed as part of the - * Eclipse BIRT Project. For more information, see http:\\www.eclipse.org\birt - * - *******************************************************************************/ -/******************************************************************************* -* Changes made Jan 2012 - Copyright 2012 -* Updated BIRT to be the webgoat coins database -* Images copyright US Mint and the Perth Mint -* Contributers: -* Jerry Hoff - Infrared Security, LLC -* -*******************************************************************************/ - - - -/* Recommended DATABASE name is classicmodels. */ - -/* CREATE DATABASE classicmodels; */ -/* USE classicmodels; */ - -/* DROP the existing tables. Comment this out if it is not needed. */ - -/* webgoat.net note: use name webgoat_coins" */ - - -DROP TABLE Customers; -DROP TABLE CustomerLogin; -DROP TABLE SecurityQuestions; -DROP TABLE Employees; -DROP TABLE Offices; -DROP TABLE OrderDetails; -DROP TABLE Orders; -DROP TABLE Payments; -DROP TABLE Products; -DROP TABLE Categories; -DROP TABLE Comments; - - -/* Create the full set of Classic Models Tables */ - -CREATE TABLE Customers ( - customerNumber INTEGER NOT NULL, - customerName VARCHAR(50) NOT NULL, - logoFileName VARCHAR(100) NULL, - contactLastName VARCHAR(50) NOT NULL, - contactFirstName VARCHAR(50) NOT NULL, - phone VARCHAR(50) NOT NULL, - addressLine1 VARCHAR(50) NOT NULL, - addressLine2 VARCHAR(50) NULL, - city VARCHAR(50) NOT NULL, - state VARCHAR(50) NULL, - postalCode VARCHAR(15) NULL, - country VARCHAR(50) NOT NULL, - salesRepEmployeeNumber INTEGER NULL, - creditLimit DOUBLE NULL, - PRIMARY KEY (customerNumber) -); - -CREATE TABLE CustomerLogin ( - email VARCHAR(100) NOT NULL, - customerNumber INTEGER NOT NULL, - password VARCHAR(40) NOT NULL, - question_id SMALLINT NULL, - answer VARCHAR(50) NULL, - PRIMARY KEY (email) -); - -CREATE TABLE SecurityQuestions ( - question_id SMALLINT NOT NULL, - question_text VARCHAR(400) NOT NULL, - PRIMARY KEY (question_id) -); - - -CREATE TABLE Employees ( - employeeNumber INTEGER NOT NULL, - lastName VARCHAR(50) NOT NULL, - firstName VARCHAR(50) NOT NULL, - extension VARCHAR(10) NOT NULL, - email VARCHAR(100) NOT NULL, - officeCode VARCHAR(10) NOT NULL, - reportsTo INTEGER NULL, - jobTitle VARCHAR(50) NOT NULL, - PRIMARY KEY (employeeNumber) -); - -CREATE TABLE Offices ( - officeCode VARCHAR(10) NOT NULL, - city VARCHAR(50) NOT NULL, - phone VARCHAR(50) NOT NULL, - addressLine1 VARCHAR(50) NOT NULL, - addressLine2 VARCHAR(50) NULL, - state VARCHAR(50) NULL, - country VARCHAR(50) NOT NULL, - postalCode VARCHAR(15) NOT NULL, - territory VARCHAR(10) NOT NULL, - PRIMARY KEY (officeCode) -); - -CREATE TABLE OrderDetails ( - orderNumber INTEGER NOT NULL, - productCode VARCHAR(15) NOT NULL, - quantityOrdered INTEGER NOT NULL, - priceEach DOUBLE NOT NULL, - orderLineNumber SMALLINT NOT NULL, - PRIMARY KEY (orderNumber, productCode) -); - -CREATE TABLE Orders ( - orderNumber INTEGER NOT NULL, - orderDate DATETIME NOT NULL, - requiredDate DATETIME NOT NULL, - shippedDate DATETIME NULL, - status VARCHAR(15) NOT NULL, - comments TEXT NULL, - customerNumber INTEGER NOT NULL, - PRIMARY KEY (orderNumber) -); - - -CREATE TABLE Payments ( - customerNumber INTEGER NOT NULL, - cardType VARCHAR(50) NOT NULL, - creditCardNumber VARCHAR(50) NOT NULL, - verificationCode SMALLINT NOT NULL, - cardExpirationMonth VARCHAR(3) NOT NULL, - cardExpirationYear VARCHAR(5) NOT NULL, - confirmationCode VARCHAR(50) NOT NULL, - paymentDate DATETIME NOT NULL, - amount DOUBLE NOT NULL, - PRIMARY KEY (customerNumber, confirmationCode) -); - -CREATE TABLE Categories( - catNumber INTEGER NOT NULL, - catName VARCHAR(50) NOT NULL, - catDesc TEXT NOT NULL, - PRIMARY KEY (catNumber) -); - -CREATE TABLE Products ( - productCode VARCHAR(15) NOT NULL, - productName VARCHAR(200) NOT NULL, - catNumber INTEGER NOT NULL, - productImage VARCHAR(100) NOT NULL, - productVendor VARCHAR(50) NOT NULL, - productDescription TEXT NOT NULL, - quantityInStock SMALLINT NOT NULL, - buyPrice DOUBLE NOT NULL, - MSRP DOUBLE NOT NULL, - PRIMARY KEY (productCode) -); - -CREATE TABLE Comments( - commentNumber INTEGER NOT NULL, - productCode VARCHAR(15) NOT NULL, - email VARCHAR(100) NOT NULL, - comment TEXT NOT NULL, - PRIMARY KEY (commentNumber) -); diff --git a/WebGoat/DB_Scripts/datafiles/categories.txt b/WebGoat/DB_Scripts/datafiles/categories.txt deleted file mode 100644 index cae2b6052..000000000 --- a/WebGoat/DB_Scripts/datafiles/categories.txt +++ /dev/null @@ -1,5 +0,0 @@ -1|Gold Coins|A gold coin is a coin made mostly or entirely of gold. Gold has been used for coins practically since the invention of coinage, originally because of gold's intrinsic value. In modern times, most gold coins are intended either to be sold to collectors, or to be used as bullion coins—coins whose nominal value is irrelevant and which serve primarily as a method of investing in gold. Gold has been used as money for many reasons. It is fungible, with a low spread between the prices to buy and sell. Gold is also easily transportable, as it has a high value to weight ratio, compared to other commodities, such as silver. Gold can be divided into smaller units, without destroying its value; it can also be melted into ingots, and re-coined. The density of gold is higher than most other metals, making it difficult to pass counterfeits. Gold is extremely unreactive. The scarcity of gold stabilizes its value. -2|Silver Coins|Silver coins are possibly the oldest mass produced form of coinage. Silver has been used as a coinage metal since the times of the Greeks. Their silver drachmas were popular trade coins. As with all collectible coins, many factors determine the value of a collectible silver coin, such as its rarity, demand, condition and the number originally minted. Ancient silver coins coveted by collectors include the Denarius and Miliarense, while more recent collectible silver coins include the Morgan Dollar and the Spanish Milled Dollar. Other than collector's silver coins, silver bullion coins are popular among people who desire a hedge against currency inflation or store of value. Silver has an international currency symbol of XAG under ISO 4217. Before 1797, British pennies used to be made out of silver while the ancient Persians used silver coins between 612-330 BC. -3|Platinum Coins|Platinum coins are a form of currency. Platinum has an international currency symbol under ISO 4217 of XPT. The issues of legitimate platinum coins were initiated by Spain in Spanish-colonized America in the 18th century and continued by the Russian Empire in the 19th century. As a form of currency, these coins proved to be impractical: platinum resembles many less expensive metals, and, unlike the more malleable and ductile silver and gold, it is very difficult to work. Several commemorative coin sets have been issued starting from 1978 and became popular among coin collectors. The major platinum bullion coins include the American Platinum Eagle, the Canadian Platinum Maple Leaf, the Australian Platinum Koala, the Isle of Man Noble, the Chinese Platinum Panda and several series by the Soviet Union and later by the Russian Federation. The production of most platinum coins stopped around 2005 except for the American Platinum Eagle – one of the world's most popular platinum coins – which was still being produced in 2009. -4|Commemorative Coins|Congress authorizes commemorative coins that celebrate and honor American people, places, events, and institutions. Although these coins are legal tender, they are not minted for general circulation. Each commemorative coin is produced by the United States Mint in limited quantity and is only available for a limited time. -5|Yearly Designs|Designed coins, where you can browse and purchase special coins honoring a wide range of humanities accomplishments. Qualities and availability are not guaranteed. Please call to check all availability. Each set is issued for a limited time. diff --git a/WebGoat/DB_Scripts/datafiles/customerlogin.txt b/WebGoat/DB_Scripts/datafiles/customerlogin.txt deleted file mode 100644 index a58e0f80b..000000000 --- a/WebGoat/DB_Scripts/datafiles/customerlogin.txt +++ /dev/null @@ -1,122 +0,0 @@ -bob@ateliergraphique.com|103|MTIzNDU2|1|blue -jerry@goatgoldstore.net|112|cGFzc3dvcmQ=|3|dog -bill@australiancollectors.net|114|bG92ZQ==|4|coins -mark@larochellegold.net|119|MTIzNDU2Nzg=|2|Ohio -jill@baanepreciousimports.net|121|cHJpbmNlc3M=|3|cat -susan@preciousgolddistributorsltd.com|124|c3Vuc2hpbmU=|2|California -sky@havelzbyszekco.com|125|c2luZ2xl|2|California -kate@blauerseemetals.net|128|aWxvdmV5b3U=|2|Florida -julie@preciousmetalsco.com|129|c3VtbWVy|2|Texas -james@landofcoinsinc.net|131|aG9wZQ==|2|NY -matt@euroshoppingchannel.net|141|bG9va2luZw==|1|light blue -jane@volvomodelreplicas.net|144|bW90aGVy|2|Texas -sally@danishwholesaleimports.com|145|Zm9vdGJhbGw=|2|NY -rob@saveleyhenriot.net|146|aGFwcHk=|2|Florida -steve@dragoncoinage.com|148|cXdlcnR5|3|cat -jeff@musclecoinsinc.net|151|bGV0bWVpbg==|4|asdf -kelvin@premiumclassicsinc.com|157|dHJ1c3RubzE=|4|123456 -sam@technicsstoresinc.com|161|YWJjMTIz|2|New York -wendy@handjigoldco.com|166|aGVsbG8=|1|sky blue -vey@herkkugold.net|167|ZHJhZ29u|1|blue -keith@americanbankinc.com|168|bW9ua2V5|1|sky blue -alex@portoimportsco.net|169|Y29tcHV0ZXI=|2|Colorado -martine@daedalusdesignsimports.com|171|YXNkZg==|4|123456 -bertrand@lacornedabondance.com|172|c2hhZG93|3|cat -jerry@cambridgecollectablesco.com|173|aW50ZXJuZXQ=|4|123456 -julie@golddepotinc.com|175|d2hhdGV2ZXI=|4|123456 -mory@osakacoinageco.net|177|Y2hlZXNl|2|Texas -michael@vitachromeinc.net|181|cGFzcw==|2|FL -karttunen@coinsoffinland.net|186|bWF0cml4|2|TX -ashworth@avstores.net|187|YWFhYWFh|4|123456 -cassidy@clovercollections.net|189|c3VwZXJtYW4=|3|cat -leslie@metalscoinclassicsinc.com|198|cG9rZW1vbg==|3|cat -devon@ukcollectables.com|201|Zm9vdGJhbGw=|3|dog -yoshi@canadiangoldexchangenetwork.com|202|YmxhaGJsYWg=|4|letmein -miguel@onlinepreciouscollectables.net|204|aGVscG1l|2|Florida -julie@coins4grownupscom.com|205|bWljaGFlbA==|2|Texas -walker@asianshoppingnetwork.com|206|c2VjcmV0|3|dog -frdrique@preciouscaravy.net|209|cGFzc3dvcmQx|4|gold -gao@kingkongcollectables.net|211|aWxvdmV5b3Ux|1|sky blue -eduardo@enacodistributors.com|216|c29jY2FyMQ==|1|light blue -mary@boardscoinsco.com|219|aWxvdmV5b3Uh|2|NY -horst@natrlichmetals.com|223|YmFzZWJhbGwx|2|Ohio -palle@heintzecollectables.com|227|cXdlcnR5MQ==|4|password -jean@qubechomeshoppingnetwork.com|233|b3Jhbmdl|2|California -alejandra@angresellers.net|237|aHVudGVy|3|animal -valarie@collectablepreciousdesignsco.com|239|amVubmlmZXI=|4|coins -helen@goldbymailcouk.net|240|c25vb3B5|2|Missouri -annette@alphacognac.net|242|Z2luZ2Vy|3|cat -renate@messnershoppingnetwork.com|247|bXVzdGFuZw==|2|California -paolo@amicacoinsco.com|249|dGVzdGluZw==|4|coins -daniel@lyoncoinage.net|250|YXBwbGU=|1|green -daniel@metalsassociscie.com|256|aWxvdmV5b3Uz|3|dog -pfalzheim@tomsspezialitten.net|259|Y2FuYWRh|3|dog -lincoln@royalcanadiancollectables.net|260|c2lsdmVy|4|coins -franken@frankengold.net|273|cm9ib3Q=|3|dog -ohara@annasdecorations.com|276|cGVhbnV0|3|dog -giovanni@rovelligold.com|278|Z3VpdGFy|4|coins -adrian@coinageandthingsco.com|282|cmFpbmJvdw==|2|NY -marta@martasreplicasco.com|286|ZGFrb3Rh|1|red -ed@bgecollectables.net|293|Y29tcGFx|1|blue -holz@vidasport.net|298|Z29sZA==|1|green -klaeboe@norwaygoldbymail.net|299|Y29vbA==|2|New York -bradley@schuylerimports.com|303|Zmxvd2Vy|4|openup -mel@derhundimports.net|307|c2Nvb3Rlcg==|4|123456 -koskitalo@oulutoysupplies.net|311|bWVybGlu|2|Colorado -catherine@petitmetals.net|314|Z29vZ2xl|1|blue -steve@preciousclassics.net|319|c3RhcnRyZWs=|2|Colorado -wing@preciouscreationsltd.net|320|bWF0cml4IQ==|4|password -julie@corporategoldideasco.com|321|YWRtaW4=|4|qwerty -graham@downundercoinage.net|323|YXVzdGlu|2|Florida -brown@stylishdeskdecors.net|324|cGFzc3cwcmQ=|1|sky blue -william@teknicollectablesinc.net|328|d2lubmVy|1|red -calaghan@australiangoldnetwork.net|333|ZnJpZW5kcw==|4|123456 -kalle@suominencoinage.com|334|bmludGVuZG8=|2|New York -cramer@cramerspezialitten.com|335|aGFybGV5|4|coins -cervantes@classicgoldideas.net|339|c21va2V5|3|dog -jesus@cafimports.net|344|bHVja3k=|3|dog -chandler@menrusretailers.com|347|ZGlnaXRhbA==|3|animal -mckenna@asiantreasures.net|348|dGh1bmRlcg==|2|New York -laurence@marseillepreciousmetals.net|350|c3Bpcml0|3|dog -paul@reimscollectables.com|353|YmFuZGl0|1|blue -kuger@sardistributors.net|356|ZW50ZXI=|3|dog -wales@goldforhimcom.net|357|YW50aG9ueQ==|4|openup -karin@kommissionmetals.net|361|Y29ydmV0dGU=|1|blue -juri@gold4allagescom.net|362|aG9ja2V5|4|asdf -dorothy@onlinepremiumcreationsco.net|363|cG93ZXI=|2|Texas -rodriguez@lisboacoinage.net|369|YmVuamFtaW4=|3|dog -braun@preciouscollectables.com|376|MXcyZTNl|2|Colorado -allen@collectablesforlessinc.net|379|dmlwZXI=|4|password -pasilver@royalebelge.com|381|cXdlcnR5MQ==|1|blue -georg@salzburgcollectables.com|382|Y3JlYXRpdmU=|2|Florida -arnold@cruzsonsco.net|385|Zm9vYmFy|3|animal -maurizio@lordinecoinage.net|386|c2xheWVy|4|gold -shimamura@tokyocollectables.com|398|d2lzZG9t|3|cat -dopreciousque@metalscanalpetit.com|406|ZGFsbGFz|1|blue -rita@stuttgartcollectableexchange.com|409|Z3JlZW4=|1|red -mcroy@extremedeskdecorations.com|412|dGVzdHRlc3Q=|3|dog -donnermeyer@bavariancollectablesimports.net|415|b25lbG92ZQ==|3|animal -maria@classiclegendsinc.com|424|bWljcm9zb2Z0|1|sky blue -feuer@feueronlinestores.net|443|YnViYmxlcw==|1|sky blue -dan@goldideascorp.net|447|Y29jYWNvbGE=|1|blue -martha@scandinaviangoldideas.com|448|bG92aW5n|3|animal -sue@thesharpgoldwarehouse.net|450|cGFzc3dvcmQh|3|cat -roland@preciousmetalswerke.com|452|bWF4d2VsbA==|3|cat -leslie@supersilverinc.com|455|YmFieQ==|2|New York -yu@microsilverinc.com|456|cHJpbmNl|2|New York -sommer@corridametalsreplicas.net|458|ZGV4dGVy|3|dog -sven@warburgexchange.com|459|a2l0dGVu|1|light blue -violeta@fungoldideascom.com|462|c3RlbGxh|3|dog -anton@antondesigns.net|465|amFzcGVy|4|asdf -clenahan@australiancollectables.net|471|ZGFuaWVsbGU=|3|dog -franco@fraudacollezione.com|473|YW5nZWwx|1|blue -steve@westcoastcollectablesco.net|475|NTU1NTU1|4|letmein -hanna@mitvergngenco.com|477|c2FtbXk=|3|cat -semenov@kremlincollectables.com|480|bm9uZQ==|3|animal -altagar@raananstores.net|481|MTExMTEx|2|California -roel@iberiagoldimports.com|484|bGlnaHRuaW5n|1|blue -rosa@coinrmintdistributorsinc.com|486|cmVtZW1iZXI=|3|cat -sue@signalcollectiblesltd.net|487|b3BlbnVw|2|California -smith@doubledeckergoldstores.com|489|bGV0bWVpbjE=|3|dog -valarie@premiumcollectables.com|495|bHVja3kx|1|blue -tony@kellysgoldshop.net|496|c3RhcndhcnM=|1|sky blue diff --git a/WebGoat/DB_Scripts/datafiles/customers.txt b/WebGoat/DB_Scripts/datafiles/customers.txt deleted file mode 100644 index 7e44a550c..000000000 --- a/WebGoat/DB_Scripts/datafiles/customers.txt +++ /dev/null @@ -1,122 +0,0 @@ -103|Atelier Graphique|ateliergraphique.png|Schmitt|Carine |40.32.2555|54, rue Royale|NULL|Nantes|NULL|44000|France|1370|21000 -112|Goat Gold Store|goatgoldstore.png|King|Jerry|7025551838|8489 Strong St.|NULL|Las Vegas|NV|83030|USA|1166|71800 -114|Australian Collectors, Co.|australiancollectors.png|Ferguson|Peter|03 9520 4555|636 St Kilda Road|Level 3|Melbourne|Victoria|3004|Australia|1611|117300 -119|La Rochelle Gold|larochellegold.png|Labrune|Janine |40.67.8555|67, rue des Cinquante Otages|NULL|Nantes|NULL|44000|France|1370|118200 -121|Baane Precious Imports|baanepreciousimports.png|Bergulfsen|Jonas |07-98 9555|Erling Skakkes gate 78|NULL|Stavern|NULL|4110|Norway|1504|81700 -124|Precious Gold Distributors Ltd.|preciousgolddistributorsltd.png|Nelson|Susan|4155551450|5677 Strong St.|NULL|San Rafael|CA|97562|USA|1165|210500 -125|Havel & Zbyszek Co|havelzbyszekco.png|Piestrzeniewicz|Zbyszek |(26) 642-7555|ul. Filtrowa 68|NULL|Warszawa|NULL|01-012|Poland|NULL|0 -128|Blauer See Metals, Co.|blauerseemetals.png|Keitel|Roland|+49 69 66 90 2555|Lyonerstr. 34|NULL|Frankfurt|NULL|60528|Germany|1504|59700 -129|Precious Metals Co.|preciousmetalsco.png|Murphy|Julie|6505555787|5557 North Pendale Street|NULL|San Francisco|CA|94217|USA|1165|64600 -131|Land of Coins Inc.|landofcoinsinc.png|Lee|Kwai|2125557818|897 Long Airport Avenue|NULL|NYC|NY|10022|USA|1323|114900 -141|Euro+ Shopping Channel|euroshoppingchannel.png|Freyre|Diego |(91) 555 94 44|C/ Moralzarzal, 86|NULL|Madrid|NULL|28034|Spain|1370|227600 -144|Volvo Model Replicas, Co|volvomodelreplicas.png|Berglund|Christina |0921-12 3555|Berguvsvegen 8|NULL|Lulee|NULL|S-958 22|Sweden|1504|53100 -145|Danish Wholesale Imports|danishwholesaleimports.png|Petersen|Jytte |31 12 3555|Vinbeltet 34|NULL|Kobenhavn|NULL|1734|Denmark|1401|83400 -146|Saveley & Henriot, Co.|saveleyhenriot.png|Saveley|Mary |78.32.5555|2, rue du Commerce|NULL|Lyon|NULL|69004|France|1337|123900 -148|Dragon Coinage, Ltd.|dragoncoinage.png|Natividad|Eric|+65 221 7555|Bronz Sok.|Bronz Apt. 3/6 Tesvikiye|Singapore|NULL|79903|Singapore|1621|103800 -151|Muscle Coins Inc|musclecoinsinc.png|Young|Jeff|2125557413|4092 Furth Circle|Suite 400|NYC|NY|10022|USA|1286|138500 -157|Premium Classics Inc.|premiumclassicsinc.png|Leong|Kelvin|2155551555|7586 Pompton St.|NULL|Allentown|PA|70267|USA|1216|100600 -161|Technics Stores Inc.|technicsstoresinc.png|HashiCoin|Juri|6505556809|9408 Furth Circle|NULL|Burlingame|CA|94217|USA|1165|84600 -166|Handji Gold & Co|handjigoldco.png|Victorino|Wendy|+65 224 1555|106 Linden Road Sandown|2nd Floor|Singapore|NULL|69045|Singapore|1612|97900 -167|Herkku Gold|herkkugold.png|Oeztan|Veysel|+47 2267 3215|Brehmen St. 121|PR 334 Sentrum|Bergen|NULL|N 5804|Norway |1504|96800 -168|American Bank Inc|americanbankinc.png|Franco|Keith|2035557845|149 Spinnaker Dr.|Suite 101|New Haven|CT|97823|USA|1286|0 -169|Porto Imports Co.|portoimportsco.png|de Castro|Isabel |(1) 356-5555|Estrada da saede n. 58|NULL|Lisboa|NULL|1756|Portugal|NULL|0 -171|Daedalus Designs Imports|daedalusdesignsimports.png|Rance|Martine |20.16.1555|184, chaussee de Tournai|NULL|Lille|NULL|59000|France|1370|82900 -172|La Corne D'abondance, Co.|lacornedabondance.png|Bertrand|Marie|(1) 42.34.2555|265, boulevard Charonne|NULL|Paris|NULL|75012|France|1337|84300 -173|Cambridge Collectables Co.|cambridgecollectablesco.png|Tseng|Jerry|6175555555|4658 Baden Av.|NULL|Cambridge|MA|51247|USA|1188|43400 -175|Gold Depot Inc.|golddepotinc.png|King|Julie|2035552570|25593 South Bay Ln.|NULL|Bridgewater|CT|97562|USA|1323|84300 -177|Osaka Coinage Co.|osakacoinageco.png|Kentary|Mory|+81 06 6342 5555|1-6-20 Dojima|NULL|Kita-ku|Osaka| 530-0003|Japan|1621|81200 -181|Vitachrome Inc.|vitachromeinc.png|Frick|Michael|2125551500|2678 Kingston Rd.|Suite 101|NYC|NY|10022|USA|1286|76400 -186|Coins of Finland, Co.|coinsoffinland.png|Karttunen|Matti|90-224 8555|Keskuskatu 45|NULL|Helsinki|NULL|21240|Finland|1501|96500 -187|AV Stores, Co.|avstores.png|Ashworth|Rachel|(171) 555-1555|Fauntleroy Circus|NULL|Manchester|NULL|EC2 5NT|UK|1501|136800 -189|Clover Collections, Co.|clovercollections.png|Cassidy|Dean|+353 1862 1555|25 Maiden Lane|Floor No. 4|Dublin|NULL|2|Ireland|1504|69400 -198|Metals-Coin Classics Inc.|metalscoinclassicsinc.png|Taylor|Leslie|6175558428|16780 Pompton St.|NULL|Brickhaven|MA|58339|USA|1216|23000 -201|UK Collectables, Ltd.|ukcollectables.png|Devon|Elizabeth|(171) 555-2282|12, Berkeley Gardens Blvd|NULL|Liverpool|NULL|WX1 6LT|UK|1501|92700 -202|Canadian Gold Exchange Network|canadiangoldexchangenetwork.png|Tamuri|Yoshi |(604) 555-3392|1900 Oak St.|NULL|Vancouver|BC|V3F 2K1|Canada|1323|90300 -204|Online Precious Collectables|onlinepreciouscollectables.png|Barajas|Miguel|6175557555|7635 Spinnaker Dr.|NULL|Brickhaven|MA|58339|USA|1188|68700 -205|Coins4GrownUps.com|coins4grownupscom.png|Young|Julie|6265557265|78934 Hillside Dr.|NULL|Pasadena|CA|90003|USA|1166|90700 -206|Asian Shopping Network, Co|asianshoppingnetwork.png|Walker|Brydey|+612 9411 1555|Suntec Tower Three|8 Temasek|Singapore|NULL|38988|Singapore|NULL|0 -209|Precious Caravy|preciouscaravy.png|Citeaux|Frederique |88.60.1555|24, place Kleber|NULL|Strasbourg|NULL|67000|France|1370|53800 -211|King Kong Collectables, Co.|kingkongcollectables.png|Gao|Mike|+852 2251 1555|Bank of China Tower|1 Garden Road|Central Hong Kong|NULL|NULL|Hong Kong|1621|58600 -216|Enaco Distributors|enacodistributors.png|Saavedra|Eduardo |(93) 203 4555|Rambla de Cataluea, 23|NULL|Barcelona|NULL|8022|Spain|1702|60300 -219|Boards & Coins Co.|boardscoinsco.png|Young|Mary|3105552373|4097 Douglas Av.|NULL|Glendale|CA|92561|USA|1166|11000 -223|Naterlich Metals|natrlichmetals.png|Kloss|Horst |0372-555188|Taucherstraee 10|NULL|Cunewalde|NULL|1307|Germany|NULL|0 -227|Heintze Collectables|heintzecollectables.png|Ibsen|Palle|86 21 3555|Smagsloget 45|NULL|erhus|NULL|8200|Denmark|1401|120800 -233|Quebec Home Shopping Network|qubechomeshoppingnetwork.png|Fresniere|Jean |(514) 555-8054|43 rue St. Laurent|NULL|Montreal|Quebec|H1J 1C3|Canada|1286|48700 -237|ANG Resellers|angresellers.png|Camino|Alejandra |(91) 745 6555|Gran Vea, 1|NULL|Madrid|NULL|28001|Spain|NULL|0 -239|Collectable Precious Designs Co.|collectablepreciousdesignsco.png|Thompson|Valarie|7605558146|361 Furth Circle|NULL|San Diego|CA|91217|USA|1166|105000 -240|Goldbymail.co.uk|goldbymailcouk.png|Bennett|Helen |(198) 555-8888|Garden House|Crowther Way 23|Cowes|Isle of Wight|PO31 7PJ|UK|1501|93900 -242|Alpha Cognac|alphacognac.png|Roulet|Annette |61.77.6555|1 rue Alsace-Lorraine|NULL|Toulouse|NULL|31000|France|1370|61100 -247|Messner Shopping Network|messnershoppingnetwork.png|Messner|Renate |069-0555984|Magazinweg 7|NULL|Frankfurt|NULL|60528|Germany|NULL|0 -249|Amica Coins & Co.|amicacoinsco.png|Accorti|Paolo |011-4988555|Via Monte Bianco 34|NULL|Torino|NULL|10100|Italy|1401|113000 -250|Lyon Coinage|lyoncoinage.png|Da Silva|Daniel|+33 1 46 62 7555|27 rue du Colonel Pierre Avia|NULL|Paris|NULL|75508|France|1337|68100 -256|Metals Associes & Cie.|metalsassociscie.png|Tonini|Daniel |30.59.8555|67, avenue de l'Europe|NULL|Versailles|NULL|78000|France|1370|77900 -259|Toms Spezialiteten, Ltd|tomsspezialitten.png|Pfalzheim|Henriette |0221-5554327|Mehrheimerstr. 369|NULL|Keln|NULL|50739|Germany|1504|120400 -260|Royal Canadian Collectables, Ltd.|royalcanadiancollectables.png|Lincoln|Elizabeth |(604) 555-4555|23 Tsawassen Blvd.|NULL|Tsawassen|BC|T2F 8M4|Canada|1323|89600 -273|Franken Gold, Co|frankengold.png|Franken|Peter |089-0877555|Berliner Platz 43|NULL|Menchen|NULL|80805|Germany|NULL|0 -276|Anna's Decorations, Ltd|annasdecorations.png|O'Hara|Anna|02 9936 8555|201 Miller Street|Level 15|North Sydney|NSW|2060|Australia|1611|107800 -278|Rovelli Gold|rovelligold.png|Rovelli|Giovanni |035-640555|Via Ludovico il Moro 22|NULL|Bergamo|NULL|24100|Italy|1401|119600 -282|Coinage And Things Co.|coinageandthingsco.png|Huxley|Adrian|+61 2 9495 8555|Monitor Money Building|815 Pacific Hwy|Chatswood|NSW|2067|Australia|1611|93300 -286|Marta's Replicas Co.|martasreplicasco.png|Hernandez|Marta|6175558555|39323 Spinnaker Dr.|NULL|Cambridge|MA|51247|USA|1216|123700 -293|BG&E Collectables|bgecollectables.png|Harrison|Ed|+41 26 425 50 01|Rte des Arsenaux 41 |NULL|Fribourg|NULL|1700|Switzerland|NULL|0 -298|Vida Sport, Ltd|vidasport.png|Holz|Mihael|0897-034555|Grenzacherweg 237|NULL|Geneve|NULL|1203|Switzerland|1702|141300 -299|Norway Gold By Mail, Co.|norwaygoldbymail.png|Klaeboe|Jan|+47 2212 1555|Drammensveien 126A|PB 211 Sentrum|Oslo|NULL|N 0106|Norway |1504|95100 -303|Schuyler Imports|schuylerimports.png|Schuyler|Bradley|+31 20 491 9555|Kingsfordweg 151|NULL|Amsterdam|NULL|1043 GR|Netherlands|NULL|0 -307|Der Hund Imports|derhundimports.png|Andersen|Mel|030-0074555|Obere Str. 57|NULL|Berlin|NULL|12209|Germany|NULL|0 -311|Oulu Toy Supplies, Inc.|oulutoysupplies.png|Koskitalo|Pirkko|981-443655|Torikatu 38|NULL|Oulu|NULL|90110|Finland|1501|90500 -314|Petit Metals|petitmetals.png|Dewey|Catherine |(02) 5554 67|Rue Joseph-Bens 532|NULL|Bruxelles|NULL|B-1180|Belgium|1401|79900 -319|Precious Classics|preciousclassics.png|Frick|Steve|9145554562|3758 North Pendale Street|NULL|White Plains|NY|24067|USA|1323|102700 -320|Precious Creations Ltd.|preciouscreationsltd.png|Huang|Wing|5085559555|4575 Hillside Dr.|NULL|New Bedford|MA|50553|USA|1188|94500 -321|Corporate Gold Ideas Co.|corporategoldideasco.png|Brown|Julie|6505551386|7734 Strong St.|NULL|San Francisco|CA|94217|USA|1165|105000 -323|Down Under Coinage, Inc|downundercoinage.png|Graham|Mike|+64 9 312 5555|162-164 Grafton Road|Level 2|Auckland |NULL|NULL|New Zealand|1612|88000 -324|Stylish Desk Decors, Co.|stylishdeskdecors.png|Brown|Ann |(171) 555-0297|35 King George|NULL|London|NULL|WX3 6FW|UK|1501|77000 -328|Tekni Collectables Inc.|teknicollectablesinc.png|Brown|William|2015559350|7476 Moss Rd.|NULL|Newark|NJ|94019|USA|1323|43000 -333|Australian Gold Network, Co|australiangoldnetwork.png|Calaghan|Ben|61-7-3844-6555|31 Duncan St. West End|NULL|South Brisbane|Queensland|4101|Australia|1611|51600 -334|Suominen Coinage|suominencoinage.png|Suominen|Kalle|+358 9 8045 555|Software Engineering Center|SEC Oy|Espoo|NULL|FIN-02271|Finland|1501|98800 -335|Cramer Spezialiteten, Ltd|cramerspezialitten.png|Cramer|Philip |0555-09555|Maubelstr. 90|NULL|Brandenburg|NULL|14776|Germany|NULL|0 -339|Classic Gold Ideas, Inc|classicgoldideas.png|Cervantes|Francisca|2155554695|782 First Street|NULL|Philadelphia|PA|71270|USA|1188|81100 -344|CAF Imports|cafimports.png|Fernandez|Jesus|+34 913 728 555|Merchants House|27-30 Merchant's Quay|Madrid|NULL|28023|Spain|1702|59600 -347|Men 'R' US Retailers, Ltd.|menrusretailers.png|Chandler|Brian|2155554369|6047 Douglas Av.|NULL|Los Angeles|CA|91003|USA|1166|57700 -348|Asian Treasures, Inc.|asiantreasures.png|McKenna|Patricia |2967 555|8 Johnstown Road|NULL|Cork|Co. Cork|NULL|Ireland|NULL|0 -350|Marseille Precious Metals|marseillepreciousmetals.png|Lebihan|Laurence |91.24.4555|12, rue des Bouchers|NULL|Marseille|NULL|13008|France|1337|65000 -353|Reims Collectables|reimscollectables.png|Henriot|Paul |26.47.1555|59 rue de l'Abbaye|NULL|Reims|NULL|51100|France|1337|81100 -356|SAR Distributors, Co|sardistributors.png|Kuger|Armand|+27 21 550 3555|1250 Pretorius Street|NULL|Hatfield|Pretoria|28|South Africa|NULL|0 -357|GoldForHim.com|goldforhimcom.png|MacKinlay|Wales|64-9-3763555|199 Great North Road|NULL|Auckland|NULL|NULL|New Zealand|1612|77700 -361|Kommission Metals|kommissionmetals.png|Josephs|Karin|0251-555259|Luisenstr. 48|NULL|Menster|NULL|44087|Germany|NULL|0 -362|Gold4AllAges.com|gold4allagescom.png|Yoshido|Juri|6175559555|8616 Spinnaker Dr.|NULL|Boston|MA|51003|USA|1216|41900 -363|Online Premium Creations Co.|onlinepremiumcreationsco.png|Young|Dorothy|6035558647|2304 Long Airport Avenue|NULL|Nashua|NH|62005|USA|1216|114200 -369|Lisboa Coinage, I1nc|lisboacoinage.png|Rodriguez|Lino |(1) 354-2555|Jardim das rosas n. 32|NULL|Lisboa|NULL|1675|Portugal|NULL|0 -376|Precious Collectables|preciouscollectables.png|Urs|Braun|0452-076555|Hauptstr. 29|NULL|Bern|NULL|3012|Switzerland|1702|0 -379|Collectables For Less Inc.|collectablesforlessinc.png|Nelson|Allen|6175558555|7825 Douglas Av.|NULL|Brickhaven|MA|58339|USA|1188|70700 -381|Royale Belge|royalebelge.png|Cartrain|PaSilver |(071) 23 67 2555|Boulevard Tirou, 255|NULL|Charleroi|NULL|B-6000|Belgium|1401|23500 -382|Salzburg Collectables|salzburgcollectables.png|Pipps|Georg |6562-9555|Geislweg 14|NULL|Salzburg|NULL|5020|Austria|1401|71700 -385|Cruz & Sons Co.|cruzsonsco.png|Cruz|Arnold|+63 2 555 3587|15 McCallum Street|NatWest Center #13-03|Makati City|NULL|1227 MM|Philippines|1621|81500 -386|L'ordine Coinage|lordinecoinage.png|Moroni|Maurizio |0522-556555|Strada Provinciale 124|NULL|Reggio Emilia|NULL|42100|Italy|1401|121400 -398|Tokyo Collectables, Ltd|tokyocollectables.png|Shimamura|Akiko|+81 3 3584 0555|2-2-8 Roppongi|NULL|Minato-ku|Tokyo|106-0032|Japan|1621|94400 -406|Metals Canal+ Petit|metalscanalpetit.png|Perrier|DoPreciousque|(1) 47.55.6555|25, rue Lauriston|NULL|Paris|NULL|75016|France|1337|95000 -409|Stuttgart Collectable Exchange|stuttgartcollectableexchange.png|Meller|Rita |0711-555361|Adenauerallee 900|NULL|Stuttgart|NULL|70563|Germany|NULL|0 -412|Extreme Desk Decorations, Ltd|extremedeskdecorations.png|McRoy|Sarah|04 499 9555|101 Lambton Quay|Level 11|Wellington|NULL|NULL|New Zealand|1612|86800 -415|Bavarian Collectables Imports, Co.|bavariancollectablesimports.png|Donnermeyer|Michael| +49 89 61 08 9555|Hansastr. 15|NULL|Munich|NULL|80686|Germany|1504|77000 -424|Classic Legends Inc.|classiclegendsinc.png|Hernandez|Maria|2125558493|5905 Pompton St.|Suite 750|NYC|NY|10022|USA|1286|67500 -443|Feuer Online Stores, Inc|feueronlinestores.png|Feuer|Alexander |0342-555176|Heerstr. 22|NULL|Leipzig|NULL|4179|Germany|NULL|0 -447|Gold Ideas Corp.|goldideascorp.png|Lewis|Dan|2035554407|2440 Pompton St.|NULL|Glendale|CT|97561|USA|1323|49700 -448|Scandinavian Gold Ideas|scandinaviangoldideas.png|Larsson|Martha|0695-34 6555|ekergatan 24|NULL|Brecke|NULL|S-844 67|Sweden|1504|116400 -450|The Sharp Gold Warehouse|thesharpgoldwarehouse.png|Frick|Sue|4085553659|3086 Ingle Ln.|NULL|San Jose|CA|94217|USA|1165|77600 -452|Precious Metals Werke|preciousmetalswerke.png|Mendel|Roland |7675-3555|Kirchgasse 6|NULL|Graz|NULL|8010|Austria|1401|45300 -455|Super Silver Inc.|supersilverinc.png|Murphy|Leslie|2035559545|567 North Pendale Street|NULL|New Haven|CT|97823|USA|1286|95400 -456|MicroSilver Inc.|microsilverinc.png|Choi|Yu|2125551957|5290 North Pendale Street|Suite 200|NYC|NY|10022|USA|1286|39800 -458|Corrida Metals Replicas, Ltd|corridametalsreplicas.png|Sommer|Marten |(91) 555 22 82|C/ Araquil, 67|NULL|Madrid|NULL|28023|Spain|1702|104600 -459|Warburg Exchange|warburgexchange.png|Ottlieb|Sven |0241-039123|Walserweg 21|NULL|Aachen|NULL|52066|Germany|NULL|0 -462|FunGoldIdeas.com|fungoldideascom.png|Benitez|Violeta|5085552555|1785 First Street|NULL|New Bedford|MA|50553|USA|1216|85800 -465|Anton Designs, Ltd.|antondesigns.png|Anton|Carmen|+34 913 728555|c/ Gobelas, 19-1 Urb. La Florida|NULL|Madrid|NULL|28023|Spain|NULL|0 -471|Australian Collectables, Ltd|australiancollectables.png|Clenahan|Sean|61-9-3844-6555|7 Allen Street|NULL|Glen Waverly|Victoria|3150|Australia|1611|60300 -473|Frau da Collezione|fraudacollezione.png|Ricotti|Franco|+39 022515555|20093 Cologno Monzese|Alessandro Volta 16|Milan|NULL|NULL|Italy|1401|34800 -475|West Coast Collectables Co.|westcoastcollectablesco.png|Thompson|Steve|3105553722|3675 Furth Circle|NULL|Burbank|CA|94019|USA|1166|55400 -477|Mit Vergnegen & Co.|mitvergngenco.png|Moos|Hanna |0621-08555|Forsterstr. 57|NULL|Mannheim|NULL|68306|Germany|NULL|0 -480|Kremlin Collectables, Co.|kremlincollectables.png|Semenov|Alexander |+7 812 293 0521|2 Pobedy Square|NULL|Saint Petersburg|NULL|196143|Russia|NULL|0 -481|Raanan Stores, Inc|raananstores.png|Altagar,G M|Raanan|+ 972 9 959 8555|3 Hagalim Blv.|NULL|Herzlia|NULL|47625|Israel|NULL|0 -484|Iberia Gold Imports, Corp.|iberiagoldimports.png|Roel|Jose Pedro |(95) 555 82 82|C/ Romero, 33|NULL|Sevilla|NULL|41101|Spain|1702|65700 -486|Coinr Mint Distributors Inc.|coinrmintdistributorsinc.png|Salazar|Rosa|2155559857|11328 Douglas Av.|NULL|Philadelphia|PA|71270|USA|1323|72600 -487|Signal Collectibles Ltd.|signalcollectiblesltd.png|Taylor|Sue|4155554312|2793 Furth Circle|NULL|Brisbane|CA|94217|USA|1165|60300 -489|Double Decker Gold Stores, Ltd|doubledeckergoldstores.png|Smith|Thomas |(171) 555-7555|120 Hanover Sq.|NULL|London|NULL|WA1 1DP|UK|1501|43300 -495|Premium Collectables|premiumcollectables.png|Franco|Valarie|6175552555|6251 Ingle Ln.|NULL|Boston|MA|51003|USA|1188|85100 -496|Kelly's Gold Shop|kellysgoldshop.png|Snowden|Tony|+64 9 5555500|Arenales 1938 3'A'|NULL|Auckland |NULL|NULL|New Zealand|1612|110000 diff --git a/WebGoat/DB_Scripts/datafiles/employees.txt b/WebGoat/DB_Scripts/datafiles/employees.txt deleted file mode 100644 index fc4fb8e59..000000000 --- a/WebGoat/DB_Scripts/datafiles/employees.txt +++ /dev/null @@ -1,23 +0,0 @@ -1002|Murphy|Diane|x5800|dmurphy@webgoatcoins.com|1|NULL|President -1056|Patterson|Mary|x4611|mpatterso@webgoatcoins.com|1|1002|VP Sales -1076|Firrelli|Jeff|x9273|jfirrelli@webgoatcoins.com|1|1002|VP Marketing -1088|Patterson|William|x4871|wpatterson@webgoatcoins.com|6|1056|Sales Manager (APAC) -1102|Bondur|Gerard|x5408|gbondur@webgoatcoins.com|4|1056|Sale Manager (EMEA) -1143|Bow|Anthony|x5428|abow@webgoatcoins.com|1|1056|Sales Manager (NA) -1165|Jennings|Leslie|x3291|ljennings@webgoatcoins.com|1|1143|Sales Rep -1166|Thompson|Leslie|x4065|lthompson@webgoatcoins.com|1|1143|Sales Rep -1188|Firrelli|Julie|x2173|jfirrelli@webgoatcoins.com|2|1143|Sales Rep -1216|Patterson|Steve|x4334|spatterson@webgoatcoins.com|2|1143|Sales Rep -1286|Tseng|Foon Yue|x2248|ftseng@webgoatcoins.com|3|1143|Sales Rep -1323|Vanauf|George|x4102|gvanauf@webgoatcoins.com|3|1143|Sales Rep -1337|Bondur|Loui|x6493|lbondur@webgoatcoins.com|4|1102|Sales Rep -1370|Hernandez|Gerard|x2028|ghernande@webgoatcoins.com|4|1102|Sales Rep -1401|Castillo|Pamela|x2759|pcastillo@webgoatcoins.com|4|1102|Sales Rep -1501|Bott|Larry|x2311|lbott@webgoatcoins.com|7|1102|Sales Rep -1504|Jones|Barry|x102|bjones@webgoatcoins.com|7|1102|Sales Rep -1611|Fixter|Andy|x101|afixter@webgoatcoins.com|6|1088|Sales Rep -1612|Marsh|Peter|x102|pmarsh@webgoatcoins.com|6|1088|Sales Rep -1619|King|Tom|x103|tking@webgoatcoins.com|6|1088|Sales Rep -1621|Nishi|Mami|x101|mnishi@webgoatcoins.com|5|1056|Sales Rep -1625|Kato|Yoshimi|x102|ykato@webgoatcoins.com|5|1621|Sales Rep -1702|Gerard|Martin|x2312|mgerard@webgoatcoins.com|4|1102|Sales Rep diff --git a/WebGoat/DB_Scripts/datafiles/offices.txt b/WebGoat/DB_Scripts/datafiles/offices.txt deleted file mode 100644 index b2aa302bb..000000000 --- a/WebGoat/DB_Scripts/datafiles/offices.txt +++ /dev/null @@ -1,7 +0,0 @@ -1|San Francisco|+1 650 219 4782|100 Market Street|Suite 300|CA|USA|94080|NA -2|Boston|+1 215 837 0825|1550 Court Place|Suite 102|MA|USA|2107|NA -3|NYC|+1 212 555 3000|523 East 53rd Street|apt. 5A|NY|USA|10022|NA -4|Paris|+33 14 723 4404|43 Rue Jouffroy D'abbans|NULL|NULL|France|75017|EMEA -5|Tokyo|+81 33 224 5000|4-1 Kioicho|NULL|Chiyoda-Ku|Japan|102-8578|Japan -6|Sydney|+61 2 9264 2451|5-11 Wentworth Avenue|Floor #2|NULL|Australia|NSW 2010|APAC -7|London|+44 20 7877 2041|25 Old Broad Street|Level 7|NULL|UK|EC2N 1HN|EMEA diff --git a/WebGoat/DB_Scripts/datafiles/orderdetails.txt b/WebGoat/DB_Scripts/datafiles/orderdetails.txt deleted file mode 100644 index 77366756e..000000000 --- a/WebGoat/DB_Scripts/datafiles/orderdetails.txt +++ /dev/null @@ -1,2996 +0,0 @@ -10100|S18_1749|30|136|3 -10100|S18_2248|50|55.09|2 -10100|S18_4409|22|75.46|4 -10100|S24_3969|49|35.29|1 -10101|S18_2325|25|108.06|4 -10101|S18_2795|26|167.06|1 -10101|S24_1937|45|32.53|3 -10101|S24_2022|46|44.35|2 -10102|S18_1342|39|95.55|2 -10102|S18_1367|41|43.13|1 -10103|S10_1949|26|214.3|11 -10103|S10_4962|42|119.67|4 -10103|S12_1666|27|121.64|8 -10103|S18_1097|35|94.5|10 -10103|S18_2432|22|58.34|2 -10103|S18_2949|27|92.19|12 -10103|S18_2957|35|61.84|14 -10103|S18_3136|25|86.92|13 -10103|S18_3320|46|86.31|16 -10103|S18_4600|36|98.07|5 -10103|S18_4668|41|40.75|9 -10103|S24_2300|36|107.34|1 -10103|S24_4258|25|88.62|15 -10103|S32_1268|31|92.46|3 -10103|S32_3522|45|63.35|7 -10103|S700_2824|42|94.07|6 -10104|S12_3148|34|131.44|1 -10104|S12_4473|41|111.39|9 -10104|S18_2238|24|135.9|8 -10104|S18_2319|29|122.73|12 -10104|S18_3232|23|165.95|13 -10104|S18_4027|38|119.2|3 -10104|S24_1444|35|52.02|6 -10104|S24_2840|44|30.41|10 -10104|S24_4048|26|106.45|5 -10104|S32_2509|35|51.95|11 -10104|S32_3207|49|56.55|4 -10104|S50_1392|33|114.59|7 -10104|S50_1514|32|53.31|2 -10105|S10_4757|50|127.84|2 -10105|S12_1108|41|205.72|15 -10105|S12_3891|29|141.88|14 -10105|S18_3140|22|136.59|11 -10105|S18_3259|38|87.73|13 -10105|S18_4522|41|75.48|10 -10105|S24_2011|43|117.97|9 -10105|S24_3151|44|73.46|4 -10105|S24_3816|50|75.47|1 -10105|S700_1138|41|54|5 -10105|S700_1938|29|86.61|12 -10105|S700_2610|31|60.72|3 -10105|S700_3505|39|92.16|6 -10105|S700_3962|22|99.31|7 -10105|S72_3212|25|44.77|8 -10106|S18_1662|36|134.04|12 -10106|S18_2581|34|81.1|2 -10106|S18_3029|41|80.86|18 -10106|S18_3856|41|94.22|17 -10106|S24_1785|28|107.23|4 -10106|S24_2841|49|65.77|13 -10106|S24_3420|31|55.89|14 -10106|S24_3949|50|55.96|11 -10106|S24_4278|26|71|3 -10106|S32_4289|33|65.35|5 -10106|S50_1341|39|35.78|6 -10106|S700_1691|31|91.34|7 -10106|S700_2047|30|85.09|16 -10106|S700_2466|34|99.72|9 -10106|S700_2834|32|113.9|1 -10106|S700_3167|44|76|8 -10106|S700_4002|48|70.33|10 -10106|S72_1253|48|43.7|15 -10107|S10_1678|30|81.35|2 -10107|S10_2016|39|105.86|5 -10107|S10_4698|27|172.36|4 -10107|S12_2823|21|122|1 -10107|S18_2625|29|52.7|6 -10107|S24_1578|25|96.92|3 -10107|S24_2000|38|73.12|7 -10107|S32_1374|20|88.9|8 -10108|S12_1099|33|165.38|6 -10108|S12_3380|45|96.3|4 -10108|S12_3990|39|75.81|7 -10108|S12_4675|36|107.1|3 -10108|S18_1889|38|67.76|2 -10108|S18_3278|26|73.17|9 -10108|S18_3482|29|132.29|8 -10108|S18_3782|43|52.84|12 -10108|S18_4721|44|139.87|11 -10108|S24_2360|35|64.41|15 -10108|S24_3371|30|60.01|5 -10108|S24_3856|40|132|1 -10108|S24_4620|31|67.1|10 -10108|S32_2206|27|36.21|13 -10108|S32_4485|31|87.76|16 -10108|S50_4713|34|74.85|14 -10109|S18_1129|26|117.48|4 -10109|S18_1984|38|137.98|3 -10109|S18_2870|26|126.72|1 -10109|S18_3232|46|160.87|5 -10109|S18_3685|47|125.74|2 -10109|S24_2972|29|32.1|6 -10110|S18_1589|37|118.22|16 -10110|S18_1749|42|153|7 -10110|S18_2248|32|51.46|6 -10110|S18_2325|33|115.69|4 -10110|S18_2795|31|163.69|1 -10110|S18_4409|28|81.91|8 -10110|S18_4933|42|62|9 -10110|S24_1046|36|72.02|13 -10110|S24_1628|29|43.27|15 -10110|S24_1937|20|28.88|3 -10110|S24_2022|39|40.77|2 -10110|S24_2766|43|82.69|11 -10110|S24_2887|46|112.74|10 -10110|S24_3191|27|80.47|12 -10110|S24_3432|37|96.37|14 -10110|S24_3969|48|35.29|5 -10111|S18_1342|33|87.33|6 -10111|S18_1367|48|48.52|5 -10111|S18_2957|28|53.09|2 -10111|S18_3136|43|94.25|1 -10111|S18_3320|39|91.27|4 -10111|S24_4258|26|85.7|3 -10112|S10_1949|29|197.16|1 -10112|S18_2949|23|85.1|2 -10113|S12_1666|21|121.64|2 -10113|S18_1097|49|101.5|4 -10113|S18_4668|50|43.27|3 -10113|S32_3522|23|58.82|1 -10114|S10_4962|31|128.53|8 -10114|S18_2319|39|106.78|3 -10114|S18_2432|45|53.48|6 -10114|S18_3232|48|169.34|4 -10114|S18_4600|41|105.34|9 -10114|S24_2300|21|102.23|5 -10114|S24_2840|24|28.64|1 -10114|S32_1268|32|88.61|7 -10114|S32_2509|28|43.83|2 -10114|S700_2824|42|82.94|10 -10115|S12_4473|46|111.39|5 -10115|S18_2238|46|140.81|4 -10115|S24_1444|47|56.64|2 -10115|S24_4048|44|106.45|1 -10115|S50_1392|27|100.7|3 -10116|S32_3207|27|60.28|1 -10117|S12_1108|33|195.33|9 -10117|S12_3148|43|148.06|10 -10117|S12_3891|39|173.02|8 -10117|S18_3140|26|121.57|5 -10117|S18_3259|21|81.68|7 -10117|S18_4027|22|122.08|12 -10117|S18_4522|23|73.73|4 -10117|S24_2011|41|119.2|3 -10117|S50_1514|21|55.65|11 -10117|S700_1938|38|75.35|6 -10117|S700_3962|45|89.38|1 -10117|S72_3212|50|52.42|2 -10118|S700_3505|36|86.15|1 -10119|S10_4757|46|112.88|11 -10119|S18_1662|43|151.38|3 -10119|S18_3029|21|74.84|9 -10119|S18_3856|27|95.28|8 -10119|S24_2841|41|64.4|4 -10119|S24_3151|35|72.58|13 -10119|S24_3420|20|63.12|5 -10119|S24_3816|35|82.18|10 -10119|S24_3949|28|62.1|2 -10119|S700_1138|25|57.34|14 -10119|S700_2047|29|74.23|7 -10119|S700_2610|38|67.22|12 -10119|S700_4002|26|63.67|1 -10119|S72_1253|28|40.22|6 -10120|S10_2016|29|118.94|3 -10120|S10_4698|46|158.8|2 -10120|S18_2581|29|82.79|8 -10120|S18_2625|46|57.54|4 -10120|S24_1578|35|110.45|1 -10120|S24_1785|39|93.01|10 -10120|S24_2000|34|72.36|5 -10120|S24_4278|29|71.73|9 -10120|S32_1374|22|94.9|6 -10120|S32_4289|29|68.79|11 -10120|S50_1341|49|41.46|12 -10120|S700_1691|47|91.34|13 -10120|S700_2466|24|81.77|15 -10120|S700_2834|24|106.79|7 -10120|S700_3167|43|72|14 -10121|S10_1678|34|86.13|5 -10121|S12_2823|50|126.52|4 -10121|S24_2360|32|58.18|2 -10121|S32_4485|25|95.93|3 -10121|S50_4713|44|72.41|1 -10122|S12_1099|42|155.66|10 -10122|S12_3380|37|113.92|8 -10122|S12_3990|32|65.44|11 -10122|S12_4675|20|104.8|7 -10122|S18_1129|34|114.65|2 -10122|S18_1889|43|62.37|6 -10122|S18_1984|31|113.8|1 -10122|S18_3232|25|137.17|3 -10122|S18_3278|21|69.15|13 -10122|S18_3482|21|133.76|12 -10122|S18_3782|35|59.06|16 -10122|S18_4721|28|145.82|15 -10122|S24_2972|39|34.74|4 -10122|S24_3371|34|50.82|9 -10122|S24_3856|43|136.22|5 -10122|S24_4620|29|67.1|14 -10122|S32_2206|31|33.79|17 -10123|S18_1589|26|120.71|2 -10123|S18_2870|46|114.84|3 -10123|S18_3685|34|117.26|4 -10123|S24_1628|50|43.27|1 -10124|S18_1749|21|153|6 -10124|S18_2248|42|58.12|5 -10124|S18_2325|42|111.87|3 -10124|S18_4409|36|75.46|7 -10124|S18_4933|23|66.28|8 -10124|S24_1046|22|62.47|12 -10124|S24_1937|45|30.53|2 -10124|S24_2022|22|36.29|1 -10124|S24_2766|32|74.51|10 -10124|S24_2887|25|93.95|9 -10124|S24_3191|49|76.19|11 -10124|S24_3432|43|101.73|13 -10124|S24_3969|46|36.11|4 -10125|S18_1342|32|89.38|1 -10125|S18_2795|34|138.38|2 -10126|S10_1949|38|205.73|11 -10126|S10_4962|22|122.62|4 -10126|S12_1666|21|135.3|8 -10126|S18_1097|38|116.67|10 -10126|S18_1367|42|51.21|17 -10126|S18_2432|43|51.05|2 -10126|S18_2949|31|93.21|12 -10126|S18_2957|46|61.84|14 -10126|S18_3136|30|93.2|13 -10126|S18_3320|38|94.25|16 -10126|S18_4600|50|102.92|5 -10126|S18_4668|43|47.29|9 -10126|S24_2300|27|122.68|1 -10126|S24_4258|34|83.76|15 -10126|S32_1268|43|82.83|3 -10126|S32_3522|26|62.05|7 -10126|S700_2824|45|97.1|6 -10127|S12_1108|46|193.25|2 -10127|S12_3148|46|140.5|3 -10127|S12_3891|42|169.56|1 -10127|S12_4473|24|100.73|11 -10127|S18_2238|45|140.81|10 -10127|S18_2319|45|114.14|14 -10127|S18_3232|22|149.02|15 -10127|S18_4027|25|126.39|5 -10127|S24_1444|20|50.86|8 -10127|S24_2840|39|34.3|12 -10127|S24_4048|20|107.63|7 -10127|S32_2509|45|46.53|13 -10127|S32_3207|29|60.9|6 -10127|S50_1392|46|111.12|9 -10127|S50_1514|46|55.65|4 -10128|S18_3140|41|120.2|2 -10128|S18_3259|41|80.67|4 -10128|S18_4522|43|77.24|1 -10128|S700_1938|32|72.75|3 -10129|S10_4757|33|123.76|2 -10129|S24_2011|45|113.06|9 -10129|S24_3151|41|81.43|4 -10129|S24_3816|50|76.31|1 -10129|S700_1138|31|58.67|5 -10129|S700_2610|45|72.28|3 -10129|S700_3505|42|90.15|6 -10129|S700_3962|30|94.34|7 -10129|S72_3212|32|44.23|8 -10130|S18_3029|40|68.82|2 -10130|S18_3856|33|99.52|1 -10131|S18_1662|21|141.92|4 -10131|S24_2841|35|60.97|5 -10131|S24_3420|29|52.6|6 -10131|S24_3949|50|54.59|3 -10131|S700_2047|22|76.94|8 -10131|S700_2466|40|86.76|1 -10131|S700_4002|26|63.67|2 -10131|S72_1253|21|40.22|7 -10132|S700_3167|36|80|1 -10133|S18_2581|49|80.26|3 -10133|S24_1785|41|109.42|5 -10133|S24_4278|46|61.58|4 -10133|S32_1374|23|80.91|1 -10133|S32_4289|49|67.41|6 -10133|S50_1341|27|37.09|7 -10133|S700_1691|24|76.73|8 -10133|S700_2834|27|115.09|2 -10134|S10_1678|41|90.92|2 -10134|S10_2016|27|116.56|5 -10134|S10_4698|31|187.85|4 -10134|S12_2823|20|131.04|1 -10134|S18_2625|30|51.48|6 -10134|S24_1578|35|94.67|3 -10134|S24_2000|43|75.41|7 -10135|S12_1099|42|173.17|7 -10135|S12_3380|48|110.39|5 -10135|S12_3990|24|72.62|8 -10135|S12_4675|29|103.64|4 -10135|S18_1889|48|66.99|3 -10135|S18_3278|45|65.94|10 -10135|S18_3482|42|139.64|9 -10135|S18_3782|45|49.74|13 -10135|S18_4721|31|133.92|12 -10135|S24_2360|29|67.18|16 -10135|S24_2972|20|34.36|1 -10135|S24_3371|27|52.05|6 -10135|S24_3856|47|139.03|2 -10135|S24_4620|23|76.8|11 -10135|S32_2206|33|38.62|14 -10135|S32_4485|30|91.85|17 -10135|S50_4713|44|78.92|15 -10136|S18_1129|25|117.48|2 -10136|S18_1984|36|120.91|1 -10136|S18_3232|41|169.34|3 -10137|S18_1589|44|115.73|2 -10137|S18_2870|37|110.88|3 -10137|S18_3685|31|118.68|4 -10137|S24_1628|26|40.25|1 -10138|S18_1749|33|149.6|6 -10138|S18_2248|22|51.46|5 -10138|S18_2325|38|114.42|3 -10138|S18_4409|47|79.15|7 -10138|S18_4933|23|64.86|8 -10138|S24_1046|45|59.53|12 -10138|S24_1937|22|33.19|2 -10138|S24_2022|33|38.53|1 -10138|S24_2766|28|73.6|10 -10138|S24_2887|30|96.3|9 -10138|S24_3191|49|77.05|11 -10138|S24_3432|21|99.58|13 -10138|S24_3969|29|32.82|4 -10139|S18_1342|31|89.38|7 -10139|S18_1367|49|52.83|6 -10139|S18_2795|41|151.88|8 -10139|S18_2949|46|91.18|1 -10139|S18_2957|20|52.47|3 -10139|S18_3136|20|101.58|2 -10139|S18_3320|30|81.35|5 -10139|S24_4258|29|93.49|4 -10140|S10_1949|37|186.44|11 -10140|S10_4962|26|131.49|4 -10140|S12_1666|38|118.9|8 -10140|S18_1097|32|95.67|10 -10140|S18_2432|46|51.05|2 -10140|S18_4600|40|100.5|5 -10140|S18_4668|29|40.25|9 -10140|S24_2300|47|118.84|1 -10140|S32_1268|26|87.64|3 -10140|S32_3522|28|62.05|7 -10140|S700_2824|36|101.15|6 -10141|S12_4473|21|114.95|5 -10141|S18_2238|39|160.46|4 -10141|S18_2319|47|103.09|8 -10141|S18_3232|34|143.94|9 -10141|S24_1444|20|50.86|2 -10141|S24_2840|21|32.18|6 -10141|S24_4048|40|104.09|1 -10141|S32_2509|24|53.03|7 -10141|S50_1392|44|94.92|3 -10142|S12_1108|33|166.24|12 -10142|S12_3148|33|140.5|13 -10142|S12_3891|46|167.83|11 -10142|S18_3140|47|129.76|8 -10142|S18_3259|22|95.8|10 -10142|S18_4027|24|122.08|15 -10142|S18_4522|24|79.87|7 -10142|S24_2011|33|114.29|6 -10142|S24_3151|49|74.35|1 -10142|S32_3207|42|60.9|16 -10142|S50_1514|42|56.24|14 -10142|S700_1138|41|55.34|2 -10142|S700_1938|43|77.08|9 -10142|S700_3505|21|92.16|3 -10142|S700_3962|38|91.37|4 -10142|S72_3212|39|46.96|5 -10143|S10_4757|49|133.28|15 -10143|S18_1662|32|126.15|7 -10143|S18_3029|46|70.54|13 -10143|S18_3856|34|99.52|12 -10143|S24_2841|27|63.71|8 -10143|S24_3420|33|59.83|9 -10143|S24_3816|23|74.64|14 -10143|S24_3949|28|55.96|6 -10143|S50_1341|34|34.91|1 -10143|S700_1691|36|86.77|2 -10143|S700_2047|26|87.8|11 -10143|S700_2466|26|79.78|4 -10143|S700_2610|31|69.39|16 -10143|S700_3167|28|70.4|3 -10143|S700_4002|34|65.15|5 -10143|S72_1253|37|49.66|10 -10144|S32_4289|20|56.41|1 -10145|S10_1678|45|76.56|6 -10145|S10_2016|37|104.67|9 -10145|S10_4698|33|154.93|8 -10145|S12_2823|49|146.1|5 -10145|S18_2581|30|71.81|14 -10145|S18_2625|30|52.7|10 -10145|S24_1578|43|103.68|7 -10145|S24_1785|40|87.54|16 -10145|S24_2000|47|63.98|11 -10145|S24_2360|27|56.1|3 -10145|S24_4278|33|71.73|15 -10145|S32_1374|33|99.89|12 -10145|S32_2206|31|39.43|1 -10145|S32_4485|27|95.93|4 -10145|S50_4713|38|73.22|2 -10145|S700_2834|20|113.9|13 -10146|S18_3782|47|60.3|2 -10146|S18_4721|29|130.94|1 -10147|S12_1099|48|161.49|7 -10147|S12_3380|31|110.39|5 -10147|S12_3990|21|74.21|8 -10147|S12_4675|33|97.89|4 -10147|S18_1889|26|70.84|3 -10147|S18_3278|36|74.78|10 -10147|S18_3482|37|129.35|9 -10147|S24_2972|25|33.23|1 -10147|S24_3371|30|48.98|6 -10147|S24_3856|23|123.58|2 -10147|S24_4620|31|72.76|11 -10148|S18_1129|23|114.65|13 -10148|S18_1589|47|108.26|9 -10148|S18_1984|25|136.56|12 -10148|S18_2870|27|113.52|10 -10148|S18_3232|32|143.94|14 -10148|S18_3685|28|135.63|11 -10148|S18_4409|34|83.75|1 -10148|S18_4933|29|66.28|2 -10148|S24_1046|25|65.41|6 -10148|S24_1628|47|46.29|8 -10148|S24_2766|21|77.24|4 -10148|S24_2887|34|115.09|3 -10148|S24_3191|31|71.91|5 -10148|S24_3432|27|96.37|7 -10149|S18_1342|50|87.33|4 -10149|S18_1367|30|48.52|3 -10149|S18_1749|34|156.4|11 -10149|S18_2248|24|50.85|10 -10149|S18_2325|33|125.86|8 -10149|S18_2795|23|167.06|5 -10149|S18_3320|42|89.29|2 -10149|S24_1937|36|31.2|7 -10149|S24_2022|49|39.87|6 -10149|S24_3969|26|38.57|9 -10149|S24_4258|20|90.57|1 -10150|S10_1949|45|182.16|8 -10150|S10_4962|20|121.15|1 -10150|S12_1666|30|135.3|5 -10150|S18_1097|34|95.67|7 -10150|S18_2949|47|93.21|9 -10150|S18_2957|30|56.21|11 -10150|S18_3136|26|97.39|10 -10150|S18_4600|49|111.39|2 -10150|S18_4668|30|47.29|6 -10150|S32_3522|49|62.05|4 -10150|S700_2824|20|95.08|3 -10151|S12_4473|24|114.95|3 -10151|S18_2238|43|152.27|2 -10151|S18_2319|49|106.78|6 -10151|S18_2432|39|58.34|9 -10151|S18_3232|21|167.65|7 -10151|S24_2300|42|109.9|8 -10151|S24_2840|30|29.35|4 -10151|S32_1268|27|84.75|10 -10151|S32_2509|41|43.29|5 -10151|S50_1392|26|108.81|1 -10152|S18_4027|35|117.77|1 -10152|S24_1444|25|49.13|4 -10152|S24_4048|23|112.37|3 -10152|S32_3207|33|57.17|2 -10153|S12_1108|20|201.57|11 -10153|S12_3148|42|128.42|12 -10153|S12_3891|49|155.72|10 -10153|S18_3140|31|125.66|7 -10153|S18_3259|29|82.69|9 -10153|S18_4522|22|82.5|6 -10153|S24_2011|40|111.83|5 -10153|S50_1514|31|53.31|13 -10153|S700_1138|43|58|1 -10153|S700_1938|31|80.55|8 -10153|S700_3505|50|87.15|2 -10153|S700_3962|20|85.41|3 -10153|S72_3212|50|51.87|4 -10154|S24_3151|31|75.23|2 -10154|S700_2610|36|59.27|1 -10155|S10_4757|32|129.2|13 -10155|S18_1662|38|138.77|5 -10155|S18_3029|44|83.44|11 -10155|S18_3856|29|105.87|10 -10155|S24_2841|23|62.34|6 -10155|S24_3420|34|56.55|7 -10155|S24_3816|37|76.31|12 -10155|S24_3949|44|58.69|4 -10155|S700_2047|32|89.61|9 -10155|S700_2466|20|87.75|2 -10155|S700_3167|43|76.8|1 -10155|S700_4002|44|70.33|3 -10155|S72_1253|34|49.16|8 -10156|S50_1341|20|43.64|1 -10156|S700_1691|48|77.64|2 -10157|S18_2581|33|69.27|3 -10157|S24_1785|40|89.72|5 -10157|S24_4278|33|66.65|4 -10157|S32_1374|34|83.91|1 -10157|S32_4289|28|56.41|6 -10157|S700_2834|48|109.16|2 -10158|S24_2000|22|67.79|1 -10159|S10_1678|49|81.35|14 -10159|S10_2016|37|101.1|17 -10159|S10_4698|22|170.42|16 -10159|S12_1099|41|188.73|2 -10159|S12_2823|38|131.04|13 -10159|S12_3990|24|67.03|3 -10159|S18_2625|42|51.48|18 -10159|S18_3278|21|66.74|5 -10159|S18_3482|25|129.35|4 -10159|S18_3782|21|54.71|8 -10159|S18_4721|32|142.85|7 -10159|S24_1578|44|100.3|15 -10159|S24_2360|27|67.18|11 -10159|S24_3371|50|49.6|1 -10159|S24_4620|23|80.84|6 -10159|S32_2206|35|39.43|9 -10159|S32_4485|23|86.74|12 -10159|S50_4713|31|78.11|10 -10160|S12_3380|46|96.3|6 -10160|S12_4675|50|93.28|5 -10160|S18_1889|38|70.84|4 -10160|S18_3232|20|140.55|1 -10160|S24_2972|42|30.59|2 -10160|S24_3856|35|130.6|3 -10161|S18_1129|28|121.72|12 -10161|S18_1589|43|102.04|8 -10161|S18_1984|48|139.41|11 -10161|S18_2870|23|125.4|9 -10161|S18_3685|36|132.8|10 -10161|S18_4933|25|62.72|1 -10161|S24_1046|37|73.49|5 -10161|S24_1628|23|47.29|7 -10161|S24_2766|20|82.69|3 -10161|S24_2887|25|108.04|2 -10161|S24_3191|20|72.77|4 -10161|S24_3432|30|94.23|6 -10162|S18_1342|48|87.33|2 -10162|S18_1367|45|45.28|1 -10162|S18_1749|29|141.1|9 -10162|S18_2248|27|53.28|8 -10162|S18_2325|38|113.15|6 -10162|S18_2795|48|156.94|3 -10162|S18_4409|39|86.51|10 -10162|S24_1937|37|27.55|5 -10162|S24_2022|43|38.98|4 -10162|S24_3969|37|32.82|7 -10163|S10_1949|21|212.16|1 -10163|S18_2949|31|101.31|2 -10163|S18_2957|48|59.96|4 -10163|S18_3136|40|101.58|3 -10163|S18_3320|43|80.36|6 -10163|S24_4258|42|96.42|5 -10164|S10_4962|21|143.31|2 -10164|S12_1666|49|121.64|6 -10164|S18_1097|36|103.84|8 -10164|S18_4600|45|107.76|3 -10164|S18_4668|25|46.29|7 -10164|S32_1268|24|91.49|1 -10164|S32_3522|49|57.53|5 -10164|S700_2824|39|86.99|4 -10165|S12_1108|44|168.32|3 -10165|S12_3148|34|123.89|4 -10165|S12_3891|27|152.26|2 -10165|S12_4473|48|109.02|12 -10165|S18_2238|29|134.26|11 -10165|S18_2319|46|120.28|15 -10165|S18_2432|31|60.77|18 -10165|S18_3232|47|154.1|16 -10165|S18_3259|50|84.71|1 -10165|S18_4027|28|123.51|6 -10165|S24_1444|25|46.82|9 -10165|S24_2300|32|117.57|17 -10165|S24_2840|27|31.12|13 -10165|S24_4048|24|106.45|8 -10165|S32_2509|48|50.86|14 -10165|S32_3207|44|55.3|7 -10165|S50_1392|48|106.49|10 -10165|S50_1514|38|49.21|5 -10166|S18_3140|43|136.59|2 -10166|S18_4522|26|72.85|1 -10166|S700_1938|29|76.22|3 -10167|S10_4757|44|123.76|9 -10167|S18_1662|43|141.92|1 -10167|S18_3029|46|69.68|7 -10167|S18_3856|34|84.7|6 -10167|S24_2011|33|110.6|16 -10167|S24_2841|21|54.81|2 -10167|S24_3151|20|77|11 -10167|S24_3420|32|64.44|3 -10167|S24_3816|29|73.8|8 -10167|S700_1138|43|66|12 -10167|S700_2047|29|87.8|5 -10167|S700_2610|46|62.16|10 -10167|S700_3505|24|85.14|13 -10167|S700_3962|28|83.42|14 -10167|S72_1253|40|42.71|4 -10167|S72_3212|38|43.68|15 -10168|S10_1678|36|94.74|1 -10168|S10_2016|27|97.53|4 -10168|S10_4698|20|160.74|3 -10168|S18_2581|21|75.19|9 -10168|S18_2625|46|49.06|5 -10168|S24_1578|50|103.68|2 -10168|S24_1785|49|93.01|11 -10168|S24_2000|29|72.36|6 -10168|S24_3949|27|57.32|18 -10168|S24_4278|48|68.1|10 -10168|S32_1374|28|89.9|7 -10168|S32_4289|31|57.78|12 -10168|S50_1341|48|39.71|13 -10168|S700_1691|28|91.34|14 -10168|S700_2466|31|87.75|16 -10168|S700_2834|36|94.92|8 -10168|S700_3167|48|72|15 -10168|S700_4002|39|67.37|17 -10169|S12_1099|30|163.44|2 -10169|S12_2823|35|126.52|13 -10169|S12_3990|36|71.82|3 -10169|S18_3278|32|65.13|5 -10169|S18_3482|36|136.7|4 -10169|S18_3782|38|52.84|8 -10169|S18_4721|33|120.53|7 -10169|S24_2360|38|66.49|11 -10169|S24_3371|34|53.27|1 -10169|S24_4620|24|77.61|6 -10169|S32_2206|26|37.01|9 -10169|S32_4485|34|83.68|12 -10169|S50_4713|48|75.66|10 -10170|S12_3380|47|116.27|4 -10170|S12_4675|41|93.28|3 -10170|S18_1889|20|70.07|2 -10170|S24_3856|34|130.6|1 -10171|S18_1129|35|134.46|2 -10171|S18_1984|35|128.03|1 -10171|S18_3232|39|165.95|3 -10171|S24_2972|36|34.74|4 -10172|S18_1589|42|109.51|6 -10172|S18_2870|39|117.48|7 -10172|S18_3685|48|139.87|8 -10172|S24_1046|32|61|3 -10172|S24_1628|34|43.27|5 -10172|S24_2766|22|79.97|1 -10172|S24_3191|24|77.91|2 -10172|S24_3432|22|87.81|4 -10173|S18_1342|43|101.71|6 -10173|S18_1367|48|51.75|5 -10173|S18_1749|24|168.3|13 -10173|S18_2248|26|55.09|12 -10173|S18_2325|31|127.13|10 -10173|S18_2795|22|140.06|7 -10173|S18_2957|28|56.84|2 -10173|S18_3136|31|86.92|1 -10173|S18_3320|29|90.28|4 -10173|S18_4409|21|77.31|14 -10173|S18_4933|39|58.44|15 -10173|S24_1937|31|29.87|9 -10173|S24_2022|27|39.42|8 -10173|S24_2887|23|98.65|16 -10173|S24_3969|35|35.7|11 -10173|S24_4258|22|93.49|3 -10174|S10_1949|34|207.87|4 -10174|S12_1666|43|113.44|1 -10174|S18_1097|48|108.5|3 -10174|S18_2949|46|100.3|5 -10174|S18_4668|49|44.27|2 -10175|S10_4962|33|119.67|9 -10175|S12_4473|26|109.02|1 -10175|S18_2319|48|101.87|4 -10175|S18_2432|41|59.55|7 -10175|S18_3232|29|150.71|5 -10175|S18_4600|47|102.92|10 -10175|S24_2300|28|121.4|6 -10175|S24_2840|37|32.18|2 -10175|S32_1268|22|89.57|8 -10175|S32_2509|50|50.86|3 -10175|S32_3522|29|56.24|12 -10175|S700_2824|42|80.92|11 -10176|S12_1108|33|166.24|2 -10176|S12_3148|47|145.04|3 -10176|S12_3891|50|160.91|1 -10176|S18_2238|20|139.17|10 -10176|S18_4027|36|140.75|5 -10176|S24_1444|27|55.49|8 -10176|S24_4048|29|101.72|7 -10176|S32_3207|22|62.14|6 -10176|S50_1392|23|109.96|9 -10176|S50_1514|38|52.14|4 -10177|S18_3140|23|113.37|9 -10177|S18_3259|29|92.77|11 -10177|S18_4522|35|82.5|8 -10177|S24_2011|50|115.52|7 -10177|S24_3151|45|79.66|2 -10177|S700_1138|24|58.67|3 -10177|S700_1938|31|77.95|10 -10177|S700_2610|32|64.33|1 -10177|S700_3505|44|88.15|4 -10177|S700_3962|24|83.42|5 -10177|S72_3212|40|52.96|6 -10178|S10_4757|24|131.92|12 -10178|S18_1662|42|127.73|4 -10178|S18_3029|41|70.54|10 -10178|S18_3856|48|104.81|9 -10178|S24_2841|34|67.82|5 -10178|S24_3420|27|65.75|6 -10178|S24_3816|21|68.77|11 -10178|S24_3949|30|64.15|3 -10178|S700_2047|34|86.9|8 -10178|S700_2466|22|91.74|1 -10178|S700_4002|45|68.11|2 -10178|S72_1253|45|41.71|7 -10179|S18_2581|24|82.79|3 -10179|S24_1785|47|105.04|5 -10179|S24_4278|27|66.65|4 -10179|S32_1374|45|86.9|1 -10179|S32_4289|24|63.97|6 -10179|S50_1341|34|43.2|7 -10179|S700_1691|23|75.81|8 -10179|S700_2834|25|98.48|2 -10179|S700_3167|39|80|9 -10180|S10_1678|29|76.56|9 -10180|S10_2016|42|99.91|12 -10180|S10_4698|41|164.61|11 -10180|S12_2823|40|131.04|8 -10180|S18_2625|25|48.46|13 -10180|S18_3782|21|59.06|3 -10180|S18_4721|44|147.31|2 -10180|S24_1578|48|98.05|10 -10180|S24_2000|28|61.7|14 -10180|S24_2360|35|60.95|6 -10180|S24_4620|28|68.71|1 -10180|S32_2206|34|33.39|4 -10180|S32_4485|22|102.05|7 -10180|S50_4713|21|74.85|5 -10181|S12_1099|27|155.66|14 -10181|S12_3380|28|113.92|12 -10181|S12_3990|20|67.03|15 -10181|S12_4675|36|107.1|11 -10181|S18_1129|44|124.56|6 -10181|S18_1589|42|124.44|2 -10181|S18_1889|22|74.69|10 -10181|S18_1984|21|129.45|5 -10181|S18_2870|27|130.68|3 -10181|S18_3232|45|147.33|7 -10181|S18_3278|30|73.17|17 -10181|S18_3482|22|120.53|16 -10181|S18_3685|39|137.04|4 -10181|S24_1628|34|45.28|1 -10181|S24_2972|37|32.85|8 -10181|S24_3371|23|54.49|13 -10181|S24_3856|25|122.17|9 -10182|S18_1342|25|83.22|3 -10182|S18_1367|32|44.21|2 -10182|S18_1749|44|159.8|10 -10182|S18_2248|38|54.49|9 -10182|S18_2325|20|105.52|7 -10182|S18_2795|21|135|4 -10182|S18_3320|33|86.31|1 -10182|S18_4409|36|88.35|11 -10182|S18_4933|44|61.29|12 -10182|S24_1046|47|63.2|16 -10182|S24_1937|39|31.86|6 -10182|S24_2022|31|39.87|5 -10182|S24_2766|36|87.24|14 -10182|S24_2887|20|116.27|13 -10182|S24_3191|33|73.62|15 -10182|S24_3432|49|95.3|17 -10182|S24_3969|23|34.88|8 -10183|S10_1949|23|180.01|8 -10183|S10_4962|28|127.06|1 -10183|S12_1666|41|114.8|5 -10183|S18_1097|21|108.5|7 -10183|S18_2949|37|91.18|9 -10183|S18_2957|39|51.22|11 -10183|S18_3136|22|90.06|10 -10183|S18_4600|21|118.66|2 -10183|S18_4668|40|42.26|6 -10183|S24_4258|47|81.81|12 -10183|S32_3522|49|52.36|4 -10183|S700_2824|23|85.98|3 -10184|S12_4473|37|105.47|6 -10184|S18_2238|46|145.72|5 -10184|S18_2319|46|119.05|9 -10184|S18_2432|44|60.77|12 -10184|S18_3232|28|165.95|10 -10184|S24_1444|31|57.22|3 -10184|S24_2300|24|117.57|11 -10184|S24_2840|42|30.06|7 -10184|S24_4048|49|114.73|2 -10184|S32_1268|46|84.75|13 -10184|S32_2509|33|52.49|8 -10184|S32_3207|48|59.03|1 -10184|S50_1392|45|92.6|4 -10185|S12_1108|21|195.33|13 -10185|S12_3148|33|146.55|14 -10185|S12_3891|43|147.07|12 -10185|S18_3140|28|124.3|9 -10185|S18_3259|49|94.79|11 -10185|S18_4027|39|127.82|16 -10185|S18_4522|47|87.77|8 -10185|S24_2011|30|105.69|7 -10185|S24_3151|33|83.2|2 -10185|S50_1514|20|46.86|15 -10185|S700_1138|21|64.67|3 -10185|S700_1938|30|79.68|10 -10185|S700_2610|39|61.44|1 -10185|S700_3505|37|99.17|4 -10185|S700_3962|22|93.35|5 -10185|S72_3212|28|47.5|6 -10186|S10_4757|26|108.8|9 -10186|S18_1662|32|137.19|1 -10186|S18_3029|32|73.12|7 -10186|S18_3856|46|98.46|6 -10186|S24_2841|22|60.29|2 -10186|S24_3420|21|59.83|3 -10186|S24_3816|36|68.77|8 -10186|S700_2047|24|80.56|5 -10186|S72_1253|28|42.71|4 -10187|S18_2581|45|70.12|1 -10187|S24_1785|46|96.29|3 -10187|S24_3949|43|55.96|10 -10187|S24_4278|33|64.48|2 -10187|S32_4289|31|61.22|4 -10187|S50_1341|41|39.71|5 -10187|S700_1691|34|84.95|6 -10187|S700_2466|44|95.73|8 -10187|S700_3167|34|72|7 -10187|S700_4002|44|70.33|9 -10188|S10_1678|48|95.7|1 -10188|S10_2016|38|111.8|4 -10188|S10_4698|45|182.04|3 -10188|S18_2625|32|52.09|5 -10188|S24_1578|25|95.8|2 -10188|S24_2000|40|61.7|6 -10188|S32_1374|44|81.91|7 -10188|S700_2834|29|96.11|8 -10189|S12_2823|28|138.57|1 -10190|S24_2360|42|58.87|3 -10190|S32_2206|46|38.62|1 -10190|S32_4485|42|89.8|4 -10190|S50_4713|40|67.53|2 -10191|S12_1099|21|155.66|3 -10191|S12_3380|40|104.52|1 -10191|S12_3990|30|70.22|4 -10191|S18_3278|36|75.59|6 -10191|S18_3482|23|119.06|5 -10191|S18_3782|43|60.93|9 -10191|S18_4721|32|136.9|8 -10191|S24_3371|48|53.27|2 -10191|S24_4620|44|77.61|7 -10192|S12_4675|27|99.04|16 -10192|S18_1129|22|140.12|11 -10192|S18_1589|29|100.8|7 -10192|S18_1889|45|70.84|15 -10192|S18_1984|47|128.03|10 -10192|S18_2870|38|110.88|8 -10192|S18_3232|26|137.17|12 -10192|S18_3685|45|125.74|9 -10192|S24_1046|37|72.02|4 -10192|S24_1628|47|49.3|6 -10192|S24_2766|46|86.33|2 -10192|S24_2887|23|112.74|1 -10192|S24_2972|30|33.23|13 -10192|S24_3191|32|69.34|3 -10192|S24_3432|46|93.16|5 -10192|S24_3856|45|112.34|14 -10193|S18_1342|28|92.47|7 -10193|S18_1367|46|46.36|6 -10193|S18_1749|21|153|14 -10193|S18_2248|42|60.54|13 -10193|S18_2325|44|115.69|11 -10193|S18_2795|22|143.44|8 -10193|S18_2949|28|87.13|1 -10193|S18_2957|24|53.09|3 -10193|S18_3136|23|97.39|2 -10193|S18_3320|32|79.37|5 -10193|S18_4409|24|92.03|15 -10193|S18_4933|25|66.28|16 -10193|S24_1937|26|32.19|10 -10193|S24_2022|20|44.8|9 -10193|S24_3969|22|38.16|12 -10193|S24_4258|20|92.52|4 -10194|S10_1949|42|203.59|11 -10194|S10_4962|26|134.44|4 -10194|S12_1666|38|124.37|8 -10194|S18_1097|21|103.84|10 -10194|S18_2432|45|51.05|2 -10194|S18_4600|32|113.82|5 -10194|S18_4668|41|47.79|9 -10194|S24_2300|49|112.46|1 -10194|S32_1268|37|77.05|3 -10194|S32_3522|39|61.41|7 -10194|S700_2824|26|80.92|6 -10195|S12_4473|49|118.5|6 -10195|S18_2238|27|139.17|5 -10195|S18_2319|35|112.91|9 -10195|S18_3232|50|150.71|10 -10195|S24_1444|44|54.33|3 -10195|S24_2840|32|31.82|7 -10195|S24_4048|34|95.81|2 -10195|S32_2509|32|51.95|8 -10195|S32_3207|33|59.03|1 -10195|S50_1392|49|97.23|4 -10196|S12_1108|47|203.64|5 -10196|S12_3148|24|151.08|6 -10196|S12_3891|38|147.07|4 -10196|S18_3140|49|127.03|1 -10196|S18_3259|35|81.68|3 -10196|S18_4027|27|126.39|8 -10196|S50_1514|46|56.82|7 -10196|S700_1938|50|84.88|2 -10197|S10_4757|45|118.32|6 -10197|S18_3029|46|83.44|4 -10197|S18_3856|22|85.75|3 -10197|S18_4522|50|78.99|14 -10197|S24_2011|41|109.37|13 -10197|S24_3151|47|83.2|8 -10197|S24_3816|22|67.93|5 -10197|S700_1138|23|60|9 -10197|S700_2047|24|78.75|2 -10197|S700_2610|50|66.5|7 -10197|S700_3505|27|100.17|10 -10197|S700_3962|35|88.39|11 -10197|S72_1253|29|39.73|1 -10197|S72_3212|42|48.59|12 -10198|S18_1662|42|149.81|4 -10198|S24_2841|48|60.97|5 -10198|S24_3420|27|61.81|6 -10198|S24_3949|43|65.51|3 -10198|S700_2466|42|94.73|1 -10198|S700_4002|40|74.03|2 -10199|S50_1341|29|37.97|1 -10199|S700_1691|48|81.29|2 -10199|S700_3167|38|70.4|3 -10200|S18_2581|28|74.34|3 -10200|S24_1785|33|99.57|5 -10200|S24_4278|39|70.28|4 -10200|S32_1374|35|80.91|1 -10200|S32_4289|27|65.35|6 -10200|S700_2834|39|115.09|2 -10201|S10_1678|22|82.3|2 -10201|S10_2016|24|116.56|5 -10201|S10_4698|49|191.72|4 -10201|S12_2823|25|126.52|1 -10201|S18_2625|30|48.46|6 -10201|S24_1578|39|93.54|3 -10201|S24_2000|25|66.27|7 -10202|S18_3782|30|55.33|3 -10202|S18_4721|43|124.99|2 -10202|S24_2360|50|56.1|6 -10202|S24_4620|50|75.18|1 -10202|S32_2206|27|33.39|4 -10202|S32_4485|31|81.64|7 -10202|S50_4713|40|79.73|5 -10203|S12_1099|20|161.49|8 -10203|S12_3380|20|111.57|6 -10203|S12_3990|44|63.84|9 -10203|S12_4675|47|115.16|5 -10203|S18_1889|45|73.15|4 -10203|S18_3232|48|157.49|1 -10203|S18_3278|33|66.74|11 -10203|S18_3482|32|127.88|10 -10203|S24_2972|21|33.23|2 -10203|S24_3371|34|56.94|7 -10203|S24_3856|47|140.43|3 -10204|S18_1129|42|114.65|17 -10204|S18_1589|40|113.24|13 -10204|S18_1749|33|153|4 -10204|S18_1984|38|133.72|16 -10204|S18_2248|23|59.33|3 -10204|S18_2325|26|119.5|1 -10204|S18_2870|27|106.92|14 -10204|S18_3685|35|132.8|15 -10204|S18_4409|29|83.75|5 -10204|S18_4933|45|69.84|6 -10204|S24_1046|20|69.82|10 -10204|S24_1628|45|46.79|12 -10204|S24_2766|47|79.06|8 -10204|S24_2887|42|112.74|7 -10204|S24_3191|40|84.75|9 -10204|S24_3432|48|104.94|11 -10204|S24_3969|39|34.88|2 -10205|S18_1342|36|98.63|2 -10205|S18_1367|48|45.82|1 -10205|S18_2795|40|138.38|3 -10205|S24_1937|32|27.88|5 -10205|S24_2022|24|36.74|4 -10206|S10_1949|47|203.59|6 -10206|S12_1666|28|109.34|3 -10206|S18_1097|34|115.5|5 -10206|S18_2949|37|98.27|7 -10206|S18_2957|28|51.84|9 -10206|S18_3136|30|102.63|8 -10206|S18_3320|28|99.21|11 -10206|S18_4668|21|45.78|4 -10206|S24_4258|33|95.44|10 -10206|S32_3522|36|54.94|2 -10206|S700_2824|33|89.01|1 -10207|S10_4962|31|125.58|15 -10207|S12_4473|34|95.99|7 -10207|S18_2238|44|140.81|6 -10207|S18_2319|43|109.23|10 -10207|S18_2432|37|60.77|13 -10207|S18_3232|25|140.55|11 -10207|S18_4027|40|143.62|1 -10207|S18_4600|47|119.87|16 -10207|S24_1444|49|57.8|4 -10207|S24_2300|46|127.79|12 -10207|S24_2840|42|30.76|8 -10207|S24_4048|28|108.82|3 -10207|S32_1268|49|84.75|14 -10207|S32_2509|27|51.95|9 -10207|S32_3207|45|55.3|2 -10207|S50_1392|28|106.49|5 -10208|S12_1108|46|176.63|13 -10208|S12_3148|26|128.42|14 -10208|S12_3891|20|152.26|12 -10208|S18_3140|24|117.47|9 -10208|S18_3259|48|96.81|11 -10208|S18_4522|45|72.85|8 -10208|S24_2011|35|122.89|7 -10208|S24_3151|20|80.54|2 -10208|S50_1514|30|57.99|15 -10208|S700_1138|38|56.67|3 -10208|S700_1938|40|73.62|10 -10208|S700_2610|46|63.61|1 -10208|S700_3505|37|95.16|4 -10208|S700_3962|33|95.34|5 -10208|S72_3212|42|48.05|6 -10209|S10_4757|39|129.2|8 -10209|S18_3029|28|82.58|6 -10209|S18_3856|20|97.4|5 -10209|S24_2841|43|66.45|1 -10209|S24_3420|36|56.55|2 -10209|S24_3816|22|79.67|7 -10209|S700_2047|33|90.52|4 -10209|S72_1253|48|44.2|3 -10210|S10_2016|23|112.99|2 -10210|S10_4698|34|189.79|1 -10210|S18_1662|31|141.92|17 -10210|S18_2581|50|68.43|7 -10210|S18_2625|40|51.48|3 -10210|S24_1785|27|100.67|9 -10210|S24_2000|30|63.22|4 -10210|S24_3949|29|56.64|16 -10210|S24_4278|40|68.1|8 -10210|S32_1374|46|84.91|5 -10210|S32_4289|39|57.1|10 -10210|S50_1341|43|43.2|11 -10210|S700_1691|21|87.69|12 -10210|S700_2466|26|93.74|14 -10210|S700_2834|25|98.48|6 -10210|S700_3167|31|64|13 -10210|S700_4002|42|60.7|15 -10211|S10_1678|41|90.92|14 -10211|S12_1099|41|171.22|2 -10211|S12_2823|36|126.52|13 -10211|S12_3990|28|79.8|3 -10211|S18_3278|35|73.17|5 -10211|S18_3482|28|138.17|4 -10211|S18_3782|46|60.3|8 -10211|S18_4721|41|148.8|7 -10211|S24_1578|25|109.32|15 -10211|S24_2360|21|62.33|11 -10211|S24_3371|48|52.66|1 -10211|S24_4620|22|80.84|6 -10211|S32_2206|41|39.83|9 -10211|S32_4485|37|94.91|12 -10211|S50_4713|40|70.78|10 -10212|S12_3380|39|99.82|16 -10212|S12_4675|33|110.55|15 -10212|S18_1129|29|117.48|10 -10212|S18_1589|38|105.77|6 -10212|S18_1889|20|64.68|14 -10212|S18_1984|41|133.72|9 -10212|S18_2870|40|117.48|7 -10212|S18_3232|40|155.79|11 -10212|S18_3685|45|115.85|8 -10212|S24_1046|41|61.73|3 -10212|S24_1628|45|43.27|5 -10212|S24_2766|45|81.78|1 -10212|S24_2972|34|37.38|12 -10212|S24_3191|27|77.91|2 -10212|S24_3432|46|100.66|4 -10212|S24_3856|49|117.96|13 -10213|S18_4409|38|84.67|1 -10213|S18_4933|25|58.44|2 -10213|S24_2887|27|97.48|3 -10214|S18_1749|30|166.6|7 -10214|S18_2248|21|53.28|6 -10214|S18_2325|27|125.86|4 -10214|S18_2795|50|167.06|1 -10214|S24_1937|20|32.19|3 -10214|S24_2022|49|39.87|2 -10214|S24_3969|44|38.57|5 -10215|S10_1949|35|205.73|3 -10215|S18_1097|46|100.34|2 -10215|S18_1342|27|92.47|10 -10215|S18_1367|33|53.91|9 -10215|S18_2949|49|97.26|4 -10215|S18_2957|31|56.21|6 -10215|S18_3136|49|89.01|5 -10215|S18_3320|41|84.33|8 -10215|S18_4668|46|42.76|1 -10215|S24_4258|39|94.47|7 -10216|S12_1666|43|133.94|1 -10217|S10_4962|48|132.97|4 -10217|S18_2432|35|58.34|2 -10217|S18_4600|38|118.66|5 -10217|S24_2300|28|103.51|1 -10217|S32_1268|21|78.97|3 -10217|S32_3522|39|56.24|7 -10217|S700_2824|31|90.02|6 -10218|S18_2319|22|110.46|1 -10218|S18_3232|34|152.41|2 -10219|S12_4473|48|94.8|2 -10219|S18_2238|43|132.62|1 -10219|S24_2840|21|31.12|3 -10219|S32_2509|35|47.62|4 -10220|S12_1108|32|189.1|2 -10220|S12_3148|30|151.08|3 -10220|S12_3891|27|166.1|1 -10220|S18_4027|50|126.39|5 -10220|S24_1444|26|48.55|8 -10220|S24_4048|37|101.72|7 -10220|S32_3207|20|49.71|6 -10220|S50_1392|37|92.6|9 -10220|S50_1514|30|56.82|4 -10221|S18_3140|33|133.86|3 -10221|S18_3259|23|89.75|5 -10221|S18_4522|39|84.26|2 -10221|S24_2011|49|113.06|1 -10221|S700_1938|23|69.29|4 -10222|S10_4757|49|133.28|12 -10222|S18_1662|49|137.19|4 -10222|S18_3029|49|79.14|10 -10222|S18_3856|45|88.93|9 -10222|S24_2841|32|56.86|5 -10222|S24_3151|47|74.35|14 -10222|S24_3420|43|61.15|6 -10222|S24_3816|46|77.99|11 -10222|S24_3949|48|55.27|3 -10222|S700_1138|31|58.67|15 -10222|S700_2047|26|80.56|8 -10222|S700_2466|37|90.75|1 -10222|S700_2610|36|69.39|13 -10222|S700_3505|38|84.14|16 -10222|S700_3962|31|81.43|17 -10222|S700_4002|43|66.63|2 -10222|S72_1253|31|45.19|7 -10222|S72_3212|36|48.59|18 -10223|S10_1678|37|80.39|1 -10223|S10_2016|47|110.61|4 -10223|S10_4698|49|189.79|3 -10223|S18_2581|47|67.58|9 -10223|S18_2625|28|58.75|5 -10223|S24_1578|32|104.81|2 -10223|S24_1785|34|87.54|11 -10223|S24_2000|38|60.94|6 -10223|S24_4278|23|68.1|10 -10223|S32_1374|21|90.9|7 -10223|S32_4289|20|66.73|12 -10223|S50_1341|41|41.02|13 -10223|S700_1691|25|84.03|14 -10223|S700_2834|29|113.9|8 -10223|S700_3167|26|79.2|15 -10224|S12_2823|43|141.58|6 -10224|S18_3782|38|57.2|1 -10224|S24_2360|37|60.26|4 -10224|S32_2206|43|37.01|2 -10224|S32_4485|30|94.91|5 -10224|S50_4713|50|81.36|3 -10225|S12_1099|27|157.6|9 -10225|S12_3380|25|101|7 -10225|S12_3990|37|64.64|10 -10225|S12_4675|21|100.19|6 -10225|S18_1129|32|116.06|1 -10225|S18_1889|47|71.61|5 -10225|S18_3232|43|162.57|2 -10225|S18_3278|37|69.96|12 -10225|S18_3482|27|119.06|11 -10225|S18_4721|35|135.41|14 -10225|S24_2972|42|34.74|3 -10225|S24_3371|24|51.43|8 -10225|S24_3856|40|130.6|4 -10225|S24_4620|46|77.61|13 -10226|S18_1589|38|108.26|4 -10226|S18_1984|24|129.45|7 -10226|S18_2870|24|125.4|5 -10226|S18_3685|46|122.91|6 -10226|S24_1046|21|65.41|1 -10226|S24_1628|36|47.79|3 -10226|S24_3432|48|95.3|2 -10227|S18_1342|25|85.27|3 -10227|S18_1367|31|50.14|2 -10227|S18_1749|26|136|10 -10227|S18_2248|28|59.93|9 -10227|S18_2325|46|118.23|7 -10227|S18_2795|29|146.81|4 -10227|S18_3320|33|99.21|1 -10227|S18_4409|34|87.43|11 -10227|S18_4933|37|70.56|12 -10227|S24_1937|42|27.22|6 -10227|S24_2022|24|39.42|5 -10227|S24_2766|47|84.51|14 -10227|S24_2887|33|102.17|13 -10227|S24_3191|40|78.76|15 -10227|S24_3969|27|34.88|8 -10228|S10_1949|29|214.3|2 -10228|S18_1097|32|100.34|1 -10228|S18_2949|24|101.31|3 -10228|S18_2957|45|57.46|5 -10228|S18_3136|31|100.53|4 -10228|S24_4258|33|84.73|6 -10229|S10_4962|50|138.88|9 -10229|S12_1666|25|110.7|13 -10229|S12_4473|36|95.99|1 -10229|S18_2319|26|104.32|4 -10229|S18_2432|28|53.48|7 -10229|S18_3232|22|157.49|5 -10229|S18_4600|41|119.87|10 -10229|S18_4668|39|43.77|14 -10229|S24_2300|48|115.01|6 -10229|S24_2840|33|34.65|2 -10229|S32_1268|25|78.97|8 -10229|S32_2509|23|49.78|3 -10229|S32_3522|30|52.36|12 -10229|S700_2824|50|91.04|11 -10230|S12_3148|43|128.42|1 -10230|S18_2238|49|153.91|8 -10230|S18_4027|42|142.18|3 -10230|S24_1444|36|47.4|6 -10230|S24_4048|45|99.36|5 -10230|S32_3207|46|59.03|4 -10230|S50_1392|34|100.7|7 -10230|S50_1514|43|57.41|2 -10231|S12_1108|42|193.25|2 -10231|S12_3891|49|147.07|1 -10232|S18_3140|22|133.86|6 -10232|S18_3259|48|97.81|8 -10232|S18_4522|23|78.12|5 -10232|S24_2011|46|113.06|4 -10232|S700_1938|26|84.88|7 -10232|S700_3505|48|86.15|1 -10232|S700_3962|35|81.43|2 -10232|S72_3212|24|48.59|3 -10233|S24_3151|40|70.81|2 -10233|S700_1138|36|66|3 -10233|S700_2610|29|67.94|1 -10234|S10_4757|48|118.32|9 -10234|S18_1662|50|146.65|1 -10234|S18_3029|48|84.3|7 -10234|S18_3856|39|85.75|6 -10234|S24_2841|44|67.14|2 -10234|S24_3420|25|65.09|3 -10234|S24_3816|31|78.83|8 -10234|S700_2047|29|83.28|5 -10234|S72_1253|40|45.69|4 -10235|S18_2581|24|81.95|3 -10235|S24_1785|23|89.72|5 -10235|S24_3949|33|55.27|12 -10235|S24_4278|40|63.03|4 -10235|S32_1374|41|90.9|1 -10235|S32_4289|34|66.73|6 -10235|S50_1341|41|37.09|7 -10235|S700_1691|25|88.6|8 -10235|S700_2466|38|92.74|10 -10235|S700_2834|25|116.28|2 -10235|S700_3167|32|73.6|9 -10235|S700_4002|34|70.33|11 -10236|S10_2016|22|105.86|1 -10236|S18_2625|23|52.7|2 -10236|S24_2000|36|65.51|3 -10237|S10_1678|23|91.87|7 -10237|S10_4698|39|158.8|9 -10237|S12_2823|32|129.53|6 -10237|S18_3782|26|49.74|1 -10237|S24_1578|20|109.32|8 -10237|S24_2360|26|62.33|4 -10237|S32_2206|26|35|2 -10237|S32_4485|27|94.91|5 -10237|S50_4713|20|78.92|3 -10238|S12_1099|28|161.49|3 -10238|S12_3380|29|104.52|1 -10238|S12_3990|20|73.42|4 -10238|S18_3278|41|68.35|6 -10238|S18_3482|49|144.05|5 -10238|S18_4721|44|120.53|8 -10238|S24_3371|47|53.88|2 -10238|S24_4620|22|67.91|7 -10239|S12_4675|21|100.19|5 -10239|S18_1889|46|70.07|4 -10239|S18_3232|47|135.47|1 -10239|S24_2972|20|32.47|2 -10239|S24_3856|29|133.41|3 -10240|S18_1129|41|125.97|3 -10240|S18_1984|37|136.56|2 -10240|S18_3685|37|134.22|1 -10241|S18_1589|21|119.46|11 -10241|S18_1749|41|153|2 -10241|S18_2248|33|55.7|1 -10241|S18_2870|44|126.72|12 -10241|S18_4409|42|77.31|3 -10241|S18_4933|30|62.72|4 -10241|S24_1046|22|72.02|8 -10241|S24_1628|21|47.29|10 -10241|S24_2766|47|89.05|6 -10241|S24_2887|28|117.44|5 -10241|S24_3191|26|69.34|7 -10241|S24_3432|27|107.08|9 -10242|S24_3969|46|36.52|1 -10243|S18_2325|47|111.87|2 -10243|S24_1937|33|30.87|1 -10244|S18_1342|40|99.66|7 -10244|S18_1367|20|48.52|6 -10244|S18_2795|43|141.75|8 -10244|S18_2949|30|87.13|1 -10244|S18_2957|24|54.96|3 -10244|S18_3136|29|85.87|2 -10244|S18_3320|36|87.3|5 -10244|S24_2022|39|42.11|9 -10244|S24_4258|40|97.39|4 -10245|S10_1949|34|195.01|9 -10245|S10_4962|28|147.74|2 -10245|S12_1666|38|120.27|6 -10245|S18_1097|29|114.34|8 -10245|S18_4600|21|111.39|3 -10245|S18_4668|45|48.8|7 -10245|S32_1268|37|81.86|1 -10245|S32_3522|44|54.94|5 -10245|S700_2824|44|81.93|4 -10246|S12_4473|46|99.54|5 -10246|S18_2238|40|144.08|4 -10246|S18_2319|22|100.64|8 -10246|S18_2432|30|57.73|11 -10246|S18_3232|36|145.63|9 -10246|S24_1444|44|46.24|2 -10246|S24_2300|29|118.84|10 -10246|S24_2840|49|34.65|6 -10246|S24_4048|46|100.54|1 -10246|S32_2509|35|45.45|7 -10246|S50_1392|22|113.44|3 -10247|S12_1108|44|195.33|2 -10247|S12_3148|25|140.5|3 -10247|S12_3891|27|167.83|1 -10247|S18_4027|48|143.62|5 -10247|S32_3207|40|58.41|6 -10247|S50_1514|49|51.55|4 -10248|S10_4757|20|126.48|3 -10248|S18_3029|21|80.86|1 -10248|S18_3140|32|133.86|12 -10248|S18_3259|42|95.8|14 -10248|S18_4522|42|87.77|11 -10248|S24_2011|48|122.89|10 -10248|S24_3151|30|85.85|5 -10248|S24_3816|23|83.02|2 -10248|S700_1138|36|66|6 -10248|S700_1938|40|81.41|13 -10248|S700_2610|32|69.39|4 -10248|S700_3505|30|84.14|7 -10248|S700_3962|35|92.36|8 -10248|S72_3212|23|53.51|9 -10249|S18_3856|46|88.93|5 -10249|S24_2841|20|54.81|1 -10249|S24_3420|25|65.75|2 -10249|S700_2047|40|85.99|4 -10249|S72_1253|32|49.16|3 -10250|S18_1662|45|148.23|14 -10250|S18_2581|27|84.48|4 -10250|S24_1785|31|95.2|6 -10250|S24_2000|32|63.22|1 -10250|S24_3949|40|61.42|13 -10250|S24_4278|37|72.45|5 -10250|S32_1374|31|99.89|2 -10250|S32_4289|50|62.6|7 -10250|S50_1341|36|36.66|8 -10250|S700_1691|31|91.34|9 -10250|S700_2466|35|90.75|11 -10250|S700_2834|44|98.48|3 -10250|S700_3167|44|76|10 -10250|S700_4002|38|65.89|12 -10251|S10_1678|59|93.79|2 -10251|S10_2016|44|115.37|5 -10251|S10_4698|43|172.36|4 -10251|S12_2823|46|129.53|1 -10251|S18_2625|44|58.15|6 -10251|S24_1578|50|91.29|3 -10252|S18_3278|20|74.78|2 -10252|S18_3482|41|145.52|1 -10252|S18_3782|31|50.36|5 -10252|S18_4721|26|127.97|4 -10252|S24_2360|47|63.03|8 -10252|S24_4620|38|69.52|3 -10252|S32_2206|36|36.21|6 -10252|S32_4485|25|93.89|9 -10252|S50_4713|48|72.41|7 -10253|S12_1099|24|157.6|13 -10253|S12_3380|22|102.17|11 -10253|S12_3990|25|67.03|14 -10253|S12_4675|41|109.4|10 -10253|S18_1129|26|130.22|5 -10253|S18_1589|24|103.29|1 -10253|S18_1889|23|67.76|9 -10253|S18_1984|33|130.87|4 -10253|S18_2870|37|114.84|2 -10253|S18_3232|40|145.63|6 -10253|S18_3685|31|139.87|3 -10253|S24_2972|40|34.74|7 -10253|S24_3371|24|50.82|12 -10253|S24_3856|39|115.15|8 -10254|S18_1749|49|137.7|5 -10254|S18_2248|36|55.09|4 -10254|S18_2325|41|102.98|2 -10254|S18_4409|34|80.99|6 -10254|S18_4933|30|59.87|7 -10254|S24_1046|34|66.88|11 -10254|S24_1628|32|43.27|13 -10254|S24_1937|38|28.88|1 -10254|S24_2766|31|85.42|9 -10254|S24_2887|33|111.57|8 -10254|S24_3191|42|69.34|10 -10254|S24_3432|49|101.73|12 -10254|S24_3969|20|39.8|3 -10255|S18_2795|24|135|1 -10255|S24_2022|37|37.63|2 -10256|S18_1342|34|93.49|2 -10256|S18_1367|29|52.83|1 -10257|S18_2949|50|92.19|1 -10257|S18_2957|49|59.34|3 -10257|S18_3136|37|83.78|2 -10257|S18_3320|26|91.27|5 -10257|S24_4258|46|81.81|4 -10258|S10_1949|32|177.87|6 -10258|S12_1666|41|133.94|3 -10258|S18_1097|41|113.17|5 -10258|S18_4668|21|49.81|4 -10258|S32_3522|20|62.7|2 -10258|S700_2824|45|86.99|1 -10259|S10_4962|26|121.15|12 -10259|S12_4473|46|117.32|4 -10259|S18_2238|30|134.26|3 -10259|S18_2319|34|120.28|7 -10259|S18_2432|30|59.55|10 -10259|S18_3232|27|152.41|8 -10259|S18_4600|41|107.76|13 -10259|S24_1444|28|46.82|1 -10259|S24_2300|47|121.4|9 -10259|S24_2840|31|31.47|5 -10259|S32_1268|45|95.35|11 -10259|S32_2509|40|45.99|6 -10259|S50_1392|29|105.33|2 -10260|S12_1108|46|180.79|5 -10260|S12_3148|30|140.5|6 -10260|S12_3891|44|169.56|4 -10260|S18_3140|32|121.57|1 -10260|S18_3259|29|92.77|3 -10260|S18_4027|23|137.88|8 -10260|S24_4048|23|117.1|10 -10260|S32_3207|27|55.3|9 -10260|S50_1514|21|56.24|7 -10260|S700_1938|33|80.55|2 -10261|S10_4757|27|116.96|1 -10261|S18_4522|20|80.75|9 -10261|S24_2011|36|105.69|8 -10261|S24_3151|22|79.66|3 -10261|S700_1138|34|64|4 -10261|S700_2610|44|58.55|2 -10261|S700_3505|25|89.15|5 -10261|S700_3962|50|88.39|6 -10261|S72_3212|29|43.68|7 -10262|S18_1662|49|157.69|9 -10262|S18_3029|32|81.72|15 -10262|S18_3856|34|85.75|14 -10262|S24_1785|34|98.48|1 -10262|S24_2841|24|63.71|10 -10262|S24_3420|46|65.75|11 -10262|S24_3816|49|82.18|16 -10262|S24_3949|48|58.69|8 -10262|S32_4289|40|63.97|2 -10262|S50_1341|49|35.78|3 -10262|S700_1691|40|87.69|4 -10262|S700_2047|44|83.28|13 -10262|S700_2466|33|81.77|6 -10262|S700_3167|27|64.8|5 -10262|S700_4002|35|64.41|7 -10262|S72_1253|21|41.71|12 -10263|S10_1678|34|89|2 -10263|S10_2016|40|107.05|5 -10263|S10_4698|41|193.66|4 -10263|S12_2823|48|123.51|1 -10263|S18_2581|33|67.58|10 -10263|S18_2625|34|50.27|6 -10263|S24_1578|42|109.32|3 -10263|S24_2000|37|67.03|7 -10263|S24_4278|24|59.41|11 -10263|S32_1374|31|93.9|8 -10263|S700_2834|47|117.46|9 -10264|S18_3782|48|58.44|3 -10264|S18_4721|20|124.99|2 -10264|S24_2360|37|61.64|6 -10264|S24_4620|47|75.18|1 -10264|S32_2206|20|39.02|4 -10264|S32_4485|34|100.01|7 -10264|S50_4713|47|67.53|5 -10265|S18_3278|45|74.78|2 -10265|S18_3482|49|123.47|1 -10266|S12_1099|44|188.73|14 -10266|S12_3380|22|110.39|12 -10266|S12_3990|35|67.83|15 -10266|S12_4675|40|112.86|11 -10266|S18_1129|21|131.63|6 -10266|S18_1589|36|99.55|2 -10266|S18_1889|33|77|10 -10266|S18_1984|49|139.41|5 -10266|S18_2870|20|113.52|3 -10266|S18_3232|29|137.17|7 -10266|S18_3685|33|127.15|4 -10266|S24_1628|28|40.25|1 -10266|S24_2972|34|35.12|8 -10266|S24_3371|47|56.33|13 -10266|S24_3856|24|119.37|9 -10267|S18_4933|36|71.27|1 -10267|S24_1046|40|72.02|5 -10267|S24_2766|38|76.33|3 -10267|S24_2887|43|93.95|2 -10267|S24_3191|44|83.9|4 -10267|S24_3432|43|98.51|6 -10268|S18_1342|49|93.49|3 -10268|S18_1367|26|45.82|2 -10268|S18_1749|34|164.9|10 -10268|S18_2248|31|60.54|9 -10268|S18_2325|50|124.59|7 -10268|S18_2795|35|148.5|4 -10268|S18_3320|39|96.23|1 -10268|S18_4409|35|84.67|11 -10268|S24_1937|33|31.86|6 -10268|S24_2022|40|36.29|5 -10268|S24_3969|30|37.75|8 -10269|S18_2957|32|57.46|1 -10269|S24_4258|48|95.44|2 -10270|S10_1949|21|171.44|9 -10270|S10_4962|32|124.1|2 -10270|S12_1666|28|135.3|6 -10270|S18_1097|43|94.5|8 -10270|S18_2949|31|81.05|10 -10270|S18_3136|38|85.87|11 -10270|S18_4600|38|107.76|3 -10270|S18_4668|44|40.25|7 -10270|S32_1268|32|93.42|1 -10270|S32_3522|21|52.36|5 -10270|S700_2824|46|101.15|4 -10271|S12_4473|31|99.54|5 -10271|S18_2238|50|147.36|4 -10271|S18_2319|50|121.5|8 -10271|S18_2432|25|59.55|11 -10271|S18_3232|20|169.34|9 -10271|S24_1444|45|49.71|2 -10271|S24_2300|43|122.68|10 -10271|S24_2840|38|28.64|6 -10271|S24_4048|22|110|1 -10271|S32_2509|35|51.95|7 -10271|S50_1392|34|93.76|3 -10272|S12_1108|35|187.02|2 -10272|S12_3148|27|123.89|3 -10272|S12_3891|39|148.8|1 -10272|S18_4027|25|126.39|5 -10272|S32_3207|45|56.55|6 -10272|S50_1514|43|53.89|4 -10273|S10_4757|30|136|4 -10273|S18_3029|34|84.3|2 -10273|S18_3140|40|117.47|13 -10273|S18_3259|47|87.73|15 -10273|S18_3856|50|105.87|1 -10273|S18_4522|33|72.85|12 -10273|S24_2011|22|103.23|11 -10273|S24_3151|27|84.08|6 -10273|S24_3816|48|83.86|3 -10273|S700_1138|21|66|7 -10273|S700_1938|21|77.95|14 -10273|S700_2610|42|57.82|5 -10273|S700_3505|40|91.15|8 -10273|S700_3962|26|89.38|9 -10273|S72_3212|37|51.32|10 -10274|S18_1662|41|129.31|1 -10274|S24_2841|40|56.86|2 -10274|S24_3420|24|65.09|3 -10274|S700_2047|24|75.13|5 -10274|S72_1253|32|49.66|4 -10275|S10_1678|45|81.35|1 -10275|S10_2016|22|115.37|4 -10275|S10_4698|36|154.93|3 -10275|S18_2581|35|70.12|9 -10275|S18_2625|37|52.09|5 -10275|S24_1578|21|105.94|2 -10275|S24_1785|25|97.38|11 -10275|S24_2000|30|61.7|6 -10275|S24_3949|41|58|18 -10275|S24_4278|27|67.38|10 -10275|S32_1374|23|89.9|7 -10275|S32_4289|28|58.47|12 -10275|S50_1341|38|40.15|13 -10275|S700_1691|32|85.86|14 -10275|S700_2466|39|82.77|16 -10275|S700_2834|48|102.04|8 -10275|S700_3167|43|72|15 -10275|S700_4002|31|59.96|17 -10276|S12_1099|50|184.84|3 -10276|S12_2823|43|150.62|14 -10276|S12_3380|47|104.52|1 -10276|S12_3990|38|67.83|4 -10276|S18_3278|38|78|6 -10276|S18_3482|30|139.64|5 -10276|S18_3782|33|54.71|9 -10276|S18_4721|48|120.53|8 -10276|S24_2360|46|61.64|12 -10276|S24_3371|20|58.17|2 -10276|S24_4620|48|67.1|7 -10276|S32_2206|27|35.4|10 -10276|S32_4485|38|94.91|13 -10276|S50_4713|21|67.53|11 -10277|S12_4675|28|93.28|1 -10278|S18_1129|34|114.65|6 -10278|S18_1589|23|107.02|2 -10278|S18_1889|29|73.15|10 -10278|S18_1984|29|118.07|5 -10278|S18_2870|39|117.48|3 -10278|S18_3232|42|167.65|7 -10278|S18_3685|31|114.44|4 -10278|S24_1628|35|48.8|1 -10278|S24_2972|31|37.38|8 -10278|S24_3856|25|136.22|9 -10279|S18_4933|26|68.42|1 -10279|S24_1046|32|68.35|5 -10279|S24_2766|49|76.33|3 -10279|S24_2887|48|106.87|2 -10279|S24_3191|33|78.76|4 -10279|S24_3432|48|95.3|6 -10280|S10_1949|34|205.73|2 -10280|S18_1097|24|98|1 -10280|S18_1342|50|87.33|9 -10280|S18_1367|27|47.44|8 -10280|S18_1749|26|161.5|16 -10280|S18_2248|25|53.28|15 -10280|S18_2325|37|109.33|13 -10280|S18_2795|22|158.63|10 -10280|S18_2949|46|82.06|3 -10280|S18_2957|43|54.34|5 -10280|S18_3136|29|102.63|4 -10280|S18_3320|34|99.21|7 -10280|S18_4409|35|77.31|17 -10280|S24_1937|20|29.87|12 -10280|S24_2022|45|36.29|11 -10280|S24_3969|33|35.29|14 -10280|S24_4258|21|79.86|6 -10281|S10_4962|44|132.97|9 -10281|S12_1666|25|127.1|13 -10281|S12_4473|41|98.36|1 -10281|S18_2319|48|114.14|4 -10281|S18_2432|29|56.52|7 -10281|S18_3232|25|135.47|5 -10281|S18_4600|25|96.86|10 -10281|S18_4668|44|42.76|14 -10281|S24_2300|25|112.46|6 -10281|S24_2840|20|33.95|2 -10281|S32_1268|29|80.9|8 -10281|S32_2509|31|44.91|3 -10281|S32_3522|36|59.47|12 -10281|S700_2824|27|89.01|11 -10282|S12_1108|41|176.63|5 -10282|S12_3148|27|142.02|6 -10282|S12_3891|24|169.56|4 -10282|S18_2238|23|147.36|13 -10282|S18_3140|43|122.93|1 -10282|S18_3259|36|88.74|3 -10282|S18_4027|31|132.13|8 -10282|S24_1444|29|49.71|11 -10282|S24_4048|39|96.99|10 -10282|S32_3207|36|51.58|9 -10282|S50_1392|38|114.59|12 -10282|S50_1514|37|56.24|7 -10282|S700_1938|43|77.95|2 -10283|S10_4757|25|130.56|6 -10283|S18_3029|21|78.28|4 -10283|S18_3856|46|100.58|3 -10283|S18_4522|34|71.97|14 -10283|S24_2011|42|99.54|13 -10283|S24_3151|34|80.54|8 -10283|S24_3816|33|77.15|5 -10283|S700_1138|45|62|9 -10283|S700_2047|20|74.23|2 -10283|S700_2610|47|68.67|7 -10283|S700_3505|22|88.15|10 -10283|S700_3962|38|85.41|11 -10283|S72_1253|43|41.22|1 -10283|S72_3212|33|49.14|12 -10284|S18_1662|45|137.19|11 -10284|S18_2581|31|68.43|1 -10284|S24_1785|22|101.76|3 -10284|S24_2841|30|65.08|12 -10284|S24_3420|39|59.83|13 -10284|S24_3949|21|65.51|10 -10284|S24_4278|21|66.65|2 -10284|S32_4289|50|60.54|4 -10284|S50_1341|33|35.78|5 -10284|S700_1691|24|87.69|6 -10284|S700_2466|45|95.73|8 -10284|S700_3167|25|68|7 -10284|S700_4002|32|73.29|9 -10285|S10_1678|36|95.7|6 -10285|S10_2016|47|110.61|9 -10285|S10_4698|27|166.55|8 -10285|S12_2823|49|131.04|5 -10285|S18_2625|20|50.88|10 -10285|S24_1578|34|91.29|7 -10285|S24_2000|39|61.7|11 -10285|S24_2360|38|64.41|3 -10285|S32_1374|37|82.91|12 -10285|S32_2206|37|36.61|1 -10285|S32_4485|26|100.01|4 -10285|S50_4713|39|76.48|2 -10285|S700_2834|45|102.04|13 -10286|S18_3782|38|51.6|1 -10287|S12_1099|21|190.68|12 -10287|S12_3380|45|117.44|10 -10287|S12_3990|41|74.21|13 -10287|S12_4675|23|107.1|9 -10287|S18_1129|41|113.23|4 -10287|S18_1889|44|61.6|8 -10287|S18_1984|24|123.76|3 -10287|S18_2870|44|114.84|1 -10287|S18_3232|36|137.17|5 -10287|S18_3278|43|68.35|15 -10287|S18_3482|40|127.88|14 -10287|S18_3685|27|139.87|2 -10287|S18_4721|34|119.04|17 -10287|S24_2972|36|31.34|6 -10287|S24_3371|20|58.17|11 -10287|S24_3856|36|137.62|7 -10287|S24_4620|40|79.22|16 -10288|S18_1589|20|120.71|14 -10288|S18_1749|32|168.3|5 -10288|S18_2248|28|50.25|4 -10288|S18_2325|31|102.98|2 -10288|S18_4409|35|90.19|6 -10288|S18_4933|23|57.02|7 -10288|S24_1046|36|66.88|11 -10288|S24_1628|50|49.3|13 -10288|S24_1937|29|32.19|1 -10288|S24_2766|35|81.78|9 -10288|S24_2887|48|109.22|8 -10288|S24_3191|34|76.19|10 -10288|S24_3432|41|101.73|12 -10288|S24_3969|33|37.75|3 -10289|S18_1342|38|92.47|2 -10289|S18_1367|24|44.75|1 -10289|S18_2795|43|141.75|3 -10289|S24_2022|45|41.22|4 -10290|S18_3320|26|80.36|2 -10290|S24_4258|45|83.76|1 -10291|S10_1949|37|210.01|11 -10291|S10_4962|30|141.83|4 -10291|S12_1666|41|123|8 -10291|S18_1097|41|96.84|10 -10291|S18_2432|26|52.26|2 -10291|S18_2949|47|99.28|12 -10291|S18_2957|37|56.21|14 -10291|S18_3136|23|93.2|13 -10291|S18_4600|48|96.86|5 -10291|S18_4668|29|45.28|9 -10291|S24_2300|48|109.9|1 -10291|S32_1268|26|82.83|3 -10291|S32_3522|32|53|7 -10291|S700_2824|28|86.99|6 -10292|S12_4473|21|94.8|8 -10292|S18_2238|26|140.81|7 -10292|S18_2319|41|103.09|11 -10292|S18_3232|21|147.33|12 -10292|S18_4027|44|114.9|2 -10292|S24_1444|40|48.55|5 -10292|S24_2840|39|34.3|9 -10292|S24_4048|27|113.55|4 -10292|S32_2509|50|54.11|10 -10292|S32_3207|31|59.65|3 -10292|S50_1392|41|113.44|6 -10292|S50_1514|35|49.79|1 -10293|S12_1108|46|187.02|8 -10293|S12_3148|24|129.93|9 -10293|S12_3891|45|171.29|7 -10293|S18_3140|24|110.64|4 -10293|S18_3259|22|91.76|6 -10293|S18_4522|49|72.85|3 -10293|S24_2011|21|111.83|2 -10293|S700_1938|29|77.95|5 -10293|S72_3212|32|51.32|1 -10294|S700_3962|45|98.32|1 -10295|S10_4757|24|136|1 -10295|S24_3151|46|84.08|3 -10295|S700_1138|26|62|4 -10295|S700_2610|44|71.56|2 -10295|S700_3505|34|93.16|5 -10296|S18_1662|36|146.65|7 -10296|S18_3029|21|69.68|13 -10296|S18_3856|22|105.87|12 -10296|S24_2841|21|60.97|8 -10296|S24_3420|31|63.78|9 -10296|S24_3816|22|83.02|14 -10296|S24_3949|32|63.46|6 -10296|S50_1341|26|41.02|1 -10296|S700_1691|42|75.81|2 -10296|S700_2047|34|89.61|11 -10296|S700_2466|24|96.73|4 -10296|S700_3167|22|74.4|3 -10296|S700_4002|47|61.44|5 -10296|S72_1253|21|46.68|10 -10297|S18_2581|25|81.95|4 -10297|S24_1785|32|107.23|6 -10297|S24_2000|32|70.08|1 -10297|S24_4278|23|71.73|5 -10297|S32_1374|26|88.9|2 -10297|S32_4289|28|63.29|7 -10297|S700_2834|35|111.53|3 -10298|S10_2016|39|105.86|1 -10298|S18_2625|32|60.57|2 -10299|S10_1678|23|76.56|9 -10299|S10_4698|29|164.61|11 -10299|S12_2823|24|123.51|8 -10299|S18_3782|39|62.17|3 -10299|S18_4721|49|119.04|2 -10299|S24_1578|47|107.07|10 -10299|S24_2360|33|58.87|6 -10299|S24_4620|32|66.29|1 -10299|S32_2206|24|36.21|4 -10299|S32_4485|38|84.7|7 -10299|S50_4713|44|77.29|5 -10300|S12_1099|33|184.84|5 -10300|S12_3380|29|116.27|3 -10300|S12_3990|22|76.61|6 -10300|S12_4675|23|95.58|2 -10300|S18_1889|41|63.14|1 -10300|S18_3278|49|65.94|8 -10300|S18_3482|23|144.05|7 -10300|S24_3371|31|52.05|4 -10301|S18_1129|37|114.65|8 -10301|S18_1589|32|118.22|4 -10301|S18_1984|47|119.49|7 -10301|S18_2870|22|113.52|5 -10301|S18_3232|23|135.47|9 -10301|S18_3685|39|137.04|6 -10301|S24_1046|27|64.67|1 -10301|S24_1628|22|40.75|3 -10301|S24_2972|48|32.1|10 -10301|S24_3432|22|86.73|2 -10301|S24_3856|50|122.17|11 -10302|S18_1749|43|166.6|1 -10302|S18_4409|38|82.83|2 -10302|S18_4933|23|70.56|3 -10302|S24_2766|49|75.42|5 -10302|S24_2887|45|104.52|4 -10302|S24_3191|48|74.48|6 -10303|S18_2248|46|56.91|2 -10303|S24_3969|24|35.7|1 -10304|S10_1949|47|201.44|6 -10304|S12_1666|39|117.54|3 -10304|S18_1097|46|106.17|5 -10304|S18_1342|37|95.55|13 -10304|S18_1367|37|46.9|12 -10304|S18_2325|24|102.98|17 -10304|S18_2795|20|141.75|14 -10304|S18_2949|46|98.27|7 -10304|S18_2957|24|54.34|9 -10304|S18_3136|26|90.06|8 -10304|S18_3320|38|95.24|11 -10304|S18_4668|34|44.27|4 -10304|S24_1937|23|29.21|16 -10304|S24_2022|44|42.11|15 -10304|S24_4258|33|80.83|10 -10304|S32_3522|36|52.36|2 -10304|S700_2824|40|80.92|1 -10305|S10_4962|38|130.01|13 -10305|S12_4473|38|107.84|5 -10305|S18_2238|27|132.62|4 -10305|S18_2319|36|117.82|8 -10305|S18_2432|41|58.95|11 -10305|S18_3232|37|160.87|9 -10305|S18_4600|22|112.6|14 -10305|S24_1444|45|48.55|2 -10305|S24_2300|24|107.34|10 -10305|S24_2840|48|30.76|6 -10305|S24_4048|36|118.28|1 -10305|S32_1268|28|94.38|12 -10305|S32_2509|40|48.7|7 -10305|S50_1392|42|109.96|3 -10306|S12_1108|31|182.86|13 -10306|S12_3148|34|145.04|14 -10306|S12_3891|20|145.34|12 -10306|S18_3140|32|114.74|9 -10306|S18_3259|40|83.7|11 -10306|S18_4027|23|126.39|16 -10306|S18_4522|39|85.14|8 -10306|S24_2011|29|109.37|7 -10306|S24_3151|31|76.12|2 -10306|S32_3207|46|60.28|17 -10306|S50_1514|34|51.55|15 -10306|S700_1138|50|61.34|3 -10306|S700_1938|38|73.62|10 -10306|S700_2610|43|62.16|1 -10306|S700_3505|32|99.17|4 -10306|S700_3962|30|87.39|5 -10306|S72_3212|35|48.05|6 -10307|S10_4757|22|118.32|9 -10307|S18_1662|39|135.61|1 -10307|S18_3029|31|71.4|7 -10307|S18_3856|48|92.11|6 -10307|S24_2841|25|58.23|2 -10307|S24_3420|22|64.44|3 -10307|S24_3816|22|75.47|8 -10307|S700_2047|34|81.47|5 -10307|S72_1253|34|44.2|4 -10308|S10_2016|34|115.37|2 -10308|S10_4698|20|187.85|1 -10308|S18_2581|27|81.95|7 -10308|S18_2625|34|48.46|3 -10308|S24_1785|31|99.57|9 -10308|S24_2000|47|68.55|4 -10308|S24_3949|43|58|16 -10308|S24_4278|44|71.73|8 -10308|S32_1374|24|99.89|5 -10308|S32_4289|46|61.22|10 -10308|S50_1341|47|37.09|11 -10308|S700_1691|21|73.07|12 -10308|S700_2466|35|88.75|14 -10308|S700_2834|31|100.85|6 -10308|S700_3167|21|79.2|13 -10308|S700_4002|39|62.93|15 -10309|S10_1678|41|94.74|5 -10309|S12_2823|26|144.6|4 -10309|S24_1578|21|96.92|6 -10309|S24_2360|24|59.56|2 -10309|S32_4485|50|93.89|3 -10309|S50_4713|28|74.04|1 -10310|S12_1099|33|165.38|10 -10310|S12_3380|24|105.7|8 -10310|S12_3990|49|77.41|11 -10310|S12_4675|25|101.34|7 -10310|S18_1129|37|128.8|2 -10310|S18_1889|20|66.99|6 -10310|S18_1984|24|129.45|1 -10310|S18_3232|48|159.18|3 -10310|S18_3278|27|70.76|13 -10310|S18_3482|49|122|12 -10310|S18_3782|42|59.06|16 -10310|S18_4721|40|133.92|15 -10310|S24_2972|33|33.23|4 -10310|S24_3371|38|50.21|9 -10310|S24_3856|45|139.03|5 -10310|S24_4620|49|75.18|14 -10310|S32_2206|36|38.62|17 -10311|S18_1589|29|124.44|9 -10311|S18_2870|43|114.84|10 -10311|S18_3685|32|134.22|11 -10311|S18_4409|41|92.03|1 -10311|S18_4933|25|66.99|2 -10311|S24_1046|26|70.55|6 -10311|S24_1628|45|48.8|8 -10311|S24_2766|28|89.05|4 -10311|S24_2887|43|116.27|3 -10311|S24_3191|25|85.61|5 -10311|S24_3432|46|91.02|7 -10312|S10_1949|48|214.3|3 -10312|S18_1097|32|101.5|2 -10312|S18_1342|43|102.74|10 -10312|S18_1367|25|43.67|9 -10312|S18_1749|48|146.2|17 -10312|S18_2248|30|48.43|16 -10312|S18_2325|31|111.87|14 -10312|S18_2795|25|150.19|11 -10312|S18_2949|37|91.18|4 -10312|S18_2957|35|54.34|6 -10312|S18_3136|38|93.2|5 -10312|S18_3320|33|84.33|8 -10312|S18_4668|39|44.27|1 -10312|S24_1937|39|27.88|13 -10312|S24_2022|23|43.46|12 -10312|S24_3969|31|40.21|15 -10312|S24_4258|44|96.42|7 -10313|S10_4962|40|141.83|7 -10313|S12_1666|21|131.2|11 -10313|S18_2319|29|109.23|2 -10313|S18_2432|34|52.87|5 -10313|S18_3232|25|143.94|3 -10313|S18_4600|28|110.18|8 -10313|S24_2300|42|102.23|4 -10313|S32_1268|27|96.31|6 -10313|S32_2509|38|48.7|1 -10313|S32_3522|34|55.59|10 -10313|S700_2824|30|96.09|9 -10314|S12_1108|38|176.63|5 -10314|S12_3148|46|125.4|6 -10314|S12_3891|36|169.56|4 -10314|S12_4473|45|95.99|14 -10314|S18_2238|42|135.9|13 -10314|S18_3140|20|129.76|1 -10314|S18_3259|23|84.71|3 -10314|S18_4027|29|129.26|8 -10314|S24_1444|44|51.44|11 -10314|S24_2840|39|31.82|15 -10314|S24_4048|38|111.18|10 -10314|S32_3207|35|58.41|9 -10314|S50_1392|28|115.75|12 -10314|S50_1514|38|50.38|7 -10314|S700_1938|23|83.15|2 -10315|S18_4522|36|78.12|7 -10315|S24_2011|35|111.83|6 -10315|S24_3151|24|78.77|1 -10315|S700_1138|41|60.67|2 -10315|S700_3505|31|99.17|3 -10315|S700_3962|37|88.39|4 -10315|S72_3212|40|51.32|5 -10316|S10_4757|33|126.48|17 -10316|S18_1662|27|140.34|9 -10316|S18_3029|21|72.26|15 -10316|S18_3856|47|89.99|14 -10316|S24_1785|25|93.01|1 -10316|S24_2841|34|67.14|10 -10316|S24_3420|47|55.23|11 -10316|S24_3816|25|77.15|16 -10316|S24_3949|30|67.56|8 -10316|S32_4289|24|59.16|2 -10316|S50_1341|34|36.66|3 -10316|S700_1691|34|74.9|4 -10316|S700_2047|45|73.32|13 -10316|S700_2466|23|85.76|6 -10316|S700_2610|48|67.22|18 -10316|S700_3167|48|77.6|5 -10316|S700_4002|44|68.11|7 -10316|S72_1253|34|43.7|12 -10317|S24_4278|35|69.55|1 -10318|S10_1678|46|84.22|1 -10318|S10_2016|45|102.29|4 -10318|S10_4698|37|189.79|3 -10318|S18_2581|31|81.95|9 -10318|S18_2625|42|49.67|5 -10318|S24_1578|48|93.54|2 -10318|S24_2000|26|60.94|6 -10318|S32_1374|47|81.91|7 -10318|S700_2834|50|102.04|8 -10319|S12_2823|30|134.05|9 -10319|S18_3278|46|77.19|1 -10319|S18_3782|44|54.71|4 -10319|S18_4721|45|120.53|3 -10319|S24_2360|31|65.8|7 -10319|S24_4620|43|78.41|2 -10319|S32_2206|29|35|5 -10319|S32_4485|22|96.95|8 -10319|S50_4713|45|79.73|6 -10320|S12_1099|31|184.84|3 -10320|S12_3380|35|102.17|1 -10320|S12_3990|38|63.84|4 -10320|S18_3482|25|139.64|5 -10320|S24_3371|26|60.62|2 -10321|S12_4675|24|105.95|15 -10321|S18_1129|41|123.14|10 -10321|S18_1589|44|120.71|6 -10321|S18_1889|37|73.92|14 -10321|S18_1984|25|142.25|9 -10321|S18_2870|27|126.72|7 -10321|S18_3232|33|164.26|11 -10321|S18_3685|28|138.45|8 -10321|S24_1046|30|68.35|3 -10321|S24_1628|48|42.76|5 -10321|S24_2766|30|74.51|1 -10321|S24_2972|37|31.72|12 -10321|S24_3191|39|81.33|2 -10321|S24_3432|21|103.87|4 -10321|S24_3856|26|137.62|13 -10322|S10_1949|40|180.01|1 -10322|S10_4962|46|141.83|8 -10322|S12_1666|27|136.67|9 -10322|S18_1097|22|101.5|10 -10322|S18_1342|43|92.47|14 -10322|S18_1367|41|44.21|5 -10322|S18_2325|50|120.77|6 -10322|S18_2432|35|57.12|11 -10322|S18_2795|36|158.63|2 -10322|S18_2949|33|100.3|12 -10322|S18_2957|41|54.34|13 -10322|S18_3136|48|90.06|7 -10322|S24_1937|20|26.55|3 -10322|S24_2022|30|40.77|4 -10323|S18_3320|33|88.3|2 -10323|S18_4600|47|96.86|1 -10324|S12_3148|27|148.06|1 -10324|S12_4473|26|100.73|7 -10324|S18_2238|47|142.45|8 -10324|S18_2319|33|105.55|10 -10324|S18_3232|27|137.17|12 -10324|S18_4027|49|120.64|13 -10324|S18_4668|38|49.81|6 -10324|S24_1444|25|49.71|14 -10324|S24_2300|31|107.34|2 -10324|S24_2840|30|29.35|9 -10324|S24_4258|33|95.44|3 -10324|S32_1268|20|91.49|11 -10324|S32_3522|48|60.76|4 -10324|S700_2824|34|80.92|5 -10325|S10_4757|47|111.52|6 -10325|S12_1108|42|193.25|8 -10325|S12_3891|24|166.1|1 -10325|S18_3140|24|114.74|9 -10325|S24_4048|44|114.73|5 -10325|S32_2509|38|44.37|3 -10325|S32_3207|28|55.3|2 -10325|S50_1392|38|99.55|4 -10325|S50_1514|44|56.24|7 -10326|S18_3259|32|94.79|6 -10326|S18_4522|50|73.73|5 -10326|S24_2011|41|120.43|4 -10326|S24_3151|41|86.74|3 -10326|S24_3816|20|81.34|2 -10326|S700_1138|39|60.67|1 -10327|S18_1662|25|154.54|6 -10327|S18_2581|45|74.34|8 -10327|S18_3029|25|74.84|5 -10327|S700_1938|20|79.68|7 -10327|S700_2610|21|65.05|1 -10327|S700_3505|43|85.14|2 -10327|S700_3962|37|83.42|3 -10327|S72_3212|37|48.05|4 -10328|S18_3856|34|104.81|6 -10328|S24_1785|47|87.54|14 -10328|S24_2841|48|67.82|1 -10328|S24_3420|20|56.55|2 -10328|S24_3949|35|55.96|3 -10328|S24_4278|43|69.55|4 -10328|S32_4289|24|57.1|5 -10328|S50_1341|34|42.33|7 -10328|S700_1691|27|84.03|8 -10328|S700_2047|41|75.13|9 -10328|S700_2466|37|95.73|10 -10328|S700_2834|33|117.46|11 -10328|S700_3167|33|71.2|13 -10328|S700_4002|39|69.59|12 -10329|S10_1678|42|80.39|1 -10329|S10_2016|20|109.42|2 -10329|S10_4698|26|164.61|3 -10329|S12_1099|41|182.9|5 -10329|S12_2823|24|128.03|6 -10329|S12_3380|46|117.44|13 -10329|S12_3990|33|74.21|14 -10329|S12_4675|39|102.49|15 -10329|S18_1889|29|66.22|9 -10329|S18_2625|38|55.72|12 -10329|S18_3278|38|65.13|10 -10329|S24_1578|30|104.81|7 -10329|S24_2000|37|71.6|4 -10329|S32_1374|45|80.91|11 -10329|S72_1253|44|41.22|8 -10330|S18_3482|37|136.7|3 -10330|S18_3782|29|59.06|2 -10330|S18_4721|50|133.92|4 -10330|S24_2360|42|56.1|1 -10331|S18_1129|46|120.31|6 -10331|S18_1589|44|99.55|14 -10331|S18_1749|44|154.7|7 -10331|S18_1984|30|135.14|8 -10331|S18_2870|26|130.68|10 -10331|S18_3232|27|169.34|11 -10331|S18_3685|26|132.8|12 -10331|S24_2972|27|37|13 -10331|S24_3371|25|55.11|9 -10331|S24_3856|21|139.03|1 -10331|S24_4620|41|70.33|2 -10331|S32_2206|28|33.39|3 -10331|S32_4485|32|100.01|4 -10331|S50_4713|20|74.04|5 -10332|S18_1342|46|89.38|15 -10332|S18_1367|27|51.21|16 -10332|S18_2248|38|53.88|9 -10332|S18_2325|35|116.96|8 -10332|S18_2795|24|138.38|1 -10332|S18_2957|26|53.09|17 -10332|S18_3136|40|100.53|18 -10332|S18_4409|50|92.03|2 -10332|S18_4933|21|70.56|3 -10332|S24_1046|23|61.73|4 -10332|S24_1628|20|47.29|5 -10332|S24_1937|45|29.87|6 -10332|S24_2022|26|43.01|10 -10332|S24_2766|39|84.51|7 -10332|S24_2887|44|108.04|11 -10332|S24_3191|45|77.91|12 -10332|S24_3432|31|94.23|13 -10332|S24_3969|41|34.47|14 -10333|S10_1949|26|188.58|3 -10333|S12_1666|33|121.64|6 -10333|S18_1097|29|110.84|7 -10333|S18_2949|31|95.23|5 -10333|S18_3320|46|95.24|2 -10333|S18_4668|24|42.26|8 -10333|S24_4258|39|95.44|1 -10333|S32_3522|33|62.05|4 -10334|S10_4962|26|130.01|2 -10334|S18_2319|46|108|6 -10334|S18_2432|34|52.87|1 -10334|S18_3232|20|147.33|3 -10334|S18_4600|49|101.71|4 -10334|S24_2300|42|117.57|5 -10335|S24_2840|33|32.88|2 -10335|S32_1268|44|77.05|1 -10335|S32_2509|40|49.78|3 -10336|S12_1108|33|176.63|10 -10336|S12_3148|33|126.91|11 -10336|S12_3891|49|141.88|1 -10336|S12_4473|38|95.99|3 -10336|S18_2238|49|153.91|6 -10336|S18_3140|48|135.22|12 -10336|S18_3259|21|100.84|7 -10336|S24_1444|45|49.71|4 -10336|S24_4048|31|113.55|5 -10336|S32_3207|31|59.03|9 -10336|S50_1392|23|109.96|8 -10336|S700_2824|46|94.07|2 -10337|S10_4757|25|131.92|8 -10337|S18_4027|36|140.75|3 -10337|S18_4522|29|76.36|2 -10337|S24_2011|29|119.2|4 -10337|S50_1514|21|54.48|6 -10337|S700_1938|36|73.62|9 -10337|S700_3505|31|84.14|1 -10337|S700_3962|36|83.42|7 -10337|S72_3212|42|49.14|5 -10338|S18_1662|41|137.19|1 -10338|S18_3029|28|80.86|3 -10338|S18_3856|45|93.17|2 -10339|S10_2016|40|117.75|4 -10339|S10_4698|39|178.17|3 -10339|S18_2581|27|79.41|2 -10339|S18_2625|30|48.46|1 -10339|S24_1578|27|96.92|10 -10339|S24_1785|21|106.14|7 -10339|S24_2841|55|67.82|12 -10339|S24_3151|55|73.46|13 -10339|S24_3420|29|57.86|14 -10339|S24_3816|42|72.96|16 -10339|S24_3949|45|57.32|11 -10339|S700_1138|22|53.34|5 -10339|S700_2047|55|86.9|15 -10339|S700_2610|50|62.16|9 -10339|S700_4002|50|66.63|8 -10339|S72_1253|27|49.66|6 -10340|S24_2000|55|62.46|8 -10340|S24_4278|40|63.76|1 -10340|S32_1374|55|95.89|2 -10340|S32_4289|39|67.41|3 -10340|S50_1341|40|37.09|4 -10340|S700_1691|30|73.99|5 -10340|S700_2466|55|81.77|7 -10340|S700_2834|29|98.48|6 -10341|S10_1678|41|84.22|9 -10341|S12_1099|45|192.62|2 -10341|S12_2823|55|120.5|8 -10341|S12_3380|44|111.57|1 -10341|S12_3990|36|77.41|10 -10341|S12_4675|55|109.4|7 -10341|S24_2360|32|63.03|6 -10341|S32_4485|31|95.93|4 -10341|S50_4713|38|78.11|3 -10341|S700_3167|34|70.4|5 -10342|S18_1129|40|118.89|2 -10342|S18_1889|55|63.14|1 -10342|S18_1984|22|115.22|3 -10342|S18_3232|30|167.65|4 -10342|S18_3278|25|76.39|5 -10342|S18_3482|55|136.7|7 -10342|S18_3782|26|57.82|8 -10342|S18_4721|38|124.99|11 -10342|S24_2972|39|30.59|9 -10342|S24_3371|48|60.01|10 -10342|S24_3856|42|112.34|6 -10343|S18_1589|36|109.51|4 -10343|S18_2870|25|118.8|3 -10343|S18_3685|44|127.15|2 -10343|S24_1628|27|44.78|6 -10343|S24_4620|30|76.8|1 -10343|S32_2206|29|37.41|5 -10344|S18_1749|45|168.3|1 -10344|S18_2248|40|49.04|2 -10344|S18_2325|30|118.23|3 -10344|S18_4409|21|80.99|4 -10344|S18_4933|26|68.42|5 -10344|S24_1046|29|61|7 -10344|S24_1937|20|27.88|6 -10345|S24_2022|43|38.98|1 -10346|S18_1342|42|88.36|3 -10346|S24_2766|25|87.24|1 -10346|S24_2887|24|117.44|5 -10346|S24_3191|24|80.47|2 -10346|S24_3432|26|103.87|6 -10346|S24_3969|22|38.57|4 -10347|S10_1949|30|188.58|1 -10347|S10_4962|27|132.97|2 -10347|S12_1666|29|132.57|3 -10347|S18_1097|42|113.17|5 -10347|S18_1367|21|46.36|7 -10347|S18_2432|50|51.05|8 -10347|S18_2795|21|136.69|6 -10347|S18_2949|48|84.09|9 -10347|S18_2957|34|60.59|10 -10347|S18_3136|45|95.3|11 -10347|S18_3320|26|84.33|12 -10347|S18_4600|45|115.03|4 -10348|S12_1108|48|207.8|8 -10348|S12_3148|47|122.37|4 -10348|S18_4668|29|43.77|6 -10348|S24_2300|37|107.34|1 -10348|S24_4258|39|82.78|2 -10348|S32_1268|42|90.53|3 -10348|S32_3522|31|62.7|5 -10348|S700_2824|32|100.14|7 -10349|S12_3891|26|166.1|10 -10349|S12_4473|48|114.95|9 -10349|S18_2238|38|142.45|8 -10349|S18_2319|38|117.82|7 -10349|S18_3232|48|164.26|6 -10349|S18_4027|34|140.75|5 -10349|S24_1444|48|50.29|4 -10349|S24_2840|36|31.47|3 -10349|S24_4048|23|111.18|2 -10349|S32_2509|33|44.37|1 -10350|S10_4757|26|110.16|5 -10350|S18_3029|43|84.3|6 -10350|S18_3140|44|135.22|1 -10350|S18_3259|41|94.79|2 -10350|S18_4522|30|70.22|3 -10350|S24_2011|34|98.31|7 -10350|S24_3151|30|86.74|9 -10350|S24_3816|25|77.15|10 -10350|S32_3207|27|61.52|14 -10350|S50_1392|31|104.18|8 -10350|S50_1514|44|56.82|17 -10350|S700_1138|46|56|11 -10350|S700_1938|28|76.22|4 -10350|S700_2610|29|68.67|12 -10350|S700_3505|31|87.15|13 -10350|S700_3962|25|97.32|16 -10350|S72_3212|20|48.05|15 -10351|S18_1662|39|143.5|1 -10351|S18_3856|20|104.81|2 -10351|S24_2841|25|64.4|5 -10351|S24_3420|38|53.92|4 -10351|S24_3949|34|68.24|3 -10352|S700_2047|23|75.13|3 -10352|S700_2466|49|87.75|2 -10352|S700_4002|22|62.19|1 -10352|S72_1253|49|46.18|4 -10353|S18_2581|27|71.81|1 -10353|S24_1785|28|107.23|2 -10353|S24_4278|35|69.55|3 -10353|S32_1374|46|86.9|5 -10353|S32_4289|40|68.1|7 -10353|S50_1341|40|35.78|8 -10353|S700_1691|39|73.07|9 -10353|S700_2834|48|98.48|4 -10353|S700_3167|43|74.4|6 -10354|S10_1678|42|84.22|6 -10354|S10_2016|20|95.15|2 -10354|S10_4698|42|178.17|3 -10354|S12_1099|31|157.6|9 -10354|S12_2823|35|141.58|4 -10354|S12_3380|29|98.65|11 -10354|S12_3990|23|76.61|12 -10354|S12_4675|28|100.19|13 -10354|S18_1889|21|76.23|8 -10354|S18_2625|28|49.06|10 -10354|S18_3278|36|69.15|7 -10354|S24_1578|21|96.92|5 -10354|S24_2000|28|62.46|1 -10355|S18_3482|23|117.59|7 -10355|S18_3782|31|60.3|1 -10355|S18_4721|25|124.99|2 -10355|S24_2360|41|56.1|3 -10355|S24_2972|36|37.38|4 -10355|S24_3371|44|60.62|6 -10355|S24_3856|32|137.62|8 -10355|S24_4620|28|75.18|9 -10355|S32_2206|38|32.99|10 -10355|S32_4485|40|93.89|5 -10356|S18_1129|43|120.31|8 -10356|S18_1342|50|82.19|9 -10356|S18_1367|22|44.75|6 -10356|S18_1984|27|130.87|2 -10356|S18_2325|29|106.79|3 -10356|S18_2795|30|158.63|1 -10356|S24_1937|48|31.86|5 -10356|S24_2022|26|42.11|7 -10356|S50_4713|26|78.11|4 -10357|S10_1949|32|199.3|10 -10357|S10_4962|43|135.92|9 -10357|S12_1666|49|109.34|8 -10357|S18_1097|39|112|1 -10357|S18_2432|41|58.95|7 -10357|S18_2949|41|91.18|6 -10357|S18_2957|49|59.34|5 -10357|S18_3136|44|104.72|4 -10357|S18_3320|25|84.33|3 -10357|S18_4600|28|105.34|2 -10358|S12_3148|49|129.93|5 -10358|S12_4473|42|98.36|9 -10358|S18_2238|20|142.45|10 -10358|S18_2319|20|99.41|11 -10358|S18_3232|32|137.17|12 -10358|S18_4027|25|117.77|13 -10358|S18_4668|30|46.29|8 -10358|S24_1444|44|56.07|14 -10358|S24_2300|41|127.79|7 -10358|S24_2840|36|33.59|4 -10358|S24_4258|41|88.62|6 -10358|S32_1268|41|82.83|1 -10358|S32_3522|36|51.71|2 -10358|S700_2824|27|85.98|3 -10359|S10_4757|48|122.4|6 -10359|S12_1108|42|180.79|8 -10359|S12_3891|49|162.64|5 -10359|S24_4048|22|108.82|7 -10359|S32_2509|36|45.45|3 -10359|S32_3207|22|62.14|1 -10359|S50_1392|46|99.55|2 -10359|S50_1514|25|47.45|4 -10360|S18_1662|50|126.15|12 -10360|S18_2581|41|68.43|13 -10360|S18_3029|46|71.4|14 -10360|S18_3140|29|122.93|8 -10360|S18_3259|29|94.79|18 -10360|S18_3856|40|101.64|15 -10360|S18_4522|40|76.36|1 -10360|S24_1785|22|106.14|17 -10360|S24_2011|31|100.77|2 -10360|S24_2841|49|55.49|16 -10360|S24_3151|36|70.81|3 -10360|S24_3816|22|78.83|4 -10360|S700_1138|32|64.67|5 -10360|S700_1938|26|86.61|6 -10360|S700_2610|30|70.11|7 -10360|S700_3505|35|83.14|9 -10360|S700_3962|31|92.36|10 -10360|S72_3212|31|54.05|11 -10361|S10_1678|20|92.83|13 -10361|S10_2016|26|114.18|8 -10361|S24_3420|34|62.46|6 -10361|S24_3949|26|61.42|7 -10361|S24_4278|25|68.83|1 -10361|S32_4289|49|56.41|2 -10361|S50_1341|33|35.78|3 -10361|S700_1691|20|88.6|4 -10361|S700_2047|24|85.99|14 -10361|S700_2466|26|91.74|9 -10361|S700_2834|44|107.97|5 -10361|S700_3167|44|76.8|10 -10361|S700_4002|35|62.19|11 -10361|S72_1253|23|47.67|12 -10362|S10_4698|22|182.04|4 -10362|S12_2823|22|131.04|1 -10362|S18_2625|23|53.91|3 -10362|S24_1578|50|91.29|2 -10363|S12_1099|33|180.95|3 -10363|S12_3380|34|106.87|4 -10363|S12_3990|34|68.63|5 -10363|S12_4675|46|103.64|6 -10363|S18_1889|22|61.6|7 -10363|S18_3278|46|69.15|10 -10363|S18_3482|24|124.94|11 -10363|S18_3782|32|52.22|12 -10363|S18_4721|28|123.5|13 -10363|S24_2000|21|70.08|8 -10363|S24_2360|43|56.1|14 -10363|S24_3371|21|52.05|15 -10363|S24_3856|31|113.75|1 -10363|S24_4620|43|75.99|9 -10363|S32_1374|50|92.9|2 -10364|S32_2206|48|38.22|1 -10365|S18_1129|30|116.06|1 -10365|S32_4485|22|82.66|3 -10365|S50_4713|44|68.34|2 -10366|S18_1984|34|116.65|3 -10366|S18_2870|49|105.6|2 -10366|S18_3232|34|154.1|1 -10367|S18_1589|49|105.77|1 -10367|S18_1749|37|144.5|3 -10367|S18_2248|45|50.25|4 -10367|S18_2325|27|124.59|5 -10367|S18_2795|32|140.06|7 -10367|S18_3685|46|131.39|6 -10367|S18_4409|43|77.31|8 -10367|S18_4933|44|66.99|9 -10367|S24_1046|21|72.76|10 -10367|S24_1628|38|50.31|11 -10367|S24_1937|23|29.54|13 -10367|S24_2022|28|43.01|12 -10367|S24_2972|36|36.25|2 -10368|S24_2766|40|73.6|2 -10368|S24_2887|31|115.09|5 -10368|S24_3191|46|83.04|1 -10368|S24_3432|20|93.16|4 -10368|S24_3969|46|36.52|3 -10369|S10_1949|41|195.01|2 -10369|S18_1342|44|89.38|8 -10369|S18_1367|32|46.36|7 -10369|S18_2949|42|100.3|1 -10369|S18_2957|28|51.84|6 -10369|S18_3136|21|90.06|5 -10369|S18_3320|45|80.36|4 -10369|S24_4258|40|93.49|3 -10370|S10_4962|35|128.53|4 -10370|S12_1666|49|128.47|8 -10370|S18_1097|27|100.34|1 -10370|S18_2319|22|101.87|5 -10370|S18_2432|22|60.16|7 -10370|S18_3232|27|167.65|9 -10370|S18_4600|29|105.34|6 -10370|S18_4668|20|41.76|2 -10370|S32_3522|25|63.99|3 -10371|S12_1108|32|178.71|6 -10371|S12_4473|49|104.28|4 -10371|S18_2238|25|160.46|7 -10371|S24_1444|25|53.75|12 -10371|S24_2300|20|126.51|5 -10371|S24_2840|45|35.01|8 -10371|S24_4048|28|95.81|9 -10371|S32_1268|26|82.83|1 -10371|S32_2509|20|44.37|2 -10371|S32_3207|30|53.44|11 -10371|S50_1392|48|97.23|10 -10371|S700_2824|34|83.95|3 -10372|S12_3148|40|146.55|4 -10372|S12_3891|34|140.15|1 -10372|S18_3140|28|131.13|3 -10372|S18_3259|25|91.76|5 -10372|S18_4027|48|119.2|6 -10372|S18_4522|41|78.99|7 -10372|S24_2011|37|102|8 -10372|S50_1514|24|56.82|9 -10372|S700_1938|44|74.48|2 -10373|S10_4757|39|118.32|3 -10373|S18_1662|28|143.5|4 -10373|S18_3029|22|75.7|5 -10373|S18_3856|50|99.52|6 -10373|S24_2841|38|58.92|7 -10373|S24_3151|33|82.31|12 -10373|S24_3420|46|53.92|11 -10373|S24_3816|23|83.86|10 -10373|S24_3949|39|62.1|13 -10373|S700_1138|44|58|14 -10373|S700_2047|32|76.94|15 -10373|S700_2610|41|69.39|16 -10373|S700_3505|34|94.16|2 -10373|S700_3962|37|83.42|8 -10373|S700_4002|45|68.11|17 -10373|S72_1253|25|44.2|9 -10373|S72_3212|29|48.05|1 -10374|S10_2016|39|115.37|5 -10374|S10_4698|22|158.8|1 -10374|S18_2581|42|75.19|2 -10374|S18_2625|22|48.46|4 -10374|S24_1578|38|112.7|6 -10374|S24_1785|46|107.23|3 -10375|S10_1678|21|76.56|12 -10375|S12_1099|45|184.84|7 -10375|S12_2823|49|150.62|13 -10375|S24_2000|23|67.03|9 -10375|S24_2360|20|60.26|14 -10375|S24_4278|43|60.13|2 -10375|S32_1374|37|87.9|3 -10375|S32_4289|44|59.85|4 -10375|S32_4485|41|96.95|15 -10375|S50_1341|49|36.22|5 -10375|S50_4713|49|69.16|8 -10375|S700_1691|37|86.77|6 -10375|S700_2466|33|94.73|1 -10375|S700_2834|25|98.48|10 -10375|S700_3167|44|69.6|11 -10376|S12_3380|35|98.65|1 -10377|S12_3990|24|65.44|5 -10377|S12_4675|50|112.86|1 -10377|S18_1129|35|124.56|2 -10377|S18_1889|31|61.6|4 -10377|S18_1984|36|125.18|6 -10377|S18_3232|39|143.94|3 -10378|S18_1589|34|121.95|5 -10378|S18_3278|22|66.74|4 -10378|S18_3482|43|146.99|10 -10378|S18_3782|28|60.3|9 -10378|S18_4721|49|122.02|8 -10378|S24_2972|41|30.59|7 -10378|S24_3371|46|52.66|6 -10378|S24_3856|33|129.2|3 -10378|S24_4620|41|80.84|2 -10378|S32_2206|40|35.8|1 -10379|S18_1749|39|156.4|2 -10379|S18_2248|27|50.85|1 -10379|S18_2870|29|113.52|5 -10379|S18_3685|32|134.22|4 -10379|S24_1628|32|48.8|3 -10380|S18_1342|27|88.36|13 -10380|S18_2325|40|119.5|10 -10380|S18_2795|21|156.94|8 -10380|S18_4409|32|78.23|1 -10380|S18_4933|24|66.99|2 -10380|S24_1046|34|66.88|3 -10380|S24_1937|32|29.87|4 -10380|S24_2022|27|37.63|5 -10380|S24_2766|36|77.24|6 -10380|S24_2887|44|111.57|7 -10380|S24_3191|44|77.05|9 -10380|S24_3432|34|91.02|11 -10380|S24_3969|43|32.82|12 -10381|S10_1949|36|182.16|3 -10381|S10_4962|37|138.88|6 -10381|S12_1666|20|132.57|1 -10381|S18_1097|48|114.34|2 -10381|S18_1367|25|49.6|9 -10381|S18_2432|35|60.77|7 -10381|S18_2949|41|100.3|8 -10381|S18_2957|40|51.22|4 -10381|S18_3136|35|93.2|5 -10382|S12_1108|34|166.24|10 -10382|S12_3148|37|145.04|11 -10382|S12_3891|34|143.61|12 -10382|S12_4473|32|103.1|13 -10382|S18_2238|25|160.46|5 -10382|S18_3320|50|84.33|7 -10382|S18_4600|39|115.03|1 -10382|S18_4668|39|46.29|2 -10382|S24_2300|20|120.12|3 -10382|S24_4258|33|97.39|4 -10382|S32_1268|26|85.72|6 -10382|S32_3522|48|57.53|8 -10382|S700_2824|34|101.15|9 -10383|S18_2319|27|119.05|11 -10383|S18_3140|24|125.66|9 -10383|S18_3232|47|155.79|6 -10383|S18_3259|26|83.7|12 -10383|S18_4027|38|137.88|1 -10383|S18_4522|28|77.24|7 -10383|S24_1444|22|52.6|2 -10383|S24_2840|40|33.24|3 -10383|S24_4048|21|117.1|4 -10383|S32_2509|32|53.57|5 -10383|S32_3207|44|55.93|8 -10383|S50_1392|29|94.92|13 -10383|S50_1514|38|48.62|10 -10384|S10_4757|34|129.2|4 -10384|S24_2011|28|114.29|3 -10384|S24_3151|43|71.69|2 -10384|S700_1938|49|71.02|1 -10385|S24_3816|37|78.83|2 -10385|S700_1138|25|62|1 -10386|S18_1662|25|130.88|7 -10386|S18_2581|21|72.65|18 -10386|S18_3029|37|73.12|5 -10386|S18_3856|22|100.58|6 -10386|S24_1785|33|101.76|11 -10386|S24_2841|39|56.86|1 -10386|S24_3420|35|54.57|9 -10386|S24_3949|41|55.96|12 -10386|S24_4278|50|71.73|8 -10386|S700_2047|29|85.09|13 -10386|S700_2466|37|90.75|14 -10386|S700_2610|37|67.22|10 -10386|S700_3167|32|68|17 -10386|S700_3505|45|83.14|2 -10386|S700_3962|30|80.44|3 -10386|S700_4002|44|59.22|15 -10386|S72_1253|50|47.67|16 -10386|S72_3212|43|52.42|4 -10387|S32_1374|44|79.91|1 -10388|S10_1678|42|80.39|4 -10388|S10_2016|50|118.94|5 -10388|S10_4698|21|156.86|7 -10388|S12_2823|44|125.01|6 -10388|S32_4289|35|58.47|8 -10388|S50_1341|27|41.02|1 -10388|S700_1691|46|74.9|2 -10388|S700_2834|50|111.53|3 -10389|S12_1099|26|182.9|4 -10389|S12_3380|25|95.13|6 -10389|S12_3990|36|76.61|7 -10389|S12_4675|47|102.49|8 -10389|S18_1889|49|63.91|3 -10389|S18_2625|39|52.09|5 -10389|S24_1578|45|112.7|1 -10389|S24_2000|49|61.7|2 -10390|S18_1129|36|117.48|14 -10390|S18_1984|34|132.29|15 -10390|S18_2325|31|102.98|16 -10390|S18_2795|26|162|7 -10390|S18_3278|40|75.59|9 -10390|S18_3482|50|135.23|1 -10390|S18_3782|36|54.09|2 -10390|S18_4721|49|122.02|3 -10390|S24_2360|35|67.87|4 -10390|S24_2972|37|35.87|5 -10390|S24_3371|46|51.43|6 -10390|S24_3856|45|134.81|8 -10390|S24_4620|30|66.29|10 -10390|S32_2206|41|39.02|11 -10390|S32_4485|45|101.03|12 -10390|S50_4713|22|81.36|13 -10391|S10_1949|24|195.01|4 -10391|S10_4962|37|121.15|7 -10391|S12_1666|39|110.7|9 -10391|S18_1097|29|114.34|10 -10391|S18_1342|35|102.74|2 -10391|S18_1367|42|47.44|3 -10391|S18_2432|44|57.73|5 -10391|S18_2949|32|99.28|6 -10391|S24_1937|33|26.55|8 -10391|S24_2022|24|36.29|1 -10392|S18_2957|37|61.21|3 -10392|S18_3136|29|103.67|2 -10392|S18_3320|36|98.22|1 -10393|S12_3148|35|145.04|8 -10393|S12_4473|32|99.54|10 -10393|S18_2238|20|137.53|11 -10393|S18_2319|38|104.32|7 -10393|S18_4600|30|106.55|9 -10393|S18_4668|44|41.76|1 -10393|S24_2300|33|112.46|2 -10393|S24_4258|33|88.62|3 -10393|S32_1268|38|84.75|4 -10393|S32_3522|31|63.35|5 -10393|S700_2824|21|83.95|6 -10394|S18_3232|22|135.47|5 -10394|S18_4027|37|124.95|1 -10394|S24_1444|31|53.18|2 -10394|S24_2840|46|35.36|6 -10394|S24_4048|37|104.09|7 -10394|S32_2509|36|47.08|3 -10394|S32_3207|30|55.93|4 -10395|S10_4757|32|125.12|2 -10395|S12_1108|33|205.72|1 -10395|S50_1392|46|98.39|4 -10395|S50_1514|45|57.99|3 -10396|S12_3891|33|155.72|3 -10396|S18_3140|33|129.76|2 -10396|S18_3259|24|91.76|4 -10396|S18_4522|45|83.38|5 -10396|S24_2011|49|100.77|6 -10396|S24_3151|27|77|7 -10396|S24_3816|37|77.99|8 -10396|S700_1138|39|62|1 -10397|S700_1938|32|69.29|5 -10397|S700_2610|22|62.88|4 -10397|S700_3505|48|86.15|3 -10397|S700_3962|36|80.44|2 -10397|S72_3212|34|52.96|1 -10398|S18_1662|33|130.88|11 -10398|S18_2581|34|82.79|15 -10398|S18_3029|28|70.54|18 -10398|S18_3856|45|92.11|17 -10398|S24_1785|43|100.67|16 -10398|S24_2841|28|60.29|3 -10398|S24_3420|34|61.15|13 -10398|S24_3949|41|56.64|2 -10398|S24_4278|45|65.93|14 -10398|S32_4289|22|60.54|4 -10398|S50_1341|49|38.84|5 -10398|S700_1691|47|78.55|6 -10398|S700_2047|36|75.13|7 -10398|S700_2466|22|98.72|8 -10398|S700_2834|23|102.04|9 -10398|S700_3167|29|76.8|10 -10398|S700_4002|36|62.19|12 -10398|S72_1253|34|41.22|1 -10399|S10_1678|40|77.52|8 -10399|S10_2016|51|99.91|7 -10399|S10_4698|22|156.86|6 -10399|S12_2823|29|123.51|5 -10399|S18_2625|30|51.48|4 -10399|S24_1578|57|104.81|3 -10399|S24_2000|58|75.41|2 -10399|S32_1374|32|97.89|1 -10400|S10_4757|64|134.64|9 -10400|S18_1662|34|129.31|1 -10400|S18_3029|30|74.84|7 -10400|S18_3856|58|88.93|6 -10400|S24_2841|24|55.49|2 -10400|S24_3420|38|59.18|3 -10400|S24_3816|42|74.64|8 -10400|S700_2047|46|82.37|5 -10400|S72_1253|20|41.71|4 -10401|S18_2581|42|75.19|3 -10401|S24_1785|38|87.54|5 -10401|S24_3949|64|59.37|12 -10401|S24_4278|52|65.93|4 -10401|S32_1374|49|81.91|1 -10401|S32_4289|62|62.6|6 -10401|S50_1341|56|41.46|7 -10401|S700_1691|11|77.64|8 -10401|S700_2466|85|98.72|10 -10401|S700_2834|21|96.11|2 -10401|S700_3167|77|73.6|9 -10401|S700_4002|40|66.63|11 -10402|S10_2016|45|118.94|1 -10402|S18_2625|55|58.15|2 -10402|S24_2000|59|61.7|3 -10403|S10_1678|24|85.17|7 -10403|S10_4698|66|174.29|9 -10403|S12_2823|66|122|6 -10403|S18_3782|36|55.33|1 -10403|S24_1578|46|109.32|8 -10403|S24_2360|27|57.49|4 -10403|S32_2206|30|35.8|2 -10403|S32_4485|45|88.78|5 -10403|S50_4713|31|65.09|3 -10404|S12_1099|64|163.44|3 -10404|S12_3380|43|102.17|1 -10404|S12_3990|77|67.03|4 -10404|S18_3278|90|67.54|6 -10404|S18_3482|28|127.88|5 -10404|S18_4721|48|124.99|8 -10404|S24_3371|49|53.27|2 -10404|S24_4620|48|65.48|7 -10405|S12_4675|97|115.16|5 -10405|S18_1889|61|72.38|4 -10405|S18_3232|55|147.33|1 -10405|S24_2972|47|37.38|2 -10405|S24_3856|76|127.79|3 -10406|S18_1129|61|124.56|3 -10406|S18_1984|48|133.72|2 -10406|S18_3685|65|117.26|1 -10407|S18_1589|59|114.48|11 -10407|S18_1749|76|141.1|2 -10407|S18_2248|42|58.12|1 -10407|S18_2870|41|132|12 -10407|S18_4409|6|91.11|3 -10407|S18_4933|66|64.14|4 -10407|S24_1046|26|68.35|8 -10407|S24_1628|64|45.78|10 -10407|S24_2766|76|81.78|6 -10407|S24_2887|59|98.65|5 -10407|S24_3191|13|77.05|7 -10407|S24_3432|43|101.73|9 -10408|S24_3969|15|41.03|1 -10409|S18_2325|6|104.25|2 -10409|S24_1937|61|27.88|1 -10410|S18_1342|65|99.66|7 -10410|S18_1367|44|51.21|6 -10410|S18_2795|56|145.13|8 -10410|S18_2949|47|93.21|1 -10410|S18_2957|53|49.97|3 -10410|S18_3136|34|84.82|2 -10410|S18_3320|44|81.35|5 -10410|S24_2022|31|42.56|9 -10410|S24_4258|50|95.44|4 -10411|S10_1949|23|205.73|9 -10411|S10_4962|27|144.79|2 -10411|S12_1666|40|110.7|6 -10411|S18_1097|27|109.67|8 -10411|S18_4600|46|106.55|3 -10411|S18_4668|35|41.25|7 -10411|S32_1268|26|78.01|1 -10411|S32_3522|27|60.76|5 -10411|S700_2824|34|89.01|4 -10412|S12_4473|54|100.73|5 -10412|S18_2238|41|150.63|4 -10412|S18_2319|56|120.28|8 -10412|S18_2432|47|49.83|11 -10412|S18_3232|60|157.49|9 -10412|S24_1444|21|47.4|2 -10412|S24_2300|70|109.9|10 -10412|S24_2840|30|32.88|6 -10412|S24_4048|31|108.82|1 -10412|S32_2509|19|50.86|7 -10412|S50_1392|26|105.33|3 -10413|S12_1108|36|201.57|2 -10413|S12_3148|47|145.04|3 -10413|S12_3891|22|173.02|1 -10413|S18_4027|49|133.57|5 -10413|S32_3207|24|56.55|6 -10413|S50_1514|51|53.31|4 -10414|S10_4757|49|114.24|3 -10414|S18_3029|44|77.42|1 -10414|S18_3140|41|128.39|12 -10414|S18_3259|48|85.71|14 -10414|S18_4522|56|83.38|11 -10414|S24_2011|43|108.14|10 -10414|S24_3151|60|72.58|5 -10414|S24_3816|51|72.96|2 -10414|S700_1138|37|62|6 -10414|S700_1938|34|74.48|13 -10414|S700_2610|31|61.44|4 -10414|S700_3505|28|84.14|7 -10414|S700_3962|40|84.41|8 -10414|S72_3212|47|54.6|9 -10415|S18_3856|51|86.81|5 -10415|S24_2841|21|60.97|1 -10415|S24_3420|18|59.83|2 -10415|S700_2047|32|73.32|4 -10415|S72_1253|42|43.2|3 -10416|S18_1662|24|129.31|14 -10416|S18_2581|15|70.96|4 -10416|S24_1785|47|90.82|6 -10416|S24_2000|32|62.46|1 -10416|S24_3949|18|64.83|13 -10416|S24_4278|48|70.28|5 -10416|S32_1374|45|86.9|2 -10416|S32_4289|26|68.1|7 -10416|S50_1341|37|39.71|8 -10416|S700_1691|23|88.6|9 -10416|S700_2466|22|84.76|11 -10416|S700_2834|41|98.48|3 -10416|S700_3167|39|65.6|10 -10416|S700_4002|43|63.67|12 -10417|S10_1678|66|79.43|2 -10417|S10_2016|45|116.56|5 -10417|S10_4698|56|162.67|4 -10417|S12_2823|21|144.6|1 -10417|S18_2625|36|58.75|6 -10417|S24_1578|35|109.32|3 -10418|S18_3278|16|70.76|2 -10418|S18_3482|27|139.64|1 -10418|S18_3782|33|56.57|5 -10418|S18_4721|28|120.53|4 -10418|S24_2360|52|64.41|8 -10418|S24_4620|10|66.29|3 -10418|S32_2206|43|36.61|6 -10418|S32_4485|50|100.01|9 -10418|S50_4713|40|72.41|7 -10419|S12_1099|12|182.9|13 -10419|S12_3380|10|111.57|11 -10419|S12_3990|34|64.64|14 -10419|S12_4675|32|99.04|10 -10419|S18_1129|38|117.48|5 -10419|S18_1589|37|100.8|1 -10419|S18_1889|39|67.76|9 -10419|S18_1984|34|133.72|4 -10419|S18_2870|55|116.16|2 -10419|S18_3232|35|165.95|6 -10419|S18_3685|43|114.44|3 -10419|S24_2972|15|32.1|7 -10419|S24_3371|55|52.66|12 -10419|S24_3856|70|112.34|8 -10420|S18_1749|37|153|5 -10420|S18_2248|36|52.06|4 -10420|S18_2325|45|116.96|2 -10420|S18_4409|66|73.62|6 -10420|S18_4933|36|68.42|7 -10420|S24_1046|60|60.26|11 -10420|S24_1628|37|48.8|13 -10420|S24_1937|45|32.19|1 -10420|S24_2766|39|76.33|9 -10420|S24_2887|55|115.09|8 -10420|S24_3191|35|77.05|10 -10420|S24_3432|26|104.94|12 -10420|S24_3969|15|35.29|3 -10421|S18_2795|35|167.06|1 -10421|S24_2022|40|44.8|2 -10422|S18_1342|51|91.44|2 -10422|S18_1367|25|47.44|1 -10423|S18_2949|10|89.15|1 -10423|S18_2957|31|56.21|3 -10423|S18_3136|21|98.44|2 -10423|S18_3320|21|80.36|5 -10423|S24_4258|28|78.89|4 -10424|S10_1949|50|201.44|6 -10424|S12_1666|49|121.64|3 -10424|S18_1097|54|108.5|5 -10424|S18_4668|26|40.25|4 -10424|S32_3522|44|54.94|2 -10424|S700_2824|46|85.98|1 -10425|S10_4962|38|131.49|12 -10425|S12_4473|33|95.99|4 -10425|S18_2238|28|147.36|3 -10425|S18_2319|38|117.82|7 -10425|S18_2432|19|48.62|10 -10425|S18_3232|28|140.55|8 -10425|S18_4600|38|107.76|13 -10425|S24_1444|55|53.75|1 -10425|S24_2300|49|127.79|9 -10425|S24_2840|31|31.82|5 -10425|S32_1268|41|83.79|11 -10425|S32_2509|11|50.32|6 -10425|S50_1392|18|94.92|2 diff --git a/WebGoat/DB_Scripts/datafiles/orders.txt b/WebGoat/DB_Scripts/datafiles/orders.txt deleted file mode 100644 index 8b8a94cef..000000000 --- a/WebGoat/DB_Scripts/datafiles/orders.txt +++ /dev/null @@ -1,326 +0,0 @@ -10100|2010-01-06|2010-01-13|2010-01-10|Shipped|NULL|363 -10101|2010-01-09|2010-01-18|2010-01-11|Shipped|Check on availability.|128 -10102|2010-01-10|2010-01-18|2010-01-14|Shipped|NULL|181 -10103|2010-01-29|2010-02-07|2010-02-02|Shipped|NULL|121 -10104|2010-01-31|2010-02-09|2010-02-01|Shipped|NULL|141 -10105|2010-02-11|2010-02-21|2010-02-12|Shipped|NULL|145 -10106|2010-02-17|2010-02-24|2010-02-21|Shipped|NULL|278 -10107|2010-02-24|2010-03-03|2010-02-26|Shipped|Difficult to negotiate with customer. We need more marketing materials|131 -10108|2010-03-03|2010-03-12|2010-03-08|Shipped|NULL|385 -10109|2010-03-10|2010-03-19|2010-03-11|Shipped|Customer requested that FedEx Ground is used for this shipping|486 -10110|2010-03-18|2010-03-24|2010-03-20|Shipped|NULL|187 -10111|2010-03-25|2010-03-31|2010-03-30|Shipped|NULL|129 -10112|2010-03-24|2010-04-03|2010-03-29|Shipped|Customer requested that ad materials (such as posters| -10113|2010-03-26|2010-04-02|2010-03-27|Shipped|NULL|124 -10114|2010-04-01|2010-04-07|2010-04-02|Shipped|NULL|172 -10115|2010-04-04|2010-04-12|2010-04-07|Shipped|NULL|424 -10116|2010-04-11|2010-04-19|2010-04-13|Shipped|NULL|381 -10117|2010-04-16|2010-04-24|2010-04-17|Shipped|NULL|148 -10118|2010-04-21|2010-04-29|2010-04-26|Shipped|Customer has worked with some of our vendors in the past and is aware of their MSRP|216 -10119|2010-04-28|2010-05-05|2010-05-02|Shipped|NULL|382 -10120|2010-04-29|2010-05-08|2010-05-01|Shipped|NULL|114 -10121|2010-05-07|2010-05-13|2010-05-13|Shipped|NULL|353 -10122|2010-05-08|2010-05-16|2010-05-13|Shipped|NULL|350 -10123|2010-05-20|2010-05-29|2010-05-22|Shipped|NULL|103 -10124|2010-05-21|2010-05-29|2010-05-25|Shipped|Customer very concerned about the exact color of the coins. There is high risk that he may dispute the order because there is a slight color mismatch|112 -10125|2010-05-21|2010-05-27|2010-05-24|Shipped|NULL|114 -10126|2010-05-28|2010-06-07|2010-06-02|Shipped|NULL|458 -10127|2010-06-03|2010-06-09|2010-06-06|Shipped|Customer requested special shippment. The instructions were passed along to the warehouse|151 -10128|2010-06-06|2010-06-12|2010-06-11|Shipped|NULL|141 -10129|2010-06-12|2010-06-18|2010-06-14|Shipped|NULL|324 -10130|2010-06-16|2010-06-24|2010-06-21|Shipped|NULL|198 -10131|2010-06-16|2010-06-25|2010-06-21|Shipped|NULL|447 -10132|2010-06-25|2010-07-01|2010-06-28|Shipped|NULL|323 -10133|2010-06-27|2010-07-04|2010-07-03|Shipped|NULL|141 -10134|2010-07-01|2010-07-10|2010-07-05|Shipped|NULL|250 -10135|2010-07-02|2010-07-12|2010-07-03|Shipped|NULL|124 -10136|2010-07-04|2010-07-14|2010-07-06|Shipped|Customer is interested in buying more US Eagles coins|242 -10137|2010-07-10|2010-07-20|2010-07-14|Shipped|NULL|353 -10138|2010-07-07|2010-07-16|2010-07-13|Shipped|NULL|496 -10139|2010-07-16|2010-07-23|2010-07-21|Shipped|NULL|282 -10140|2010-07-24|2010-08-02|2010-07-30|Shipped|NULL|161 -10141|2010-08-01|2010-08-09|2010-08-04|Shipped|NULL|334 -10142|2010-08-08|2010-08-16|2010-08-13|Shipped|NULL|124 -10143|2010-08-10|2010-08-18|2010-08-12|Shipped|Can we deliver the new maple leaf coins by end-of-quarter?|320 -10144|2010-08-13|2010-08-21|2010-08-14|Shipped|NULL|381 -10145|2010-08-25|2010-09-02|2010-08-31|Shipped|NULL|205 -10146|2010-09-03|2010-09-13|2010-09-06|Shipped|NULL|447 -10147|2010-09-05|2010-09-12|2010-09-09|Shipped|NULL|379 -10148|2010-09-11|2010-09-21|2010-09-15|Shipped|They want to reevaluate their terms agreement with Finance.|276 -10149|2010-09-12|2010-09-18|2010-09-17|Shipped|NULL|487 -10150|2010-09-19|2010-09-27|2010-09-21|Shipped|They want to reevaluate their terms agreement with Finance.|148 -10151|2010-09-21|2010-09-30|2010-09-24|Shipped|NULL|311 -10152|2010-09-25|2010-10-03|2010-10-01|Shipped|NULL|333 -10153|2010-09-28|2010-10-05|2010-10-03|Shipped|NULL|141 -10154|2010-10-02|2010-10-12|2010-10-08|Shipped|NULL|219 -10155|2010-10-06|2010-10-13|2010-10-07|Shipped|NULL|186 -10156|2010-10-08|2010-10-17|2010-10-11|Shipped|NULL|141 -10157|2010-10-09|2010-10-15|2010-10-14|Shipped|NULL|473 -10158|2010-10-10|2010-10-18|2010-10-15|Shipped|NULL|121 -10159|2010-10-10|2010-10-19|2010-10-16|Shipped|NULL|321 -10160|2010-10-11|2010-10-17|2010-10-17|Shipped|NULL|347 -10161|2010-10-17|2010-10-25|2010-10-20|Shipped|NULL|227 -10162|2010-10-18|2010-10-26|2010-10-19|Shipped|NULL|321 -10163|2010-10-20|2010-10-27|2010-10-24|Shipped|NULL|424 -10164|2010-10-21|2010-10-30|2010-10-23|Resolved|This order was disputed| -10165|2010-10-22|2010-10-31|2010-12-26|Shipped|This order was on hold because customers's credit limit had been exceeded. Order will ship when payment is received|148 -10166|2010-10-21|2010-10-30|2010-10-27|Shipped|NULL|462 -10167|2010-10-23|2010-10-30|NULL|Cancelled|Customer called to cancel. The warehouse was notified in time and the order didn't ship. They have a new VP of Sales and are shifting their sales model. Our VP of Sales should contact them.|448 -10168|2010-10-28|2010-11-03|2010-11-01|Shipped|NULL|161 -10169|2010-11-04|2010-11-14|2010-11-09|Shipped|NULL|276 -10170|2010-11-04|2010-11-12|2010-11-07|Shipped|NULL|452 -10171|2010-11-05|2010-11-13|2010-11-07|Shipped|NULL|233 -10172|2010-11-05|2010-11-14|2010-11-11|Shipped|NULL|175 -10173|2010-11-05|2010-11-15|2010-11-09|Shipped|Cautious optimism. We have happy customers here| -10174|2010-11-06|2010-11-15|2010-11-10|Shipped|NULL|333 -10175|2010-11-06|2010-11-14|2010-11-09|Shipped|NULL|324 -10176|2010-11-06|2010-11-15|2010-11-12|Shipped|NULL|386 -10177|2010-11-07|2010-11-17|2010-11-12|Shipped|NULL|344 -10178|2010-11-08|2010-11-16|2010-11-10|Shipped|Custom shipping instructions sent to warehouse|242 -10179|2010-11-11|2010-11-17|2010-11-13|Cancelled|Customer cancelled due to urgent budgeting issues. Must be cautious when dealing with them in the future. Since order shipped already we must discuss who would cover the shipping charges.|496 -10180|2010-11-11|2010-11-19|2010-11-14|Shipped|NULL|171 -10181|2010-11-12|2010-11-19|2010-11-15|Shipped|NULL|167 -10182|2010-11-12|2010-11-21|2010-11-18|Shipped|NULL|124 -10183|2010-11-13|2010-11-22|2010-11-15|Shipped|We need to keep in close contact with their Marketing VP. He is the decision maker for all their purchases.|339 -10184|2010-11-14|2010-11-22|2010-11-20|Shipped|NULL|484 -10185|2010-11-14|2010-11-21|2010-11-20|Shipped|NULL|320 -10186|2010-11-14|2010-11-20|2010-11-18|Shipped|They want to reevaluate their terms agreement with the VP of Sales|489 -10187|2010-11-15|2010-11-24|2010-11-16|Shipped|NULL|211 -10188|2010-11-18|2010-11-26|2010-11-24|Shipped|NULL|167 -10189|2010-11-18|2010-11-25|2010-11-24|Shipped|They want to reevaluate their terms agreement with Finance.|205 -10190|2010-11-19|2010-11-29|2010-11-20|Shipped|NULL|141 -10191|2010-11-20|2010-11-30|2010-11-24|Shipped|We must be cautions with this customer. Their VP of Sales resigned. Company may be heading down.|259 -10192|2010-11-20|2010-11-29|2010-11-25|Shipped|NULL|363 -10193|2010-11-21|2010-11-28|2010-11-27|Shipped|NULL|471 -10194|2010-11-25|2010-12-02|2010-11-26|Shipped|NULL|146 -10195|2010-11-25|2010-12-01|2010-11-28|Shipped|NULL|319 -10196|2010-11-26|2010-12-03|2010-12-01|Shipped|NULL|455 -10197|2010-11-26|2010-12-02|2010-12-01|Shipped|Customer inquired about silver coins and gold coins.|216 -10198|2010-11-27|2010-12-06|2010-12-03|Shipped|NULL|385 -10199|2010-12-01|2010-12-10|2010-12-06|Shipped|NULL|475 -10200|2010-12-01|2010-12-09|2010-12-06|Shipped|NULL|211 -10201|2010-12-01|2010-12-11|2010-12-02|Shipped|NULL|129 -10202|2010-12-02|2010-12-09|2010-12-06|Shipped|NULL|357 -10203|2010-12-02|2010-12-11|2010-12-07|Shipped|NULL|141 -10204|2010-12-02|2010-12-10|2010-12-04|Shipped|NULL|151 -10205|2010-12-03|2010-12-09|2010-12-07|Shipped| I need all the information I can get on our competitors.|141 -10206|2010-12-05|2010-12-13|2010-12-08|Shipped|Can we renegotiate this one?|202 -10207|2010-12-09|2010-12-17|2010-12-11|Shipped|Check on availability.|495 -10208|2011-01-02|2011-01-11|2011-01-04|Shipped|NULL|146 -10209|2011-01-09|2011-01-15|2011-01-12|Shipped|NULL|347 -10210|2011-01-12|2011-01-22|2011-01-20|Shipped|NULL|177 -10211|2011-01-15|2011-01-25|2011-01-18|Shipped|NULL|406 -10212|2011-01-16|2011-01-24|2011-01-18|Shipped|NULL|141 -10213|2011-01-22|2011-01-28|2011-01-27|Shipped|Difficult to negotiate with customer. We need more marketing materials|489 -10214|2011-01-26|2011-02-04|2011-01-29|Shipped|NULL|458 -10215|2011-01-29|2011-02-08|2011-02-01|Shipped|Customer requested that FedEx Ground is used for this shipping|475 -10216|2011-02-02|2011-02-10|2011-02-04|Shipped|NULL|256 -10217|2011-02-04|2011-02-14|2011-02-06|Shipped|NULL|166 -10218|2011-02-09|2011-02-16|2011-02-11|Shipped|Customer requested that ad materials (such as posters| -10219|2011-02-10|2011-02-17|2011-02-12|Shipped|NULL|487 -10220|2011-02-12|2011-02-19|2011-02-16|Shipped|NULL|189 -10221|2011-02-18|2011-02-26|2011-02-19|Shipped|NULL|314 -10222|2011-02-19|2011-02-27|2011-02-20|Shipped|NULL|239 -10223|2011-02-20|2011-02-28|2011-02-24|Shipped|NULL|114 -10224|2011-02-21|2011-03-02|2011-02-26|Shipped|Customer has worked with some of our vendors in the past and is aware of their MSRP|171 -10225|2011-02-22|2011-03-01|2011-02-24|Shipped|NULL|298 -10226|2011-02-26|2011-03-06|2011-03-02|Shipped|NULL|239 -10227|2011-03-02|2011-03-12|2011-03-08|Shipped|NULL|146 -10228|2011-03-10|2011-03-18|2011-03-13|Shipped|NULL|173 -10229|2011-03-11|2011-03-20|2011-03-12|Shipped|NULL|124 -10230|2011-03-15|2011-03-24|2011-03-20|Shipped|Customer very concerned about the exact color of the coins. There is high risk that he may dispute the order because there is a slight color mismatch|128 -10231|2011-03-19|2011-03-26|2011-03-25|Shipped|NULL|344 -10232|2011-03-20|2011-03-30|2011-03-25|Shipped|NULL|240 -10233|2011-03-29|2011-04-04|2011-04-02|Shipped|Customer requested special shippment. The instructions were passed along to the warehouse|328 -10234|2011-03-30|2011-04-05|2011-04-02|Shipped|NULL|412 -10235|2011-04-02|2011-04-12|2011-04-06|Shipped|NULL|260 -10236|2011-04-03|2011-04-11|2011-04-08|Shipped|NULL|486 -10237|2011-04-05|2011-04-12|2011-04-10|Shipped|NULL|181 -10238|2011-04-09|2011-04-16|2011-04-10|Shipped|NULL|145 -10239|2011-04-12|2011-04-21|2011-04-17|Shipped|NULL|311 -10240|2011-04-13|2011-04-20|2011-04-20|Shipped|NULL|177 -10241|2011-04-13|2011-04-20|2011-04-19|Shipped|NULL|209 -10242|2011-04-20|2011-04-28|2011-04-25|Shipped|Customer is interested in buying more krugerrand coins|456 -10243|2011-04-26|2011-05-03|2011-04-28|Shipped|NULL|495 -10244|2011-04-29|2011-05-09|2011-05-04|Shipped|NULL|141 -10245|2011-05-04|2011-05-12|2011-05-09|Shipped|NULL|455 -10246|2011-05-05|2011-05-13|2011-05-06|Shipped|NULL|141 -10247|2011-05-05|2011-05-11|2011-05-08|Shipped|NULL|334 -10248|2011-05-07|2011-05-14|NULL|Cancelled|Order was mistakenly placed. The warehouse noticed the lack of documentation.|131 -10249|2011-05-08|2011-05-17|2011-05-11|Shipped|Can we deliver the new krugerrand coins by end-of-quarter?|173 -10250|2011-05-11|2011-05-19|2011-05-15|Shipped|NULL|450 -10251|2011-05-18|2011-05-24|2011-05-24|Shipped|NULL|328 -10252|2011-05-26|2011-06-04|2011-05-29|Shipped|NULL|406 -10253|2011-06-01|2011-06-09|2011-06-02|Cancelled|Customer disputed the order and we agreed to cancel it. We must be more cautions with this customer going forward| -10254|2011-06-03|2011-06-13|2011-06-04|Shipped|Customer requested that DHL is used for this shipping|323 -10255|2011-06-04|2011-06-12|2011-06-09|Shipped|NULL|209 -10256|2011-06-08|2011-06-16|2011-06-10|Shipped|NULL|145 -10257|2011-06-14|2011-06-24|2011-06-15|Shipped|NULL|450 -10258|2011-06-15|2011-06-25|2011-06-23|Shipped|NULL|398 -10259|2011-06-15|2011-06-22|2011-06-17|Shipped|NULL|166 -10260|2011-06-16|2011-06-22|NULL|Cancelled|Customer heard complaints from their customers and called to cancel this order. Will notify the Sales Manager.|357 -10261|2011-06-17|2011-06-25|2011-06-22|Shipped|NULL|233 -10262|2011-06-24|2011-07-01|NULL|Cancelled|This customer found a better offer from one of our competitors. Will call back to renegotiate.|141 -10263|2011-06-28|2011-07-04|2011-07-02|Shipped|NULL|175 -10264|2011-06-30|2011-07-06|2011-07-01|Shipped|Customer will send a truck to our local warehouse on 7-1-2011|362 -10265|2011-07-02|2011-07-09|2011-07-07|Shipped|NULL|471 -10266|2011-07-06|2011-07-14|2011-07-10|Shipped|NULL|386 -10267|2011-07-07|2011-07-17|2011-07-09|Shipped|NULL|151 -10268|2011-07-12|2011-07-18|2011-07-14|Shipped|NULL|412 -10269|2011-07-16|2011-07-22|2011-07-18|Shipped|NULL|382 -10270|2011-07-19|2011-07-27|2011-07-24|Shipped|Can we renegotiate this one?|282 -10271|2011-07-20|2011-07-29|2011-07-23|Shipped|NULL|124 -10272|2011-07-20|2011-07-26|2011-07-22|Shipped|NULL|157 -10273|2011-07-21|2011-07-28|2011-07-22|Shipped|NULL|314 -10274|2011-07-21|2011-07-29|2011-07-22|Shipped|NULL|379 -10275|2011-07-23|2011-08-02|2011-07-29|Shipped|NULL|119 -10276|2011-08-02|2011-08-11|2011-08-08|Shipped|NULL|204 -10277|2011-08-04|2011-08-12|2011-08-05|Shipped|NULL|148 -10278|2011-08-06|2011-08-16|2011-08-09|Shipped|NULL|112 -10279|2011-08-09|2011-08-19|2011-08-15|Shipped|Cautious optimism. We have happy customers here| -10280|2011-08-17|2011-08-27|2011-08-19|Shipped|NULL|249 -10281|2011-08-19|2011-08-28|2011-08-23|Shipped|NULL|157 -10282|2011-08-20|2011-08-26|2011-08-22|Shipped|NULL|124 -10283|2011-08-20|2011-08-30|2011-08-23|Shipped|NULL|260 -10284|2011-08-21|2011-08-29|2011-08-26|Shipped|Custom shipping instructions sent to warehouse|299 -10285|2011-08-27|2011-09-04|2011-08-31|Shipped|NULL|286 -10286|2011-08-28|2011-09-06|2011-09-01|Shipped|NULL|172 -10287|2011-08-30|2011-09-06|2011-09-01|Shipped|NULL|298 -10288|2011-09-01|2011-09-11|2011-09-05|Shipped|NULL|166 -10289|2011-09-03|2011-09-13|2011-09-04|Shipped|We need to keep in close contact with their Marketing VP. He is the decision maker for all their purchases.|167 -10290|2011-09-07|2011-09-15|2011-09-13|Shipped|NULL|198 -10291|2011-09-08|2011-09-17|2011-09-14|Shipped|NULL|448 -10292|2011-09-08|2011-09-18|2011-09-11|Shipped|They want to reevaluate their terms agreement with Finance.|131 -10293|2011-09-09|2011-09-18|2011-09-14|Shipped|NULL|249 -10294|2011-09-10|2011-09-17|2011-09-14|Shipped|NULL|204 -10295|2011-09-10|2011-09-17|2011-09-14|Shipped|They want to reevaluate their terms agreement with Finance.|362 -10296|2011-09-15|2011-09-22|2011-09-16|Shipped|NULL|415 -10297|2011-09-16|2011-09-22|2011-09-21|Shipped|We must be cautions with this customer. Their VP of Sales resigned. Company may be heading down.|189 -10298|2011-09-27|2011-10-05|2011-10-01|Shipped|NULL|103 -10299|2011-09-30|2011-10-10|2011-10-01|Shipped|NULL|186 -10300|2010-10-04|2010-10-13|2010-10-09|Shipped|NULL|128 -10301|2010-10-05|2010-10-15|2010-10-08|Shipped|NULL|299 -10302|2010-10-06|2010-10-16|2010-10-07|Shipped|NULL|201 -10303|2011-10-06|2011-10-14|2011-10-09|Shipped|Customer inquired about half ounce and one ounce gold coins.|484 -10304|2011-10-11|2011-10-20|2011-10-17|Shipped|NULL|256 -10305|2011-10-13|2011-10-22|2011-10-15|Shipped|Check on availability.|286 -10306|2011-10-14|2011-10-21|2011-10-17|Shipped|NULL|187 -10307|2011-10-14|2011-10-23|2011-10-20|Shipped|NULL|339 -10308|2011-10-15|2011-10-24|2011-10-20|Shipped|Customer requested that FedEx Ground is used for this shipping|319 -10309|2011-10-15|2011-10-24|2011-10-18|Shipped|NULL|121 -10310|2011-10-16|2011-10-24|2011-10-18|Shipped|NULL|259 -10311|2011-10-16|2011-10-23|2011-10-20|Shipped|Difficult to negotiate with customer. We need more marketing materials|141 -10312|2011-10-21|2011-10-27|2011-10-23|Shipped|NULL|124 -10313|2011-10-22|2011-10-28|2011-10-25|Shipped|Customer requested that FedEx Ground is used for this shipping|202 -10314|2011-10-22|2011-11-01|2011-10-23|Shipped|NULL|227 -10315|2011-10-29|2011-11-08|2011-10-30|Shipped|NULL|119 -10316|2011-11-01|2011-11-09|2011-11-07|Shipped|Customer requested that ad materials (such as posters| -10317|2011-11-02|2011-11-12|2011-11-08|Shipped|NULL|161 -10318|2011-11-02|2011-11-09|2011-11-07|Shipped|NULL|157 -10319|2011-11-03|2011-11-11|2011-11-06|Shipped|Customer requested that DHL is used for this shipping|456 -10320|2011-11-03|2011-11-13|2011-11-07|Shipped|NULL|144 -10321|2011-11-04|2011-11-12|2011-11-07|Shipped|NULL|462 -10322|2011-11-04|2011-11-12|2011-11-10|Shipped|Customer has worked with some of our vendors in the past and is aware of their MSRP|363 -10323|2011-11-05|2011-11-12|2011-11-09|Shipped|NULL|128 -10324|2011-11-05|2011-11-11|2011-11-08|Shipped|NULL|181 -10325|2011-11-05|2011-11-13|2011-11-08|Shipped|NULL|121 -10326|2011-11-09|2011-11-16|2011-11-10|Shipped|NULL|144 -10327|2011-11-10|2011-11-19|2011-11-13|Resolved|Order was disputed and resolved on 12-1-04. The Sales Manager was involved. Customer claims the scales of the coins don't match what was discussed.|145 -10328|2011-11-12|2011-11-21|2011-11-18|Shipped|Customer very concerned about the exact color of the coins. There is high risk that he may dispute the order because there is a slight color mismatch|278 -10329|2011-11-15|2011-11-24|2011-11-16|Shipped|NULL|131 -10330|2011-11-16|2011-11-25|2011-11-21|Shipped|NULL|385 -10331|2011-11-17|2011-11-23|2011-11-23|Shipped|Customer requested special shippment. The instructions were passed along to the warehouse|486 -10332|2011-11-17|2011-11-25|2011-11-18|Shipped|NULL|187 -10333|2011-11-18|2011-11-27|2011-11-20|Shipped|NULL|129 -10334|2011-11-19|2011-11-28|NULL|On Hold|The outstaniding balance for this customer exceeds their credit limit. Order will be shipped when a payment is received.|144 -10335|2011-11-19|2011-11-29|2011-11-23|Shipped|NULL|124 -10336|2011-11-20|2011-11-26|2011-11-24|Shipped|Customer requested that DHL is used for this shipping|172 -10337|2011-11-21|2011-11-30|2011-11-26|Shipped|NULL|424 -10338|2011-11-22|2011-12-02|2011-11-27|Shipped|NULL|381 -10339|2011-11-23|2011-11-30|2011-11-30|Shipped|NULL|398 -10340|2011-11-24|2011-12-01|2011-11-25|Shipped|Customer is interested in buying more coins|216 -10341|2011-11-24|2011-12-01|2011-11-29|Shipped|NULL|382 -10342|2011-11-24|2011-12-01|2011-11-29|Shipped|NULL|114 -10343|2011-11-24|2011-12-01|2011-11-26|Shipped|NULL|353 -10344|2011-11-25|2011-12-02|2011-11-29|Shipped|NULL|350 -10345|2011-11-25|2011-12-01|2011-11-26|Shipped|NULL|103 -10346|2011-11-29|2011-12-05|2011-11-30|Shipped|NULL|112 -10347|2011-11-29|2011-12-07|2011-11-30|Shipped|Can we deliver the new US Eagle coins by end-of-quarter?|114 -10348|2011-11-01|2011-11-08|2011-11-05|Shipped|NULL|458 -10349|2011-12-01|2011-12-07|2011-12-03|Shipped|NULL|151 -10350|2011-12-02|2011-12-08|2011-12-05|Shipped|NULL|141 -10351|2011-12-03|2011-12-11|2011-12-07|Shipped|NULL|324 -10352|2011-12-03|2011-12-12|2011-12-09|Shipped|NULL|198 -10353|2011-12-04|2011-12-11|2011-12-05|Shipped|NULL|447 -10354|2011-12-04|2011-12-10|2011-12-05|Shipped|NULL|323 -10355|2011-12-07|2011-12-14|2011-12-13|Shipped|NULL|141 -10356|2011-12-09|2011-12-15|2011-12-12|Shipped|NULL|250 -10357|2011-12-10|2011-12-16|2011-12-14|Shipped|NULL|124 -10358|2011-12-10|2011-12-16|2011-12-16|Shipped|Customer requested that DHL is used for this shipping|141 -10359|2011-12-15|2011-12-23|2011-12-18|Shipped|NULL|353 -10360|2011-12-16|2011-12-22|2011-12-18|Shipped|NULL|496 -10361|2011-12-17|2011-12-24|2011-12-20|Shipped|NULL|282 -10362|2012-01-05|2012-01-16|2012-01-10|Shipped|NULL|161 -10363|2012-01-06|2012-01-12|2012-01-10|Shipped|NULL|334 -10364|2012-01-06|2012-01-17|2012-01-09|Shipped|NULL|350 -10365|2012-01-07|2012-01-18|2012-01-11|Shipped|NULL|320 -10366|2012-01-10|2012-01-19|2012-01-12|Shipped|NULL|381 -10367|2012-01-12|2012-01-21|2012-01-16|Resolved|This order was disputed and resolved on 2-1-2012. Customer claimed that container with shipment was damaged. FedEx's investigation proved this wrong.|205 -10368|2012-01-19|2012-01-27|2012-01-24|Shipped|Can we renegotiate this one?|124 -10369|2012-01-20|2012-01-28|2012-01-24|Shipped|NULL|379 -10370|2012-01-20|2012-02-01|2012-01-25|Shipped|NULL|276 -10371|2012-01-23|2012-02-03|2012-01-25|Shipped|NULL|124 -10372|2012-01-26|2012-02-05|2012-01-28|Shipped|NULL|398 -10373|2012-01-31|2012-02-08|2012-02-06|Shipped|NULL|311 -10374|2012-02-02|2012-02-09|2012-02-03|Shipped|NULL|333 -10375|2012-02-03|2012-02-10|2012-02-06|Shipped|NULL|119 -10376|2012-02-08|2012-02-18|2012-02-13|Shipped|NULL|219 -10377|2012-02-09|2012-02-21|2012-02-12|Shipped|Cautious optimism. We have happy customers here| -10378|2012-02-10|2012-02-18|2012-02-11|Shipped|NULL|141 -10379|2012-02-10|2012-02-18|2012-02-11|Shipped|NULL|141 -10380|2012-02-16|2012-02-24|2012-02-18|Shipped|NULL|141 -10381|2012-02-17|2012-02-25|2012-02-18|Shipped|NULL|321 -10382|2012-02-17|2012-02-23|2012-02-18|Shipped|Custom shipping instructions sent to warehouse|124 -10383|2012-02-22|2012-03-02|2012-02-25|Shipped|NULL|141 -10384|2012-02-23|2012-03-06|2012-02-27|Shipped|NULL|321 -10385|2012-02-28|2012-03-09|2012-03-01|Shipped|NULL|124 -10386|2012-03-01|2012-03-09|2012-03-06|Resolved|Disputed then Resolved on 3-15-2012. Customer doesn't like the craftsmaship of the coins.|141 -10387|2012-03-02|2012-03-09|2012-03-06|Shipped|We need to keep in close contact with their Marketing VP. He is the decision maker for all their purchases.|148 -10388|2012-03-03|2012-03-11|2012-03-09|Shipped|NULL|462 -10389|2012-03-03|2012-03-09|2012-03-08|Shipped|NULL|448 -10390|2012-03-04|2012-03-11|2012-03-07|Shipped|They want to reevaluate their terms agreement with Finance.|124 -10391|2012-03-09|2012-03-20|2012-03-15|Shipped|NULL|276 -10392|2012-03-10|2012-03-18|2012-03-12|Shipped|NULL|452 -10393|2012-03-11|2012-03-22|2012-03-14|Shipped|They want to reevaluate their terms agreement with Finance.|323 -10394|2012-03-15|2012-03-25|2012-03-19|Shipped|NULL|141 -10395|2012-03-17|2012-03-24|2012-03-23|Shipped|We must be cautions with this customer. Their VP of Sales resigned. Company may be heading down.|250 -10396|2012-03-23|2012-04-02|2012-03-28|Shipped|NULL|124 -10397|2012-03-28|2012-04-09|2012-04-01|Shipped|NULL|242 -10398|2012-03-30|2012-04-09|2012-03-31|Shipped|NULL|353 -10399|2012-04-01|2012-04-12|2012-04-03|Shipped|NULL|496 -10400|2012-04-01|2012-04-11|2012-04-04|Shipped|Customer requested that DHL is used for this shipping|450 -10401|2012-04-03|2012-04-14|NULL|On Hold|Customer credit limit exceeded. Will ship when a payment is received.|328 -10402|2012-04-07|2012-04-14|2012-04-12|Shipped|NULL|406 -10403|2012-04-08|2012-04-18|2012-04-11|Shipped|NULL|201 -10404|2012-04-08|2012-04-14|2012-04-11|Shipped|NULL|323 -10405|2012-04-14|2012-04-24|2012-04-20|Shipped|NULL|209 -10406|2012-04-15|2012-04-25|2012-04-21|Disputed|Customer claims container with shipment was damaged during shipping and some items were missing. I am talking to FedEx about this.|145 -10407|2012-04-22|2012-05-04|NULL|On Hold|Customer credit limit exceeded. Will ship when a payment is received.|450 -10408|2012-04-22|2012-04-29|2012-04-27|Shipped|NULL|398 -10409|2012-04-23|2012-05-05|2012-04-24|Shipped|NULL|166 -10410|2012-04-29|2012-05-10|2012-04-30|Shipped|NULL|357 -10411|2012-05-01|2012-05-08|2012-05-06|Shipped|NULL|233 -10412|2012-05-03|2012-05-13|2012-05-05|Shipped|NULL|141 -10413|2012-05-05|2012-05-14|2012-05-09|Shipped|Customer requested that DHL is used for this shipping|175 -10414|2012-05-06|2012-05-13|NULL|On Hold|Customer credit limit exceeded. Will ship when a payment is received.|362 -10415|2012-05-09|2012-05-20|2012-05-12|Disputed|Customer claims the scales of the coins don't match what was discussed. I keep all the paperwork though to prove otherwise|471 -10416|2012-05-10|2012-05-16|2012-05-14|Shipped|NULL|386 -10417|2012-05-13|2012-05-19|2012-05-19|Disputed|Customer doesn't like the colors and precision of the coins.|141 -10418|2012-05-16|2012-05-24|2012-05-20|Shipped|NULL|412 -10419|2012-05-17|2012-05-28|2012-05-19|Shipped|NULL|382 -10420|2012-05-29|2012-06-07|NULL|In Process|NULL|282 -10421|2012-05-29|2012-06-06|NULL|In Process|Custom shipping instructions were sent to warehouse|124 -10422|2012-05-30|2012-06-11|NULL|In Process|NULL|157 -10423|2012-05-30|2012-06-05|NULL|In Process|NULL|314 -10424|2012-05-31|2012-06-08|NULL|In Process|NULL|141 -10425|2012-05-31|2012-06-07|NULL|In Process|NULL|119 diff --git a/WebGoat/DB_Scripts/datafiles/payments.txt b/WebGoat/DB_Scripts/datafiles/payments.txt deleted file mode 100644 index 5013d0d01..000000000 --- a/WebGoat/DB_Scripts/datafiles/payments.txt +++ /dev/null @@ -1,273 +0,0 @@ -103|Discover|6265-2350-7682-5192|808|3|2015|HQ336336|2011-10-19|6066.78 -103|Discover|6265-2350-7682-5192|808|3|2015|JM555205|2010-06-05|14571.44 -103|Discover|6265-2350-7682-5192|808|3|2015|OM314933|2011-12-18|1676.14 -112|JBC|4909-2456-6321-9538|600|6|2016|BO864823|2011-12-17|14191.12 -112|JBC|4909-2456-6321-9538|600|6|2016|HQ55022|2010-06-06|32641.98 -112|JBC|4909-2456-6321-9538|600|6|2016|ND748579|2011-08-20|33347.88 -114|JBC|6797-2394-4659-6464|489|11|2014|GG31455|2010-05-20|45864.03 -114|JBC|6797-2394-4659-6464|489|11|2014|MA765515|2011-12-15|82261.22 -114|JBC|6797-2394-4659-6464|489|11|2014|NP603840|2010-05-31|7565.08 -114|JBC|6797-2394-4659-6464|489|11|2014|NR27552|2011-03-10|44894.74 -119|MasterCard|3406-1120-3418-6447|404|3|2016|DB933704|2011-11-14|19501.82 -119|MasterCard|3406-1120-3418-6447|404|3|2016|LN373447|2011-08-08|47924.19 -119|MasterCard|3406-1120-3418-6447|404|3|2016|NG94694|2012-02-22|49523.67 -121|JBC|8287-5339-4915-5912|264|11|2015|DB889831|2010-02-16|50218.95 -121|JBC|8287-5339-4915-5912|264|11|2015|FD317790|2010-10-28|1491.38 -121|JBC|8287-5339-4915-5912|264|11|2015|KI831359|2011-11-04|17876.32 -121|JBC|8287-5339-4915-5912|264|11|2015|MA302151|2011-11-28|34638.14 -124|Visa|9470-4699-7349-2879|625|9|2013|AE215433|2012-03-05|101244.59 -124|Visa|9470-4699-7349-2879|625|9|2013|BG255406|2011-08-28|85410.87 -124|Visa|9470-4699-7349-2879|625|9|2013|CQ287967|2010-04-11|11044.3 -124|Visa|9470-4699-7349-2879|625|9|2013|ET64396|2012-04-16|83598.04 -124|Visa|9470-4699-7349-2879|625|9|2013|HI366474|2011-12-27|47142.7 -124|Visa|9470-4699-7349-2879|625|9|2013|HR86578|2011-11-02|55639.66 -124|Visa|9470-4699-7349-2879|625|9|2013|KI131716|2010-08-15|111654.4 -124|Visa|9470-4699-7349-2879|625|9|2013|LF217299|2011-03-26|43369.3 -124|Visa|9470-4699-7349-2879|625|9|2013|NT141748|2010-11-25|45084.38 -128|Visa|5693-9116-2880-3264|922|9|2014|DI925118|2010-01-28|10549.01 -128|Visa|5693-9116-2880-3264|922|9|2014|FA465482|2010-10-18|24101.81 -128|Visa|5693-9116-2880-3264|922|9|2014|FH668230|2011-03-24|33820.62 -128|Visa|5693-9116-2880-3264|922|9|2014|IP383901|2011-11-18|7466.32 -129|American Express|7416-8327-2785-2897|315|4|2013|DM826140|2011-12-08|26248.78 -129|American Express|7416-8327-2785-2897|315|4|2013|ID449593|2010-12-11|23923.93 -129|American Express|7416-8327-2785-2897|315|4|2013|PI42991|2010-04-09|16537.85 -131|Visa|8405-4173-2251-9956|140|7|2013|CL442705|2010-03-12|22292.62 -131|Visa|8405-4173-2251-9956|140|7|2013|MA724562|2011-12-02|50025.35 -131|Visa|8405-4173-2251-9956|140|7|2013|NB445135|2011-09-11|35321.97 -141|MasterCard|9802-5921-6993-5677|275|9|2013|AU364101|2010-07-19|36251.03 -141|MasterCard|9802-5921-6993-5677|275|9|2013|DB583216|2011-11-01|36140.38 -141|MasterCard|9802-5921-6993-5677|275|9|2013|DL460618|2012-05-19|46895.48 -141|MasterCard|9802-5921-6993-5677|275|9|2013|HJ32686|2011-01-30|59830.55 -141|MasterCard|9802-5921-6993-5677|275|9|2013|ID10962|2011-12-31|116208.4 -141|MasterCard|9802-5921-6993-5677|275|9|2013|IN446258|2012-03-25|65071.26 -141|MasterCard|9802-5921-6993-5677|275|9|2013|JE105477|2012-03-18|120166.58 -141|MasterCard|9802-5921-6993-5677|275|9|2013|JN355280|2010-10-26|49539.37 -141|MasterCard|9802-5921-6993-5677|275|9|2013|JN722010|2010-02-25|40206.2 -141|MasterCard|9802-5921-6993-5677|275|9|2013|KT52578|2010-12-09|63843.55 -141|MasterCard|9802-5921-6993-5677|275|9|2013|MC46946|2011-07-09|35420.74 -141|MasterCard|9802-5921-6993-5677|275|9|2013|MF629602|2011-08-16|20009.53 -141|MasterCard|9802-5921-6993-5677|275|9|2013|NU627706|2011-05-17|26155.91 -144|Discover|4774-2170-1754-4099|529|7|2013|IR846303|2011-12-12|36005.71 -144|Discover|4774-2170-1754-4099|529|7|2013|LA685678|2010-04-09|7674.94 -145|American Express|5907-3844-8494-2224|544|4|2016|CN328545|2011-07-03|4710.73 -145|American Express|5907-3844-8494-2224|544|4|2016|ED39322|2011-04-26|28211.7 -145|American Express|5907-3844-8494-2224|544|4|2016|HR182688|2011-12-01|20564.86 -145|American Express|5907-3844-8494-2224|544|4|2016|JJ246391|2010-02-20|53959.21 -146|Discover|2569-1580-4472-4476|618|10|2015|FP549817|2011-03-18|40978.53 -146|Discover|2569-1580-4472-4476|618|10|2015|FU793410|2011-01-16|49614.72 -146|Discover|2569-1580-4472-4476|618|10|2015|LJ160635|2010-12-10|39712.1 -148|Discover|8810-2007-3461-2881|421|8|2014|BI507030|2010-04-22|44380.15 -148|Discover|8810-2007-3461-2881|421|8|2014|DD635282|2011-08-11|2611.84 -148|Discover|8810-2007-3461-2881|421|8|2014|KM172879|2010-12-26|105743 -148|Discover|8810-2007-3461-2881|421|8|2014|ME497970|2012-03-27|3516.04 -151|American Express|6622-9649-8121-3060|160|2|2016|BF686658|2010-12-22|58793.53 -151|American Express|6622-9649-8121-3060|160|2|2016|GB852215|2011-07-26|20314.44 -151|American Express|6622-9649-8121-3060|160|2|2016|IP568906|2010-06-18|58841.35 -151|American Express|6622-9649-8121-3060|160|2|2016|KI884577|2011-12-14|39964.63 -157|Visa|8827-7483-5048-3124|758|3|2016|HI618861|2011-11-19|35152.12 -157|Visa|8827-7483-5048-3124|758|3|2016|NN711988|2011-09-07|63357.13 -161|JBC|1415-9319-4108-7263|410|10|2016|BR352384|2011-11-14|2434.25 -161|JBC|1415-9319-4108-7263|410|10|2016|BR478494|2010-11-18|50743.65 -161|JBC|1415-9319-4108-7263|410|10|2016|KG644125|2012-02-02|12692.19 -161|JBC|1415-9319-4108-7263|410|10|2016|NI908214|2010-08-05|38675.13 -166|Visa|5890-6229-5287-5251|711|9|2014|BQ327613|2011-09-16|38785.48 -166|Visa|5890-6229-5287-5251|711|9|2014|DC979307|2011-07-07|44160.92 -166|Visa|5890-6229-5287-5251|711|9|2014|LA318629|2011-02-28|22474.17 -167|MasterCard|9618-4131-5600-4488|652|2|2014|ED743615|2011-09-19|12538.01 -167|MasterCard|9618-4131-5600-4488|652|2|2014|GN228846|2010-12-03|85024.46 -171|JBC|1069-6852-5647-2536|385|2|2014|GB878038|2011-03-15|18997.89 -171|JBC|1069-6852-5647-2536|385|2|2014|IL104425|2010-11-22|42783.81 -172|JBC|4273-3352-2466-8205|667|1|2015|AD832091|2011-09-09|1960.8 -172|JBC|4273-3352-2466-8205|667|1|2015|CE51751|2011-12-04|51209.58 -172|JBC|4273-3352-2466-8205|667|1|2015|EH208589|2010-04-20|33383.14 -173|Discover|6535-9735-7168-5812|909|5|2015|GP545698|2011-05-13|11843.45 -173|Discover|6535-9735-7168-5812|909|5|2015|IG462397|2011-03-29|20355.24 -175|American Express|1243-3893-3504-8542|836|5|2014|IO448913|2010-11-19|24879.08 -175|American Express|1243-3893-3504-8542|836|5|2014|PI15215|2011-07-10|42044.77 -177|Visa|3689-1568-7193-2727|692|4|2013|AU750837|2011-04-17|15183.63 -177|Visa|3689-1568-7193-2727|692|4|2013|CI381435|2011-01-19|47177.59 -181|MasterCard|3381-5557-1978-5971|160|2|2016|CM564612|2011-04-25|22602.36 -175|American Express|1243-3893-3504-8542|836|5|2014|CITI3434344|2012-05-19|28500.78 -209|Discover|7348-7206-7951-2835|861|7|2013|BOAF82044|2012-05-03|35157.75 -181|MasterCard|3381-5557-1978-5971|160|2|2016|GQ132144|2010-01-30|5494.78 -181|MasterCard|3381-5557-1978-5971|160|2|2016|OH367219|2011-11-16|44400.5 -186|Visa|7557-9281-2292-8444|616|1|2014|AE192287|2012-03-10|23602.9 -186|Visa|7557-9281-2292-8444|616|1|2014|AK412714|2010-10-27|37602.48 -186|Visa|7557-9281-2292-8444|616|1|2014|KA602407|2011-10-21|34341.08 -187|Discover|4814-4497-5515-1076|574|11|2014|AM968797|2011-11-03|52825.29 -187|Discover|4814-4497-5515-1076|574|11|2014|BQ39062|2011-12-08|47159.11 -187|Discover|4814-4497-5515-1076|574|11|2014|KL124726|2010-03-27|48425.69 -189|Visa|3688-5431-3430-9182|531|6|2014|BO711618|2011-10-03|17359.53 -189|Visa|3688-5431-3430-9182|531|6|2014|NM916675|2011-03-01|32538.74 -198|MasterCard|3384-9846-2193-7272|273|7|2015|FI192930|2011-12-06|9658.74 -198|MasterCard|3384-9846-2193-7272|273|7|2015|HQ920205|2010-07-06|6036.96 -198|MasterCard|3384-9846-2193-7272|273|7|2015|IS946883|2011-09-21|5858.56 -201|American Express|2770-3382-5169-4297|215|1|2016|DP677013|2010-10-20|23908.24 -201|American Express|2770-3382-5169-4297|215|1|2016|OO846801|2011-06-15|37258.94 -202|MasterCard|9307-1948-2157-7498|389|5|2013|HI358554|2010-12-18|36527.61 -202|MasterCard|9307-1948-2157-7498|389|5|2013|IQ627690|2011-11-08|33594.58 -204|MasterCard|2392-3993-9145-1845|932|10|2016|GC697638|2011-08-13|51152.86 -204|MasterCard|2392-3993-9145-1845|932|10|2016|IS150005|2011-09-24|4424.4 -205|American Express|4913-1082-6060-1801|470|4|2016|GL756480|2010-12-04|3879.96 -205|American Express|4913-1082-6060-1801|470|4|2016|LL562733|2010-09-05|50342.74 -205|American Express|4913-1082-6060-1801|470|4|2016|NM739638|2012-02-06|39580.6 -209|Discover|7348-7206-7951-2835|861|7|2013|ED520529|2011-06-21|4632.31 -209|Discover|7348-7206-7951-2835|861|7|2013|PH785937|2011-05-04|36069.26 -211|Discover|2807-3643-8304-7384|464|11|2013|BJ535230|2010-12-09|45480.79 -216|MasterCard|4344-5355-9873-4330|754|3|2016|BG407567|2010-05-09|3101.4 -216|MasterCard|4344-5355-9873-4330|754|3|2016|ML780814|2011-12-06|24945.21 -216|MasterCard|4344-5355-9873-4330|754|3|2016|MM342086|2010-12-14|40473.86 -219|MasterCard|6957-8898-5880-3297|446|9|2013|BN17870|2012-03-02|3452.75 -219|MasterCard|6957-8898-5880-3297|446|9|2013|BR941480|2010-10-18|4465.85 -227|Visa|3849-1934-9383-1203|492|4|2013|MQ413968|2010-10-31|36164.46 -227|Visa|3849-1934-9383-1203|492|4|2013|NU21326|2011-11-02|53745.34 -233|JBC|7210-4045-5690-1874|342|3|2015|II180006|2011-07-01|22997.45 -233|JBC|7210-4045-5690-1874|342|3|2015|JG981190|2010-11-18|16909.84 -239|American Express|9320-5058-7500-4030|213|11|2015|NQ865547|2011-03-15|80375.24 -240|Visa|3389-4109-4843-5212|164|4|2013|IF245157|2011-11-16|46788.14 -240|Visa|3389-4109-4843-5212|164|4|2013|JO719695|2011-03-28|24995.61 -242|MasterCard|9155-6148-4534-8949|259|3|2014|AF40894|2010-11-22|33818.34 -242|MasterCard|9155-6148-4534-8949|259|3|2014|HR224331|2012-06-03|12432.32 -242|MasterCard|9155-6148-4534-8949|259|3|2014|KI744716|2010-07-21|14232.7 -249|Visa|1392-9540-7118-9118|959|3|2015|IJ399820|2011-09-19|33924.24 -249|Visa|1392-9540-7118-9118|959|3|2015|NE404084|2011-09-04|48298.99 -250|American Express|6490-6004-3976-3497|343|5|2013|EQ12267|2012-05-17|17928.09 -250|American Express|6490-6004-3976-3497|343|5|2013|HD284647|2011-12-30|26311.63 -250|American Express|6490-6004-3976-3497|343|5|2013|HN114306|2010-07-18|23419.47 -256|Discover|9863-3340-7812-9430|711|7|2016|EP227123|2011-02-10|5759.42 -256|Discover|9863-3340-7812-9430|711|7|2016|HE84936|2011-10-22|53116.99 -259|Discover|3490-4728-2717-6978|759|3|2014|EU280955|2011-11-06|61234.67 -259|Discover|3490-4728-2717-6978|759|3|2014|GB361972|2010-12-07|27988.47 -260|American Express|3511-4442-3637-1198|482|10|2013|IO164641|2011-08-30|37527.58 -260|American Express|3511-4442-3637-1198|482|10|2013|NH776924|2011-04-24|29284.42 -276|JBC|4286-4390-8720-8088|747|10|2016|EM979878|2012-02-09|27083.78 -276|JBC|4286-4390-8720-8088|747|10|2016|KM841847|2010-11-13|38547.19 -276|JBC|4286-4390-8720-8088|747|10|2016|LE432182|2010-09-28|41554.73 -276|JBC|4286-4390-8720-8088|747|10|2016|OJ819725|2012-04-30|29848.52 -278|Visa|3732-6885-9084-9790|747|7|2013|BJ483870|2011-12-05|37654.09 -278|Visa|3732-6885-9084-9790|747|7|2013|GP636783|2010-03-02|52151.81 -278|Visa|3732-6885-9084-9790|747|7|2013|NI983021|2010-11-24|37723.79 -282|MasterCard|3303-2348-6627-8448|830|6|2014|IA793562|2010-08-03|24013.52 -282|MasterCard|3303-2348-6627-8448|830|6|2014|JT819493|2011-08-02|35806.73 -282|MasterCard|3303-2348-6627-8448|830|6|2014|OD327378|2012-01-03|31835.36 -286|American Express|8260-8124-9985-9899|839|9|2013|DR578578|2011-10-28|47411.33 -286|American Express|8260-8124-9985-9899|839|9|2013|KH910279|2011-09-05|43134.04 -298|Discover|8473-2242-6143-3051|717|2|2016|AJ574927|2011-03-13|47375.92 -298|Discover|8473-2242-6143-3051|717|2|2016|LF501133|2011-09-18|61402 -299|Visa|7109-4016-4245-6083|899|6|2016|AD304085|2010-10-24|36798.88 -299|Visa|7109-4016-4245-6083|899|6|2016|NR157385|2011-09-05|32260.16 -311|Visa|6826-2995-7893-7732|252|7|2015|DG336041|2012-02-15|46770.52 -311|Visa|6826-2995-7893-7732|252|7|2015|FA728475|2010-10-06|32723.04 -311|Visa|6826-2995-7893-7732|252|7|2015|NQ966143|2011-04-25|16212.59 -314|Visa|5908-6688-9827-1338|195|9|2015|LQ244073|2011-08-09|45352.47 -314|Visa|5908-6688-9827-1338|195|9|2015|MD809704|2011-03-03|16901.38 -319|MasterCard|8319-2171-2316-5413|939|8|2015|HL685576|2011-11-06|42339.76 -319|MasterCard|8319-2171-2316-5413|939|8|2015|OM548174|2010-12-07|36092.4 -320|Visa|5040-2195-2339-2083|751|11|2014|GJ597719|2012-01-18|8307.28 -320|Visa|5040-2195-2339-2083|751|11|2014|HO576374|2010-08-20|41016.75 -320|Visa|5040-2195-2339-2083|751|11|2014|MU817160|2010-11-24|52548.49 -321|MasterCard|8928-9588-4073-5822|264|6|2013|DJ15149|2010-11-03|85559.12 -321|MasterCard|8928-9588-4073-5822|264|6|2013|LA556321|2012-03-15|46781.66 -323|JBC|9771-5701-7141-5339|723|11|2015|AL493079|2012-05-23|75020.13 -323|JBC|9771-5701-7141-5339|723|11|2015|ES347491|2011-06-24|37281.36 -323|JBC|9771-5701-7141-5339|723|11|2015|HG738664|2010-07-05|2880 -323|JBC|9771-5701-7141-5339|723|11|2015|PQ803830|2011-12-24|39440.59 -324|Visa|3134-3729-7763-4200|440|7|2014|DQ409197|2011-12-13|13671.82 -324|Visa|3134-3729-7763-4200|440|7|2014|FP443161|2010-07-07|29429.14 -324|Visa|3134-3729-7763-4200|440|7|2014|HB150714|2010-11-23|37455.77 -328|MasterCard|3382-4738-3691-5126|192|5|2013|EN930356|2011-04-16|7178.66 -328|MasterCard|3382-4738-3691-5126|192|5|2013|NR631421|2011-05-30|31102.85 -333|American Express|9028-9519-2408-8480|610|5|2015|HL209210|2010-11-15|23936.53 -333|American Express|9028-9519-2408-8480|610|5|2015|JK479662|2010-10-17|9821.32 -333|American Express|9028-9519-2408-8480|610|5|2015|NF959653|2012-03-01|21432.31 -334|American Express|9579-9257-5641-2269|480|10|2014|CS435306|2012-01-27|45785.34 -334|American Express|9579-9257-5641-2269|480|10|2014|HH517378|2010-08-16|29716.86 -334|American Express|9579-9257-5641-2269|480|10|2014|LF737277|2011-05-22|28394.54 -339|Discover|4832-2947-8948-6867|464|6|2014|AP286625|2011-10-24|23333.06 -339|Discover|4832-2947-8948-6867|464|6|2014|DA98827|2010-11-28|34606.28 -344|JBC|6163-2810-3439-1583|782|9|2015|AF246722|2010-11-24|31428.21 -344|JBC|6163-2810-3439-1583|782|9|2015|NJ906924|2011-04-02|15322.93 -347|American Express|4856-4629-6310-9798|567|6|2016|DG700707|2011-01-18|21053.69 -347|American Express|4856-4629-6310-9798|567|6|2016|LG808674|2010-10-24|20452.5 -350|American Express|7535-1276-4619-7376|384|10|2013|BQ602907|2011-12-11|18888.31 -350|American Express|7535-1276-4619-7376|384|10|2013|CI471510|2010-05-25|50824.66 -350|American Express|7535-1276-4619-7376|384|10|2013|OB648482|2012-01-29|1834.56 -353|Discover|9901-5618-1293-3127|772|2|2014|CO351193|2012-01-10|49705.52 -353|Discover|9901-5618-1293-3127|772|2|2014|ED878227|2010-07-21|13920.26 -353|Discover|9901-5618-1293-3127|772|2|2014|GT878649|2010-05-21|16700.47 -353|Discover|9901-5618-1293-3127|772|2|2014|HJ618252|2012-06-09|46656.94 -357|MasterCard|5846-7259-3316-2833|914|4|2015|AG240323|2010-12-16|20220.04 -357|MasterCard|5846-7259-3316-2833|914|4|2015|NB291497|2011-05-15|36442.34 -362|Discover|2275-6254-7411-4792|352|10|2014|FP170292|2011-07-11|18473.71 -362|Discover|2275-6254-7411-4792|352|10|2014|OG208861|2011-09-21|15059.76 -363|MasterCard|7199-2873-9330-5355|592|11|2015|HL575273|2011-11-17|50799.69 -363|MasterCard|7199-2873-9330-5355|592|11|2015|IS232033|2010-01-16|10223.83 -363|MasterCard|7199-2873-9330-5355|592|11|2015|PN238558|2010-12-05|55425.77 -379|JBC|8969-5329-1680-3520|779|8|2015|CA762595|2012-02-12|28322.83 -379|JBC|8969-5329-1680-3520|779|8|2015|FR499138|2010-09-16|32680.31 -379|JBC|8969-5329-1680-3520|779|8|2015|GB890854|2011-08-02|12530.51 -381|MasterCard|6750-1740-4951-8298|443|7|2014|BC726082|2011-12-03|12081.52 -381|MasterCard|6750-1740-4951-8298|443|7|2014|CC475233|2010-04-19|1627.56 -381|MasterCard|6750-1740-4951-8298|443|7|2014|GB117430|2012-02-03|14379.9 -381|MasterCard|6750-1740-4951-8298|443|7|2014|MS154481|2010-08-22|1128.2 -382|Discover|1929-2503-6101-3884|894|6|2016|CC871084|2010-05-12|35826.33 -382|Discover|1929-2503-6101-3884|894|6|2016|CT821147|2011-08-01|6419.84 -382|Discover|1929-2503-6101-3884|894|6|2016|PH29054|2011-11-27|42813.83 -385|JBC|3106-5341-5927-9562|566|6|2014|BN347084|2010-12-02|20644.24 -385|JBC|3106-5341-5927-9562|566|6|2014|CP804873|2011-11-19|15822.84 -385|JBC|3106-5341-5927-9562|566|6|2014|EK785462|2010-03-09|51001.22 -386|American Express|2251-9307-3863-8288|586|5|2015|DO106109|2010-11-18|38524.29 -386|American Express|2251-9307-3863-8288|586|5|2015|HG438769|2011-07-18|51619.02 -398|MasterCard|8305-7531-8040-8220|918|1|2014|AJ478695|2012-02-14|33967.73 -398|MasterCard|8305-7531-8040-8220|918|1|2014|DO787644|2011-06-21|22037.91 -398|MasterCard|8305-7531-8040-8220|918|1|2014|KB54275|2011-11-29|48927.64 -406|JBC|8416-7404-4426-8334|809|2|2013|HJ217687|2011-01-28|49165.16 -406|JBC|8416-7404-4426-8334|809|2|2013|NA197101|2011-06-17|25080.96 -412|MasterCard|6182-5814-1414-2828|518|11|2016|GH197075|2011-07-25|35034.57 -412|MasterCard|6182-5814-1414-2828|518|11|2016|PJ434867|2011-04-14|31670.37 -415|Discover|6009-6400-7047-7254|784|1|2015|ER54537|2011-09-28|31310.09 -424|American Express|6557-9680-5578-8210|570|2|2013|KF480160|2011-12-07|25505.98 -424|American Express|6557-9680-5578-8210|570|2|2013|LM271923|2010-04-16|21665.98 -424|American Express|6557-9680-5578-8210|570|2|2013|OA595449|2010-10-31|22042.37 -447|JBC|5953-2640-2145-8238|722|10|2015|AO757239|2010-09-15|6631.36 -447|JBC|5953-2640-2145-8238|722|10|2015|ER615123|2010-06-25|17032.29 -447|JBC|5953-2640-2145-8238|722|10|2015|OU516561|2011-12-17|26304.13 -448|JBC|2044-3940-3105-9112|639|7|2014|FS299615|2012-04-18|27966.54 -448|JBC|2044-3940-3105-9112|639|7|2014|KR822727|2011-09-30|48809.9 -450|MasterCard|3296-4811-3210-4683|422|9|2013|EF485824|2011-06-21|59551.38 -452|Discover|9406-9321-2776-2512|872|9|2013|ED473873|2010-11-15|27121.9 -452|Discover|9406-9321-2776-2512|872|9|2013|FN640986|2010-11-20|15130.97 -452|Discover|9406-9321-2776-2512|872|9|2013|HG635467|2012-05-03|8807.12 -455|JBC|1035-3521-6874-8285|508|8|2015|HA777606|2010-12-05|38139.18 -455|JBC|1035-3521-6874-8285|508|8|2015|IR662429|2011-05-12|32239.47 -456|MasterCard|9042-7920-6210-7108|851|4|2016|GJ715659|2011-11-13|27550.51 -456|MasterCard|9042-7920-6210-7108|851|4|2016|MO743231|2011-04-30|1679.92 -458|MasterCard|4186-5657-5913-7194|950|10|2013|DD995006|2011-11-15|33145.56 -458|MasterCard|4186-5657-5913-7194|950|10|2013|NA377824|2011-02-06|22162.61 -458|MasterCard|4186-5657-5913-7194|950|10|2013|OO606861|2010-06-13|57131.92 -462|Visa|8402-8894-8830-9772|263|6|2015|ED203908|2012-04-15|30293.77 -462|Visa|8402-8894-8830-9772|263|6|2015|GC60330|2010-11-08|9977.85 -462|Visa|8402-8894-8830-9772|263|6|2015|PE176846|2011-11-27|48355.87 -471|Discover|5024-7847-9077-3889|368|8|2016|AB661578|2011-07-28|9415.13 -471|Discover|5024-7847-9077-3889|368|8|2016|CO645196|2010-12-10|35505.63 -473|Visa|9676-4595-5640-1244|899|8|2015|LL427009|2011-02-17|7612.06 -473|Visa|9676-4595-5640-1244|899|8|2015|PC688499|2010-10-27|17746.26 -475|JBC|1629-9335-8325-2887|644|6|2013|JP113227|2010-12-09|7678.25 -475|JBC|1629-9335-8325-2887|644|6|2013|PB951268|2011-02-13|36070.47 -484|MasterCard|3793-4053-9882-8344|399|9|2014|GK294076|2011-10-26|3474.66 -484|MasterCard|3793-4053-9882-8344|399|9|2014|JH546765|2010-11-29|47513.19 -486|Discover|6338-5218-3083-6212|611|11|2015|BL66528|2011-04-14|5899.38 -486|Discover|6338-5218-3083-6212|611|11|2015|HS86661|2011-11-23|45994.07 -486|Discover|6338-5218-3083-6212|611|11|2015|JB117768|2010-03-20|25833.14 -487|Visa|2978-9611-7516-5118|678|7|2016|AH612904|2010-09-28|29997.09 -487|Visa|2978-9611-7516-5118|678|7|2016|PT550181|2011-02-28|12573.28 -489|MasterCard|9704-8306-9143-6281|674|8|2016|OC773849|2010-12-04|22275.73 -489|MasterCard|9704-8306-9143-6281|674|8|2016|PO860906|2011-01-31|7310.42 -495|Discover|2305-1139-1095-4188|797|9|2014|BH167026|2010-12-26|59265.14 -495|Discover|2305-1139-1095-4188|797|9|2014|FN155234|2011-05-14|6276.6 -496|Discover|1599-2440-4904-2702|180|5|2014|EU531600|2012-05-25|30253.75 -496|Discover|1599-2440-4904-2702|180|5|2014|MB342426|2010-07-16|32077.44 -496|Discover|1599-2440-4904-2702|180|5|2014|MN89921|2011-12-31|52166 -233|JBC|7210-4045-5690-1874|342|3|2015|BOFA23232|2012-05-20|29070.38 -398|MasterCard|8305-7531-8040-8220|918|1|2014|JPMR4544|2012-05-18|615.45 -406|JBC|8416-7404-4426-8334|809|2|2013|BJMPR4545|2012-04-23|12190.85 diff --git a/WebGoat/DB_Scripts/datafiles/productlines.txt b/WebGoat/DB_Scripts/datafiles/productlines.txt deleted file mode 100644 index b027fb85c..000000000 --- a/WebGoat/DB_Scripts/datafiles/productlines.txt +++ /dev/null @@ -1,6 +0,0 @@ -1 -2 -3 -4 -5 -6 diff --git a/WebGoat/DB_Scripts/datafiles/products.txt b/WebGoat/DB_Scripts/datafiles/products.txt deleted file mode 100644 index 0f2e60720..000000000 --- a/WebGoat/DB_Scripts/datafiles/products.txt +++ /dev/null @@ -1,26 +0,0 @@ -S10_1678|The 2012 Star-Spangled Banner Commemorative Coins|4|SSB_Gold_thumb_LineArt.jpg|US Mint|Depicts a naval battle scene from the War of 1812, with an American sailing ship in the foreground and a damaged and fleeing British ship in the background. Inscriptions are IN GOD WE TRUST, LIBERTY and 1812 2012.|3702|0|0.1 -S10_2016|The 2012 Infantry Soldier Silver Dollar|2|2012-Natl-Infantry-Commem-thumb.jpg|US Mint|The design features a modern Infantry soldier on rocky ground charging forward and beckoning the troops to follow, symbolizing the Follow Me motto of the Infantry. Inscriptions are LIBERTY, IN GOD WE TRUST and 2012.|4886|0|0.1 -S10_4757|The 2011 United States Army Commemorative Coins|4|HOTSPRINGS_thumb.jpg|US Mint|This design represents the U.S. Army's war service from the Revolutionary War through today, symbolizing its continuity of strength and readiness. It features, from left to right, Continental, Civil War, modern, World War II and World War I soldiers. Inscriptions are LIBERTY, 2011 and IN GOD WE TRUST.|3388|0|0.1 -S12_1099|Quarters Issued in 2011|4|2011-Unc-Gettysburg_thumb.jpg|US Mint|Depicts the 72nd Pennsylvania Infantry Monument, which is located on the battle line of the Union Army at Cemetery Ridge. Inscriptions are GETTYSBURG, PENNSYLVANIA, 2011 and E PLURIBUS UNUM.|1285|0|0.1 -S12_1666|Quarters Issued in 2012|4|2012-ATB-El-Yunque_thumb.jpg|US Mint|Depicts a Coqui tree frog sitting on a leaf and a Puerto Rican parrot behind an epiphyte plant with tropical flora in the background. Inscriptions are EL YUNQUE, PUERTO RICO, 2012 and E PLURIBUS UNUM.|4081|0|0.1 -S12_3148|Native American $1 Coin|4|stacked-coins2_thumb.jpg|US Mint|The obverse design remains the central figure of Sacagawea first produced in 2000, and contains the inscriptions LIBERTY and IN GOD WE TRUST.|365|0|0.1 -S12_3891|2012 Designs|5|21_Arthur_Pre1_thumb.jpg|US Mint|Features an image of Chester Arthur with the inscriptions CHESTER ARTHUR, IN GOD WE TRUST, 21st PRESIDENT and 1881-1885.|4191|0|0.1 -S12_4473|2011 Designs|5|2011AJohnson_thumb.jpg|US Mint|Features an image of Andrew Johnson with the inscriptions Andrew Johnson, In God We Trust, 17th President and 1865-1869.|1288|0|0.1 -S18_1097|2010 Designs|5|2010MFillmore_thumb.jpg|US Mint|Features an image of Millard Fillmore with the inscriptions Millard Fillmore, In God We Trust, 13th President and 1850-1853.|3001|0|0.1 -S18_1342|2009 Designs|5|2009WHHarrisonObvthumb.jpg|US Mint|Features an image of William Henry Harrison with the inscriptions William Henry Harrison, In God We Trust, 9th President and 1841.|1341|0|0.1 -S18_1589|2008 Designs|5|thumbJMonroe.jpg|US Mint|Features an image of James Monroe with the inscriptions James Monroe, 5th President and 1817 – 1825.|3392|0|0.1 -S18_1749|2007 Designs|5|thumbWashington.jpg|US Mint|Features an image of George Washington with the inscriptions George Washington, 1st President and 1789 – 1797.|1026|0|0.1 -S18_1984|John F. Kennedy Half-Dollar|4|2012-Proof-HalfDollar-thumb.jpg|US Mint|Depicts a bust of President Kennedy.|2659|0|0.1 -S18_2248|Roosevelt Dime|4|2012-Proof-Nickel-thumb.jpg|US Mint|bears a new image of President Thomas Jefferson based on the Rembrandt Peale painting of 1800|3944|0|0.1 -S18_2325|American Eagle Platinum Reverse Proof Coins|3|07AEPltProofRevThumb.jpg|US Mint|Portrait of Liberty, Lady Liberty looking toward future.|3300|0|0.1 -S18_2581|American Eagle Platinum Proof Coins|3|2011_AE_PlatProof_thumb.jpg|US Mint|Portrait of Liberty, Lady Liberty looking toward future.|3905|0|0.1 -S18_2795|American Eagle Gold Proof Coins|1|2010_AEGoldProof_thumb.jpg|US Mint|Modified design of Saint Gaudens' U.S. $20 Gold Coin Design, Standing Liberty.|814|0|0.1 -S18_2949|American Eagle Silver Proof Coins|2|2008_AESilverProof_thumb.jpg|US Mint|Walking Liberty, from Weinman's Walking Liberty Half Dollar, minted from 1916 1947.|1074|0|0.1 -S18_3029|American Eagle Platinum Bullion Coins|3|2008_AE_Plat_Bullion_Thumb.jpg|US Mint|Portrait of Liberty, Lady Liberty looking toward future.|4095|0|0.1 -S18_3140|American Eagle Gold Bullion Coins|1|2012-Gold-Eagle-bullion-thumb.jpg|US Mint|Modified design of Saint Gaudens' U.S. $20 Gold Coin Design, Standing Liberty.|3608|0|0.1 -S18_3233|American Eagle Silver Bullion Coins|2|2012-SilverEagle-bullion-thumb.jpg|US Mint|Walking Liberty, from Weinman's Walking Liberty Half Dollar, minted from 1916-1947.|2943|0|0.1 -S18_3278|American Eagle Platinum Uncirculated Coin|3|AEPlatUnc_thumb.jpg|US Mint|Portrait of Liberty, Lady Liberty looking toward future.|2280|0|0.1 -S18_3482|American Eagle Gold Uncirculated Coin|1|2011-Gold-Eagle-unc-thumb.jpg|US Mint|Modified design of Saint Gaudens' U.S. $20 Gold Coin Design, Standing Liberty.|4924|0|0.1 -S18_3782|American Eagle Silver Uncirculated Coin|2|2011-SilverEagle-unc-thumb.jpg|US Mint|Walking Liberty, from Weinman's Walking Liberty Half Dollar, minted from 1916-1947.|4358|0|0.1 -S18_4027|America the Beautiful Silver Bullion Coins|2|HOTSPRINGS_thumb.jpg|US Mint|Depicts the facade of the Hot Springs National Park headquarters building with a fountain in the foreground. Inscriptions are HOT SPRINGS, ARKANSAS, 2010 and E PLURIBUS UNUM.|1212|0|0.1 -S18_4522|First Spouse Gold Coin Program|1|EJohnson_Proof-thumb.jpg|US Mint|This design depicts three children dancing and a Marine Band fiddler playing at the children's ball that was held for President Johnson's 60th birthday.|4261|0|0.1 diff --git a/WebGoat/DB_Scripts/datafiles/products_old.txt b/WebGoat/DB_Scripts/datafiles/products_old.txt deleted file mode 100644 index 504723aba..000000000 --- a/WebGoat/DB_Scripts/datafiles/products_old.txt +++ /dev/null @@ -1,110 +0,0 @@ -S10_1678|The 2012 Star-Spangled Banner Commemorative Coins|4|SSB_Gold_thumb_LineArt.jpg|US Mint|Depicts a naval battle scene from the War of 1812, with an American sailing ship in the foreground and a damaged and fleeing British ship in the background. Inscriptions are IN GOD WE TRUST, LIBERTY and 1812 2012.|3702|0|0.1 -S10_2016|The 2012 Infantry Soldier Silver Dollar|2|2012-Natl-Infantry-Commem-thumb.jpg|US Mint|The design features a modern Infantry soldier on rocky ground charging forward and beckoning the troops to follow, symbolizing the Follow Me motto of the Infantry. Inscriptions are LIBERTY, IN GOD WE TRUST and 2012.|4886|0|0.1 -S10_4757|The 2011 United States Army Commemorative Coins|4|HOTSPRINGS_thumb.jpg|US Mint|This design represents the U.S. Army's war service from the Revolutionary War through today, symbolizing its continuity of strength and readiness. It features, from left to right, Continental, Civil War, modern, World War II and World War I soldiers. Inscriptions are LIBERTY, 2011 and IN GOD WE TRUST.|3388|0|0.1 -S12_1099|Quarters Issued in 2011|4|2011-Unc-Gettysburg_thumb.jpg|US Mint|Depicts the 72nd Pennsylvania Infantry Monument, which is located on the battle line of the Union Army at Cemetery Ridge. Inscriptions are GETTYSBURG, PENNSYLVANIA, 2011 and E PLURIBUS UNUM.|1285|0|0.1 -S12_1666|Quarters Issued in 2012|4|2012-ATB-El-Yunque_thumb.jpg|US Mint|Depicts a Coqui tree frog sitting on a leaf and a Puerto Rican parrot behind an epiphyte plant with tropical flora in the background. Inscriptions are EL YUNQUE, PUERTO RICO, 2012 and E PLURIBUS UNUM.|4081|0|0.1 -S12_3148|Native American $1 Coin|4|stacked-coins2_thumb.jpg|US Mint|The obverse design remains the central figure of Sacagawea first produced in 2000, and contains the inscriptions LIBERTY and IN GOD WE TRUST.|365|0|0.1 -S12_3891|2012 Designs|4|21_Arthur_Pre1_thumb.jpg|US Mint|Features an image of Chester Arthur with the inscriptions CHESTER ARTHUR, IN GOD WE TRUST, 21st PRESIDENT and 1881-1885.|4191|0|0.1 -S12_4473|2011 Designs|4|2011AJohnson_thumb.jpg|US Mint|Features an image of Andrew Johnson with the inscriptions Andrew Johnson, In God We Trust, 17th President and 1865-1869.|1288|0|0.1 -S18_1097|2010 Designs|4|2010MFillmore_thumb.jpg|US Mint|Features an image of Millard Fillmore with the inscriptions Millard Fillmore, In God We Trust, 13th President and 1850-1853.|3001|0|0.1 -S18_1342|2009 Designs|4|2009WHHarrisonObvthumb.jpg|US Mint|Features an image of William Henry Harrison with the inscriptions William Henry Harrison, In God We Trust, 9th President and 1841.|1341|0|0.1 -S18_1589|2008 Designs|4|thumbJMonroe.jpg|US Mint|Features an image of James Monroe with the inscriptions James Monroe, 5th President and 1817 – 1825.|3392|0|0.1 -S18_1749|2007 Designs|4|thumbWashington.jpg|US Mint|Features an image of George Washington with the inscriptions George Washington, 1st President and 1789 – 1797.|1026|0|0.1 -S18_1984|John F. Kennedy Half-Dollar|4|2012-Proof-HalfDollar-thumb.jpg|US Mint|Depicts a bust of President Kennedy.|2659|0|0.1 -S18_2248|Roosevelt Dime|4|2012-Proof-Nickel-thumb.jpg|US Mint|bears a new image of President Thomas Jefferson based on the Rembrandt Peale painting of 1800|3944|0|0.1 -S18_2325|American Eagle Platinum Reverse Proof Coins|3|07AEPltProofRevThumb.jpg|US Mint|Portrait of Liberty, Lady Liberty looking toward future.|3300|0|0.1 -S18_2581|American Eagle Platinum Proof Coins|3|2011_AE_PlatProof_thumb.jpg|US Mint|Portrait of Liberty, Lady Liberty looking toward future.|3905|0|0.1 -S18_2795|American Eagle Gold Proof Coins|1|2010_AEGoldProof_thumb.jpg|US Mint|Modified design of Saint Gaudens' U.S. $20 Gold Coin Design, Standing Liberty.|814|0|0.1 -S18_2949|American Eagle Silver Proof Coins|2|2008_AESilverProof_thumb.jpg|US Mint|Walking Liberty, from Weinman's Walking Liberty Half Dollar, minted from 1916 1947.|1074|0|0.1 -S18_3029|American Eagle Platinum Bullion Coins|3|2008_AE_Plat_Bullion_Thumb.jpg|US Mint|Portrait of Liberty, Lady Liberty looking toward future.|4095|0|0.1 -S18_3140|American Eagle Gold Bullion Coins|1|2012-Gold-Eagle-bullion-thumb.jpg|US Mint|Modified design of Saint Gaudens' U.S. $20 Gold Coin Design, Standing Liberty.|3608|0|0.1 -S18_3233|American Eagle Silver Bullion Coins|2|2012-SilverEagle-bullion-thumb.jpg|US Mint|Walking Liberty, from Weinman's Walking Liberty Half Dollar, minted from 1916-1947.|2943|0|0.1 -S18_3278|American Eagle Platinum Uncirculated Coin|3|AEPlatUnc_thumb.jpg|US Mint|Portrait of Liberty, Lady Liberty looking toward future.|2280|0|0.1 -S18_3482|American Eagle Gold Uncirculated Coin|1|2011-Gold-Eagle-unc-thumb.jpg|US Mint|Modified design of Saint Gaudens' U.S. $20 Gold Coin Design, Standing Liberty.|4924|0|0.1 -S18_3782|American Eagle Silver Uncirculated Coin|2|2011-SilverEagle-unc-thumb.jpg|US Mint|Walking Liberty, from Weinman's Walking Liberty Half Dollar, minted from 1916-1947.|4358|0|0.1 -S18_4027|America the Beautiful Silver Bullion Coins|2|thumbBuffaloBullion.jpg|US Mint|Depicts the facade of the Hot Springs National Park headquarters building with a fountain in the foreground. Inscriptions are HOT SPRINGS, ARKANSAS, 2010 and E PLURIBUS UNUM.|1212|0|0.1 -S18_4522|First Spouse Gold Coin Program|1|EJohnson_Proof-thumb.jpg|US Mint|This design depicts three children dancing and a Marine Band fiddler playing at the children's ball that was held for President Johnson's 60th birthday.|4261|0|0.1 -S10_1949|2010 Celebrate Australia ACT 1oz Silver Proof Coin|5|2598-Celebrate-Australia-1oz-Silver-Proof-South-Australia-Coin-Reverse.jpg|Perth Mint|A perfect memento of the Australian Capital Territory, this 2010 Celebrate Australia coin is aimed at collectors, international visitors and Australians who wish to rejoice in the marvels of their spectacular surroundings. |2052|101.86|112.05 -S10_4698|2010 Celebrate Australia South Australia 1oz Silver Proof Coin|5|2597-Celebrate-Australia-1oz-Silver-Proof-Tasmania-Coin-Reverse.jpg|Perth Mint|A perfect memento of South Australia, this 2010 Celebrate Australia coin is aimed at collectors, international visitors and Australians who wish to rejoice in the marvels of their spectacular surroundings. |3007|101.86|112.05 -S10_4962|2010 Celebrate Australia Tasmania 1oz Silver Proof Coin|5|2598-Celebrate-Australia-1oz-Silver-Proof-South-Australia-Coin-Reverse.jpg|Perth Mint|A perfect memento of Tasmania, this 2010 Celebrate Australia coin is aimed at collectors, international visitors and Australians who wish to rejoice in the marvels of their spectacular surroundings. |1345|101.86|112.05 -S12_1108|Great Warrior Series - 2010 Roman Legionary 1oz Silver Proof Coin|5|0-Great-Warriors-1oz-Silver-Proof-Samurai-Coin-Reverse.jpg|Perth Mint|Proof Quality 99.9% Pure Silver The coin is struck by The Perth Mint from 1oz of 99.9% pure silver in proof quality.|334|99.96|109.96 -S12_2823|2011 Adelaide ANDA Coin Special - Celebrate Australia - Tasmanian Wilderness 1oz Silver Proof Coin|5|0-ANDA-Show-Special-Reverse.jpg|Perth Mint|An extremely limited number of these outstanding Celebrate Australia ‘specials’ remain available following the 2011 ANDA Coin Show in Adelaide.|2574|101.86|112.05 -S12_3380|2011 Australian Koala 1oz Silver Coin|5|0-Koala-2012-1oz-Coin-Reverse.jpg|Perth Mint|One of Australia’s favourite collectable issues,the Australian Koala 1oz silver coin portrays delightful original artistry each year. |870|56.64|62.3 -S12_3990|2011 Australian Koala Silver Coin Series 1oz Gilded Edition|5|0-Silver-Koala-5oz-Reverse.jpg|Perth Mint|The 2011 Gilded Edition of the popular Australian Koala Silver Coin Series depicts a charming new interpretation of Australia’s favourite tree-dwelling marsupials.|1779|99.01|108.91 -S12_4675|2011 Brisbane ANDA Coin Special - Celebrate Australia - Great Barrier Reef 2011 1oz Silver Proof Coin|5|0-Celebrate-australia-WA-Silver-Coin-Reverse.jpg|Perth Mint|A perfect memento of Queensland, this 2011 Celebrate Australia – Great Barrier Reef ANDA Coin Show Special captures the beauty of the reef’s spectacular seascape.|2843|101.86|112.05 -S18_1129|2011 Love Coin 1/2oz Silver Proof Coin|5|0-Forever-Love-2012-Silver-Proof-Coin-Reverse.jpg|Perth Mint|This romantic coin of love is the perfect Valentine, anniversary, or wedding gift.|1756|61.88|68.07 -S18_1367|2011 Melbourne ANDA Coin Show Special - Celebrate Australia - Heard and Mcdonald Islands 1oz Silver Proof Coin|5|0-ANDA-Show-Special-Reverse.jpg|Perth Mint|A perfect memento of Melbourne, this 2011 Celebrate Australia – Heard and McDonald Islands ANDA Coin Show Special captures the haunting beauty of these iconic isles.|3049|101.86|112.05 -S18_1662|2011 Mini Roo 0.5g Gold Coin|4|2777-Kangaroo-Silver-High-Relief-Reverse.jpg|Perth Mint|This delicate, button-sized release represents a golden opportunity for anyone to own an iconic Australian coin. The design portrays a kangaroo in astanding pose and is struck from 99.99% pure gold.|4856|56.64|62.3 -S18_1889|2011 Perth ANDA Coin Show Special - Celebrate Australia - Western Australia 1oz Silver Proof Coin|5|0-ANDA-Show-Special-Reverse.jpg|Perth Mint|Proof Quality 99.9% Pure Silver |3157|101.86|112.05 -S18_2238|2011 Platypus Dreaming 1oz Silver Coin|5|0-Dreaming-Platypus-Gold-2.5g-Reverse.jpg|Perth Mint|Platypuses are amazing creatures and iconic to Australia. They live beside freshwater rivers and lakes, where they create burrows for shelter and protection.|454|80.92|89.01 -S18_2319|2011 Platypus Dreaming Gold Coins|4|0-Dreaming-Platypus-Silver-Reverse.jpg|Perth Mint|Platypuses are amazing creatures and iconic to Australia. They live beside freshwater rivers and lakes, where they create burrows for shelter and protection.|2058|947.26|1041.99 -S18_2432|2011 Ships That Changed The World - Golden Hind 1oz Silver Proof Coin|4|0-Ships-Changed-World-Santa-Maria-Reverse.jpg|Perth Mint|The second release in this charming series features the Golden Hind, best known for its circumnavigation of the globe between 1577 and 1580, captained by Sir Francis Drake.|378|101.86|112.05 -S18_2625|2011 Sydney ANDA Coin Show Special - Celebrate Australia - Greater Blue Mountains 1oz Silver Proof Coin|5|2775-Melb-Coin-Show-Reverse.jpg|Perth Mint|A very limited number of these ‘Celebrate Australia’ ANDA Coin Show Specials are currently available online.|3481|101.86|112.05 -S18_2870|The 2011 UK Gold Proof Quarter-Sovereigns|4|0-BR11AGN_-_Britannia_Bullion_Rev.jpg|Perth Mint|An ideal gift to mark a birthday, graduation, or special occasion. The first quarter-sovereign was struck by the Royal Mint on behalf of collectors in 2009 and has become a firm favourite ever since. |4827|218.01|239.81 -S18_2957|2011 Wildlife in Need - Giant Panda 1oz Silver Proof Coin|5|2741-killer-whale-coin-reverse.jpg|Perth Mint|This peaceful, bamboo-eating member of the bear family is native to China. It is easily recognised by the large, distinctive black patches around the eyes, over the ears, and across its round body. Known for its solitary nature, the Giant Panda has an acute sense of smell and can grow up to five feet in height. The lifespan of this bear in the wild has not been confirmed but the oldest captive animal lived to 37 years of age.|3272|109.01|119.91 -S18_3136|2011 Wildlife in Need - Orangutan 1oz Silver Proof Coin|5|0-Giant-Panda-In-Need-Silver-1oz-Reverse.jpg|Perth Mint|The Orangutan is characterised by its ape-like shape, shaggy red fur, long arms and grasping hands and feet. This ‘man of the forest’ is now only found on the islands of Borneo and Sumatra in south-east Asia.|3391|109.01|119.91 -S18_3232|2011 Tasmanian Tiger 1oz Silver Proof Coin|5|0-Lost-Endangered-Tasmanian-Wedged-Tail-Eagle-Reverse.jpg|Perth Mint|Tyger, Tyger, burning bright in the forests of the night…’ Just what the famous poet, Blake, might have written about the demise of the Tasmanian tiger, we can never know. Strictly speaking, the Tasmanian tiger is not a tiger at all, but a thylacine and marsupial. This fabled creature was sadly hunted to extinction. Following the sell-out success of the 'Deadly and Dangerous' series it can be expected that this release will go wild! |2872|89.97|98.97 -S18_3259|2012 Australian Olympic Team 2oz Gold Proof Coin|4|0-2011-countdown-pack-front.jpg|Perth Mint|Authorised by Australian Olympic Committee Authorised by the Australian Olympic Committee, this remarkable release celebrates the Australian team’s participation at the London 2012 Olympic Games.|250|6654.69|7320.16 -S18_3320|2012 Silver Koala Baby Coin Pack|5|0-kookaburra-baby-pack-2012.jpg|Perth Mint|An Australian $1 coin struck by The Perth Mint is a popular way to celebrate the birth of a baby. When it comes in a wonderful baby gift pack, it represents the perfect present to mark the arrival of any newborn.|3461|54.74|60.21 -S18_3685|2012 Wildlife in Need - Polar Bear 1oz Silver Proof Coin|5|0-Wildlife-Orangutan-1oz-Silver-Reverse.jpg|Perth Mint|The Polar Bear is easily recognised by its distinctive shape, from its round posterior to its pointed black nose. Although the bear’s fur looks white, each hair shaft is actually pigment-free and transparent with a hollow core that scatters and reflects visible light, much like what happens with ice and snow.|2228|109.01|119.91 -S18_3856|2012 Wildlife in Need - Polar Bear 1oz Silver Proof Coin|5|0-Wildlife-Orangutan-1oz-Silver-Reverse.jpg|Perth Mint|The Polar Bear is easily recognised by its distinctive shape, from its round posterior to its pointed black nose. Although the bear’s fur looks white, each hair shaft is actually pigment-free and transparent with a hollow core that scatters and reflects visible light, much like what happens with ice and snow.|2227|109.01|119.91 -S18_4409|2012 UK Britannia £2 Silver Bullion Coin|5|0-BRM-2012-Proof-Year-Set-Case-Inside.jpg|Perth Mint|95.8% Pure Silver The largest and purest UK legal tender coin, the Britannia coin is struck by the Royal Mint from 1oz of 95.8% Britannia silver.|730|84.73|93.2 -S18_4600|Australian Antarctic Territory Series Killer Whale 2011 1oz Silver Proof Coin|5|0-Giant-Panda-In-Need-Silver-1oz-Reverse.jpg|Perth Mint|Proof Quality 99.9% Pure Silver The coin is struck by The Perth Mint from 1oz of 99.9% pure silver in proof quality.|3578|101.86|112.05 -S18_4668|Australian Bush Babies 1/2oz Silver Proof Kangaroo Coin|5|2541-Aust_Bush_Baby_Sugar_Glider_Silver_Coin_Reverse.jpg|Perth Mint|Proof Quality 99.9% Pure Silver The coin is struck from 1/2oz of 99.9% pure silver in proof quality with a large 36mm diameter.|1087|52.36|57.6 -S18_4721|Australian Bush Babies 1/2oz Silver Proof Sugar Glider Coin|5|2577-Bush-Babies-1_2oz-Silver-Proof-Dingo-Coin-Reverse.jpg|Perth Mint|This is the second coin from Australian Bush Babies, a beautiful new series that made an enormous impact with the first release portraying a cute and cuddly kangaroo ‘joey’. |2993|52.36|57.6 -S18_4933|Australian Bush Babies 1/2oz Silver Proof Coin Series 2011 Koala Coin|5|2577-Bush-Babies-1_2oz-Silver-Proof-Dingo-Coin-Reverse.jpg|Perth Mint|The koala is perhaps Australia’s most beloved and iconic animal. The cuddly koala ‘bear’ is not really a bear at all, but a marsupial. Protected by law, the koala lives on a diet of eucalypt leaves from the tree of the same name. This furry friend is one of the few animals that actually has fingerprints similar to humans and when distressed the koala issues a cry that has been compared to that of a human baby.|2871|64.26|70.69 -S24_1046|2011 Australian Kangaroo 1oz Silver Proof High Relief Coin|5|0-2011-Aust-Kangaroo-Mini-Coin-Reverse.jpg|Perth Mint|The Perth Mint is pleased to announce the new annual release to the renowned Australian Kangarooproof coin series. This distinctive new design will without doubt become a classic collectable.|1422|104.72|115.19 -S24_1444|Australian Koala 2011 1/10oz Silver Coin|5|0-Silver-Koala-5oz-Reverse.jpg|Perth Mint|The koala is an internationally recognised symbol of Australia, and this release represents a fantastic and affordable opportunity to own an iconic 99.9% pure silver coin. |4962|14.23|15.65 -S24_1578|Australian Koala 2012 1oz Silver Coin|5|0-1_10-Koala-Reverse.jpg|Perth Mint|One of Australia’s favourite collectable issues, the Australian Koala 1oz silver coin portrays delightful original artistry each year.|4029|54.74|60.21 -S24_1628|Australian Koala 2012 1oz Silver Coin|5|0-1_10-Koala-Reverse.jpg|Perth Mint|One of Australia’s favourite collectable issues, the Australian Koala 1oz silver coin portrays delightful original artistry each year.|73|54.74|60.21 -S24_1785|Australian Koala Silver Coin Series 2011 5oz Silver Proof Coin|5|0-1_10-Koala-Reverse.jpg|Perth Mint|This is the first time that an Australian Koala coin has been offered in this size.|4820|452.22|497.44 -S24_1937|Australian Lunar Series II 2010 Gilded Tiger 1oz Silver Coin|5|2835-Lunar-Silver-Gilded-Reverse.jpg|Perth Mint|Specimen Quality 99.9% Pure Silver The coin is struck by The Perth Mint from 1oz of 99.9% pure silver in specimen quality.|3313|99.01|108.91 -S24_2000|Australian Lunar Series II 2012 Year of the Dragon 1 Kilo Silver Proof Coloured Coin|5|0-Lunar-Silver-Gemstone-Reverse.jpg|Perth Mint|In 2012, The Perth Mint’s internationally renowned Australian Lunar Coin Series II celebrates the auspicious Year of the Dragon, the fifth animal in the 12-year cycle of the Chinese zodiac.|1184|1951.66|2146.83 -S24_2011|Australian Lunar Series II 2011 Year of the Rabbit Gemstone Edition|5|2573-2011-Year-of-the-Rabbit-1oz-Silver-Coloured-Coin Reverse.jpg|Perth Mint|This year’s Gemstone Edition from the Australian Lunar Silver Coin Series II celebrates the rabbit, the fourth of the twelve animals associated with the ancient Chinese Lunar Calendar. |4942|1951.66|2146.83 -S24_2022|Australian Lunar Silver Coin Series II 2011 Year of the Rabbit Gilded Edition|5|2573-2011-Year-of-the-Rabbit-1oz-Silver-Coloured-Coin Reverse.jpg|Perth Mint|This year’s Gilded Edition from the Australian Lunar Silver Coin Series II depicts the rabbit, the fourth of the twelve animals associated with the ancient Chinese Lunar Calendar. |2666|99.01|108.91 -S24_2300|Australian Lunar Silver Coin Series II 2012 Year of the Dragon Coloured Editions|5|2573-2011-Year-of-the-Rabbit-1oz-Silver-Coloured-Coin Reverse.jpg|Perth Mint|Celebrating the auspicious Year of the Dragon, these 1oz and 1/2oz silver proof coloured coins from the Australian Lunar Silver Coins Series II are a prestigious and limited offering from The Perth Mint.

The birth dates for people ruled by the Chinese lunar dragon include 1916, 1928, 1940, 1952, 1964, 1976, 1988, 2000 and 2012. Those born under the influence of this sign are said to be confident, enterprising, independent, self-assured, brave and passionate.|3766|64.26|70.69 -S24_2360|Australian Lunar Silver Coin Series II 2012 Year of the Dragon Gilded Edition|5|2574-2011-Year-of-the-Rabbit-1oz-Silver-Gilded-Coin Reverse.jpg|Perth Mint|This year’s Gilded Edition from the Australian Lunar Silver Coin Series II depicts the dragon, the fifth animal in the Chinese lunar calendar.|2521|99.01|108.91 -S24_2766|Australian Lunar Silver Coin Series II 2012 Year of the Dragon Typeset Collection|5|2835-Lunar-Silver-Gilded-Reverse.jpg|Perth Mint|Celebrating the auspicious Year of the Dragon, this 2012 Typeset Collection from the annual Australian Lunar Silver Coins Series II is a prestigious and exceptionally limited offering from The Perth Mint.

The birth dates for people ruled by the Chinese lunar dragon include 1916, 1928, 1940, 1952, 1964, 1976, 1988, 2000 and 2012. Those born under the influence of this sign are said to be confident, enterprising, independent, self-assured, brave and passionate.|4246|322.74|355.01 -S24_2840|Australian Sea Life II - The Reef - Starfish 2011 1/2oz Silver Proof Coin|5|0-Sea-Life-II-Turtle-Reverse.jpg|Perth Mint|Despite its name, a starfish is not really a fish at all – hence the alternative ‘sea star’. Many of these wonderfully colourful creatures are at home in Australia’s tropical-to-temperate seas, and because they’re commonly found in rock pools, they’re one of the easiest for all to enjoy!|4816|64.26|70.69 -S24_2841|Australian Sea Life II - The Reef - Surgeonfish 1/2oz Silver Proof Coin|5|0-Sea-Life-II-Starfish-Reverse.jpg|Perth Mint|The third release in this stunning series features a spectacularly realistic portrayal of a Surgeonfish.|2188|64.26|70.69 -S24_2887|Australian Sea Life II - The Reef - Hawksbill Turtle 2011 1/2oz Silver Proof Coin|5|0-Giant-Panda-In-Need-Silver-1oz-Reverse.jpg|Perth Mint|This solitary sea turtle can be found in the coral reefs of northern Australia. Listed as endangered, the Hawksbill Turtle matures at thirty years of age and has a lifespan of up to fifty years. An adult Hawksbill can grow up to 1 metre in length.|251|64.26|70.69 -S24_2972|Baby Dragon 2012 1/2oz Silver Proof Coin|5|2835-Lunar-Silver-Gilded-Reverse.jpg|Perth Mint|This very cute baby dragon coin celebrates the Year of the Dragon. The birth dates for people ruled by the Chinese Lunar Dragon include 1916, 1928, 1940, 1952, 1964, 1976, 1988, 2000 and 2012. Those born under the influence of this sign are said to be confident, enterprising, independent, self-assured, brave and passionate.|4049|64.26|70.69 -S24_3151|Centenary of Australian Commonwealth Bronze Coinage 1911-2011 1oz Silver Proof Coin|5|2601-Pre-decimal-minature-coins-in-card.jpg|Perth Mint|This spectacular silver commemorative marks 100 years of Commonwealth coins. Australia’s first penny and halfpenny were issued in 1911. Made by the Royal Mint in England, the obverse portrayed Sir E.B. Mackennal’s effigy of King George V, who had ascended to the throne on the death of his father, King Edward VII, on 6 May 1910. |2656|101.86|112.05 -S24_3191|Centenary of Australian Commonwealth Silver Coinage 1910-2010 1oz Silver Coin|5|2568-Centenary-of-Australian-Commonwealth-of-Bronze-Coinage-1oz-Silver-Proof-Coin-Reverse.jpg|Perth Mint|This commemorative issue celebrates the 100 anniversary of the introduction of Commonwealth silver coins. The seeds of this seminal event in the history of Australian coinage were sown in 1901 when, under the new Constitution, control of Australia’s currency was vested in the Commonwealth. Subsequently, the Coinage Act of 1909 saw the replacement of British gold, silver and bronze coins with the Commonwealth’s own coinage, beginning with the 1910-dated Australian florin, shilling, sixpence and threepence depicting King Edward VII. |619|101.86|112.05 -S24_3371|Centenary of RMC Duntroon 1911 - 2011 1oz Silver Proof Coin and Badge Set|5|0-Duntroon-PNC-Reverse.jpg|Perth Mint|The Perth Mint is celebrating 100 years of Duntroon, the Royal Military College of Australia responsible for training cadets for service as officers in the Australian Army. Duntroon graduates have led Australian soldiers in every major military campaign in which Australia has been engaged. Recognised as one of the world’s leading military colleges, it proudly upholds a famous tradition of training and developing some of the country’s most accomplished leaders.|2037|111.38|122.52 -S24_3420|Chinese Astrological Series 2011 Year of the Rabbit Gold Coin 'Longevity'|4|0-Tuvalu---Lu.jpg|Perth Mint|Proof Quality 99.99% Pure Gold Celebrating the 2011 Year of the Rabbit, this coin is struck by The Perth Mint from 1/5oz of 99.99% pure gold in proof quality.|3229|655.95|721.55 -S24_3432|Chinese Astrological Series 2011 Year of the Rabbit Gold Coin 'Prosperity'|4|0-Tuvalu---Lu.jpg|Perth Mint|Proof Quality 99.99% Pure Gold Celebrating the 2011 Year of the Rabbit, this coin is struck by The Perth Mint from 1/5oz of 99.99% pure gold in proof quality.|4462|655.95|721.55 -S24_3816|Chinese Astrological Series 2011 Year of the Rabbit Gold Coin 'Success'|4|0-Tuvalu---Fu.jpg|Perth Mint|Proof Quality 99.99% Pure Gold Celebrating the 2011 Year of the Rabbit, this coin is struck by The Perth Mint from 1/5oz of 99.99% pure gold in proof quality.|2452|655.95|721.55 -S24_3856|Chinese Astrological Series 2012 Year of the Dragon Gold Coin 'Prosperity'|4|0-Tuvalu---Fu.jpg|Perth Mint|Celebrating the Year of the Dragon, the birth dates for people ruled by this Chinese Lunar sign include 1916, 1928, 1940, 1952, 1964, 1976, 1988, 2000 and 2012. Those born under the influence of this sign are said to be confident, enterprising, independent, self-assured, brave, and passionate.|1651|759.72|835.69 -S24_3949|Chinese Astrological Series 2012 Year of the Dragon Gold Three-Coin Set 'Prosperity' and 'Longevity' and 'Success'|4|2901-Fu-Lu-Combined.jpg|Perth Mint|Celebrating the Year of the Dragon, the birth dates for people ruled by this Chinese Lunar sign include 1916, 1928, 1940, 1952, 1964, 1976, 1988, 2000 and 2012. Those born under the influence of this sign are said to be confident, enterprising, independent, self-assured, brave, and passionate.|966|2180.14|2398.15 -S24_3969|Chinese Astrological Series 2012 Year of the Dragon Gold Two-Coin Set 'Prosperity' and 'Longevity'|4|2900-Lu-Fu-Shou-Combined-v2.jpg|Perth Mint|Celebrating the Year of the Dragon, the birth dates for people ruled by this Chinese Lunar sign include 1916, 1928, 1940, 1952, 1964, 1976, 1988, 2000 and 2012. Those born under the influence of this sign are said to be confident, enterprising, independent, self-assured, brave, and passionate.|3339|1504.2|1654.62 -S24_4048|Discover Australia 2010 Dreaming – Five-Coin Silver Set|5|0-Discover-Australia-2011-5-Coin-Set-Silver.jpg|Perth Mint|Proof Quality 99.9% Pure Silver This set comprises all five 2010 coins struck by The Perth Mint from 1oz of 99.9% pure silver in proof quality.|4010|509.33|560.26 -S24_4258|Discover Australia 2011 Dreaming – Dingo 1oz Silver Coin|5|0-Discover-Australia-2011-TasDevil-Silver-1oz-Reverse.jpg|Perth Mint|PROOF QUALITY 99.9% PURE SILVER |3590|101.86|112.05 -S24_4278|Discover Australia 2011 Dreaming – Five-Coin Silver Set|5|2450-Discover-Australia-Crocodile-1oz-Silver-Proof-Coin-Hero.jpg|Perth Mint|PROOF QUALITY 99.9% PURE SILVER |779|509.33|560.26 -S24_4620|Discover Australia 2011 Dreaming – Tasmanian Devil 1oz Silver Coin|5|0-Discover-Australia-2011-Dingo-Silver-1oz-Reverse.jpg|Perth Mint|PROOF QUALITY 99.9% PURE SILVER |4117|101.86|112.05 -S32_1268|Endangered and Extinct 2012 Tasmanian Wedge-Tailed Eagle 1oz Silver Proof Coin|5|2554-2011-Tasmanian-Tiger-1oz-silver-proof-coin-Reverse.jpg|Perth Mint|The second coin in the Endangered and Extinct series is the Tasmanian Wedge-Tailed Eagle,a huge bird that stands one metre tall and has a wingspan roughly twice its height. Separated for thousands of years from its mainland counterparts, it now faces a number of threats, including the loss of suitable habitat. As a result, it is estimated that no more than 130 pairs are successfully breeding each year.|4603|110.43|121.47 -S32_1374|Famous Battles in Australian History - Kapyong 2012 1oz Silver Proof Coin|5|2781-Famous-Battles-Tobruk-Reverse.jpg|Perth Mint|Proof Quality 99.9% Pure Silver The coin is struck by The Perth Mint from 1oz of 99.9% pure silver in proof quality.|3995|101.86|112.05 -S32_2206|Famous Battles in Australian History - Kokoda 2012 1oz Silver Proof Coin|5|2781-Famous-Battles-Tobruk-Reverse.jpg|Perth Mint|Proof Quality 99.9% Pure Silver The coin is struck by The Perth Mint from 1oz of 99.9% pure silver in proof quality.|4782|101.86|112.05 -S32_2509|Famous Battles In Australian History - Tobruk 2011 1oz Silver Proof Coin|5|0-Australian-Battles-Kokoda-Reverse.jpg|Perth Mint|Proof Quality 99.9% Pure Silver The coin is struck by The Perth Mint from 1oz of 99.9% pure silver in proof quality.|3786|101.86|112.05 -S32_3207|Famous Naval Battles 1oz Silver Proof Coin Battle of Hampton Roads 1862|5|2585-Great-Naval-Battles-1oz-Silver-Proof-Jutland-Coin-Reverse.jpg|Perth Mint|The first-ever clash between two ironclad warships took place during the American Civil War on Hampton Roads, a body of water on the US east coast. On the Confederate side was Virginia, a wooden frigate previously known as USS Merrimack, which had been sunk and then rebuilt as an ironclad ram. During the second day of the battle, she encountered the Union Monitor. A completely new design of ironclad, her extremely low profile meant that she had no more than 18 inches of armoured deck visible above the water line. After fighting for several hours, mostly at close range, neither ship had landed a decisive blow, their armour-plating proving effective. Nevertheless, the battle marked the dawn of a new era in maritime warfare. |4972|101.86|112.05 -S32_3522|Famous Naval Battles 1oz Silver Proof Coin Battle of Jutland 1916|5|0-RAN-PNC-Reverse.jpg|Perth Mint|All aficionados of naval history will be thrilled with this fourth release on the Battle of Jutland. The Battle of Jutland was history's biggest ever naval battle involving 250 ships. The fighting took place in the North Sea on 31 May 1916 between the British Grand Fleet and the Imperial Germany Navy. |334|101.86|112.05 -S32_4289|Famous Naval Battles 1oz Silver Proof Coin Battle of Midway 1942|5|0-Ships-Changed-World-Santa-Maria-Reverse.jpg|Perth Mint|The Battle of Midway (1942) was fought near the Pacific island of Midway, and is considered a turning point in the Second World War. After Pearl Harbour, the Japanese planned to capture Midway to use as an advance base and to entrap and destroy the US Pacific Fleet. Because of intelligence, the US Pacific Fleet surprised the Japanese forces, sinking the four Japanese carriers, while losing the USS Yorktown alone. After Midway, the Americans and their allies took the offensive in the Pacific. |3087|101.86|112.05 -S32_4485|Famous Naval Battles 1oz Silver Proof Coin Series Battle of Trafalgar 1805|5|0-Famous-Naval-Battles-Midway-Silver-Coin--Reverse.jpg|Perth Mint|Battle of Trafalgar 1805 Fought near the Spanish port of Cadiz on 21 October 1805 between square-rigged warships of the Royal Navy and the Franco-Spanish alliance, the Battle of Trafalgar ended Napoleon Bonaparte's plan to invade Britain. Brave tactics employed by Lord Nelson’s outnumbered fleet saw the Royal Navy achieve one of its most celebrated victories. But it came at the cost of the legendary Admiral’s life. Picked off by a French marksman, Nelson died aboard his illustrious flagship, HMS Victory.|826|101.86|112.05 -S50_1341|Famous Naval Battles 1oz Silver Proof Coin Series The Battle of Salamis 480BC|5|0-Famous-Naval-Battles-Midway-Silver-Coin--Reverse.jpg|Perth Mint|Proof Quality 99.9% Pure Silver The coin is struck by The Perth Mint from 1oz of 99.9% pure silver in proof quality.|3084|101.86|112.05 -S50_1392|Forever Love 2012 1/2oz Silver Proof Coin|5|0-2011-Love-Coin-12oz-Silver-Proof-Coin_Reverse.jpg|Perth Mint|The koala is perhaps Australia’s most beloved and iconic animal.The cuddly koala ‘bear’ is not really a bear at all, but a marsupial. Protected by law, the koala inhabits Eucalyptus trees and feeds solely on a diet of its leaves, the oil from which, like love itself, is renowned for its healing and warming properties.|633|64.26|70.69 -S50_1514|Ginger Meggs 90th Anniversary 2011 1oz Silver Proof Coin|5|0-Transformers-Optimus-Prime-Reverse.jpg|Perth Mint|This great new release celebrates the 90th anniversary of the creation of Ginger Meggs, Australia’s longest running comic strip.|3745|109.48|120.43 -S50_4713|Great British Icons Six-Coin Silver Proof Set|5|0-BRM-2012-Oympic-Coin.jpg|Perth Mint|The six coins in this set are selected from the best of the ‘Celebration of Britain Collection’ that rejoice in the Mind, Body and Spirit. Britain is the Olympic host for 2012 and each coin is inscribed with a motivational quote that embodies the Olympic spirit. |4193|618.34|680.17 -S700_1138|Great Composers 1oz Silver Proof Coin Gustav Mahler 1860 - 1911|5|0-Great-Composers-Liszt-Silver-Coin-Reverse.jpg|Perth Mint| |3539|101.86|112.05 -S700_1691|Great Composers 1oz Silver Proof Coin Robert Schumann 1810 - 1856|5|2553-Great-Composers-Gustav-Mahler-1oz-Silver-Proof-Coin-Reverse.jpg|Perth Mint|Robert Schumann, one of the most famous and important Romantic composers of the 19th century, was born 200 years ago in Saxony on 8 June 1810. As a young man he studied the piano, but a hand injury ended his hopes of becoming a virtuoso. Instead, Schumann dedicated himself to composition. During different phases of his career, he focussed on keyboard music, song, chamber music, choral music, opera and symphony. Schumann’s genius, however, was cut short by his death in an asylum in 1856.|2160|101.86|112.05 -S700_1938|Great Composers 1oz Silver Proof Coin Series Franz Liszt 1811 - 1886|5|0-dame-nellie-coin-reverse.jpg|Perth Mint|In 1842 ‘Lisztomania’ swept across Europe. Women fought over his silk handkerchiefs and men wept openly at his piano concerts. He was praised for his brilliance, strength and precision; his concerts were likened to ecstatic experiences. Franz Liszt is considered perhaps the greatest pianist of all time. He was also an important composer, teacher and inventor of the symphonic poem. As Liszt grew older he became increasingly plagued by feelings of desolation and despair; “I carry a deep sadness of the heart which must now break out into sound”. |4505|101.86|112.05 -S700_2047|Great Composers 1oz Silver Proof Coin Series Frédéric Chopin 1810 - 1849|5|2553-Great-Composers-Gustav-Mahler-1oz-Silver-Proof-Coin-Reverse.jpg|Perth Mint|Born in Poland 200 years ago on 1 March 1810, Chopin was a gifted child performer who played his first public concert at the age of eight. After studying at the Warsaw Conservatory, he embarked on an extensive European tour, arriving in Paris in 1831, where he earned enough income as a piano tutor to spend the majority of his time composing. Chopin’s mazurkas, polonaises, preludes, études, nocturnes, ballades, impromptus and many other works have been described as the richest and most influential legacy left to the piano repertoire by any individual composer. He died on 17 October 1849, a victim of tuberculosis.|870|101.86|112.05 -S700_2466|Great Warrior Series - 2010 Viking 1oz Silver Proof Coin|5|0-Great-Warriors-1oz-Silver-Proof-Samurai-Coin-Reverse.jpg|Perth Mint|Proof Quality 99.9% Pure Silver The coin is struck by The Perth Mint from 1oz of 99.9% pure silver in proof quality.|3626|99.96|109.96 -S700_2610|Great Warriors Series - 2010 Knight 1oz Silver Proof Coin|5|0-Great-Warriors-1oz-Silver-Proof-Samurai-Coin-Reverse.jpg|Perth Mint|99.9% Pure Silver in Proof Quality |433|99.96|109.96 -S700_2824|Great Warriors Series 2010 - Samurai 1oz Silver Proof Coin|5|2519-Great-Warrior-Series-2010-Viking-1oz-Silver-Proof-Reverse.jpg|Perth Mint||1272|99.96|109.96 -S700_2834|Working Dogs - Labrador Retriever 1oz Silver Proof Coin|5|2569-Border-Collie-1oz-Silver-Proof-Coin-Reverse.jpg|Perth Mint|Proof Quality 99.9% Pure Silver The coin is struck by The Perth Mint from 1oz of 99.9% pure silver in proof quality.|1976|85.63|94.19 -S700_3167|Lucky Waving Green Cat 1/25oz Gold Coin|4|2549-Lucky-Waving-Purple-Cat-1_25oz-Gold-Coin-Reverse.jpg|Perth Mint|The popular Maneki Neko, or Lucky Waving Cat, is believed to bring good luck to homes and businesses. A cat with a raised left paw draws customers, friendship and love. |3178|128.53|141.38 -S700_3505|Lucky Waving Purple Cat 1/25oz Gold Coin|4|2550-Lucky-Waving-Green-Cat-1_25oz-Gold-Coin-Reverse.jpg|Perth Mint|The popular Maneki Neko, or Lucky Waving Cat, is believed to bring good luck to homes and businesses. A cat with a raised left paw draws customers, friendship and love. |3074|128.53|141.38 -S700_3962|Perth ANDA Coin Show Special 2011 Coloured Rabbit 2oz Silver Coin|5|2573-2011-Year-of-the-Rabbit-1oz-Silver-Coloured-Coin Reverse.jpg|Perth Mint|This exclusive Perth ANDA Coin Show Special features a Coloured Edition 2oz coin from the Australian Lunar Silver Coin Series II – 2011 Year of the Rabbit. |2959|147.57|162.33 -S700_4002|Rugby World Cup Champions 2011 Limited Edition International Silver Five-Coin Collection|5|0-Men-of-Gold-Reverse.jpg|Perth Mint|The ultimate in sporting trophies, New Zealand Post is proud to present this premium collection of five silver proof coins.|4049|566.46|623.11 -S72_1253|Ships That Changed The World - Mayflower 2012 1oz Silver Proof Coin|5|0-Ships-Changed-World-Santa-Maria-Reverse.jpg|Perth Mint|The third release in this charming series features the Mayflower, which was the cargo ship that transported the English separatists or pilgrims, from a site near the Mayflower Steps in Plymouth, England, to Plymouth, Massachusetts, in 1620.|4763|101.86|112.05 -S72_3212|The 2011 UK Britannia 1oz Silver Bullion Coin|5|0-2011_UK_Gold_Proof_Quarter_Sovereign_Reverse.jpg|Perth Mint|A stunning collectable, the 2011 UK Britannia £2 coin would make an ideal keepsake for anyone with British ancestry. |3409|52.83|58.11 diff --git a/WebGoat/DB_Scripts/datafiles/securityquestions.txt b/WebGoat/DB_Scripts/datafiles/securityquestions.txt deleted file mode 100755 index 0062c0604..000000000 --- a/WebGoat/DB_Scripts/datafiles/securityquestions.txt +++ /dev/null @@ -1,5 +0,0 @@ -1|What is your favorite color? -2|In what state did you graduate high school? -3|What is your favorite type of animal? -4|What is your preferred internet password? -5|Where did you go on your honeymoon? diff --git a/WebGoat/DB_Scripts/load_webgoatcoins.sql b/WebGoat/DB_Scripts/load_webgoatcoins.sql deleted file mode 100644 index d53b7ca46..000000000 --- a/WebGoat/DB_Scripts/load_webgoatcoins.sql +++ /dev/null @@ -1,96 +0,0 @@ -/****************************************************************************** - * Copyright (c) 2005 Actuate Corporation. - * All rights reserved. This file and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http:/www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Actuate Corporation - initial implementation - * - * Classic Models Inc. sample database developed as part of the - * Eclipse BIRT Project. For more information, see http:/www.eclipse.org/birt - * - *******************************************************************************/ - -/* Loads the Classic Models tables using the MySQL LOAD command */ - -/* Preparing the load files for importing. Input file requirements: - - Column order in the file must be the same as the columns in the table - - Columns are Comma delimited - - Text is quoted (") - - NULL columns must be ,NULL, ( ,, is not acceptable) - - Dates must be in YYYY-MM-DDD format - - Input files expected in the datafiles direcory, parallel to this script. -*/ - - -/* First make sure all the tables are empty */ - -DELETE FROM Customers; -DELETE FROM CustomerLogin; -DELETE FROM SecurityQuestions; -DELETE FROM Employees; -DELETE FROM Offices; -DELETE FROM OrderDetails; -DELETE FROM Orders; -DELETE FROM Payments; -DELETE FROM Products; -DELETE FROM Categories; -DELETE FROM Comments; - - -/* Load records into the tables. There should be no warnings.*/ - -LOAD DATA LOCAL INFILE 'DB_Scripts/datafiles/customers.txt' INTO TABLE Customers - FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'; - -SHOW WARNINGS LIMIT 10; - -LOAD DATA LOCAL INFILE 'DB_Scripts/datafiles/customerlogin.txt' INTO TABLE CustomerLogin - FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'; - -SHOW WARNINGS LIMIT 10; - -LOAD DATA LOCAL INFILE 'DB_Scripts/datafiles/securityquestions.txt' INTO TABLE SecurityQuestions - FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'; - -SHOW WARNINGS LIMIT 10; - -LOAD DATA LOCAL INFILE 'DB_Scripts/datafiles/employees.txt' INTO TABLE Employees - FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'; - -SHOW WARNINGS LIMIT 10; - -LOAD DATA LOCAL INFILE 'DB_Scripts/datafiles/offices.txt' INTO TABLE Offices - FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'; - -SHOW WARNINGS LIMIT 10; - -LOAD DATA LOCAL INFILE 'DB_Scripts/datafiles/orderdetails.txt' INTO TABLE OrderDetails - FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'; - -SHOW WARNINGS LIMIT 10; - -LOAD DATA LOCAL INFILE 'DB_Scripts/datafiles/orders.txt' INTO TABLE Orders - FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'; - -SHOW WARNINGS LIMIT 10; - -LOAD DATA LOCAL INFILE 'DB_Scripts/datafiles/payments.txt' INTO TABLE Payments - FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'; - -SHOW WARNINGS LIMIT 100; - -LOAD DATA LOCAL INFILE 'DB_Scripts/datafiles/categories.txt' INTO TABLE Categories - FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'; - -SHOW WARNINGS LIMIT 100; - - -LOAD DATA LOCAL INFILE 'DB_Scripts/datafiles/products.txt' INTO TABLE Products - FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'; - -SHOW WARNINGS LIMIT 10; - diff --git a/WebGoat/DB_Scripts/load_webgoatcoins_sqlite3.sql b/WebGoat/DB_Scripts/load_webgoatcoins_sqlite3.sql deleted file mode 100644 index ef8d1620f..000000000 --- a/WebGoat/DB_Scripts/load_webgoatcoins_sqlite3.sql +++ /dev/null @@ -1,24 +0,0 @@ -.separator "|" - -DELETE FROM Customers; -DELETE FROM CustomerLogin; -DELETE FROM SecurityQuestions; -DELETE FROM Employees; -DELETE FROM Offices; -DELETE FROM OrderDetails; -DELETE FROM Orders; -DELETE FROM Payments; -DELETE FROM Products; -DELETE FROM Categories; -DELETE FROM Comments; - -.import DB_Scripts/datafiles/customers.txt Customers -.import DB_Scripts/datafiles/customerlogin.txt CustomerLogin -.import DB_Scripts/datafiles/securityquestions.txt SecurityQuestions -.import DB_Scripts/datafiles/employees.txt Employees -.import DB_Scripts/datafiles/offices.txt Offices -.import DB_Scripts/datafiles/orderdetails.txt OrderDetails -.import DB_Scripts/datafiles/orders.txt Orders -.import DB_Scripts/datafiles/payments.txt Payments -.import DB_Scripts/datafiles/categories.txt Categories -.import DB_Scripts/datafiles/products.txt Products diff --git a/WebGoat/DB_Scripts/logos/alphacognac.png b/WebGoat/DB_Scripts/logos/alphacognac.png deleted file mode 100644 index c9242bb8b..000000000 Binary files a/WebGoat/DB_Scripts/logos/alphacognac.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/americanbankinc.png b/WebGoat/DB_Scripts/logos/americanbankinc.png deleted file mode 100644 index 3510c4846..000000000 Binary files a/WebGoat/DB_Scripts/logos/americanbankinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/amicacoinsco.png b/WebGoat/DB_Scripts/logos/amicacoinsco.png deleted file mode 100644 index 8bbe8cd5d..000000000 Binary files a/WebGoat/DB_Scripts/logos/amicacoinsco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/angresellers.png b/WebGoat/DB_Scripts/logos/angresellers.png deleted file mode 100644 index c8566befc..000000000 Binary files a/WebGoat/DB_Scripts/logos/angresellers.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/annasdecorations.png b/WebGoat/DB_Scripts/logos/annasdecorations.png deleted file mode 100644 index 1f67e62ac..000000000 Binary files a/WebGoat/DB_Scripts/logos/annasdecorations.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/antondesigns.png b/WebGoat/DB_Scripts/logos/antondesigns.png deleted file mode 100644 index ff6a754f3..000000000 Binary files a/WebGoat/DB_Scripts/logos/antondesigns.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/asianshoppingnetwork.png b/WebGoat/DB_Scripts/logos/asianshoppingnetwork.png deleted file mode 100644 index 8aa094efb..000000000 Binary files a/WebGoat/DB_Scripts/logos/asianshoppingnetwork.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/asiantreasures.png b/WebGoat/DB_Scripts/logos/asiantreasures.png deleted file mode 100644 index 96106956b..000000000 Binary files a/WebGoat/DB_Scripts/logos/asiantreasures.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/ateliergraphique.png b/WebGoat/DB_Scripts/logos/ateliergraphique.png deleted file mode 100644 index 11d5259d1..000000000 Binary files a/WebGoat/DB_Scripts/logos/ateliergraphique.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/australiancollectables.png b/WebGoat/DB_Scripts/logos/australiancollectables.png deleted file mode 100644 index ad1d6423c..000000000 Binary files a/WebGoat/DB_Scripts/logos/australiancollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/australiancollectors.png b/WebGoat/DB_Scripts/logos/australiancollectors.png deleted file mode 100644 index b21b19345..000000000 Binary files a/WebGoat/DB_Scripts/logos/australiancollectors.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/australiangoldnetwork.png b/WebGoat/DB_Scripts/logos/australiangoldnetwork.png deleted file mode 100644 index 163f6f6aa..000000000 Binary files a/WebGoat/DB_Scripts/logos/australiangoldnetwork.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/avstores.png b/WebGoat/DB_Scripts/logos/avstores.png deleted file mode 100644 index 79635a3a6..000000000 Binary files a/WebGoat/DB_Scripts/logos/avstores.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/baanepreciousimports.png b/WebGoat/DB_Scripts/logos/baanepreciousimports.png deleted file mode 100644 index 91cd27eb5..000000000 Binary files a/WebGoat/DB_Scripts/logos/baanepreciousimports.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/bavariancollectablesimports.png b/WebGoat/DB_Scripts/logos/bavariancollectablesimports.png deleted file mode 100644 index 90ae1a847..000000000 Binary files a/WebGoat/DB_Scripts/logos/bavariancollectablesimports.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/bgecollectables.png b/WebGoat/DB_Scripts/logos/bgecollectables.png deleted file mode 100644 index 2a8d84f0f..000000000 Binary files a/WebGoat/DB_Scripts/logos/bgecollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/blauerseemetals.png b/WebGoat/DB_Scripts/logos/blauerseemetals.png deleted file mode 100644 index 384ca7de6..000000000 Binary files a/WebGoat/DB_Scripts/logos/blauerseemetals.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/boardscoinsco.png b/WebGoat/DB_Scripts/logos/boardscoinsco.png deleted file mode 100644 index 8c880d76d..000000000 Binary files a/WebGoat/DB_Scripts/logos/boardscoinsco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/cafimports.png b/WebGoat/DB_Scripts/logos/cafimports.png deleted file mode 100644 index a1c5ce5b9..000000000 Binary files a/WebGoat/DB_Scripts/logos/cafimports.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/cambridgecollectablesco.png b/WebGoat/DB_Scripts/logos/cambridgecollectablesco.png deleted file mode 100644 index 43c758cf5..000000000 Binary files a/WebGoat/DB_Scripts/logos/cambridgecollectablesco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/canadiangoldexchangenetwork.png b/WebGoat/DB_Scripts/logos/canadiangoldexchangenetwork.png deleted file mode 100644 index 664514dec..000000000 Binary files a/WebGoat/DB_Scripts/logos/canadiangoldexchangenetwork.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/classicgoldideas.png b/WebGoat/DB_Scripts/logos/classicgoldideas.png deleted file mode 100644 index 4c83f85dd..000000000 Binary files a/WebGoat/DB_Scripts/logos/classicgoldideas.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/classiclegendsinc.png b/WebGoat/DB_Scripts/logos/classiclegendsinc.png deleted file mode 100644 index 6aa4f674d..000000000 Binary files a/WebGoat/DB_Scripts/logos/classiclegendsinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/clovercollections.png b/WebGoat/DB_Scripts/logos/clovercollections.png deleted file mode 100644 index dd62ae557..000000000 Binary files a/WebGoat/DB_Scripts/logos/clovercollections.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/coinageandthingsco.png b/WebGoat/DB_Scripts/logos/coinageandthingsco.png deleted file mode 100644 index f9f4d7724..000000000 Binary files a/WebGoat/DB_Scripts/logos/coinageandthingsco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/coinrmintdistributorsinc.png b/WebGoat/DB_Scripts/logos/coinrmintdistributorsinc.png deleted file mode 100644 index 9d83a5484..000000000 Binary files a/WebGoat/DB_Scripts/logos/coinrmintdistributorsinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/coins4grownupscom.png b/WebGoat/DB_Scripts/logos/coins4grownupscom.png deleted file mode 100644 index a44618d0d..000000000 Binary files a/WebGoat/DB_Scripts/logos/coins4grownupscom.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/coinsoffinland.png b/WebGoat/DB_Scripts/logos/coinsoffinland.png deleted file mode 100644 index d336a961c..000000000 Binary files a/WebGoat/DB_Scripts/logos/coinsoffinland.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/collectablepreciousdesignsco.png b/WebGoat/DB_Scripts/logos/collectablepreciousdesignsco.png deleted file mode 100644 index 7cfce4173..000000000 Binary files a/WebGoat/DB_Scripts/logos/collectablepreciousdesignsco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/collectablesforlessinc.png b/WebGoat/DB_Scripts/logos/collectablesforlessinc.png deleted file mode 100644 index 3dbc367bf..000000000 Binary files a/WebGoat/DB_Scripts/logos/collectablesforlessinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/corporategoldideasco.png b/WebGoat/DB_Scripts/logos/corporategoldideasco.png deleted file mode 100644 index 853880644..000000000 Binary files a/WebGoat/DB_Scripts/logos/corporategoldideasco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/corridametalsreplicas.png b/WebGoat/DB_Scripts/logos/corridametalsreplicas.png deleted file mode 100644 index ea506b7ed..000000000 Binary files a/WebGoat/DB_Scripts/logos/corridametalsreplicas.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/cramerspezialitten.png b/WebGoat/DB_Scripts/logos/cramerspezialitten.png deleted file mode 100644 index ed708b72c..000000000 Binary files a/WebGoat/DB_Scripts/logos/cramerspezialitten.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/cruzsonsco.png b/WebGoat/DB_Scripts/logos/cruzsonsco.png deleted file mode 100644 index 131985fea..000000000 Binary files a/WebGoat/DB_Scripts/logos/cruzsonsco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/daedalusdesignsimports.png b/WebGoat/DB_Scripts/logos/daedalusdesignsimports.png deleted file mode 100644 index 96870feae..000000000 Binary files a/WebGoat/DB_Scripts/logos/daedalusdesignsimports.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/danishwholesaleimports.png b/WebGoat/DB_Scripts/logos/danishwholesaleimports.png deleted file mode 100644 index e4442dd42..000000000 Binary files a/WebGoat/DB_Scripts/logos/danishwholesaleimports.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/derhundimports.png b/WebGoat/DB_Scripts/logos/derhundimports.png deleted file mode 100644 index db3b5c756..000000000 Binary files a/WebGoat/DB_Scripts/logos/derhundimports.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/doubledeckergoldstores.png b/WebGoat/DB_Scripts/logos/doubledeckergoldstores.png deleted file mode 100644 index 76dc4a744..000000000 Binary files a/WebGoat/DB_Scripts/logos/doubledeckergoldstores.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/downundercoinage.png b/WebGoat/DB_Scripts/logos/downundercoinage.png deleted file mode 100644 index dc31bb478..000000000 Binary files a/WebGoat/DB_Scripts/logos/downundercoinage.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/dragoncoinage.png b/WebGoat/DB_Scripts/logos/dragoncoinage.png deleted file mode 100644 index 1c3e3ecd3..000000000 Binary files a/WebGoat/DB_Scripts/logos/dragoncoinage.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/enacodistributors.png b/WebGoat/DB_Scripts/logos/enacodistributors.png deleted file mode 100644 index 8476f7a4b..000000000 Binary files a/WebGoat/DB_Scripts/logos/enacodistributors.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/euroshoppingchannel.png b/WebGoat/DB_Scripts/logos/euroshoppingchannel.png deleted file mode 100644 index e57d920fa..000000000 Binary files a/WebGoat/DB_Scripts/logos/euroshoppingchannel.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/extremedeskdecorations.png b/WebGoat/DB_Scripts/logos/extremedeskdecorations.png deleted file mode 100644 index a1ef2b651..000000000 Binary files a/WebGoat/DB_Scripts/logos/extremedeskdecorations.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/feueronlinestores.png b/WebGoat/DB_Scripts/logos/feueronlinestores.png deleted file mode 100644 index 36f815d6e..000000000 Binary files a/WebGoat/DB_Scripts/logos/feueronlinestores.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/frankengold.png b/WebGoat/DB_Scripts/logos/frankengold.png deleted file mode 100644 index 30abf282c..000000000 Binary files a/WebGoat/DB_Scripts/logos/frankengold.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/fraudacollezione.png b/WebGoat/DB_Scripts/logos/fraudacollezione.png deleted file mode 100644 index fef6dd529..000000000 Binary files a/WebGoat/DB_Scripts/logos/fraudacollezione.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/fungoldideascom.png b/WebGoat/DB_Scripts/logos/fungoldideascom.png deleted file mode 100644 index 2aabe6637..000000000 Binary files a/WebGoat/DB_Scripts/logos/fungoldideascom.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/goatgoldstore.png b/WebGoat/DB_Scripts/logos/goatgoldstore.png deleted file mode 100644 index 9141aa638..000000000 Binary files a/WebGoat/DB_Scripts/logos/goatgoldstore.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/gold4allagescom.png b/WebGoat/DB_Scripts/logos/gold4allagescom.png deleted file mode 100644 index 11231510a..000000000 Binary files a/WebGoat/DB_Scripts/logos/gold4allagescom.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/goldbymailcouk.png b/WebGoat/DB_Scripts/logos/goldbymailcouk.png deleted file mode 100644 index 6c72f44b1..000000000 Binary files a/WebGoat/DB_Scripts/logos/goldbymailcouk.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/golddepotinc.png b/WebGoat/DB_Scripts/logos/golddepotinc.png deleted file mode 100644 index b26c09161..000000000 Binary files a/WebGoat/DB_Scripts/logos/golddepotinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/goldforhimcom.png b/WebGoat/DB_Scripts/logos/goldforhimcom.png deleted file mode 100644 index 7365e9cef..000000000 Binary files a/WebGoat/DB_Scripts/logos/goldforhimcom.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/goldideascorp.png b/WebGoat/DB_Scripts/logos/goldideascorp.png deleted file mode 100644 index 1919e3fdf..000000000 Binary files a/WebGoat/DB_Scripts/logos/goldideascorp.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/handjigoldco.png b/WebGoat/DB_Scripts/logos/handjigoldco.png deleted file mode 100644 index 24f3ad864..000000000 Binary files a/WebGoat/DB_Scripts/logos/handjigoldco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/havelzbyszekco.png b/WebGoat/DB_Scripts/logos/havelzbyszekco.png deleted file mode 100644 index 5c59e27c7..000000000 Binary files a/WebGoat/DB_Scripts/logos/havelzbyszekco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/heintzecollectables.png b/WebGoat/DB_Scripts/logos/heintzecollectables.png deleted file mode 100644 index 8d854caf3..000000000 Binary files a/WebGoat/DB_Scripts/logos/heintzecollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/herkkugold.png b/WebGoat/DB_Scripts/logos/herkkugold.png deleted file mode 100644 index c4530bf9e..000000000 Binary files a/WebGoat/DB_Scripts/logos/herkkugold.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/iberiagoldimports.png b/WebGoat/DB_Scripts/logos/iberiagoldimports.png deleted file mode 100644 index 16e83c6b3..000000000 Binary files a/WebGoat/DB_Scripts/logos/iberiagoldimports.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/kellysgoldshop.png b/WebGoat/DB_Scripts/logos/kellysgoldshop.png deleted file mode 100644 index 4e4a1b993..000000000 Binary files a/WebGoat/DB_Scripts/logos/kellysgoldshop.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/kingkongcollectables.png b/WebGoat/DB_Scripts/logos/kingkongcollectables.png deleted file mode 100644 index 01a718f60..000000000 Binary files a/WebGoat/DB_Scripts/logos/kingkongcollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/kommissionmetals.png b/WebGoat/DB_Scripts/logos/kommissionmetals.png deleted file mode 100644 index 645964338..000000000 Binary files a/WebGoat/DB_Scripts/logos/kommissionmetals.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/kremlincollectables.png b/WebGoat/DB_Scripts/logos/kremlincollectables.png deleted file mode 100644 index 3e9d3022f..000000000 Binary files a/WebGoat/DB_Scripts/logos/kremlincollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/lacornedabondance.png b/WebGoat/DB_Scripts/logos/lacornedabondance.png deleted file mode 100644 index c64fb4f2b..000000000 Binary files a/WebGoat/DB_Scripts/logos/lacornedabondance.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/landofcoinsinc.png b/WebGoat/DB_Scripts/logos/landofcoinsinc.png deleted file mode 100644 index ff6609a0e..000000000 Binary files a/WebGoat/DB_Scripts/logos/landofcoinsinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/larochellegold.png b/WebGoat/DB_Scripts/logos/larochellegold.png deleted file mode 100644 index 96ad6133a..000000000 Binary files a/WebGoat/DB_Scripts/logos/larochellegold.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/lisboacoinage.png b/WebGoat/DB_Scripts/logos/lisboacoinage.png deleted file mode 100644 index 38e51d766..000000000 Binary files a/WebGoat/DB_Scripts/logos/lisboacoinage.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/lordinecoinage.png b/WebGoat/DB_Scripts/logos/lordinecoinage.png deleted file mode 100644 index 3a4dae708..000000000 Binary files a/WebGoat/DB_Scripts/logos/lordinecoinage.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/lyoncoinage.png b/WebGoat/DB_Scripts/logos/lyoncoinage.png deleted file mode 100644 index 8ab0a6e30..000000000 Binary files a/WebGoat/DB_Scripts/logos/lyoncoinage.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/marseillepreciousmetals.png b/WebGoat/DB_Scripts/logos/marseillepreciousmetals.png deleted file mode 100644 index b04384267..000000000 Binary files a/WebGoat/DB_Scripts/logos/marseillepreciousmetals.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/martasreplicasco.png b/WebGoat/DB_Scripts/logos/martasreplicasco.png deleted file mode 100644 index 94047a155..000000000 Binary files a/WebGoat/DB_Scripts/logos/martasreplicasco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/menrusretailers.png b/WebGoat/DB_Scripts/logos/menrusretailers.png deleted file mode 100644 index 9147eb0bb..000000000 Binary files a/WebGoat/DB_Scripts/logos/menrusretailers.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/messnershoppingnetwork.png b/WebGoat/DB_Scripts/logos/messnershoppingnetwork.png deleted file mode 100644 index a00db4f95..000000000 Binary files a/WebGoat/DB_Scripts/logos/messnershoppingnetwork.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/metalsassociscie.png b/WebGoat/DB_Scripts/logos/metalsassociscie.png deleted file mode 100644 index 6cbc46871..000000000 Binary files a/WebGoat/DB_Scripts/logos/metalsassociscie.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/metalscanalpetit.png b/WebGoat/DB_Scripts/logos/metalscanalpetit.png deleted file mode 100644 index caaff8b96..000000000 Binary files a/WebGoat/DB_Scripts/logos/metalscanalpetit.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/metalscoinclassicsinc.png b/WebGoat/DB_Scripts/logos/metalscoinclassicsinc.png deleted file mode 100644 index 54751589c..000000000 Binary files a/WebGoat/DB_Scripts/logos/metalscoinclassicsinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/microsilverinc.png b/WebGoat/DB_Scripts/logos/microsilverinc.png deleted file mode 100644 index 09d86ec27..000000000 Binary files a/WebGoat/DB_Scripts/logos/microsilverinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/mitvergngenco.png b/WebGoat/DB_Scripts/logos/mitvergngenco.png deleted file mode 100644 index d8f8f86d9..000000000 Binary files a/WebGoat/DB_Scripts/logos/mitvergngenco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/musclecoinsinc.png b/WebGoat/DB_Scripts/logos/musclecoinsinc.png deleted file mode 100644 index cb5f542de..000000000 Binary files a/WebGoat/DB_Scripts/logos/musclecoinsinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/natrlichmetals.png b/WebGoat/DB_Scripts/logos/natrlichmetals.png deleted file mode 100644 index 1de1bb46e..000000000 Binary files a/WebGoat/DB_Scripts/logos/natrlichmetals.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/norwaygoldbymail.png b/WebGoat/DB_Scripts/logos/norwaygoldbymail.png deleted file mode 100644 index d993d1d7c..000000000 Binary files a/WebGoat/DB_Scripts/logos/norwaygoldbymail.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/onlinepreciouscollectables.png b/WebGoat/DB_Scripts/logos/onlinepreciouscollectables.png deleted file mode 100644 index 556960a66..000000000 Binary files a/WebGoat/DB_Scripts/logos/onlinepreciouscollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/onlinepremiumcreationsco.png b/WebGoat/DB_Scripts/logos/onlinepremiumcreationsco.png deleted file mode 100644 index 14d880e7d..000000000 Binary files a/WebGoat/DB_Scripts/logos/onlinepremiumcreationsco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/osakacoinageco.png b/WebGoat/DB_Scripts/logos/osakacoinageco.png deleted file mode 100644 index 7726e3c66..000000000 Binary files a/WebGoat/DB_Scripts/logos/osakacoinageco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/oulutoysupplies.png b/WebGoat/DB_Scripts/logos/oulutoysupplies.png deleted file mode 100644 index bc0f06bda..000000000 Binary files a/WebGoat/DB_Scripts/logos/oulutoysupplies.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/petitmetals.png b/WebGoat/DB_Scripts/logos/petitmetals.png deleted file mode 100644 index d909a1936..000000000 Binary files a/WebGoat/DB_Scripts/logos/petitmetals.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/portoimportsco.png b/WebGoat/DB_Scripts/logos/portoimportsco.png deleted file mode 100644 index 4a6c60e93..000000000 Binary files a/WebGoat/DB_Scripts/logos/portoimportsco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/preciouscaravy.png b/WebGoat/DB_Scripts/logos/preciouscaravy.png deleted file mode 100644 index cf56a98a7..000000000 Binary files a/WebGoat/DB_Scripts/logos/preciouscaravy.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/preciousclassics.png b/WebGoat/DB_Scripts/logos/preciousclassics.png deleted file mode 100644 index c3c32b114..000000000 Binary files a/WebGoat/DB_Scripts/logos/preciousclassics.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/preciouscollectables.png b/WebGoat/DB_Scripts/logos/preciouscollectables.png deleted file mode 100644 index 6977fed25..000000000 Binary files a/WebGoat/DB_Scripts/logos/preciouscollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/preciouscreationsltd.png b/WebGoat/DB_Scripts/logos/preciouscreationsltd.png deleted file mode 100644 index 39739cd22..000000000 Binary files a/WebGoat/DB_Scripts/logos/preciouscreationsltd.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/preciousgolddistributorsltd.png b/WebGoat/DB_Scripts/logos/preciousgolddistributorsltd.png deleted file mode 100644 index 41e7f0738..000000000 Binary files a/WebGoat/DB_Scripts/logos/preciousgolddistributorsltd.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/preciousmetalsco.png b/WebGoat/DB_Scripts/logos/preciousmetalsco.png deleted file mode 100644 index 341154cbd..000000000 Binary files a/WebGoat/DB_Scripts/logos/preciousmetalsco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/preciousmetalswerke.png b/WebGoat/DB_Scripts/logos/preciousmetalswerke.png deleted file mode 100644 index 6167608cb..000000000 Binary files a/WebGoat/DB_Scripts/logos/preciousmetalswerke.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/premiumclassicsinc.png b/WebGoat/DB_Scripts/logos/premiumclassicsinc.png deleted file mode 100644 index 74c981a2f..000000000 Binary files a/WebGoat/DB_Scripts/logos/premiumclassicsinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/premiumcollectables.png b/WebGoat/DB_Scripts/logos/premiumcollectables.png deleted file mode 100644 index 9332d58be..000000000 Binary files a/WebGoat/DB_Scripts/logos/premiumcollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/qubechomeshoppingnetwork.png b/WebGoat/DB_Scripts/logos/qubechomeshoppingnetwork.png deleted file mode 100644 index 4ebe00b01..000000000 Binary files a/WebGoat/DB_Scripts/logos/qubechomeshoppingnetwork.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/raananstores.png b/WebGoat/DB_Scripts/logos/raananstores.png deleted file mode 100644 index 8e0f0423f..000000000 Binary files a/WebGoat/DB_Scripts/logos/raananstores.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/reimscollectables.png b/WebGoat/DB_Scripts/logos/reimscollectables.png deleted file mode 100644 index 7bbb049a1..000000000 Binary files a/WebGoat/DB_Scripts/logos/reimscollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/rovelligold.png b/WebGoat/DB_Scripts/logos/rovelligold.png deleted file mode 100644 index 484f454ae..000000000 Binary files a/WebGoat/DB_Scripts/logos/rovelligold.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/royalcanadiancollectables.png b/WebGoat/DB_Scripts/logos/royalcanadiancollectables.png deleted file mode 100644 index efa928ff8..000000000 Binary files a/WebGoat/DB_Scripts/logos/royalcanadiancollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/royalebelge.png b/WebGoat/DB_Scripts/logos/royalebelge.png deleted file mode 100644 index 5b38c80cc..000000000 Binary files a/WebGoat/DB_Scripts/logos/royalebelge.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/salzburgcollectables.png b/WebGoat/DB_Scripts/logos/salzburgcollectables.png deleted file mode 100644 index 5309262e4..000000000 Binary files a/WebGoat/DB_Scripts/logos/salzburgcollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/sardistributors.png b/WebGoat/DB_Scripts/logos/sardistributors.png deleted file mode 100644 index 69d7a2dee..000000000 Binary files a/WebGoat/DB_Scripts/logos/sardistributors.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/saveleyhenriot.png b/WebGoat/DB_Scripts/logos/saveleyhenriot.png deleted file mode 100644 index 346265293..000000000 Binary files a/WebGoat/DB_Scripts/logos/saveleyhenriot.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/scandinaviangoldideas.png b/WebGoat/DB_Scripts/logos/scandinaviangoldideas.png deleted file mode 100644 index 8324f0056..000000000 Binary files a/WebGoat/DB_Scripts/logos/scandinaviangoldideas.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/schuylerimports.png b/WebGoat/DB_Scripts/logos/schuylerimports.png deleted file mode 100644 index 2d4c98d59..000000000 Binary files a/WebGoat/DB_Scripts/logos/schuylerimports.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/signalcollectiblesltd.png b/WebGoat/DB_Scripts/logos/signalcollectiblesltd.png deleted file mode 100644 index 4f5e29554..000000000 Binary files a/WebGoat/DB_Scripts/logos/signalcollectiblesltd.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/stuttgartcollectableexchange.png b/WebGoat/DB_Scripts/logos/stuttgartcollectableexchange.png deleted file mode 100644 index 5dae46d76..000000000 Binary files a/WebGoat/DB_Scripts/logos/stuttgartcollectableexchange.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/stylishdeskdecors.png b/WebGoat/DB_Scripts/logos/stylishdeskdecors.png deleted file mode 100644 index 7a6b6df3e..000000000 Binary files a/WebGoat/DB_Scripts/logos/stylishdeskdecors.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/suominencoinage.png b/WebGoat/DB_Scripts/logos/suominencoinage.png deleted file mode 100644 index 6a0173e88..000000000 Binary files a/WebGoat/DB_Scripts/logos/suominencoinage.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/supersilverinc.png b/WebGoat/DB_Scripts/logos/supersilverinc.png deleted file mode 100644 index 51582a6c3..000000000 Binary files a/WebGoat/DB_Scripts/logos/supersilverinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/technicsstoresinc.png b/WebGoat/DB_Scripts/logos/technicsstoresinc.png deleted file mode 100644 index d4e630eb6..000000000 Binary files a/WebGoat/DB_Scripts/logos/technicsstoresinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/teknicollectablesinc.png b/WebGoat/DB_Scripts/logos/teknicollectablesinc.png deleted file mode 100644 index 2eb9c7cb1..000000000 Binary files a/WebGoat/DB_Scripts/logos/teknicollectablesinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/thesharpgoldwarehouse.png b/WebGoat/DB_Scripts/logos/thesharpgoldwarehouse.png deleted file mode 100644 index 1679843c9..000000000 Binary files a/WebGoat/DB_Scripts/logos/thesharpgoldwarehouse.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/tokyocollectables.png b/WebGoat/DB_Scripts/logos/tokyocollectables.png deleted file mode 100644 index fe7497a91..000000000 Binary files a/WebGoat/DB_Scripts/logos/tokyocollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/tomsspezialitten.png b/WebGoat/DB_Scripts/logos/tomsspezialitten.png deleted file mode 100644 index adb93b41a..000000000 Binary files a/WebGoat/DB_Scripts/logos/tomsspezialitten.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/ukcollectables.png b/WebGoat/DB_Scripts/logos/ukcollectables.png deleted file mode 100644 index be7e23a2d..000000000 Binary files a/WebGoat/DB_Scripts/logos/ukcollectables.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/vidasport.png b/WebGoat/DB_Scripts/logos/vidasport.png deleted file mode 100644 index 210888588..000000000 Binary files a/WebGoat/DB_Scripts/logos/vidasport.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/vitachromeinc.png b/WebGoat/DB_Scripts/logos/vitachromeinc.png deleted file mode 100644 index d3d4c5c85..000000000 Binary files a/WebGoat/DB_Scripts/logos/vitachromeinc.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/volvomodelreplicas.png b/WebGoat/DB_Scripts/logos/volvomodelreplicas.png deleted file mode 100644 index 1194beab6..000000000 Binary files a/WebGoat/DB_Scripts/logos/volvomodelreplicas.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/warburgexchange.png b/WebGoat/DB_Scripts/logos/warburgexchange.png deleted file mode 100644 index 7025367a9..000000000 Binary files a/WebGoat/DB_Scripts/logos/warburgexchange.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/logos/westcoastcollectablesco.png b/WebGoat/DB_Scripts/logos/westcoastcollectablesco.png deleted file mode 100644 index 95756a56e..000000000 Binary files a/WebGoat/DB_Scripts/logos/westcoastcollectablesco.png and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/07AEPltProofRevThumb.jpg b/WebGoat/DB_Scripts/products/07AEPltProofRevThumb.jpg deleted file mode 100644 index 378e294d0..000000000 Binary files a/WebGoat/DB_Scripts/products/07AEPltProofRevThumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2008_AESilverProof_thumb.jpg b/WebGoat/DB_Scripts/products/2008_AESilverProof_thumb.jpg deleted file mode 100644 index 014881d8d..000000000 Binary files a/WebGoat/DB_Scripts/products/2008_AESilverProof_thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2008_AE_Plat_Bullion_Thumb.jpg b/WebGoat/DB_Scripts/products/2008_AE_Plat_Bullion_Thumb.jpg deleted file mode 100644 index 534373482..000000000 Binary files a/WebGoat/DB_Scripts/products/2008_AE_Plat_Bullion_Thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2009WHHarrisonObvthumb.jpg b/WebGoat/DB_Scripts/products/2009WHHarrisonObvthumb.jpg deleted file mode 100644 index 5a1981a6d..000000000 Binary files a/WebGoat/DB_Scripts/products/2009WHHarrisonObvthumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2010MFillmore_thumb.jpg b/WebGoat/DB_Scripts/products/2010MFillmore_thumb.jpg deleted file mode 100644 index b06dc5db7..000000000 Binary files a/WebGoat/DB_Scripts/products/2010MFillmore_thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2010_AEGoldProof_thumb.jpg b/WebGoat/DB_Scripts/products/2010_AEGoldProof_thumb.jpg deleted file mode 100644 index cd6a76dbb..000000000 Binary files a/WebGoat/DB_Scripts/products/2010_AEGoldProof_thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2011-Gold-Eagle-unc-thumb.jpg b/WebGoat/DB_Scripts/products/2011-Gold-Eagle-unc-thumb.jpg deleted file mode 100644 index 3ef155889..000000000 Binary files a/WebGoat/DB_Scripts/products/2011-Gold-Eagle-unc-thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2011-SilverEagle-unc-thumb.jpg b/WebGoat/DB_Scripts/products/2011-SilverEagle-unc-thumb.jpg deleted file mode 100644 index e1cef5ad9..000000000 Binary files a/WebGoat/DB_Scripts/products/2011-SilverEagle-unc-thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2011-Unc-Gettysburg_thumb.jpg b/WebGoat/DB_Scripts/products/2011-Unc-Gettysburg_thumb.jpg deleted file mode 100644 index 266342f78..000000000 Binary files a/WebGoat/DB_Scripts/products/2011-Unc-Gettysburg_thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2011AJohnson_thumb.jpg b/WebGoat/DB_Scripts/products/2011AJohnson_thumb.jpg deleted file mode 100644 index 603a46b88..000000000 Binary files a/WebGoat/DB_Scripts/products/2011AJohnson_thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2011_AE_PlatProof_thumb.jpg b/WebGoat/DB_Scripts/products/2011_AE_PlatProof_thumb.jpg deleted file mode 100644 index 4229c4716..000000000 Binary files a/WebGoat/DB_Scripts/products/2011_AE_PlatProof_thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2012-ATB-El-Yunque_thumb.jpg b/WebGoat/DB_Scripts/products/2012-ATB-El-Yunque_thumb.jpg deleted file mode 100644 index 426a15754..000000000 Binary files a/WebGoat/DB_Scripts/products/2012-ATB-El-Yunque_thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2012-Gold-Eagle-bullion-thumb.jpg b/WebGoat/DB_Scripts/products/2012-Gold-Eagle-bullion-thumb.jpg deleted file mode 100644 index 7bc9d4e6b..000000000 Binary files a/WebGoat/DB_Scripts/products/2012-Gold-Eagle-bullion-thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2012-Natl-Infantry-Commem-thumb.jpg b/WebGoat/DB_Scripts/products/2012-Natl-Infantry-Commem-thumb.jpg deleted file mode 100644 index bcf3552ae..000000000 Binary files a/WebGoat/DB_Scripts/products/2012-Natl-Infantry-Commem-thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2012-Proof-HalfDollar-thumb.jpg b/WebGoat/DB_Scripts/products/2012-Proof-HalfDollar-thumb.jpg deleted file mode 100644 index 387c3e21b..000000000 Binary files a/WebGoat/DB_Scripts/products/2012-Proof-HalfDollar-thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2012-Proof-Nickel-thumb.jpg b/WebGoat/DB_Scripts/products/2012-Proof-Nickel-thumb.jpg deleted file mode 100644 index b503ca8cf..000000000 Binary files a/WebGoat/DB_Scripts/products/2012-Proof-Nickel-thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/2012-SilverEagle-bullion-thumb.jpg b/WebGoat/DB_Scripts/products/2012-SilverEagle-bullion-thumb.jpg deleted file mode 100644 index a2347011c..000000000 Binary files a/WebGoat/DB_Scripts/products/2012-SilverEagle-bullion-thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/21_Arthur_Pre1_thumb.jpg b/WebGoat/DB_Scripts/products/21_Arthur_Pre1_thumb.jpg deleted file mode 100644 index 58ac3da81..000000000 Binary files a/WebGoat/DB_Scripts/products/21_Arthur_Pre1_thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/AEPlatUnc_thumb.jpg b/WebGoat/DB_Scripts/products/AEPlatUnc_thumb.jpg deleted file mode 100644 index 2ae252bd5..000000000 Binary files a/WebGoat/DB_Scripts/products/AEPlatUnc_thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/EJohnson_Proof-thumb.jpg b/WebGoat/DB_Scripts/products/EJohnson_Proof-thumb.jpg deleted file mode 100644 index c4d303a64..000000000 Binary files a/WebGoat/DB_Scripts/products/EJohnson_Proof-thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/HOTSPRINGS_thumb.jpg b/WebGoat/DB_Scripts/products/HOTSPRINGS_thumb.jpg deleted file mode 100644 index 1193b9614..000000000 Binary files a/WebGoat/DB_Scripts/products/HOTSPRINGS_thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/SSB_Gold_thumb_LineArt.jpg b/WebGoat/DB_Scripts/products/SSB_Gold_thumb_LineArt.jpg deleted file mode 100644 index ee8fa80df..000000000 Binary files a/WebGoat/DB_Scripts/products/SSB_Gold_thumb_LineArt.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/stacked-coins2_thumb.jpg b/WebGoat/DB_Scripts/products/stacked-coins2_thumb.jpg deleted file mode 100644 index 02cfbdb5b..000000000 Binary files a/WebGoat/DB_Scripts/products/stacked-coins2_thumb.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/thumbBuffaloBullion.jpg b/WebGoat/DB_Scripts/products/thumbBuffaloBullion.jpg deleted file mode 100644 index 39b20550e..000000000 Binary files a/WebGoat/DB_Scripts/products/thumbBuffaloBullion.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/thumbJMonroe.jpg b/WebGoat/DB_Scripts/products/thumbJMonroe.jpg deleted file mode 100644 index 339f8ac0c..000000000 Binary files a/WebGoat/DB_Scripts/products/thumbJMonroe.jpg and /dev/null differ diff --git a/WebGoat/DB_Scripts/products/thumbWashington.jpg b/WebGoat/DB_Scripts/products/thumbWashington.jpg deleted file mode 100644 index 3f8842c2f..000000000 Binary files a/WebGoat/DB_Scripts/products/thumbWashington.jpg and /dev/null differ diff --git a/WebGoat/Default.aspx b/WebGoat/Default.aspx deleted file mode 100644 index 72cbec094..000000000 --- a/WebGoat/Default.aspx +++ /dev/null @@ -1,27 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="OWASP.WebGoat.NET.Default" %> - - Welcome to WebGoat.NET - - - - This is the Welcome Page... - - - - -

Welcome to WebGoat.NET

-WebGoat.NET is a purposefully insecure web application - use it to learn and understand about bad -coding practices in .NET. Each Module on the left side illustrates a common web vulnerability. WebGoat.NET was -designed to be used in live training and/or e-learning environments. - - -
-
- -
-
- - -
- diff --git a/WebGoat/Default.aspx.cs b/WebGoat/Default.aspx.cs deleted file mode 100644 index 2c51294ef..000000000 --- a/WebGoat/Default.aspx.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Web; -using System.Web.UI; -using OWASP.WebGoat.NET.App_Code.DB; -using OWASP.WebGoat.NET.App_Code; - -namespace OWASP.WebGoat.NET -{ - public partial class Default : System.Web.UI.Page - { - private IDbProvider du = Settings.CurrentDbProvider; - - protected void ButtonProceed_Click(object sender, EventArgs e) - { - Response.Redirect("RebuildDatabase.aspx"); - } - - protected void Page_Load(object sender, EventArgs e) - { - //do a quick test. If the database connects, inform the user the database seems to be working. - if (du.TestConnection()) - { - lblOutput.Text = string.Format("You appear to be connected to a valid {0} provider. " + - "If you want to reconfigure or rebuild the database, click on the button below!", du.Name); - Session["DBConfigured"] = true; - - //Info leak - HttpCookie cookie = new HttpCookie("Server", Encoder.Encode(Server.MachineName)); - Response.Cookies.Add(cookie); - } - else - { - lblOutput.Text = "Before proceeding, please ensure this instance of WebGoat.NET can connect to the database!"; - } - - // Write viewState to Screen - ViewState["Session"] = Session.SessionID; - } - } -} - diff --git a/WebGoat/Default.aspx.designer.cs b/WebGoat/Default.aspx.designer.cs deleted file mode 100644 index de961e20f..000000000 --- a/WebGoat/Default.aspx.designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class Default { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label lblOutput; - - protected System.Web.UI.WebControls.Button ButtonProceed; - } -} diff --git a/WebGoat/DotNetGoat.pidb b/WebGoat/DotNetGoat.pidb deleted file mode 100644 index fa0f7c89d..000000000 Binary files a/WebGoat/DotNetGoat.pidb and /dev/null differ diff --git a/WebGoat/Downloads/architecture.pdf b/WebGoat/Downloads/architecture.pdf deleted file mode 100644 index ae0cc0b2e..000000000 Binary files a/WebGoat/Downloads/architecture.pdf and /dev/null differ diff --git a/WebGoat/Downloads/authentication.pdf b/WebGoat/Downloads/authentication.pdf deleted file mode 100644 index 18a53d6ab..000000000 Binary files a/WebGoat/Downloads/authentication.pdf and /dev/null differ diff --git a/WebGoat/Downloads/csrf.pdf b/WebGoat/Downloads/csrf.pdf deleted file mode 100644 index 18d84148e..000000000 Binary files a/WebGoat/Downloads/csrf.pdf and /dev/null differ diff --git a/WebGoat/Downloads/transport_layer.pdf b/WebGoat/Downloads/transport_layer.pdf deleted file mode 100644 index c65c7312d..000000000 Binary files a/WebGoat/Downloads/transport_layer.pdf and /dev/null differ diff --git a/WebGoat/ForgotPassword.aspx b/WebGoat/ForgotPassword.aspx deleted file mode 100644 index 889b510f2..000000000 --- a/WebGoat/ForgotPassword.aspx +++ /dev/null @@ -1,11 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ForgotPassword.aspx.cs" Inherits="OWASP.WebGoat.NET.ForgotPassword" %> - - - - -

Forgot Password

- - - -
- \ No newline at end of file diff --git a/WebGoat/ForgotPassword.aspx.cs b/WebGoat/ForgotPassword.aspx.cs deleted file mode 100644 index 8e92a058e..000000000 --- a/WebGoat/ForgotPassword.aspx.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Web; -using System.Web.UI; - -namespace OWASP.WebGoat.NET -{ - public partial class ForgotPassword : System.Web.UI.Page - { - - } -} - diff --git a/WebGoat/ForgotPassword.aspx.designer.cs b/WebGoat/ForgotPassword.aspx.designer.cs deleted file mode 100644 index ac64618a9..000000000 --- a/WebGoat/ForgotPassword.aspx.designer.cs +++ /dev/null @@ -1,22 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class ForgotPassword { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.HtmlControls.HtmlGenericControl lblHeader; - - protected System.Web.UI.WebControls.Content Content2; - } -} diff --git a/WebGoat/Global.asax b/WebGoat/Global.asax deleted file mode 100644 index 7a7348dc5..000000000 --- a/WebGoat/Global.asax +++ /dev/null @@ -1 +0,0 @@ -<%@ Application Codebehind="Global.asax.cs" Inherits="OWASP.WebGoat.NET.Global" Language="C#" %> diff --git a/WebGoat/Global.asax.cs b/WebGoat/Global.asax.cs deleted file mode 100644 index e826ca68a..000000000 --- a/WebGoat/Global.asax.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Web; -using System.Web.Security; -using System.Web.SessionState; -using System.Security.Principal; -using OWASP.WebGoat.NET.App_Code; -using log4net.Config; -using System.Diagnostics; - -namespace OWASP.WebGoat.NET -{ - public class Global : System.Web.HttpApplication - { - - protected void Application_Start(object sender, EventArgs e) - { - if (Debugger.IsAttached) - BasicConfigurator.Configure(); - else - XmlConfigurator.Configure(); - - Settings.Init(Server); - } - - protected void Session_Start(object sender, EventArgs e) - { - } - - protected void Application_BeginRequest(object sender, EventArgs e) - { - - } - - void Application_PreSendRequestHeaders(Object sender, EventArgs e) - { - Response.AddHeader("X-XSS-Protection", "0"); - } - - protected void Application_AuthenticateRequest(object sender, EventArgs e) - { - //get the role data out of the encrypted cookie and add to current context - //TODO: get this out of a different cookie - - if (HttpContext.Current.User != null) - { - if (HttpContext.Current.User.Identity.IsAuthenticated) - { - if (HttpContext.Current.User.Identity is FormsIdentity) - { - FormsIdentity id = - (FormsIdentity)HttpContext.Current.User.Identity; - FormsAuthenticationTicket ticket = id.Ticket; - - // Get the stored user-data, in this case, our roles - string userData = ticket.UserData; - string[] roles = userData.Split(','); - HttpContext.Current.User = new GenericPrincipal(id, roles); - } - } - } - } - - protected void Application_Error(object sender, EventArgs e) - { - - } - - protected void Session_End(object sender, EventArgs e) - { - - } - - protected void Application_End(object sender, EventArgs e) - { - - } - } -} diff --git a/WebGoat/LoginPage.aspx b/WebGoat/LoginPage.aspx deleted file mode 100644 index a9d5fe9e8..000000000 --- a/WebGoat/LoginPage.aspx +++ /dev/null @@ -1,35 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="LoginPage.aspx.cs" Inherits="OWASP.WebGoat.NET.LoginPage" %> - - - - - - - -

- WebGoat.NET Login

- - - <%-- -

-
Get Credentials From Instructor
-

- -
-
-
-
-
-

- --%> -

- -

- -

-
-
- \ No newline at end of file diff --git a/WebGoat/LoginPage.aspx.cs b/WebGoat/LoginPage.aspx.cs deleted file mode 100644 index f1cd9315d..000000000 --- a/WebGoat/LoginPage.aspx.cs +++ /dev/null @@ -1,37 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -//using TechInfoSystems.Data.SQLite; -using System.Web.Security; -using System.Web.Configuration; - -namespace OWASP.WebGoat.NET -{ - public partial class LoginPage : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - } - - protected void ButtonLogOn_Click(object sender, EventArgs e) - { - Response.Redirect("/WebGoatCoins/CustomerLogin.aspx"); - - //if(Membership.ValidateUser(txtUserName.Value.Trim(), txtPassword.Value.Trim())) - //{ - // FormsAuthentication.RedirectFromLoginPage(txtUserName.Value, true); - //} - //else - //{ - // labelMessage.Text = "invalid username"; - //} - } - protected void ButtonAdminLogOn_Click(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/LoginPage.aspx.designer.cs b/WebGoat/LoginPage.aspx.designer.cs deleted file mode 100644 index a2e360d1c..000000000 --- a/WebGoat/LoginPage.aspx.designer.cs +++ /dev/null @@ -1,28 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class LoginPage { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Literal labelMessage; - - protected System.Web.UI.WebControls.Button buttonLogOn; - - protected System.Web.UI.WebControls.Button buttonAdminLogOn; - } -} diff --git a/WebGoat/Provider.sqlite b/WebGoat/Provider.sqlite deleted file mode 100644 index e69de29bb..000000000 diff --git a/WebGoat/ProxySetup.aspx b/WebGoat/ProxySetup.aspx deleted file mode 100644 index 55d276ba5..000000000 --- a/WebGoat/ProxySetup.aspx +++ /dev/null @@ -1,29 +0,0 @@ -<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ProxySetup.aspx.cs" Inherits="OWASP.WebGoat.NET.ProxySetup" MasterPageFile="~/Resources/Master-Pages/Site.Master"%> - - - - - - Set up your web proxy, and test it here. The field has a validator that only allows valid characters. See if you can circumvent this protection using your proxy! - - - - - -

Test Your Web Proxy

-
- Use this page to determine if webgoat is running properly, and to test your web proxy.
-
- -

- Enter your name (letters only): - - -

- -
-

-
\ No newline at end of file diff --git a/WebGoat/ProxySetup.aspx.cs b/WebGoat/ProxySetup.aspx.cs deleted file mode 100644 index 087bbdf39..000000000 --- a/WebGoat/ProxySetup.aspx.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET -{ - public partial class ProxySetup : System.Web.UI.Page - { - protected void btnReverse_Click(object sender, EventArgs e) - { - - var name = txtName.Text; - txtName.Text = ""; - lblOutput.Text = "Thank you for using WebGoat.NET " + reverse(name); - - } - - private string reverse(string s) - { - //char[] charArray = s.ToCharArray(); - var charArray = s.ToCharArray(); - Array.Reverse(charArray); - return new String(charArray); - } - - } -} diff --git a/WebGoat/ProxySetup.aspx.designer.cs b/WebGoat/ProxySetup.aspx.designer.cs deleted file mode 100644 index 9843c6c89..000000000 --- a/WebGoat/ProxySetup.aspx.designer.cs +++ /dev/null @@ -1,32 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class ProxySetup { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.RequiredFieldValidator valNameRequired; - - protected System.Web.UI.WebControls.RegularExpressionValidator valRegEx; - - protected System.Web.UI.WebControls.TextBox txtName; - - protected System.Web.UI.WebControls.Button btnReverse; - - protected System.Web.UI.WebControls.Label lblOutput; - } -} diff --git a/WebGoat/RebuildDatabase.aspx b/WebGoat/RebuildDatabase.aspx deleted file mode 100644 index ab0e25730..000000000 --- a/WebGoat/RebuildDatabase.aspx +++ /dev/null @@ -1,176 +0,0 @@ -<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="dbtest.aspx.cs" Inherits="OWASP.WebGoat.NET.RebuildDatabase" MasterPageFile="~/Resources/Master-Pages/Site.Master" %> - - - Click to button to refresh the database used in WebGoat.NET - - - - -

Connect to Database

- - -
- WebGoat.NET requires a working data provider.  Fill in the following (applicable) fields: -
-
- - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Data Provider: - - Sqlite - MySql - -
- Data File Path: - -
- Client Executable: - -
- Server: - -
- Port: - -
- Database: - -
- User Name: - -
- Password: - -
-
- - - -
- -
-
- - - -
- -
-
- - - -
-
-
- - -
- - - - -
- -
-
- - - -
- -
-
- -
-
-
- - - - - - - - - - - -
- - - - - - - - - \ No newline at end of file diff --git a/WebGoat/Resources/Master-Pages/Site.Master b/WebGoat/Resources/Master-Pages/Site.Master deleted file mode 100644 index 2296b4265..000000000 --- a/WebGoat/Resources/Master-Pages/Site.Master +++ /dev/null @@ -1,192 +0,0 @@ -<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="OWASP.WebGoat.NET.resources.Master_Pages.Site" %> - - - - - - - WebGoat.NET - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
- - - Welcome - - | - - - - - | - -
- <%-- --%> - -
-
-
- -
-
-
-
-
- - - -
- -
- - - - -
- - - - - - -
-
-

- - -

-
-
- - -
- - -
-
-
-
- - -
- - - diff --git a/WebGoat/Resources/Master-Pages/Site.Master.cs b/WebGoat/Resources/Master-Pages/Site.Master.cs deleted file mode 100644 index 4c8c41dea..000000000 --- a/WebGoat/Resources/Master-Pages/Site.Master.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET.resources.Master_Pages -{ - public partial class Site : System.Web.UI.MasterPage - { - protected void Page_Load(object sender, EventArgs e) - { - if (Session["showSplash"] == null) - { - Session["showSplash"] = false; - Response.Redirect("~/Default.aspx"); - } - - } - protected void lbtGenerateTestData_Click(object sender, EventArgs e) - { - Response.Redirect("/RebuildDatabase.aspx"); - } - public void GreyOutMenu() - { - foreach (RepeaterItem item in rptrMenu.Items) - { - //nothing - } - } - } -} \ No newline at end of file diff --git a/WebGoat/Resources/Master-Pages/Site.Master.designer.cs b/WebGoat/Resources/Master-Pages/Site.Master.designer.cs deleted file mode 100644 index f89191277..000000000 --- a/WebGoat/Resources/Master-Pages/Site.Master.designer.cs +++ /dev/null @@ -1,46 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.resources.Master_Pages { - - - public partial class Site { - - protected System.Web.UI.HtmlControls.HtmlHead Head1; - - protected System.Web.UI.WebControls.ContentPlaceHolder HeadContentPlaceHolder; - - protected System.Web.UI.HtmlControls.HtmlForm Form1; - - protected System.Web.UI.HtmlControls.HtmlAnchor A1; - - protected System.Web.UI.WebControls.LoginView HeadLoginView; - - protected System.Web.UI.WebControls.LoginName HeadLoginName; - - protected System.Web.UI.WebControls.LinkButton lbtGenerateTestData; - - protected System.Web.UI.WebControls.LoginStatus HeadLoginStatus; - - protected System.Web.UI.WebControls.SiteMapDataSource SiteMapDataSource1; - - protected System.Web.UI.WebControls.Repeater rptrMenu; - - protected System.Web.UI.WebControls.Repeater rptrSubmenu; - - protected System.Web.UI.WebControls.SiteMapPath SiteMapPath1; - - protected System.Web.UI.WebControls.Literal ltlMessage; - - protected System.Web.UI.WebControls.ContentPlaceHolder HelpContentPlaceholder; - - protected System.Web.UI.WebControls.ContentPlaceHolder BodyContentPlaceholder; - } -} diff --git a/WebGoat/Resources/client-scripts/jquery-1.3.2.min.js b/WebGoat/Resources/client-scripts/jquery-1.3.2.min.js deleted file mode 100644 index b1ae21d8b..000000000 --- a/WebGoat/Resources/client-scripts/jquery-1.3.2.min.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * jQuery JavaScript Library v1.3.2 - * http://jquery.com/ - * - * Copyright (c) 2009 John Resig - * Dual licensed under the MIT and GPL licenses. - * http://docs.jquery.com/License - * - * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) - * Revision: 6246 - */ -(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); -/* - * Sizzle CSS Selector Engine - v0.9.3 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/WebGoat/Resources/client-scripts/jquery-1.4.2.min.js b/WebGoat/Resources/client-scripts/jquery-1.4.2.min.js deleted file mode 100644 index 48a88b8f4..000000000 --- a/WebGoat/Resources/client-scripts/jquery-1.4.2.min.js +++ /dev/null @@ -1,154 +0,0 @@ -/*! - * jQuery JavaScript Library v1.4.2 - * http://jquery.com/ - * - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2010, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Sat Feb 13 22:33:48 2010 -0500 - */ -(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, -Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& -(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, -a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== -"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, -function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; -var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, -parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= -false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= -s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, -applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; -else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, -a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== -w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, -cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= -c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); -a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, -function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); -k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), -C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= -e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& -f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; -if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", -e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, -"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, -d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, -e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); -t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| -g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, -CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, -g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, -text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, -setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= -h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== -"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, -h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& -q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; -if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); -(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: -function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= -{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== -"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", -d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? -a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== -1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= -c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, -wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, -prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, -this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); -return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, -""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); -return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", -""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= -c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? -c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= -function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= -Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, -"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= -a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= -a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== -"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, -serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), -function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, -global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& -e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? -"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== -false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= -false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", -c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| -d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); -g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== -1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== -"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; -if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== -"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| -c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; -this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= -this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, -e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; -a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); -c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, -d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- -f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": -"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in -e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); \ No newline at end of file diff --git a/WebGoat/Resources/client-scripts/jquery-1.6.2.min.js b/WebGoat/Resources/client-scripts/jquery-1.6.2.min.js deleted file mode 100644 index 515375557..000000000 --- a/WebGoat/Resources/client-scripts/jquery-1.6.2.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.2 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu Jun 30 14:16:56 2011 -0400 - */ -(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i. -shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j -)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); diff --git a/WebGoat/Resources/client-scripts/jquery-ui-1.8.16.custom.min.js b/WebGoat/Resources/client-scripts/jquery-ui-1.8.16.custom.min.js deleted file mode 100644 index 14c9064f7..000000000 --- a/WebGoat/Resources/client-scripts/jquery-ui-1.8.16.custom.min.js +++ /dev/null @@ -1,791 +0,0 @@ -/*! - * jQuery UI 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.16", -keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({propAttr:c.fn.prop||c.fn.attr,_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d= -this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this, -"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart": -"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight, -outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a, -"tabindex"),d=isNaN(b);return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&& -a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted= -false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); -;/* - * jQuery UI Position 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Position - */ -(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, -left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= -k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-= -m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= -d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= -a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), -g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); -;/* - * jQuery UI Draggable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Draggables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== -"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= -this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;if(b.iframeFix)d(b.iframeFix===true?"iframe":b.iframeFix).each(function(){d('
').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")});return true},_mouseStart:function(a){var b=this.options; -this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}); -this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);d.ui.ddmanager&&d.ui.ddmanager.dragStart(this,a);return true}, -_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b= -false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration, -10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},_mouseUp:function(a){this.options.iframeFix===true&&d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});d.ui.ddmanager&&d.ui.ddmanager.dragStop(this,a);return d.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle|| -!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&& -a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent= -this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"), -10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"), -10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[a.containment=="document"?0:d(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,a.containment=="document"?0:d(window).scrollTop()-this.offset.relative.top-this.offset.parent.top, -(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){a=d(a.containment);var b=a[0];if(b){a.offset();var c=d(b).css("overflow")!= -"hidden";this.containment=[(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"), -10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=a}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+ -this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&& -!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,h=a.pageY;if(this.originalPosition){var g;if(this.containment){if(this.relative_container){g=this.relative_container.offset();g=[this.containment[0]+g.left,this.containment[1]+g.top,this.containment[2]+g.left,this.containment[3]+g.top]}else g=this.containment;if(a.pageX-this.offset.click.leftg[2])e=g[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>g[3])h=g[3]+this.offset.click.top}if(b.grid){h=b.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/b.grid[1])*b.grid[1]:this.originalPageY;h=g?!(h-this.offset.click.topg[3])?h:!(h-this.offset.click.topg[2])?e:!(e-this.offset.click.left=0;i--){var j=c.snapElements[i].left,l=j+c.snapElements[i].width,k=c.snapElements[i].top,m=k+c.snapElements[i].height;if(j-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= -i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), -top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= -this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", -nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d
');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== -String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); -this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){e(this).removeClass("ui-resizable-autohide");b._handles.show()}},function(){if(!a.disabled)if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy(); -var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a= -false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"}); -this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff= -{width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis]; -if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false}, -_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f, -{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateVirtualBoundaries:function(b){var a=this.options,c,d,f;a={minWidth:k(a.minWidth)?a.minWidth:0,maxWidth:k(a.maxWidth)?a.maxWidth:Infinity,minHeight:k(a.minHeight)?a.minHeight:0,maxHeight:k(a.maxHeight)?a.maxHeight: -Infinity};if(this._aspectRatio||b){b=a.minHeight*this.aspectRatio;d=a.minWidth/this.aspectRatio;c=a.maxHeight*this.aspectRatio;f=a.maxWidth/this.aspectRatio;if(b>a.minWidth)a.minWidth=b;if(d>a.minHeight)a.minHeight=d;if(cb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&l)b.left=i-a.minWidth;if(d&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left= -null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+ -a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+ -c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]); -b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.16"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(), -10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top- -f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var l=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:l.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(l.css("position"))){c._revertToRelativePosition=true;l.css({position:"absolute",top:"auto",left:"auto"})}l.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType? -e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a= -e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing, -step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= -e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset; -var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left: -a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top- -d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition, -f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, -display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b= -e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height= -d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); -;/* - * jQuery UI Selectable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectables - * - * Depends: - * jquery.ui.core.js - * jquery.ui.mouse.js - * jquery.ui.widget.js - */ -(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), -selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, -c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", -c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= -this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var a=this.options;this.containerCache={};this.element.addClass("ui-sortable"); -this.refresh();this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a=== -"disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&& -!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top, -left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]}; -this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!= -document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a); -return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0], -e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset(); -c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"): -this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null, -dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")}, -toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith(); -if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), -this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h=0;b--){var c=this.items[b];if(!(c.instance!=this.currentContainer&&this.currentContainer&&c.item[0]!=this.currentItem[0])){var e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b= -this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f= -d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")|| -0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out", -a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h- -f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g- -this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this, -this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop", -a,this._uiHash());for(e=0;e li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); -a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); -if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", -function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a= -this.options;if(a.icons){c("").addClass("ui-icon "+a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); -this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); -b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); -a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ -c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; -if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); -if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(), -e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight|| -e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false", -"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.16", -animations:{slide:function(a,b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/); -f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide", -paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); -;/* - * jQuery UI Autocomplete 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.position.js - */ -(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.propAttr("readOnly"))){g= -false;var f=d.ui.keyCode;switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!= -a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)}; -this.menu=d("
    ").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&& -a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"),i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"); -d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&& -b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source= -this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length").data("item.autocomplete",b).append(d("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, -"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery); -(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", --1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.scrollTop(),c=this.element.height();if(b<0)this.element.scrollTop(g+b);else b>=c&&this.element.scrollTop(g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); -this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0);e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b, -this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e,g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| -this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| -this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),e=this.options.icons,f=e.primary&&e.secondary,d=[];if(e.primary||e.secondary){if(this.options.text)d.push("ui-button-text-icon"+(f?"s":e.primary?"-primary":"-secondary"));e.primary&&a.prepend("");e.secondary&&a.append("");if(!this.options.text){d.push(f?"ui-button-icons-only": -"ui-button-icon-only");this.hasTitle||a.attr("title",c)}}else d.push("ui-button-text-only");a.addClass(d.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){a==="disabled"&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a=this.element.css("direction")=== -"ltr";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); -b.Widget.prototype.destroy.call(this)}})})(jQuery); -;/* - * jQuery UI Dialog 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.button.js - * jquery.ui.draggable.js - * jquery.ui.mouse.js - * jquery.ui.position.js - * jquery.ui.resizable.js - */ -(function(c,l){var m={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},n={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},o=c.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false, -position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
    ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ -b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&!i.isDefaultPrevented()&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
    ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), -h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", -e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); -a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== -b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()};c.ui.dialog.maxZ+=1; -d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== -f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
    ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
    ").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a, -function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;var i=c('').click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.each(h,function(j,k){if(j!=="click")j in o?i[j](k):i.attr(j,k)});c.fn.button&&i.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", -handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition, -originalSize:f.originalSize,position:f.position,size:f.size}}a=a===l?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize", -f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "): -[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f); -if(g in m)e=true;if(g in n)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"): -e.removeClass("ui-dialog-disabled");break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a= -this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height- -b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.16",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), -create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&& -c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(b.range==="min"||b.range==="max"?" ui-slider-range-"+b.range:""))}for(var j=c.length;j"); -this.handles=c.add(d(e.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle", -g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!a.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");i=a._start(g,l);if(i===false)return}break}m=a.options.step;i=a.options.values&&a.options.values.length? -(h=a.values(l)):(h=a.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=a._valueMin();break;case d.ui.keyCode.END:h=a._valueMax();break;case d.ui.keyCode.PAGE_UP:h=a._trimAlignValue(i+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(i-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===a._valueMax())return;h=a._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===a._valueMin())return;h=a._trimAlignValue(i- -m);break}a._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(g,k);a._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy(); -return this},_mouseCapture:function(a){var b=this.options,c,f,e,j,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(b.range===true&&this.values(1)===b.min){g+=1;e=d(this.handles[g])}if(this._start(a,g)===false)return false; -this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();b=e.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-e.width()/2,top:a.pageY-b.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b= -this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b= -this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b); -c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var f;if(this.options.values&&this.options.values.length){f=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>f||b===1&&c1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a= -this.options.range,b=this.options,c=this,f=!this._animateOff?b.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({width:e- -g+"%"},{queue:false,duration:b.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:b.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[f?"animate":"css"]({width:e+"%"}, -b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.16"})})(jQuery); -;/* - * jQuery UI Tabs 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
    ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
  • #{label}
  • "},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& -e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= -d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| -(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); -this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= -this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); -if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); -this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ -g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", -function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; -this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= --1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; -d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= -d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, -e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); -j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); -if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, -this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, -load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, -"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, -url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.16"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k'))}function N(a){return a.bind("mouseout", -function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");b.length&&b.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])||!b.length)){b.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); -b.addClass("ui-state-hover");b.hasClass("ui-datepicker-prev")&&b.addClass("ui-datepicker-prev-hover");b.hasClass("ui-datepicker-next")&&b.addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==C)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.16"}});var B=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv}, -setDefaults:function(a){H(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g, -"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('
    '))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker", -function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b);b.settings.disabled&&this._disableDatepicker(a)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c== -"focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f==""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker(): -d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a, -b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.settings.disabled&&this._disableDatepicker(a);b.dpDiv.css("display","block")}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+= -1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/ -2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b= -d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e= -a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a, -"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f== -a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input", -a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);if(d.datepicker._curInst&&d.datepicker._curInst!=b){d.datepicker._datepickerShowing&&d.datepicker._triggerOnClose(d.datepicker._curInst);d.datepicker._curInst.dpDiv.stop(true,true)}var c=d.datepicker._get(b,"beforeShow");c=c?c.apply(a,[a,b]):{};if(c!==false){H(b.settings,c);b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value= -"";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b); -c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing= -true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}}},_updateDatepicker:function(a){this.maxRows=4;var b=d.datepicker._getBorders(a.dpDiv);J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}); -a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&& -!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(), -h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b= -this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");if(b)b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b); -this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();d.datepicker._triggerOnClose(b);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, -_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"): -0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e["selected"+(c=="M"? -"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a); -this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField"); -if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"? -b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=A+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd", -COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames: -null)||this._defaults.monthNames;var i=function(o){(o=k+1 -12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&& -a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay? -new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a)); -n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var s=this._get(a,"nextText");s=!h?s:this.formatDate(s,this._daylightSavingAdjust(new Date(m, -g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+s+"":f?"":''+s+"";j=this._get(a,"currentText");s=this._get(a,"gotoCurrent")&& -a.currentDay?u:b;j=!h?j:this.formatDate(j,s,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
    '+(c?h:"")+(this._isInRange(a,s)?'":"")+(c?"":h)+"
    ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");s=this._get(a,"dayNames");this._get(a,"dayNamesShort");var q=this._get(a,"dayNamesMin"),A=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),D=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='
    '+(/all|left/.test(t)&& -x==0?c?f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,A,v)+'
    ';var z=j?'":"";for(t=0;t<7;t++){var r=(t+h)%7;z+="=5?' class="ui-datepicker-week-end"':"")+'>'+q[r]+""}y+=z+"";z=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay, -z);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;z=Math.ceil((t+z)/7);this.maxRows=z=l?this.maxRows>z?this.maxRows:z:z;r=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q";var R=!j?"":'";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[r]):[true,""],F=r.getMonth()!=g,L=F&&!K||!I[0]||k&&ro;R+='";r.setDate(r.getDate()+1);r=this._daylightSavingAdjust(r)}y+=R+""}g++;if(g>11){g=0;m++}y+="
    '+this._get(a,"weekHeader")+"
    '+this._get(a,"calculateWeek")(r)+""+(F&&!D?" ":L?''+ -r.getDate()+"":''+r.getDate()+"")+"
    "+(l?""+(i[0]>0&&G==i[1]-1?'
    ':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'': -"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
    ',o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&&l)?" ":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var s=(new Date).getFullYear();i=function(q){q=q.match(/c[+-].*/)?c+parseInt(q.substring(1),10):q.match(/[+-].*/)?s+parseInt(q,10):parseInt(q,10);return isNaN(q)?s:q};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b, -e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
    ";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c=="Y"?b:0),f=a.drawMonth+ -(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");if(b)b.apply(a.input? -a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);c=this._daylightSavingAdjust(new Date(c, -e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a, -"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=function(a){if(!this.length)return this; -if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));return this.each(function(){typeof a== -"string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.16";window["DP_jQuery_"+B]=d})(jQuery); -;/* - * jQuery UI Progressbar 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - */ -(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
    ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); -this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* -this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.16"})})(jQuery); -;/* - * jQuery UI Effects 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/ - */ -jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], -16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, -a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= -a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", -"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, -0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, -211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},q=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, -d){if(f.isFunction(b)){d=b;b=null}return this.queue(function(){var e=f(this),g=e.attr("style")||" ",h=p(o.call(this)),r,v=e.attr("class");f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});r=p(o.call(this));e.attr("class",v);e.animate(u(h,r),{queue:false,duration:a,easing:b,complete:function(){f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments);f.dequeue(this)}})})}; -f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this, -[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.16",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}), -d=document.activeElement;c.wrap(b);if(c[0]===d||f.contains(c[0],d))f(d).focus();b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(e,g){a[g]=c.css(g);if(isNaN(parseInt(a[g],10)))a[g]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){var a,b=document.activeElement; -if(c.parent().is(".ui-effects-wrapper")){a=c.parent().replaceWith(c);if(c[0]===b||f.contains(c[0],b))f(b).focus();return a}return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)}); -return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this, -arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/ -2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b, -d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c, -a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b, -d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ -e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); -;/* - * jQuery UI Effects Fade 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fade - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Fold 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Fold - * - * Depends: - * jquery.effects.core.js - */ -(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], -10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); -;/* - * jQuery UI Effects Highlight 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Highlight - * - * Depends: - * jquery.effects.core.js - */ -(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& -this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); -;/* - * jQuery UI Effects Pulsate 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Effects/Pulsate - * - * Depends: - * jquery.effects.core.js - */ -(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); -b.dequeue()})})}})(jQuery); -; \ No newline at end of file diff --git a/WebGoat/Resources/client-scripts/jquery.autocomplete-min.js b/WebGoat/Resources/client-scripts/jquery.autocomplete-min.js deleted file mode 100644 index 7018fd00a..000000000 --- a/WebGoat/Resources/client-scripts/jquery.autocomplete-min.js +++ /dev/null @@ -1,11 +0,0 @@ -/** -* Ajax Autocomplete for jQuery, version 1.1.3 -* (c) 2010 Tomas Kirda -* -* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. -* For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/ -* -* Last Review: 04/19/2010 -*/ - -(function(d){function l(b,a,c){a="("+c.replace(m,"\\$1")+")";return b.replace(new RegExp(a,"gi"),"$1")}function i(b,a){this.el=d(b);this.el.attr("autocomplete","off");this.suggestions=[];this.data=[];this.badQueries=[];this.selectedIndex=-1;this.currentValue=this.el.val();this.intervalId=0;this.cachedResponse=[];this.onChangeInterval=null;this.ignoreValueChange=false;this.serviceUrl=a.serviceUrl;this.isLocal=false;this.options={autoSubmit:false,minChars:1,maxHeight:300,deferRequestBy:0, width:0,highlight:true,params:{},fnFormatResult:l,delimiter:null,zIndex:9999};this.initialize();this.setOptions(a)}var m=new RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\)","g");d.fn.autocomplete=function(b){return new i(this.get(0)||d(""),b)};i.prototype={killerFn:null,initialize:function(){var b,a,c;b=this;a=Math.floor(Math.random()*1048576).toString(16);c="Autocomplete_"+a;this.killerFn=function(e){if(d(e.target).parents(".autocomplete").size()===0){b.killSuggestions(); b.disableKillerFn()}};if(!this.options.width)this.options.width=this.el.width();this.mainContainerId="AutocompleteContainter_"+a;d('
    ').appendTo("body");this.container=d("#"+c);this.fixPosition();window.opera?this.el.keypress(function(e){b.onKeyPress(e)}):this.el.keydown(function(e){b.onKeyPress(e)});this.el.keyup(function(e){b.onKeyUp(e)}); this.el.blur(function(){b.enableKillerFn()});this.el.focus(function(){b.fixPosition()})},setOptions:function(b){var a=this.options;d.extend(a,b);if(a.lookup){this.isLocal=true;if(d.isArray(a.lookup))a.lookup={suggestions:a.lookup,data:[]}}d("#"+this.mainContainerId).css({zIndex:a.zIndex});this.container.css({maxHeight:a.maxHeight+"px",width:a.width})},clearCache:function(){this.cachedResponse=[];this.badQueries=[]},disable:function(){this.disabled=true},enable:function(){this.disabled=false},fixPosition:function(){var b= this.el.offset();d("#"+this.mainContainerId).css({top:b.top+this.el.innerHeight()+"px",left:b.left+"px"})},enableKillerFn:function(){d(document).bind("click",this.killerFn)},disableKillerFn:function(){d(document).unbind("click",this.killerFn)},killSuggestions:function(){var b=this;this.stopKillSuggestions();this.intervalId=window.setInterval(function(){b.hide();b.stopKillSuggestions()},300)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},onKeyPress:function(b){if(!(this.disabled|| !this.enabled)){switch(b.keyCode){case 27:this.el.val(this.currentValue);this.hide();break;case 9:case 13:if(this.selectedIndex===-1){this.hide();return}this.select(this.selectedIndex);if(b.keyCode===9)return;break;case 38:this.moveUp();break;case 40:this.moveDown();break;default:return}b.stopImmediatePropagation();b.preventDefault()}},onKeyUp:function(b){if(!this.disabled){switch(b.keyCode){case 38:case 40:return}clearInterval(this.onChangeInterval);if(this.currentValue!==this.el.val())if(this.options.deferRequestBy> 0){var a=this;this.onChangeInterval=setInterval(function(){a.onValueChange()},this.options.deferRequestBy)}else this.onValueChange()}},onValueChange:function(){clearInterval(this.onChangeInterval);this.currentValue=this.el.val();var b=this.getQuery(this.currentValue);this.selectedIndex=-1;if(this.ignoreValueChange)this.ignoreValueChange=false;else b===""||b.length'+e(c,this.data[f],g)+"");c.mouseover(j(f));c.click(k(f));this.container.append(c)}this.enabled=true;this.container.show()}},processResponse:function(b){var a;try{a=eval("("+b+")")}catch(c){return}if(!d.isArray(a.data))a.data=[];if(!this.options.noCache){this.cachedResponse[a.query]= a;a.suggestions.length===0&&this.badQueries.push(a.query)}if(a.query===this.getQuery(this.currentValue)){this.suggestions=a.suggestions;this.data=a.data;this.suggest()}},activate:function(b){var a,c;a=this.container.children();this.selectedIndex!==-1&&a.length>this.selectedIndex&&d(a.get(this.selectedIndex)).removeClass();this.selectedIndex=b;if(this.selectedIndex!==-1&&a.length>this.selectedIndex){c=a.get(this.selectedIndex);d(c).addClass("selected")}return c},deactivate:function(b,a){b.className= "";if(this.selectedIndex===a)this.selectedIndex=-1},select:function(b){var a;if(a=this.suggestions[b]){this.el.val(a);if(this.options.autoSubmit){a=this.el.parents("form");a.length>0&&a.get(0).submit()}this.ignoreValueChange=true;this.hide();this.onSelect(b)}},moveUp:function(){if(this.selectedIndex!==-1)if(this.selectedIndex===0){this.container.children().get(0).className="";this.selectedIndex=-1;this.el.val(this.currentValue)}else this.adjustScroll(this.selectedIndex-1)},moveDown:function(){this.selectedIndex!== this.suggestions.length-1&&this.adjustScroll(this.selectedIndex+1)},adjustScroll:function(b){var a,c,e;a=this.activate(b).offsetTop;c=this.container.scrollTop();e=c+this.options.maxHeight-25;if(ae&&this.container.scrollTop(a-this.options.maxHeight+25);this.el.val(this.getValue(this.suggestions[b]))},onSelect:function(b){var a,c;a=this.options.onSelect;c=this.suggestions[b];b=this.data[b];this.el.val(this.getValue(c));d.isFunction(a)&&a(c,b,this.el)},getValue:function(b){var a, c;a=this.options.delimiter;if(!a)return b;c=this.currentValue;a=c.split(a);if(a.length===1)return b;return c.substr(0,c.length-a[a.length-1].length)+b}}})(jQuery); \ No newline at end of file diff --git a/WebGoat/Resources/client-scripts/jquery.autocomplete.js b/WebGoat/Resources/client-scripts/jquery.autocomplete.js deleted file mode 100644 index 6a7ce8787..000000000 --- a/WebGoat/Resources/client-scripts/jquery.autocomplete.js +++ /dev/null @@ -1,390 +0,0 @@ -/** -* Ajax Autocomplete for jQuery, version 1.1.3 -* (c) 2010 Tomas Kirda -* -* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. -* For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/ -* -* Last Review: 04/19/2010 -*/ - -/*jslint onevar: true, evil: true, nomen: true, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */ -/*global window: true, document: true, clearInterval: true, setInterval: true, jQuery: true */ - -(function($) { - - var reEscape = new RegExp('(\\' + ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'].join('|\\') + ')', 'g'); - - function fnFormatResult(value, data, currentValue) { - var pattern = '(' + currentValue.replace(reEscape, '\\$1') + ')'; - return value.replace(new RegExp(pattern, 'gi'), '$1<\/strong>'); - } - - function Autocomplete(el, options) { - this.el = $(el); - this.el.attr('autocomplete', 'off'); - this.suggestions = []; - this.data = []; - this.badQueries = []; - this.selectedIndex = -1; - this.currentValue = this.el.val(); - this.intervalId = 0; - this.cachedResponse = []; - this.onChangeInterval = null; - this.ignoreValueChange = false; - this.serviceUrl = options.serviceUrl; - this.isLocal = false; - this.options = { - autoSubmit: false, - minChars: 1, - maxHeight: 300, - deferRequestBy: 0, - width: 0, - highlight: true, - params: {}, - fnFormatResult: fnFormatResult, - delimiter: null, - zIndex: 9999 - }; - this.initialize(); - this.setOptions(options); - } - - $.fn.autocomplete = function(options) { - return new Autocomplete(this.get(0)||$(''), options); - }; - - - Autocomplete.prototype = { - - killerFn: null, - - initialize: function() { - - var me, uid, autocompleteElId; - me = this; - uid = Math.floor(Math.random()*0x100000).toString(16); - autocompleteElId = 'Autocomplete_' + uid; - - this.killerFn = function(e) { - if ($(e.target).parents('.autocomplete').size() === 0) { - me.killSuggestions(); - me.disableKillerFn(); - } - }; - - if (!this.options.width) { this.options.width = this.el.width(); } - this.mainContainerId = 'AutocompleteContainter_' + uid; - - $('
    ').appendTo('body'); - - this.container = $('#' + autocompleteElId); - this.fixPosition(); - if (window.opera) { - this.el.keypress(function(e) { me.onKeyPress(e); }); - } else { - this.el.keydown(function(e) { me.onKeyPress(e); }); - } - this.el.keyup(function(e) { me.onKeyUp(e); }); - this.el.blur(function() { me.enableKillerFn(); }); - this.el.focus(function() { me.fixPosition(); }); - }, - - setOptions: function(options){ - var o = this.options; - $.extend(o, options); - if(o.lookup){ - this.isLocal = true; - if($.isArray(o.lookup)){ o.lookup = { suggestions:o.lookup, data:[] }; } - } - $('#'+this.mainContainerId).css({ zIndex:o.zIndex }); - this.container.css({ maxHeight: o.maxHeight + 'px', width:o.width }); - }, - - clearCache: function(){ - this.cachedResponse = []; - this.badQueries = []; - }, - - disable: function(){ - this.disabled = true; - }, - - enable: function(){ - this.disabled = false; - }, - - fixPosition: function() { - var offset = this.el.offset(); - $('#' + this.mainContainerId).css({ top: (offset.top + this.el.innerHeight()) + 'px', left: offset.left + 'px' }); - }, - - enableKillerFn: function() { - var me = this; - $(document).bind('click', me.killerFn); - }, - - disableKillerFn: function() { - var me = this; - $(document).unbind('click', me.killerFn); - }, - - killSuggestions: function() { - var me = this; - this.stopKillSuggestions(); - this.intervalId = window.setInterval(function() { me.hide(); me.stopKillSuggestions(); }, 300); - }, - - stopKillSuggestions: function() { - window.clearInterval(this.intervalId); - }, - - onKeyPress: function(e) { - if (this.disabled || !this.enabled) { return; } - // return will exit the function - // and event will not be prevented - switch (e.keyCode) { - case 27: //KEY_ESC: - this.el.val(this.currentValue); - this.hide(); - break; - case 9: //KEY_TAB: - case 13: //KEY_RETURN: - if (this.selectedIndex === -1) { - this.hide(); - return; - } - this.select(this.selectedIndex); - if(e.keyCode === 9){ return; } - break; - case 38: //KEY_UP: - this.moveUp(); - break; - case 40: //KEY_DOWN: - this.moveDown(); - break; - default: - return; - } - e.stopImmediatePropagation(); - e.preventDefault(); - }, - - onKeyUp: function(e) { - if(this.disabled){ return; } - switch (e.keyCode) { - case 38: //KEY_UP: - case 40: //KEY_DOWN: - return; - } - clearInterval(this.onChangeInterval); - if (this.currentValue !== this.el.val()) { - if (this.options.deferRequestBy > 0) { - // Defer lookup in case when value changes very quickly: - var me = this; - this.onChangeInterval = setInterval(function() { me.onValueChange(); }, this.options.deferRequestBy); - } else { - this.onValueChange(); - } - } - }, - - onValueChange: function() { - clearInterval(this.onChangeInterval); - this.currentValue = this.el.val(); - var q = this.getQuery(this.currentValue); - this.selectedIndex = -1; - if (this.ignoreValueChange) { - this.ignoreValueChange = false; - return; - } - if (q === '' || q.length < this.options.minChars) { - this.hide(); - } else { - this.getSuggestions(q); - } - }, - - getQuery: function(val) { - var d, arr; - d = this.options.delimiter; - if (!d) { return $.trim(val); } - arr = val.split(d); - return $.trim(arr[arr.length - 1]); - }, - - getSuggestionsLocal: function(q) { - var ret, arr, len, val, i; - arr = this.options.lookup; - len = arr.suggestions.length; - ret = { suggestions:[], data:[] }; - q = q.toLowerCase(); - for(i=0; i< len; i++){ - val = arr.suggestions[i]; - if(val.toLowerCase().indexOf(q) === 0){ - ret.suggestions.push(val); - ret.data.push(arr.data[i]); - } - } - return ret; - }, - - getSuggestions: function(q) { - var cr, me; - cr = this.isLocal ? this.getSuggestionsLocal(q) : this.cachedResponse[q]; - if (cr && $.isArray(cr.suggestions)) { - this.suggestions = cr.suggestions; - this.data = cr.data; - this.suggest(); - } else if (!this.isBadQuery(q)) { - me = this; - me.options.params.query = q; - $.get(this.serviceUrl, me.options.params, function(txt) { me.processResponse(txt); }, 'text'); - } - }, - - isBadQuery: function(q) { - var i = this.badQueries.length; - while (i--) { - if (q.indexOf(this.badQueries[i]) === 0) { return true; } - } - return false; - }, - - hide: function() { - this.enabled = false; - this.selectedIndex = -1; - this.container.hide(); - }, - - suggest: function() { - if (this.suggestions.length === 0) { - this.hide(); - return; - } - - var me, len, div, f, v, i, s, mOver, mClick; - me = this; - len = this.suggestions.length; - f = this.options.fnFormatResult; - v = this.getQuery(this.currentValue); - mOver = function(xi) { return function() { me.activate(xi); }; }; - mClick = function(xi) { return function() { me.select(xi); }; }; - this.container.hide().empty(); - for (i = 0; i < len; i++) { - s = this.suggestions[i]; - div = $((me.selectedIndex === i ? '
    ' + f(s, this.data[i], v) + '
    '); - div.mouseover(mOver(i)); - div.click(mClick(i)); - this.container.append(div); - } - this.enabled = true; - this.container.show(); - }, - - processResponse: function(text) { - var response; - try { - response = eval('(' + text + ')'); - } catch (err) { return; } - if (!$.isArray(response.data)) { response.data = []; } - if(!this.options.noCache){ - this.cachedResponse[response.query] = response; - if (response.suggestions.length === 0) { this.badQueries.push(response.query); } - } - if (response.query === this.getQuery(this.currentValue)) { - this.suggestions = response.suggestions; - this.data = response.data; - this.suggest(); - } - }, - - activate: function(index) { - var divs, activeItem; - divs = this.container.children(); - // Clear previous selection: - if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) { - $(divs.get(this.selectedIndex)).removeClass(); - } - this.selectedIndex = index; - if (this.selectedIndex !== -1 && divs.length > this.selectedIndex) { - activeItem = divs.get(this.selectedIndex); - $(activeItem).addClass('selected'); - } - return activeItem; - }, - - deactivate: function(div, index) { - div.className = ''; - if (this.selectedIndex === index) { this.selectedIndex = -1; } - }, - - select: function(i) { - var selectedValue, f; - selectedValue = this.suggestions[i]; - if (selectedValue) { - this.el.val(selectedValue); - if (this.options.autoSubmit) { - f = this.el.parents('form'); - if (f.length > 0) { f.get(0).submit(); } - } - this.ignoreValueChange = true; - this.hide(); - this.onSelect(i); - } - }, - - moveUp: function() { - if (this.selectedIndex === -1) { return; } - if (this.selectedIndex === 0) { - this.container.children().get(0).className = ''; - this.selectedIndex = -1; - this.el.val(this.currentValue); - return; - } - this.adjustScroll(this.selectedIndex - 1); - }, - - moveDown: function() { - if (this.selectedIndex === (this.suggestions.length - 1)) { return; } - this.adjustScroll(this.selectedIndex + 1); - }, - - adjustScroll: function(i) { - var activeItem, offsetTop, upperBound, lowerBound; - activeItem = this.activate(i); - offsetTop = activeItem.offsetTop; - upperBound = this.container.scrollTop(); - lowerBound = upperBound + this.options.maxHeight - 25; - if (offsetTop < upperBound) { - this.container.scrollTop(offsetTop); - } else if (offsetTop > lowerBound) { - this.container.scrollTop(offsetTop - this.options.maxHeight + 25); - } - this.el.val(this.getValue(this.suggestions[i])); - }, - - onSelect: function(i) { - var me, fn, s, d; - me = this; - fn = me.options.onSelect; - s = me.suggestions[i]; - d = me.data[i]; - me.el.val(me.getValue(s)); - if ($.isFunction(fn)) { fn(s, d, me.el); } - }, - - getValue: function(value){ - var del, currVal, arr, me; - me = this; - del = me.options.delimiter; - if (!del) { return value; } - currVal = me.currentValue; - arr = currVal.split(del); - if (arr.length === 1) { return value; } - return currVal.substr(0, currVal.length - arr[arr.length - 1].length) + value; - } - - }; - -}(jQuery)); diff --git a/WebGoat/Resources/client-scripts/menu.js b/WebGoat/Resources/client-scripts/menu.js deleted file mode 100644 index ee47013d0..000000000 --- a/WebGoat/Resources/client-scripts/menu.js +++ /dev/null @@ -1,99 +0,0 @@ -/* -Simple JQuery menu. -HTML structure to use: - -Notes: - -Each menu MUST have a class 'menu' set. If the menu doesn't have this, the JS won't make it dynamic -If you want a panel to be expanded at page load, give the containing LI element the classname 'expand'. -Use this to set the right state in your page (generation) code. - -Optional extra classnames for the UL element that holds an accordion: - -noaccordion : no accordion functionality -collapsible : menu works like an accordion but can be fully collapsed - - - -Copyright 2007-2010 by Marco van Hylckama Vlieg - -web: http://www.i-marco.nl/weblog/ -email: marco@i-marco.nl - -Free to use any way you like. -*/ - - -jQuery.fn.initMenu = function() { - return this.each(function(){ - var theMenu = $(this).get(0); - $('.acitem', this).hide(); - $('li.expand > .acitem', this).show(); - $('li.expand > .acitem', this).prev().addClass('active'); - $('li a', this).click( - function(e) { - e.stopImmediatePropagation(); - var theElement = $(this).next(); - var parent = this.parentNode.parentNode; - if($(parent).hasClass('noaccordion')) { - if(theElement[0] === undefined) { - window.location.href = this.href; - } - $(theElement).slideToggle('normal', function() { - if ($(this).is(':visible')) { - $(this).prev().addClass('active'); - } - else { - $(this).prev().removeClass('active'); - } - }); - return false; - } - else { - if(theElement.hasClass('acitem') && theElement.is(':visible')) { - if($(parent).hasClass('collapsible')) { - $('.acitem:visible', parent).first().slideUp('normal', - function() { - $(this).prev().removeClass('active'); - } - ); - return false; - } - return false; - } - if(theElement.hasClass('acitem') && !theElement.is(':visible')) { - $('.acitem:visible', parent).first().slideUp('normal', function() { - $(this).prev().removeClass('active'); - }); - theElement.slideDown('normal', function() { - $(this).prev().addClass('active'); - }); - return false; - } - } - } - ); -}); -}; - -$(document).ready(function() {$('.menu').initMenu();}); \ No newline at end of file diff --git a/WebGoat/Resources/images/infrared_logo.png b/WebGoat/Resources/images/infrared_logo.png deleted file mode 100644 index 0f6dc3cb3..000000000 Binary files a/WebGoat/Resources/images/infrared_logo.png and /dev/null differ diff --git a/WebGoat/Resources/images/moreinfo.png b/WebGoat/Resources/images/moreinfo.png deleted file mode 100644 index 07dfc59b4..000000000 Binary files a/WebGoat/Resources/images/moreinfo.png and /dev/null differ diff --git a/WebGoat/Resources/images/moreinfo1.png b/WebGoat/Resources/images/moreinfo1.png deleted file mode 100644 index 045331277..000000000 Binary files a/WebGoat/Resources/images/moreinfo1.png and /dev/null differ diff --git a/WebGoat/Resources/images/moreinfo2.png b/WebGoat/Resources/images/moreinfo2.png deleted file mode 100644 index 62de931ac..000000000 Binary files a/WebGoat/Resources/images/moreinfo2.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-libs/autocomplete/images/shadow.png b/WebGoat/Resources/jquery-libs/autocomplete/images/shadow.png deleted file mode 100644 index a2561df97..000000000 Binary files a/WebGoat/Resources/jquery-libs/autocomplete/images/shadow.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-libs/autocomplete/styles.css b/WebGoat/Resources/jquery-libs/autocomplete/styles.css deleted file mode 100644 index 33c454819..000000000 --- a/WebGoat/Resources/jquery-libs/autocomplete/styles.css +++ /dev/null @@ -1,6 +0,0 @@ - -.autocomplete-w1 { background:url(images/shadow.png) no-repeat bottom right; position:absolute; top:0px; left:0px; margin:8px 0 0 6px; /* IE6 fix: */ _background:none; _margin:0; } -.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; } -.autocomplete .selected { background:#F0F0F0; } -.autocomplete div { padding:2px 5px; white-space:nowrap; } -.autocomplete strong { font-weight:normal; color:#3399FF; } diff --git a/WebGoat/Resources/jquery-ui/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png b/WebGoat/Resources/jquery-ui/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png deleted file mode 100644 index 6348115e6..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-bg_flat_15_cd0a0a_40x100.png b/WebGoat/Resources/jquery-ui/images/ui-bg_flat_15_cd0a0a_40x100.png deleted file mode 100644 index 7680b5437..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-bg_flat_15_cd0a0a_40x100.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-bg_glass_100_e4f1fb_1x400.png b/WebGoat/Resources/jquery-ui/images/ui-bg_glass_100_e4f1fb_1x400.png deleted file mode 100644 index 5ae77ce67..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-bg_glass_100_e4f1fb_1x400.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-bg_glass_50_3baae3_1x400.png b/WebGoat/Resources/jquery-ui/images/ui-bg_glass_50_3baae3_1x400.png deleted file mode 100644 index baabca6ba..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-bg_glass_50_3baae3_1x400.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-bg_glass_80_d7ebf9_1x400.png b/WebGoat/Resources/jquery-ui/images/ui-bg_glass_80_d7ebf9_1x400.png deleted file mode 100644 index d9387e950..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-bg_glass_80_d7ebf9_1x400.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png b/WebGoat/Resources/jquery-ui/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png deleted file mode 100644 index 28b566c2c..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-bg_highlight-hard_70_000000_1x100.png b/WebGoat/Resources/jquery-ui/images/ui-bg_highlight-hard_70_000000_1x100.png deleted file mode 100644 index d58829780..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-bg_highlight-hard_70_000000_1x100.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-bg_highlight-soft_100_deedf7_1x100.png b/WebGoat/Resources/jquery-ui/images/ui-bg_highlight-soft_100_deedf7_1x100.png deleted file mode 100644 index 2289d3c7d..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-bg_highlight-soft_100_deedf7_1x100.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-bg_highlight-soft_25_ffef8f_1x100.png b/WebGoat/Resources/jquery-ui/images/ui-bg_highlight-soft_25_ffef8f_1x100.png deleted file mode 100644 index 54aff0cb9..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-bg_highlight-soft_25_ffef8f_1x100.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-icons_2694e8_256x240.png b/WebGoat/Resources/jquery-ui/images/ui-icons_2694e8_256x240.png deleted file mode 100644 index e62b8f7fe..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-icons_2694e8_256x240.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-icons_2e83ff_256x240.png b/WebGoat/Resources/jquery-ui/images/ui-icons_2e83ff_256x240.png deleted file mode 100644 index 09d1cdc85..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-icons_2e83ff_256x240.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-icons_3d80b3_256x240.png b/WebGoat/Resources/jquery-ui/images/ui-icons_3d80b3_256x240.png deleted file mode 100644 index f13b20664..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-icons_3d80b3_256x240.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-icons_72a7cf_256x240.png b/WebGoat/Resources/jquery-ui/images/ui-icons_72a7cf_256x240.png deleted file mode 100644 index 6e207d8b2..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-icons_72a7cf_256x240.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/images/ui-icons_ffffff_256x240.png b/WebGoat/Resources/jquery-ui/images/ui-icons_ffffff_256x240.png deleted file mode 100644 index 42f8f992c..000000000 Binary files a/WebGoat/Resources/jquery-ui/images/ui-icons_ffffff_256x240.png and /dev/null differ diff --git a/WebGoat/Resources/jquery-ui/jquery-ui-1.8.16.custom.css b/WebGoat/Resources/jquery-ui/jquery-ui-1.8.16.custom.css deleted file mode 100644 index 3324b5f09..000000000 --- a/WebGoat/Resources/jquery-ui/jquery-ui-1.8.16.custom.css +++ /dev/null @@ -1,568 +0,0 @@ -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } -.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ -.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { cursor: default !important; } - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } - - -/* - * jQuery UI CSS Framework 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Theming/API - * - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=deedf7&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=04_highlight_hard.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=02_glass.png&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=3baae3&bgTextureActive=02_glass.png&bgImgOpacityActive=50&borderColorActive=2694e8&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffef8f&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=01_flat.png&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=eeeeee&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=90&opacityOverlay=80&bgColorShadow=000000&bgTextureShadow=04_highlight_hard.png&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px - */ - - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #dddddd; background: #f2f5f7 url(images/ui-bg_highlight-hard_100_f2f5f7_1x100.png) 50% top repeat-x; color: #362b36; } -.ui-widget-content a { color: #362b36; } -.ui-widget-header { border: 1px solid #aed0ea; background: #deedf7 url(images/ui-bg_highlight-soft_100_deedf7_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } -.ui-widget-header a { color: #222222; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #aed0ea; background: #d7ebf9 url(images/ui-bg_glass_80_d7ebf9_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2779aa; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2779aa; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #74b2e2; background: #e4f1fb url(images/ui-bg_glass_100_e4f1fb_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #0070a3; } -.ui-state-hover a, .ui-state-hover a:hover { color: #0070a3; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #2694e8; background: #3baae3 url(images/ui-bg_glass_50_3baae3_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #ffffff; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } -.ui-widget :active { outline: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #f9dd34; background: #ffef8f url(images/ui-bg_highlight-soft_25_ffef8f_1x100.png) 50% top repeat-x; color: #363636; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #cd0a0a url(images/ui-bg_flat_15_cd0a0a_40x100.png) 50% 50% repeat-x; color: #ffffff; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_72a7cf_256x240.png); } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_72a7cf_256x240.png); } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_72a7cf_256x240.png); } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_3d80b3_256x240.png); } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_2694e8_256x240.png); } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; } -.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; } - -/* Overlays */ -.ui-widget-overlay { background: #eeeeee url(images/ui-bg_diagonals-thick_90_eeeeee_40x40.png) 50% 50% repeat; opacity: .80;filter:Alpha(Opacity=80); } -.ui-widget-shadow { margin: -7px 0 0 -7px; padding: 7px; background: #000000 url(images/ui-bg_highlight-hard_70_000000_1x100.png) 50% top repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* - * jQuery UI Resizable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Resizable#theming - */ -.ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } -.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } -.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } -.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } -.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } -.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } -.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } -.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } -.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } -.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* - * jQuery UI Selectable 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Selectable#theming - */ -.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } -/* - * jQuery UI Accordion 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Accordion#theming - */ -/* IE/Win - Fix animation bug - #4615 */ -.ui-accordion { width: 100%; } -.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } -.ui-accordion .ui-accordion-li-fix { display: inline; } -.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } -.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; } -.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } -.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } -.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } -.ui-accordion .ui-accordion-content-active { display: block; } -/* - * jQuery UI Autocomplete 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Autocomplete#theming - */ -.ui-autocomplete { position: absolute; cursor: default; } - -/* workarounds */ -* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ - -/* - * jQuery UI Menu 1.8.16 - * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Menu#theming - */ -.ui-menu { - list-style:none; - padding: 2px; - margin: 0; - display:block; - float: left; -} -.ui-menu .ui-menu { - margin-top: -3px; -} -.ui-menu .ui-menu-item { - margin:0; - padding: 0; - zoom: 1; - float: left; - clear: left; - width: 100%; -} -.ui-menu .ui-menu-item a { - text-decoration:none; - display:block; - padding:.2em .4em; - line-height:1.5; - zoom:1; -} -.ui-menu .ui-menu-item a.ui-state-hover, -.ui-menu .ui-menu-item a.ui-state-active { - font-weight: normal; - margin: -1px; -} -/* - * jQuery UI Button 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Button#theming - */ -.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ -.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ -button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ -.ui-button-icons-only { width: 3.4em; } -button.ui-button-icons-only { width: 3.7em; } - -/*button text element */ -.ui-button .ui-button-text { display: block; line-height: 1.4; } -.ui-button-text-only .ui-button-text { padding: .4em 1em; } -.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } -.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } -.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } -.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } -/* no icon support for input elements, provide padding by default */ -input.ui-button { padding: .4em 1em; } - -/*button icon element(s) */ -.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } -.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } -.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } -.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } -.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } - -/*button sets*/ -.ui-buttonset { margin-right: 7px; } -.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } - -/* workarounds */ -button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ -/* - * jQuery UI Dialog 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Dialog#theming - */ -.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } -.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } -/* - * jQuery UI Slider 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Slider#theming - */ -.ui-slider { position: relative; text-align: left; } -.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } -.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } - -.ui-slider-horizontal { height: .8em; } -.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } -.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } -.ui-slider-horizontal .ui-slider-range-min { left: 0; } -.ui-slider-horizontal .ui-slider-range-max { right: 0; } - -.ui-slider-vertical { width: .8em; height: 100px; } -.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } -.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } -.ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; }/* - * jQuery UI Tabs 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Tabs#theming - */ -.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ -.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } -.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; } -.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } -.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ -.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } -.ui-tabs .ui-tabs-hide { display: none !important; } -/* - * jQuery UI Datepicker 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Datepicker#theming - */ -.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } -.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } -.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } -.ui-datepicker .ui-datepicker-prev { left:2px; } -.ui-datepicker .ui-datepicker-next { right:2px; } -.ui-datepicker .ui-datepicker-prev-hover { left:1px; } -.ui-datepicker .ui-datepicker-next-hover { right:1px; } -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } -.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } -.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } -.ui-datepicker select.ui-datepicker-month-year {width: 100%;} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { width: 49%;} -.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } -.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } -.ui-datepicker td { border: 0; padding: 1px; } -.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } -.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } -.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { width:auto; } -.ui-datepicker-multi .ui-datepicker-group { float:left; } -.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } -.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } -.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } -.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } - -/* RTL support */ -.ui-datepicker-rtl { direction: rtl; } -.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } -.ui-datepicker-rtl .ui-datepicker-group { float:right; } -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } - -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ -.ui-datepicker-cover { - display: none; /*sorry for IE5*/ - display/**/: block; /*sorry for IE5*/ - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ -}/* - * jQuery UI Progressbar 1.8.16 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Progressbar#theming - */ -.ui-progressbar { height:2em; text-align: left; } -.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/WebGoat/TODO.txt b/WebGoat/TODO.txt deleted file mode 100644 index ce46d772d..000000000 --- a/WebGoat/TODO.txt +++ /dev/null @@ -1,59 +0,0 @@ -Unassigned: - - -+ Entity SQLi -+ NHibernate SQLi -+ LDAP injection (research the APIs / point to the APIs) -+ Weak cryptographic cypher (mode & padding). - * Find out the default behavior (mode & padding) - * Find out an example where we specify bad values -+ Using an insecure protocol (web client / http client) (weak ssl algo) -+ Global error handling -+ Unpatched libraries - - -Harry: - -+ Command Injection (DONE) - * Also part of automatic DB setup (DONE) -+ Create adaptor for switching out DBs (DONE) - * Amend Rebuild Page to easily switchout DBs (DONE) -+ Debugging leaks (DONE) -+ Insecure message digest (DONE) -+ Unsafe (DONE) -+ Not using SSL (DONE - already present when logging in) -+ Insecure random # gen (DONE) -+ Hard coded seed (For when using random functionality) (DONE) -+ Role manipulation (standard .net api for role (isInRole(request.getParameter("role"))) (WORKING) - -Ray: - -+ LINQ SQLi -+ URL rewriting (e.g. session cookie in url. can rewrite) <-- might be an issue. Cookieless is sitewide and breaks site when set to true. -+ Basic Auth - -+ Hard coded salts, keys (Done) -+ XSS (Done) -+ Information disclosure (Done) - * Extra sensitive information that may go out (server that is running etc.) -+ Session id to the screen / log (Done) -+ Trace (Done) -+ XPATH Injection (Done) -+ Header injection (Done) -+ Custom crypto (args have to use a byte array and do a bitwise operation) (Done) -+ Readline (denial of service) (Done) -+ Hard Code Passwords (PWD in source code) (Done) -+ Denial Of Service (RegEx) (Done) -+ Httponly (cookie flag) (Done) -+ Secure (cookie flag) (Done) -+ XML Injection(Done) -+ Verb tampering (changing POST/GET etc. request to something different) (Done) - - -+ Session timeout (config setting) (Done) -+ Dir traversal (Done) -+ Cleartext passwords (commonly used config files) (in web.config) (Done) -+ Debugging enabled (Done) -+ Password disclosure to screen or to log (Done) -+ Unchecked redirects (already in there) (Done) -+ Unencrypted viewstate (Done) diff --git a/WebGoat/Web.config b/WebGoat/Web.config deleted file mode 100644 index ed1e0ab01..000000000 --- a/WebGoat/Web.config +++ /dev/null @@ -1,172 +0,0 @@ - - - - -
    - - -
    - -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/WebGoat/Web.sitemap b/WebGoat/Web.sitemap deleted file mode 100644 index 79f4e05d6..000000000 --- a/WebGoat/Web.sitemap +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/WebGoat/WebGoat.NET.csproj b/WebGoat/WebGoat.NET.csproj deleted file mode 100644 index c00501db7..000000000 --- a/WebGoat/WebGoat.NET.csproj +++ /dev/null @@ -1,1060 +0,0 @@ - - - - True - Debug - AnyCPU - 10.0.0 - 2.0 - {83B04441-0F79-4424-AAD0-46E0C3CDDAA1} - {349C5851-65DF-11DA-9384-00065B846F21};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - Library - OWASP.WebGoat.NET - DotNetGoat - v3.5 - - - 4.0 - - - - - true - full - false - bin - DEBUG - prompt - 4 - false - AllRules.ruleset - true - - - - - - - - - - none - false - bin - prompt - 4 - false - AllRules.ruleset - true - - - - - - - - - - - lib\mysql.data.dll - - - lib\mysql.data.entity.dll - - - lib\mysql.visualstudio.dll - - - lib\mysql.web.dll - - - lib\log4net.dll - - - lib\Mono.Data.Sqlite.dll - - - - - - - - Designer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ForgotPassword.aspx - ASPXCodeBehind - - - ForgotPassword.aspx - - - UploadPathManipulation.aspx - ASPXCodeBehind - - - UploadPathManipulation.aspx - - - Global.asax - - - About.aspx - ASPXCodeBehind - - - About.aspx - - - BasicAuth.aspx - ASPXCodeBehind - - - BasicAuth.aspx - - - Challenge1.aspx - ASPXCodeBehind - - - Challenge1.aspx - - - Challenge2.aspx - ASPXCodeBehind - - - Challenge2.aspx - - - Challenge3.aspx - ASPXCodeBehind - - - Challenge3.aspx - - - ChangePwd.aspx - ASPXCodeBehind - - - ChangePwd.aspx - - - ClientSideStorage.aspx - ASPXCodeBehind - - - ClientSideStorage.aspx - - - CommandInjection.aspx - ASPXCodeBehind - - - CommandInjection.aspx - - - RebuildDatabase.aspx - ASPXCodeBehind - - - RebuildDatabase.aspx - - - CSRFDemo.aspx - ASPXCodeBehind - - - CSRFDemo.aspx - - - DomXSS.aspx - ASPXCodeBehind - - - DomXSS.aspx - - - EmbeddedError.aspx - ASPXCodeBehind - - - EmbeddedError.aspx - - - EncryptVSEncode.aspx - ASPXCodeBehind - - - EncryptVSEncode.aspx - - - Error.aspx - ASPXCodeBehind - - - Error.aspx - - - ExploitDebug.aspx - ASPXCodeBehind - - - ExploitDebug.aspx - - - FlashScripting.aspx - ASPXCodeBehind - - - FlashScripting.aspx - - - ForcedBrowsing.aspx - ASPXCodeBehind - - - ForcedBrowsing.aspx - - - FormBasedAuth.aspx - ASPXCodeBehind - - - FormBasedAuth.aspx - - - Global.asax - - - HiddenField.aspx - ASPXCodeBehind - - - HiddenField.aspx - - - InjectionExercise.aspx - ASPXCodeBehind - - - InjectionExercise.aspx - - - jQueryInjection.aspx - ASPXCodeBehind - - - jQueryInjection.aspx - - - XSSExercise.aspx - ASPXCodeBehind - - - XSSExercise.aspx - - - WSDL.aspx - ASPXCodeBehind - - - WSDL.aspx - - - WSAttacks.aspx - ASPXCodeBehind - - - WSAttacks.aspx - - - JSONInjection.aspx - ASPXCodeBehind - - - JSONInjection.aspx - - - LogInjection.aspx - ASPXCodeBehind - - - LogInjection.aspx - - - LogoutIssues.aspx - ASPXCodeBehind - - - LogoutIssues.aspx - - - Worm.aspx - ASPXCodeBehind - - - Worm.aspx - - - Viewstate.aspx - ASPXCodeBehind - - - Viewstate.aspx - - - StoredXSS.aspx - ASPXCodeBehind - - - StoredXSS.aspx - - - SQLInjectionDiscovery.aspx - ASPXCodeBehind - - - SQLInjectionDiscovery.aspx - - - SQLInjection.aspx - ASPXCodeBehind - - - SQLInjection.aspx - - - SessionExercise.aspx - ASPXCodeBehind - - - SessionExercise.aspx - - - SessionFixation.aspx - ASPXCodeBehind - - - SessionFixation.aspx - - - SamplePage.aspx - ASPXCodeBehind - - - SamplePage.aspx - - - ReflectedXSS.aspx - ASPXCodeBehind - - - ReflectedXSS.aspx - - - ParamTampering.aspx - ASPXCodeBehind - - - ParamTampering.aspx - - - ResponseSplitting.aspx - ASPXCodeBehind - - - ResponseSplitting.aspx - - - Default.aspx - ASPXCodeBehind - - - Default.aspx - - - LoginPage.aspx - ASPXCodeBehind - - - LoginPage.aspx - - - ForgotPassword.aspx - ASPXCodeBehind - - - ForgotPassword.aspx - - - ChangePassword.aspx - ASPXCodeBehind - - - ChangePassword.aspx - - - PathManipulation.aspx - ASPXCodeBehind - - - PathManipulation.aspx - - - PwdComplexity.aspx - ASPXCodeBehind - - - AddNewUser.aspx - ASPXCodeBehind - - - AddNewUser.aspx - - - Autocomplete.ashx - - - Catalog.aspx - ASPXCodeBehind - - - Catalog.aspx - - - ChangePassword.aspx - ASPXCodeBehind - - - ChangePassword.aspx - - - CustomerLogin.aspx - ASPXCodeBehind - - - CustomerLogin.aspx - - - CustomerSettings.aspx - ASPXCodeBehind - - - CustomerSettings.aspx - - - Debug.aspx - ASPXCodeBehind - - - Debug.aspx - - - ForgotPassword.aspx - ASPXCodeBehind - - - ForgotPassword.aspx - - - Logout.aspx - ASPXCodeBehind - - - Logout.aspx - - - MainPage.aspx - ASPXCodeBehind - - - MainPage.aspx - - - Orders.aspx - ASPXCodeBehind - - - Orders.aspx - - - ProductDetails.aspx - ASPXCodeBehind - - - ProductDetails.aspx - - - ProxySetup.aspx - - - ProxySetup.aspx - - - Site.Master - ASPXCodeBehind - - - Site.Master - - - - - - - - - - - - - Trace.aspx - - - Trace.aspx - - - XPathInjection.aspx - - - XPathInjection.aspx - - - HeaderInjection.aspx - - - HeaderInjection.aspx - - - MessageDigest.aspx - - - MessageDigest.aspx - - - XMLInjection.aspx - - - XMLInjection.aspx - - - - ReadlineDoS.aspx - - - ReadlineDoS.aspx - - - RegexDoS.aspx - - - RegexDoS.aspx - - - Unsafe.aspx - - - Unsafe.aspx - - - Random.aspx - - - Random.aspx - - - - VerbTampering.aspx - - - VerbTampering.aspx - - - VerbTamperingAttack.aspx - - - VerbTamperingAttack.aspx - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/WebGoat/WebGoat.NET.csproj.user b/WebGoat/WebGoat.NET.csproj.user deleted file mode 100644 index fd9084ec5..000000000 --- a/WebGoat/WebGoat.NET.csproj.user +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/WebGoat/WebGoatCoins/Autocomplete.ashx b/WebGoat/WebGoatCoins/Autocomplete.ashx deleted file mode 100644 index e4ee3bf1b..000000000 --- a/WebGoat/WebGoatCoins/Autocomplete.ashx +++ /dev/null @@ -1 +0,0 @@ -<%@ WebHandler Language="C#" CodeBehind="Autocomplete.ashx.cs" Class="OWASP.WebGoat.NET.WebGoatCoins.Autocomplete" %> diff --git a/WebGoat/WebGoatCoins/Autocomplete.ashx.cs b/WebGoat/WebGoatCoins/Autocomplete.ashx.cs deleted file mode 100644 index 4c19656a0..000000000 --- a/WebGoat/WebGoatCoins/Autocomplete.ashx.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Data; -using OWASP.WebGoat.NET.App_Code; -using OWASP.WebGoat.NET.App_Code.DB; - -namespace OWASP.WebGoat.NET.WebGoatCoins -{ - /// - /// Summary description for Autocomplete - /// - public class Autocomplete : IHttpHandler - { - - - private IDbProvider du = Settings.CurrentDbProvider; - - public void ProcessRequest(HttpContext context) - { - //context.Response.ContentType = "text/plain"; - //context.Response.Write("Hello World"); - - string query = context.Request["query"]; - - DataSet ds = du.GetCustomerEmails(query); - string json = Encoder.ToJSONSAutocompleteString(query, ds.Tables[0]); - - if (json != null && json.Length > 0) - { - context.Response.ContentType = "text/plain"; - context.Response.Write(json); - } - else - { - context.Response.ContentType = "text/plain"; - context.Response.Write(""); - - } - } - - public bool IsReusable - { - get - { - return false; - } - } - } -} \ No newline at end of file diff --git a/WebGoat/WebGoatCoins/Catalog.aspx b/WebGoat/WebGoatCoins/Catalog.aspx deleted file mode 100644 index 6a1005934..000000000 --- a/WebGoat/WebGoatCoins/Catalog.aspx +++ /dev/null @@ -1,14 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="Catalog.aspx.cs" Inherits="OWASP.WebGoat.NET.WebGoatCoins.Catalog" %> - - - - - -

    Product Catalog

    -
    - - A full listing of all our current offerings. Click on "More Info" to see the details for that item! - -
    - -
    diff --git a/WebGoat/WebGoatCoins/Catalog.aspx.cs b/WebGoat/WebGoatCoins/Catalog.aspx.cs deleted file mode 100644 index 1b0ecfe41..000000000 --- a/WebGoat/WebGoatCoins/Catalog.aspx.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Data; -using OWASP.WebGoat.NET.App_Code.DB; -using OWASP.WebGoat.NET.App_Code; - -namespace OWASP.WebGoat.NET.WebGoatCoins -{ - public partial class Catalog : System.Web.UI.Page - { - private IDbProvider du = Settings.CurrentDbProvider; - - protected void Page_Load(object sender, EventArgs e) - { - DataSet ds = du.GetProductsAndCategories(); - - foreach (DataRow catRow in ds.Tables["categories"].Rows) - { - lblOutput.Text += "

    Category: " + catRow["catName"].ToString() + "


    \n"; - foreach (DataRow prodRow in catRow.GetChildRows("cat_prods")) - { - lblOutput.Text += "

    \n"; - lblOutput.Text += "
    \n"; - lblOutput.Text += "" + prodRow[1] + "
    \n"; - lblOutput.Text += "
    \n"; - lblOutput.Text += "\n"; - lblOutput.Text += "
    \n"; - lblOutput.Text += "
    \n"; - } - } - - - /* - foreach(DataRow row in ds.Tables["products"].Rows) - { - lblOutput.Text += row[1] + "
    "; - lblOutput.Text += "
    "; - - } - */ - /* - foreach (DataRow custRow in customerOrders.Tables["Customers"].Rows) - { - Console.WriteLine(custRow["CustomerID"].ToString()); - foreach (DataRow orderRow in custRow.GetChildRows(customerOrdersRelation)) - { - Console.WriteLine(orderRow["OrderID"].ToString()); - } - } - */ - } - } -} \ No newline at end of file diff --git a/WebGoat/WebGoatCoins/Catalog.aspx.designer.cs b/WebGoat/WebGoatCoins/Catalog.aspx.designer.cs deleted file mode 100644 index 4b8370c2d..000000000 --- a/WebGoat/WebGoatCoins/Catalog.aspx.designer.cs +++ /dev/null @@ -1,26 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.WebGoatCoins { - - - public partial class Catalog { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Literal labelMessage; - - protected System.Web.UI.WebControls.Label lblOutput; - } -} diff --git a/WebGoat/WebGoatCoins/ChangePassword.aspx b/WebGoat/WebGoatCoins/ChangePassword.aspx deleted file mode 100644 index dd435e6c6..000000000 --- a/WebGoat/WebGoatCoins/ChangePassword.aspx +++ /dev/null @@ -1,24 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ChangePassword.aspx.cs" Inherits="OWASP.WebGoat.NET.WebGoatCoins.ChangePassword" %> - - - - - - - -

    Change Password

    -
    - Change your password frequently to ensure your account is secure! -
    -

    - -
    - -
    -
    - -

    - -

    - -
    diff --git a/WebGoat/WebGoatCoins/ChangePassword.aspx.cs b/WebGoat/WebGoatCoins/ChangePassword.aspx.cs deleted file mode 100644 index 67a239c2b..000000000 --- a/WebGoat/WebGoatCoins/ChangePassword.aspx.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using OWASP.WebGoat.NET.App_Code.DB; -using OWASP.WebGoat.NET.App_Code; - -namespace OWASP.WebGoat.NET.WebGoatCoins -{ - public partial class ChangePassword : System.Web.UI.Page - { - private IDbProvider du = Settings.CurrentDbProvider; - - protected void Page_Load(object sender, EventArgs e) - { - - } - - protected void ButtonChangePassword_Click(object sender, EventArgs e) - { - if(txtPassword1.Text != null && txtPassword2.Text != null && txtPassword1.Text == txtPassword2.Text) - { - //get customer ID - string customerNumber = ""; - if (Request.Cookies["customerNumber"] != null) - { - customerNumber = Request.Cookies["customerNumber"].Value; - } - - string output = du.UpdateCustomerPassword(int.Parse(customerNumber), txtPassword1.Text); - labelMessage.Text = output; - } - else - { - labelMessage.Text = "Passwords do not match! Please try again!"; - } - - } - } -} \ No newline at end of file diff --git a/WebGoat/WebGoatCoins/ChangePassword.aspx.designer.cs b/WebGoat/WebGoatCoins/ChangePassword.aspx.designer.cs deleted file mode 100644 index 70ddd1d39..000000000 --- a/WebGoat/WebGoatCoins/ChangePassword.aspx.designer.cs +++ /dev/null @@ -1,30 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.WebGoatCoins { - - - public partial class ChangePassword { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Literal labelMessage; - - protected System.Web.UI.WebControls.TextBox txtPassword1; - - protected System.Web.UI.WebControls.TextBox txtPassword2; - - protected System.Web.UI.WebControls.Button ButtonChangePassword; - } -} diff --git a/WebGoat/WebGoatCoins/CustomerLogin.aspx b/WebGoat/WebGoatCoins/CustomerLogin.aspx deleted file mode 100644 index f63583348..000000000 --- a/WebGoat/WebGoatCoins/CustomerLogin.aspx +++ /dev/null @@ -1,45 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="CustomerLogin.aspx.cs" Inherits="OWASP.WebGoat.NET.WebGoatCoins.CustomerLogin" %> - - - - - - - - -

    WebGoat Coins Customer Login

    - -
    - Hello! Please log in to view your private customer data -
    - - -
    - Your are not logged in. Please authenticate before proceeding. -
    -
    - - -

    -

    - -
    - -
    -
    - -

    -

    -
    -
    -

    -

    - -

    -
    diff --git a/WebGoat/WebGoatCoins/CustomerLogin.aspx.cs b/WebGoat/WebGoatCoins/CustomerLogin.aspx.cs deleted file mode 100644 index a99845e63..000000000 --- a/WebGoat/WebGoatCoins/CustomerLogin.aspx.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System; -using System.Web.Security; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using OWASP.WebGoat.NET.App_Code.DB; -using OWASP.WebGoat.NET.App_Code; -using log4net; -using System.Reflection; - -namespace OWASP.WebGoat.NET.WebGoatCoins -{ - public partial class CustomerLogin : System.Web.UI.Page - { - private IDbProvider du = Settings.CurrentDbProvider; - ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - protected void Page_Load(object sender, EventArgs e) - { - PanelError.Visible = false; - - string returnUrl = Request.QueryString["ReturnUrl"]; - if (returnUrl != null) - { - PanelError.Visible = true; - } - } - - protected void ButtonLogOn_Click(object sender, EventArgs e) - { - string email = txtUserName.Text; - string pwd = txtPassword.Text; - - log.Info("User " + email + " attempted to log in with password " + pwd); - - if (!du.IsValidCustomerLogin(email, pwd)) - { - labelError.Text = "Incorrect username/password"; - PanelError.Visible = true; - return; - } - // put ticket into the cookie - FormsAuthenticationTicket ticket = - new FormsAuthenticationTicket( - 1, //version - email, //name - DateTime.Now, //issueDate - DateTime.Now.AddDays(14), //expireDate - true, //isPersistent - "customer", //userData (customer role) - FormsAuthentication.FormsCookiePath //cookiePath - ); - - string encrypted_ticket = FormsAuthentication.Encrypt(ticket); //encrypt the ticket - - // put ticket into the cookie - HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted_ticket); - - //set expiration date - if (ticket.IsPersistent) - cookie.Expires = ticket.Expiration; - - Response.Cookies.Add(cookie); - - string returnUrl = Request.QueryString["ReturnUrl"]; - - if (returnUrl == null) - returnUrl = "/WebGoatCoins/MainPage.aspx"; - - Response.Redirect(returnUrl); - } - } -} \ No newline at end of file diff --git a/WebGoat/WebGoatCoins/CustomerLogin.aspx.designer.cs b/WebGoat/WebGoatCoins/CustomerLogin.aspx.designer.cs deleted file mode 100644 index 2e1b6355a..000000000 --- a/WebGoat/WebGoatCoins/CustomerLogin.aspx.designer.cs +++ /dev/null @@ -1,38 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.WebGoatCoins { - - - public partial class CustomerLogin { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.HtmlControls.HtmlGenericControl divNotice; - - protected System.Web.UI.WebControls.Literal labelMessage; - - protected System.Web.UI.WebControls.Panel PanelError; - - protected System.Web.UI.WebControls.Literal labelError; - - protected System.Web.UI.WebControls.TextBox txtUserName; - - protected System.Web.UI.WebControls.TextBox txtPassword; - - protected System.Web.UI.HtmlControls.HtmlInputCheckBox checkBoxRemember; - - protected System.Web.UI.WebControls.Button buttonLogOn; - } -} diff --git a/WebGoat/WebGoatCoins/CustomerSettings.aspx b/WebGoat/WebGoatCoins/CustomerSettings.aspx deleted file mode 100644 index 91afd139c..000000000 --- a/WebGoat/WebGoatCoins/CustomerSettings.aspx +++ /dev/null @@ -1,8 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="CustomerSettings.aspx.cs" Inherits="OWASP.WebGoat.NET.WebGoatCoins.CustomerSettings" %> - - - - - -

    Customer Settings

    -
    diff --git a/WebGoat/WebGoatCoins/CustomerSettings.aspx.cs b/WebGoat/WebGoatCoins/CustomerSettings.aspx.cs deleted file mode 100644 index fd79576d1..000000000 --- a/WebGoat/WebGoatCoins/CustomerSettings.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET.WebGoatCoins -{ - public partial class CustomerSettings : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/WebGoatCoins/CustomerSettings.aspx.designer.cs b/WebGoat/WebGoatCoins/CustomerSettings.aspx.designer.cs deleted file mode 100644 index b93d5a8d0..000000000 --- a/WebGoat/WebGoatCoins/CustomerSettings.aspx.designer.cs +++ /dev/null @@ -1,22 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.WebGoatCoins { - - - public partial class CustomerSettings { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Content Content3; - } -} diff --git a/WebGoat/WebGoatCoins/Debug.aspx b/WebGoat/WebGoatCoins/Debug.aspx deleted file mode 100644 index b68563e1a..000000000 --- a/WebGoat/WebGoatCoins/Debug.aspx +++ /dev/null @@ -1,7 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="Debug.aspx.cs" Inherits="OWASP.WebGoat.NET.WebGoatCoins.Debug" %> - - - - - - diff --git a/WebGoat/WebGoatCoins/Debug.aspx.cs b/WebGoat/WebGoatCoins/Debug.aspx.cs deleted file mode 100644 index b9318caca..000000000 --- a/WebGoat/WebGoatCoins/Debug.aspx.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET.WebGoatCoins -{ - public partial class Debug : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - } -} \ No newline at end of file diff --git a/WebGoat/WebGoatCoins/Debug.aspx.designer.cs b/WebGoat/WebGoatCoins/Debug.aspx.designer.cs deleted file mode 100644 index e5f5ed41f..000000000 --- a/WebGoat/WebGoatCoins/Debug.aspx.designer.cs +++ /dev/null @@ -1,22 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.WebGoatCoins { - - - public partial class Debug { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Content Content3; - } -} diff --git a/WebGoat/WebGoatCoins/ForgotPassword.aspx b/WebGoat/WebGoatCoins/ForgotPassword.aspx deleted file mode 100644 index 90386fd04..000000000 --- a/WebGoat/WebGoatCoins/ForgotPassword.aspx +++ /dev/null @@ -1,68 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ForgotPassword.aspx.cs" Inherits="OWASP.WebGoat.NET.WebGoatCoins.ForgotPassword" %> - - - - - - - - - -

    Forgot Password

    - - - - -
    - Forgot your password huh? No problem, we've got you covered. Enter your email address to get started -
    - -

    - -

    - -
    - -
    - -

    - -
    - - - -
    - -
    -

    - -

    - -
    - -
    - -

    - -
    - - -

    -

    - -
    - -
    - - - - -
    diff --git a/WebGoat/WebGoatCoins/ForgotPassword.aspx.cs b/WebGoat/WebGoatCoins/ForgotPassword.aspx.cs deleted file mode 100644 index e46976d2b..000000000 --- a/WebGoat/WebGoatCoins/ForgotPassword.aspx.cs +++ /dev/null @@ -1,88 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using OWASP.WebGoat.NET.App_Code; -using OWASP.WebGoat.NET.App_Code.DB; - -namespace OWASP.WebGoat.NET.WebGoatCoins -{ - public partial class ForgotPassword : System.Web.UI.Page - { - - private IDbProvider du = Settings.CurrentDbProvider; - - protected void Page_Load(object sender, EventArgs e) - { - if (!Page.IsPostBack) - { - PanelForgotPasswordStep2.Visible = false; - PanelForgotPasswordStep3.Visible = false; - } - } - - protected void ButtonCheckEmail_Click(object sender, EventArgs e) - { - string[] result = du.GetSecurityQuestionAndAnswer(txtEmail.Text); - - if (string.IsNullOrEmpty(result[0])) - { - labelQuestion.Text = "That email address was not found in our database!"; - PanelForgotPasswordStep2.Visible = false; - PanelForgotPasswordStep3.Visible = false; - - return; - } - labelQuestion.Text = "Here is the question we have on file for you: " + result[0] + ""; - PanelForgotPasswordStep2.Visible = true; - PanelForgotPasswordStep3.Visible = false; - - - HttpCookie cookie = new HttpCookie("encr_sec_qu_ans"); - - //encode twice for more security! - - cookie.Value = Encoder.Encode(Encoder.Encode(result[1])); - - Response.Cookies.Add(cookie); - } - - protected void ButtonRecoverPassword_Click(object sender, EventArgs e) - { - try - { - //get the security question answer from the cookie - string encrypted_password = Request.Cookies["encr_sec_qu_ans"].Value.ToString(); - - //decode it (twice for extra security!) - string security_answer = Encoder.Decode(Encoder.Decode(encrypted_password)); - - if (security_answer.Trim().ToLower().Equals(txtAnswer.Text.Trim().ToLower())) - { - PanelForgotPasswordStep1.Visible = false; - PanelForgotPasswordStep2.Visible = false; - PanelForgotPasswordStep3.Visible = true; - labelPassword.Text = "Security Question Challenge Successfully Completed!
    Your password is: " + getPassword(txtEmail.Text); - } - } - catch (Exception ex) - { - labelMessage.Text = "An unknown error occurred - Do you have cookies turned on? Further Details: " + ex.Message; - } - } - - protected void ButtonGoToCustomerLogin_Click(object sender, EventArgs e) - { - Response.Redirect("CustomerLogin.aspx"); - } - - string getPassword(string email) - { - string password = du.GetPasswordByEmail(email); - return password; - } - - } -} \ No newline at end of file diff --git a/WebGoat/WebGoatCoins/ForgotPassword.aspx.designer.cs b/WebGoat/WebGoatCoins/ForgotPassword.aspx.designer.cs deleted file mode 100644 index 1b24e4b84..000000000 --- a/WebGoat/WebGoatCoins/ForgotPassword.aspx.designer.cs +++ /dev/null @@ -1,44 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.WebGoatCoins { - - - public partial class ForgotPassword { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Panel PanelForgotPasswordStep1; - - protected System.Web.UI.WebControls.Literal labelMessage; - - protected System.Web.UI.WebControls.TextBox txtEmail; - - protected System.Web.UI.WebControls.Button ButtonCheckEmail; - - protected System.Web.UI.WebControls.Panel PanelForgotPasswordStep2; - - protected System.Web.UI.WebControls.Literal labelQuestion; - - protected System.Web.UI.WebControls.TextBox txtAnswer; - - protected System.Web.UI.WebControls.Button ButtonCheckAnswer; - - protected System.Web.UI.WebControls.Panel PanelForgotPasswordStep3; - - protected System.Web.UI.WebControls.Literal labelPassword; - - protected System.Web.UI.WebControls.Button ButtonCustomerLogin; - } -} diff --git a/WebGoat/WebGoatCoins/Logout.aspx b/WebGoat/WebGoatCoins/Logout.aspx deleted file mode 100644 index 32b51418d..000000000 --- a/WebGoat/WebGoatCoins/Logout.aspx +++ /dev/null @@ -1,14 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="Logout.aspx.cs" Inherits="OWASP.WebGoat.NET.WebGoatCoins.Logout" %> - - - - - -

    Customer Logout

    -

    - Are you sure you want to log out? -

    - - - -
    diff --git a/WebGoat/WebGoatCoins/Logout.aspx.cs b/WebGoat/WebGoatCoins/Logout.aspx.cs deleted file mode 100644 index 33d0cc523..000000000 --- a/WebGoat/WebGoatCoins/Logout.aspx.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.Security; -using System.Web.UI; -using System.Web.UI.WebControls; - -namespace OWASP.WebGoat.NET.WebGoatCoins -{ - public partial class Logout : System.Web.UI.Page - { - protected void Page_Load(object sender, EventArgs e) - { - - } - - protected void btnLogout_Click(object sender, EventArgs e) - { - FormsAuthentication.SignOut(); - Response.Redirect("/Default.aspx"); - } - } -} \ No newline at end of file diff --git a/WebGoat/WebGoatCoins/Logout.aspx.designer.cs b/WebGoat/WebGoatCoins/Logout.aspx.designer.cs deleted file mode 100644 index 872023635..000000000 --- a/WebGoat/WebGoatCoins/Logout.aspx.designer.cs +++ /dev/null @@ -1,24 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.WebGoatCoins { - - - public partial class Logout { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Button btnLogout; - } -} diff --git a/WebGoat/WebGoatCoins/MainPage.aspx b/WebGoat/WebGoatCoins/MainPage.aspx deleted file mode 100644 index 73a45391a..000000000 --- a/WebGoat/WebGoatCoins/MainPage.aspx +++ /dev/null @@ -1,96 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="MainPage.aspx.cs" Inherits="OWASP.WebGoat.NET.MainPage" %> - - - Try uploading content that will run on the server, such as an .aspx file! -
    - For Example: -
    -
    -    <%
    -     lblTest.Text = "Hello, world!";
    -    %>
    -
    -    <html xmlns="http://www.w3.org/1999/xhtml" >
    -     <head runat="server">
    -     </head>
    -     <body>
    -      <form id="form1" runat="server">
    -       <asp:Label runat="server" id="lblTest">
    -       </asp:Label>
    -      </form>
    -     </body>
    -    </html>
    -    
    - - -
    - - - - - - -

    Welcome to the WebGoat Coins Customer Portal!

    - - -
    - - Welcome back! This portal allows you to change your password, view your orders, view the entire catalog, write reviews for products and much more! - -
    - -
    -

    - Welcome Back... -

    - -

     

    -
    - - -
    - File Successfully Uploaded! -
    -
    - -

    Your Customer Data

    - - - - -
    - -
    - -
    Upload us your order (PDF, Excel or Plain Text)... -
    - -

     

    - - -
    - -
    \ No newline at end of file diff --git a/WebGoat/WebGoatCoins/MainPage.aspx.cs b/WebGoat/WebGoatCoins/MainPage.aspx.cs deleted file mode 100644 index b260975d2..000000000 --- a/WebGoat/WebGoatCoins/MainPage.aspx.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; -using System.Web; -using System.Data; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.IO; -using OWASP.WebGoat.NET.App_Code.DB; -using OWASP.WebGoat.NET.App_Code; - -namespace OWASP.WebGoat.NET -{ - public partial class MainPage : System.Web.UI.Page - { - //TODO: Add "welcome back " + name; - //TODO: pending orders? - //TODO: Add "WebGoat Coins Info Center" - //TODO: Take out monthly special, add "hear what our customers are saying" - with the latest comments. Add date field to comments?? - - - private IDbProvider du = Settings.CurrentDbProvider; - - protected void Page_Load(object sender, EventArgs e) - { - labelUpload.Visible = false; - if (Request.Cookies["customerNumber"] != null) - { - string customerNumber = Request.Cookies["customerNumber"].Value; - - DataSet ds = du.GetCustomerDetails(customerNumber); - DataRow row = ds.Tables[0].Rows[0]; //customer row - - Image1.ImageUrl = "images/logos/" + row["logoFileName"]; - - foreach (DataColumn col in ds.Tables[0].Columns) - { - TableRow tablerow = new TableRow(); - tablerow.ID = col.ColumnName.ToString(); - - TableCell cell1 = new TableCell(); - TableCell cell2 = new TableCell(); - cell1.Text = col.ColumnName.ToString(); - cell2.Text = row[col].ToString(); - - tablerow.Cells.Add(cell1); - tablerow.Cells.Add(cell2); - - CustomerTable.Rows.Add(tablerow); - } - } - } - - protected void btnUpload_Click(object sender, EventArgs e) - { - if (FileUpload1.HasFile) - { - try - { - string filename = Path.GetFileName(FileUpload1.FileName); - FileUpload1.SaveAs(Server.MapPath("~/WebGoatCoins/uploads/") + filename); - - } - catch (Exception ex) - { - labelUpload.Text = "Upload Failed: " + ex.Message; - } - finally - { - labelUpload.Visible = true; - } - } - } - } -} - diff --git a/WebGoat/WebGoatCoins/MainPage.aspx.designer.cs b/WebGoat/WebGoatCoins/MainPage.aspx.designer.cs deleted file mode 100644 index 77bd06a6f..000000000 --- a/WebGoat/WebGoatCoins/MainPage.aspx.designer.cs +++ /dev/null @@ -1,36 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class MainPage { - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Label labelOutput; - - protected System.Web.UI.WebControls.Literal labelMessage; - - protected System.Web.UI.WebControls.Literal labelWelcome; - - protected System.Web.UI.WebControls.Image Image1; - - protected System.Web.UI.WebControls.Label labelUpload; - - protected System.Web.UI.WebControls.Table CustomerTable; - - protected System.Web.UI.WebControls.FileUpload FileUpload1; - - protected System.Web.UI.WebControls.Button btnUpload; - } -} diff --git a/WebGoat/WebGoatCoins/Orders.aspx b/WebGoat/WebGoatCoins/Orders.aspx deleted file mode 100644 index a504b4c5c..000000000 --- a/WebGoat/WebGoatCoins/Orders.aspx +++ /dev/null @@ -1,67 +0,0 @@ -<%@ Page Title="" Language="C#" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="Orders.aspx.cs" Inherits="OWASP.WebGoat.NET.WebGoatCoins.Orders" %> - - - - - -

    WebGoat Coins Customer Orders

    - -
    - - Here is a listing of all the orders associated with your account. Questions? Call us anytime! - -
    - - - - - - - - - - - - - - - -
    - - Here are the details for that order! - -
    - -
    - - -
    - - Failure... - -
    - -
    - - - - - - - - - - - - - - - - - - -
    diff --git a/WebGoat/WebGoatCoins/Orders.aspx.cs b/WebGoat/WebGoatCoins/Orders.aspx.cs deleted file mode 100644 index 1eafa617d..000000000 --- a/WebGoat/WebGoatCoins/Orders.aspx.cs +++ /dev/null @@ -1,121 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Data; -using System.IO; -using System.Collections.Specialized; -using OWASP.WebGoat.NET.App_Code.DB; -using OWASP.WebGoat.NET.App_Code; - -namespace OWASP.WebGoat.NET.WebGoatCoins -{ - public partial class Orders : System.Web.UI.Page - { - - private IDbProvider du = Settings.CurrentDbProvider; - - protected void Page_Load(object sender, EventArgs e) - { - int id; - DataSet ds; - if (Request.Cookies["customerNumber"] == null || !int.TryParse(Request.Cookies["customerNumber"].Value.ToString(), out id)) - lblOutput.Text = "Sorry, an unspecified problem regarding your Customer ID has occurred. Are your cookies enabled?"; - else - { - ds = du.GetOrders(id); - - if (!Page.IsPostBack) //generate the data grid - { - GridView1.DataSource = ds.Tables[0]; - - GridView1.AutoGenerateColumns = false; - - BoundField BoundFieldOrderNumber = new BoundField(); - BoundField BoundFieldStatus = new BoundField(); - BoundField BoundFieldRequiredDate = new BoundField(); - BoundField BoundFieldShippedDate = new BoundField(); - - BoundFieldOrderNumber.DataField = "orderNumber"; - BoundFieldStatus.DataField = "status"; - BoundFieldRequiredDate.DataField = "requiredDate"; - BoundFieldShippedDate.DataField = "shippedDate"; - - BoundFieldOrderNumber.HeaderText = "Order Number"; - BoundFieldStatus.HeaderText = "Status"; - BoundFieldRequiredDate.HeaderText = "Required Date"; - BoundFieldShippedDate.HeaderText = "Shipped Date"; - - BoundFieldRequiredDate.DataFormatString = "{0:MM/dd/yyyy}"; - BoundFieldShippedDate.DataFormatString = "{0:MM/dd/yyyy}"; - - GridView1.Columns.Add(BoundFieldOrderNumber); - GridView1.Columns.Add(BoundFieldStatus); - GridView1.Columns.Add(BoundFieldRequiredDate); - GridView1.Columns.Add(BoundFieldShippedDate); - - GridView1.DataBind(); - } - //check if orderNumber exists - string orderNumber = Request["orderNumber"]; - if (orderNumber != null) - { - try - { - //lblOutput.Text = orderNumber; - DataSet dsOrderDetails = du.GetOrderDetails(int.Parse(orderNumber)); - DetailsView1.DataSource = dsOrderDetails.Tables[0]; - DetailsView1.DataBind(); - //litOrderDetails.Visible = true; - PanelShowDetailSuccess.Visible = true; - - //allow customer to download image of their product - string image = dsOrderDetails.Tables[0].Rows[0]["productImage"].ToString(); - HyperLink1.Text = "Download Product Image"; - HyperLink1.NavigateUrl = Request.RawUrl + "&image=images/products/" + image; - } - catch (Exception ex) - { - //litOrderDetails.Text = "Error finding order number " + orderNumber + ". Details: " + ex.Message; - PanelShowDetailFailure.Visible = true; - litErrorDetailMessage.Text = "Error finding order number " + orderNumber + ". Details: " + ex.Message; - } - } - - //check if they are trying to download the image - string target_image = Request["image"]; - if (target_image != null) - { - FileInfo fi = new FileInfo(Server.MapPath(target_image)); - lblOutput.Text = fi.FullName; - - NameValueCollection imageExtensions = new NameValueCollection(); - imageExtensions.Add(".jpg", "image/jpeg"); - imageExtensions.Add(".gif", "image/gif"); - imageExtensions.Add(".png", "image/png"); - - Response.ContentType = imageExtensions.Get(fi.Extension); - Response.AppendHeader("Content-Disposition", "attachment; filename=" + fi.Name); - Response.TransmitFile(fi.FullName); - Response.End(); - } - - } - } - - protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) - { - //make the first column a hyperlink - if (e.Row.RowType == DataControlRowType.DataRow) - { - HyperLink link = new HyperLink(); - link.Text = e.Row.Cells[0].Text; - link.NavigateUrl = "Orders.aspx?orderNumber=" + link.Text; - e.Row.Cells[0].Controls.Add(link); - } - - } - } -} \ No newline at end of file diff --git a/WebGoat/WebGoatCoins/Orders.aspx.designer.cs b/WebGoat/WebGoatCoins/Orders.aspx.designer.cs deleted file mode 100644 index 34db8fe4e..000000000 --- a/WebGoat/WebGoatCoins/Orders.aspx.designer.cs +++ /dev/null @@ -1,42 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.WebGoatCoins { - - - public partial class Orders { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Literal labelMessage; - - protected System.Web.UI.WebControls.Label lblOutput; - - protected System.Web.UI.WebControls.GridView GridView1; - - protected System.Web.UI.WebControls.Panel PanelShowDetailSuccess; - - protected System.Web.UI.WebControls.Literal litSuccessDetailMessage; - - protected System.Web.UI.WebControls.Panel PanelShowDetailFailure; - - protected System.Web.UI.WebControls.Literal litErrorDetailMessage; - - protected System.Web.UI.WebControls.Panel PanelShowDetails; - - protected System.Web.UI.WebControls.DetailsView DetailsView1; - - protected System.Web.UI.WebControls.HyperLink HyperLink1; - } -} diff --git a/WebGoat/WebGoatCoins/ProductDetails.aspx b/WebGoat/WebGoatCoins/ProductDetails.aspx deleted file mode 100644 index fc0122d99..000000000 --- a/WebGoat/WebGoatCoins/ProductDetails.aspx +++ /dev/null @@ -1,88 +0,0 @@ -<%@ Page Title="" Language="C#" ValidateRequest="false" MasterPageFile="~/Resources/Master-Pages/Site.Master" AutoEventWireup="true" CodeBehind="ProductDetails.aspx.cs" Inherits="OWASP.WebGoat.NET.WebGoatCoins.ProductDetails" %> - - - - - - - - -

    Details for <%=(Request["productNumber"] == null ? "This Month's Special" : "Product #" + Request["productNumber"].ToString()) %>

    -
    - - Here are the details we have in our database for this item! - -
    - View a different item:
    - - - - -
    - -
    - - - - - -
    - Comment Successfully Added! -
    -
    - - - -

    Leave a Comment

    - - - - -

    - - - - Email: - - - - - - - - - Comment: - - - - - - - - -   - - - - - - -

    - -

    - Return to Entire Catalog -

    - - - diff --git a/WebGoat/WebGoatCoins/ProductDetails.aspx.cs b/WebGoat/WebGoatCoins/ProductDetails.aspx.cs deleted file mode 100644 index 36c236c0e..000000000 --- a/WebGoat/WebGoatCoins/ProductDetails.aspx.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Data; -using OWASP.WebGoat.NET.App_Code.DB; -using OWASP.WebGoat.NET.App_Code; - -namespace OWASP.WebGoat.NET.WebGoatCoins -{ - public partial class ProductDetails : System.Web.UI.Page - { - - private IDbProvider du = Settings.CurrentDbProvider; - - protected void Page_Load(object sender, EventArgs e) - { - lblMessage.Visible = false; - txtEmail.Enabled = true; - if (!Page.IsPostBack) - LoadComments(); - - //TODO: broken - if (!Page.IsPostBack) - { - - DataSet ds = du.GetCatalogData(); - ddlItems.DataSource = ds.Tables[0]; - ddlItems.DataTextField = "productName"; - ddlItems.DataValueField = "productCode"; - ddlItems.DataBind(); - } - } - - protected void btnSave_Click(object sender, EventArgs e) - { - try - { - string error_message = du.AddComment(hiddenFieldProductID.Value, txtEmail.Text, txtComment.Text); - txtComment.Text = error_message; - lblMessage.Visible = true; - LoadComments(); - } - catch(Exception ex) - { - lblMessage.Text = ex.Message; - lblMessage.Visible = true; - } - } - - void LoadComments() - { - string id = Request["productNumber"]; - if (id == null) id = "S18_2795"; //this month's special - DataSet ds = du.GetProductDetails(id); - string output = string.Empty; - string comments = string.Empty; - foreach (DataRow prodRow in ds.Tables["products"].Rows) - { - output += "

    "; - output += "
    "; - output += "" + prodRow["productName"].ToString() + "
    "; - output += "
    " + prodRow["productDescription"].ToString() + "
    "; - output += "
    "; - - hiddenFieldProductID.Value = prodRow["productCode"].ToString(); - - DataRow[] childrows = prodRow.GetChildRows("prod_comments"); - if (childrows.Length > 0) - comments += "

    Comments:

    "; - - foreach (DataRow commentRow in childrows) - { - comments += "Email:" + commentRow["email"] + " (Email Address Verified!)
    "; - comments += "Comment:
    " + commentRow["comment"] + "

    "; - } - - } - - lblOutput.Text = output; - lblComments.Text = comments; - - - //Fill in the email address of authenticated users - if (Request.Cookies["customerNumber"] != null) - { - string customerNumber = Request.Cookies["customerNumber"].Value; - - string email = du.GetCustomerEmail(customerNumber); - txtEmail.Text = email; - txtEmail.ReadOnly = true; - } - } - - protected void ddlItems_SelectedIndexChanged(object sender, EventArgs e) - { - Response.Redirect("ProductDetails.aspx?productNumber=" + ddlItems.SelectedItem.Value); - } - - protected void Button1_Click(object sender, EventArgs e) - { - Response.Redirect("ProductDetails.aspx?productNumber=" + ddlItems.SelectedItem.Value); - } - - } -} \ No newline at end of file diff --git a/WebGoat/WebGoatCoins/ProductDetails.aspx.designer.cs b/WebGoat/WebGoatCoins/ProductDetails.aspx.designer.cs deleted file mode 100644 index 4ab6669be..000000000 --- a/WebGoat/WebGoatCoins/ProductDetails.aspx.designer.cs +++ /dev/null @@ -1,44 +0,0 @@ -// ------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Mono Runtime Version: 4.0.30319.1 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -// ------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET.WebGoatCoins { - - - public partial class ProductDetails { - - protected System.Web.UI.WebControls.Content Content1; - - protected System.Web.UI.WebControls.Content Content2; - - protected System.Web.UI.WebControls.Content Content3; - - protected System.Web.UI.WebControls.Literal labelMessage; - - protected System.Web.UI.WebControls.DropDownList ddlItems; - - protected System.Web.UI.WebControls.Button Button1; - - protected System.Web.UI.WebControls.Label lblOutput; - - protected System.Web.UI.WebControls.Label lblMessage; - - protected System.Web.UI.WebControls.Label lblComments; - - protected System.Web.UI.WebControls.Table Table1; - - protected System.Web.UI.WebControls.TextBox txtEmail; - - protected System.Web.UI.WebControls.TextBox txtComment; - - protected System.Web.UI.WebControls.Button btnSave; - - protected System.Web.UI.WebControls.HiddenField hiddenFieldProductID; - } -} diff --git a/WebGoat/WebGoatCoins/Web.config b/WebGoat/WebGoatCoins/Web.config deleted file mode 100644 index 9b3d8b1ef..000000000 --- a/WebGoat/WebGoatCoins/Web.config +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/WebGoat/WebGoatCoins/images/logos/alphacognac.png b/WebGoat/WebGoatCoins/images/logos/alphacognac.png deleted file mode 100644 index c9242bb8b..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/alphacognac.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/americanbankinc.png b/WebGoat/WebGoatCoins/images/logos/americanbankinc.png deleted file mode 100644 index 3510c4846..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/americanbankinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/amicacoinsco.png b/WebGoat/WebGoatCoins/images/logos/amicacoinsco.png deleted file mode 100644 index 8bbe8cd5d..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/amicacoinsco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/angresellers.png b/WebGoat/WebGoatCoins/images/logos/angresellers.png deleted file mode 100644 index c8566befc..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/angresellers.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/annasdecorations.png b/WebGoat/WebGoatCoins/images/logos/annasdecorations.png deleted file mode 100644 index 1f67e62ac..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/annasdecorations.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/antondesigns.png b/WebGoat/WebGoatCoins/images/logos/antondesigns.png deleted file mode 100644 index ff6a754f3..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/antondesigns.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/asianshoppingnetwork.png b/WebGoat/WebGoatCoins/images/logos/asianshoppingnetwork.png deleted file mode 100644 index 8aa094efb..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/asianshoppingnetwork.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/asiantreasures.png b/WebGoat/WebGoatCoins/images/logos/asiantreasures.png deleted file mode 100644 index 96106956b..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/asiantreasures.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/ateliergraphique.png b/WebGoat/WebGoatCoins/images/logos/ateliergraphique.png deleted file mode 100644 index 11d5259d1..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/ateliergraphique.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/australiancollectables.png b/WebGoat/WebGoatCoins/images/logos/australiancollectables.png deleted file mode 100644 index ad1d6423c..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/australiancollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/australiancollectors.png b/WebGoat/WebGoatCoins/images/logos/australiancollectors.png deleted file mode 100644 index b21b19345..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/australiancollectors.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/australiangoldnetwork.png b/WebGoat/WebGoatCoins/images/logos/australiangoldnetwork.png deleted file mode 100644 index 163f6f6aa..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/australiangoldnetwork.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/avstores.png b/WebGoat/WebGoatCoins/images/logos/avstores.png deleted file mode 100644 index 79635a3a6..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/avstores.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/baanepreciousimports.png b/WebGoat/WebGoatCoins/images/logos/baanepreciousimports.png deleted file mode 100644 index 91cd27eb5..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/baanepreciousimports.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/bavariancollectablesimports.png b/WebGoat/WebGoatCoins/images/logos/bavariancollectablesimports.png deleted file mode 100644 index 90ae1a847..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/bavariancollectablesimports.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/bgecollectables.png b/WebGoat/WebGoatCoins/images/logos/bgecollectables.png deleted file mode 100644 index 2a8d84f0f..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/bgecollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/blauerseemetals.png b/WebGoat/WebGoatCoins/images/logos/blauerseemetals.png deleted file mode 100644 index 384ca7de6..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/blauerseemetals.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/boardscoinsco.png b/WebGoat/WebGoatCoins/images/logos/boardscoinsco.png deleted file mode 100644 index 8c880d76d..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/boardscoinsco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/cafimports.png b/WebGoat/WebGoatCoins/images/logos/cafimports.png deleted file mode 100644 index a1c5ce5b9..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/cafimports.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/cambridgecollectablesco.png b/WebGoat/WebGoatCoins/images/logos/cambridgecollectablesco.png deleted file mode 100644 index 43c758cf5..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/cambridgecollectablesco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/canadiangoldexchangenetwork.png b/WebGoat/WebGoatCoins/images/logos/canadiangoldexchangenetwork.png deleted file mode 100644 index 664514dec..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/canadiangoldexchangenetwork.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/classicgoldideas.png b/WebGoat/WebGoatCoins/images/logos/classicgoldideas.png deleted file mode 100644 index 4c83f85dd..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/classicgoldideas.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/classiclegendsinc.png b/WebGoat/WebGoatCoins/images/logos/classiclegendsinc.png deleted file mode 100644 index 6aa4f674d..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/classiclegendsinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/clovercollections.png b/WebGoat/WebGoatCoins/images/logos/clovercollections.png deleted file mode 100644 index dd62ae557..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/clovercollections.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/coinageandthingsco.png b/WebGoat/WebGoatCoins/images/logos/coinageandthingsco.png deleted file mode 100644 index f9f4d7724..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/coinageandthingsco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/coinrmintdistributorsinc.png b/WebGoat/WebGoatCoins/images/logos/coinrmintdistributorsinc.png deleted file mode 100644 index 9d83a5484..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/coinrmintdistributorsinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/coins4grownupscom.png b/WebGoat/WebGoatCoins/images/logos/coins4grownupscom.png deleted file mode 100644 index a44618d0d..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/coins4grownupscom.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/coinsoffinland.png b/WebGoat/WebGoatCoins/images/logos/coinsoffinland.png deleted file mode 100644 index d336a961c..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/coinsoffinland.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/collectablepreciousdesignsco.png b/WebGoat/WebGoatCoins/images/logos/collectablepreciousdesignsco.png deleted file mode 100644 index 7cfce4173..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/collectablepreciousdesignsco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/collectablesforlessinc.png b/WebGoat/WebGoatCoins/images/logos/collectablesforlessinc.png deleted file mode 100644 index 3dbc367bf..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/collectablesforlessinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/corporategoldideasco.png b/WebGoat/WebGoatCoins/images/logos/corporategoldideasco.png deleted file mode 100644 index 853880644..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/corporategoldideasco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/corridametalsreplicas.png b/WebGoat/WebGoatCoins/images/logos/corridametalsreplicas.png deleted file mode 100644 index ea506b7ed..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/corridametalsreplicas.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/cramerspezialitten.png b/WebGoat/WebGoatCoins/images/logos/cramerspezialitten.png deleted file mode 100644 index ed708b72c..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/cramerspezialitten.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/cruzsonsco.png b/WebGoat/WebGoatCoins/images/logos/cruzsonsco.png deleted file mode 100644 index 131985fea..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/cruzsonsco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/daedalusdesignsimports.png b/WebGoat/WebGoatCoins/images/logos/daedalusdesignsimports.png deleted file mode 100644 index 96870feae..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/daedalusdesignsimports.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/danishwholesaleimports.png b/WebGoat/WebGoatCoins/images/logos/danishwholesaleimports.png deleted file mode 100644 index e4442dd42..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/danishwholesaleimports.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/derhundimports.png b/WebGoat/WebGoatCoins/images/logos/derhundimports.png deleted file mode 100644 index db3b5c756..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/derhundimports.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/doubledeckergoldstores.png b/WebGoat/WebGoatCoins/images/logos/doubledeckergoldstores.png deleted file mode 100644 index 76dc4a744..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/doubledeckergoldstores.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/downundercoinage.png b/WebGoat/WebGoatCoins/images/logos/downundercoinage.png deleted file mode 100644 index dc31bb478..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/downundercoinage.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/dragoncoinage.png b/WebGoat/WebGoatCoins/images/logos/dragoncoinage.png deleted file mode 100644 index 1c3e3ecd3..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/dragoncoinage.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/enacodistributors.png b/WebGoat/WebGoatCoins/images/logos/enacodistributors.png deleted file mode 100644 index 8476f7a4b..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/enacodistributors.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/euroshoppingchannel.png b/WebGoat/WebGoatCoins/images/logos/euroshoppingchannel.png deleted file mode 100644 index e57d920fa..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/euroshoppingchannel.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/extremedeskdecorations.png b/WebGoat/WebGoatCoins/images/logos/extremedeskdecorations.png deleted file mode 100644 index a1ef2b651..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/extremedeskdecorations.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/feueronlinestores.png b/WebGoat/WebGoatCoins/images/logos/feueronlinestores.png deleted file mode 100644 index 36f815d6e..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/feueronlinestores.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/frankengold.png b/WebGoat/WebGoatCoins/images/logos/frankengold.png deleted file mode 100644 index 30abf282c..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/frankengold.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/fraudacollezione.png b/WebGoat/WebGoatCoins/images/logos/fraudacollezione.png deleted file mode 100644 index fef6dd529..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/fraudacollezione.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/fungoldideascom.png b/WebGoat/WebGoatCoins/images/logos/fungoldideascom.png deleted file mode 100644 index 2aabe6637..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/fungoldideascom.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/goatgoldstore.png b/WebGoat/WebGoatCoins/images/logos/goatgoldstore.png deleted file mode 100644 index 9141aa638..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/goatgoldstore.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/gold4allagescom.png b/WebGoat/WebGoatCoins/images/logos/gold4allagescom.png deleted file mode 100644 index 11231510a..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/gold4allagescom.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/goldbymailcouk.png b/WebGoat/WebGoatCoins/images/logos/goldbymailcouk.png deleted file mode 100644 index 6c72f44b1..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/goldbymailcouk.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/golddepotinc.png b/WebGoat/WebGoatCoins/images/logos/golddepotinc.png deleted file mode 100644 index b26c09161..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/golddepotinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/goldforhimcom.png b/WebGoat/WebGoatCoins/images/logos/goldforhimcom.png deleted file mode 100644 index 7365e9cef..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/goldforhimcom.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/goldideascorp.png b/WebGoat/WebGoatCoins/images/logos/goldideascorp.png deleted file mode 100644 index 1919e3fdf..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/goldideascorp.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/handjigoldco.png b/WebGoat/WebGoatCoins/images/logos/handjigoldco.png deleted file mode 100644 index 24f3ad864..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/handjigoldco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/havelzbyszekco.png b/WebGoat/WebGoatCoins/images/logos/havelzbyszekco.png deleted file mode 100644 index 5c59e27c7..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/havelzbyszekco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/heintzecollectables.png b/WebGoat/WebGoatCoins/images/logos/heintzecollectables.png deleted file mode 100644 index 8d854caf3..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/heintzecollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/herkkugold.png b/WebGoat/WebGoatCoins/images/logos/herkkugold.png deleted file mode 100644 index c4530bf9e..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/herkkugold.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/iberiagoldimports.png b/WebGoat/WebGoatCoins/images/logos/iberiagoldimports.png deleted file mode 100644 index 16e83c6b3..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/iberiagoldimports.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/kellysgoldshop.png b/WebGoat/WebGoatCoins/images/logos/kellysgoldshop.png deleted file mode 100644 index 4e4a1b993..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/kellysgoldshop.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/kingkongcollectables.png b/WebGoat/WebGoatCoins/images/logos/kingkongcollectables.png deleted file mode 100644 index 01a718f60..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/kingkongcollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/kommissionmetals.png b/WebGoat/WebGoatCoins/images/logos/kommissionmetals.png deleted file mode 100644 index 645964338..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/kommissionmetals.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/kremlincollectables.png b/WebGoat/WebGoatCoins/images/logos/kremlincollectables.png deleted file mode 100644 index 3e9d3022f..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/kremlincollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/lacornedabondance.png b/WebGoat/WebGoatCoins/images/logos/lacornedabondance.png deleted file mode 100644 index c64fb4f2b..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/lacornedabondance.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/landofcoinsinc.png b/WebGoat/WebGoatCoins/images/logos/landofcoinsinc.png deleted file mode 100644 index ff6609a0e..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/landofcoinsinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/larochellegold.png b/WebGoat/WebGoatCoins/images/logos/larochellegold.png deleted file mode 100644 index 96ad6133a..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/larochellegold.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/lisboacoinage.png b/WebGoat/WebGoatCoins/images/logos/lisboacoinage.png deleted file mode 100644 index 38e51d766..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/lisboacoinage.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/lordinecoinage.png b/WebGoat/WebGoatCoins/images/logos/lordinecoinage.png deleted file mode 100644 index 3a4dae708..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/lordinecoinage.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/lyoncoinage.png b/WebGoat/WebGoatCoins/images/logos/lyoncoinage.png deleted file mode 100644 index 8ab0a6e30..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/lyoncoinage.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/marseillepreciousmetals.png b/WebGoat/WebGoatCoins/images/logos/marseillepreciousmetals.png deleted file mode 100644 index b04384267..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/marseillepreciousmetals.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/martasreplicasco.png b/WebGoat/WebGoatCoins/images/logos/martasreplicasco.png deleted file mode 100644 index 94047a155..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/martasreplicasco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/menrusretailers.png b/WebGoat/WebGoatCoins/images/logos/menrusretailers.png deleted file mode 100644 index 9147eb0bb..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/menrusretailers.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/messnershoppingnetwork.png b/WebGoat/WebGoatCoins/images/logos/messnershoppingnetwork.png deleted file mode 100644 index a00db4f95..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/messnershoppingnetwork.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/metalsassociscie.png b/WebGoat/WebGoatCoins/images/logos/metalsassociscie.png deleted file mode 100644 index 6cbc46871..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/metalsassociscie.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/metalscanalpetit.png b/WebGoat/WebGoatCoins/images/logos/metalscanalpetit.png deleted file mode 100644 index caaff8b96..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/metalscanalpetit.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/metalscoinclassicsinc.png b/WebGoat/WebGoatCoins/images/logos/metalscoinclassicsinc.png deleted file mode 100644 index 54751589c..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/metalscoinclassicsinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/microsilverinc.png b/WebGoat/WebGoatCoins/images/logos/microsilverinc.png deleted file mode 100644 index 09d86ec27..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/microsilverinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/mitvergngenco.png b/WebGoat/WebGoatCoins/images/logos/mitvergngenco.png deleted file mode 100644 index d8f8f86d9..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/mitvergngenco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/musclecoinsinc.png b/WebGoat/WebGoatCoins/images/logos/musclecoinsinc.png deleted file mode 100644 index cb5f542de..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/musclecoinsinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/natrlichmetals.png b/WebGoat/WebGoatCoins/images/logos/natrlichmetals.png deleted file mode 100644 index 1de1bb46e..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/natrlichmetals.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/norwaygoldbymail.png b/WebGoat/WebGoatCoins/images/logos/norwaygoldbymail.png deleted file mode 100644 index d993d1d7c..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/norwaygoldbymail.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/onlinepreciouscollectables.png b/WebGoat/WebGoatCoins/images/logos/onlinepreciouscollectables.png deleted file mode 100644 index 556960a66..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/onlinepreciouscollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/onlinepremiumcreationsco.png b/WebGoat/WebGoatCoins/images/logos/onlinepremiumcreationsco.png deleted file mode 100644 index 14d880e7d..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/onlinepremiumcreationsco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/osakacoinageco.png b/WebGoat/WebGoatCoins/images/logos/osakacoinageco.png deleted file mode 100644 index 7726e3c66..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/osakacoinageco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/oulutoysupplies.png b/WebGoat/WebGoatCoins/images/logos/oulutoysupplies.png deleted file mode 100644 index bc0f06bda..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/oulutoysupplies.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/petitmetals.png b/WebGoat/WebGoatCoins/images/logos/petitmetals.png deleted file mode 100644 index d909a1936..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/petitmetals.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/portoimportsco.png b/WebGoat/WebGoatCoins/images/logos/portoimportsco.png deleted file mode 100644 index 4a6c60e93..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/portoimportsco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/preciouscaravy.png b/WebGoat/WebGoatCoins/images/logos/preciouscaravy.png deleted file mode 100644 index cf56a98a7..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/preciouscaravy.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/preciousclassics.png b/WebGoat/WebGoatCoins/images/logos/preciousclassics.png deleted file mode 100644 index c3c32b114..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/preciousclassics.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/preciouscollectables.png b/WebGoat/WebGoatCoins/images/logos/preciouscollectables.png deleted file mode 100644 index 6977fed25..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/preciouscollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/preciouscreationsltd.png b/WebGoat/WebGoatCoins/images/logos/preciouscreationsltd.png deleted file mode 100644 index 39739cd22..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/preciouscreationsltd.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/preciousgolddistributorsltd.png b/WebGoat/WebGoatCoins/images/logos/preciousgolddistributorsltd.png deleted file mode 100644 index 41e7f0738..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/preciousgolddistributorsltd.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/preciousmetalsco.png b/WebGoat/WebGoatCoins/images/logos/preciousmetalsco.png deleted file mode 100644 index 341154cbd..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/preciousmetalsco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/preciousmetalswerke.png b/WebGoat/WebGoatCoins/images/logos/preciousmetalswerke.png deleted file mode 100644 index 6167608cb..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/preciousmetalswerke.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/premiumclassicsinc.png b/WebGoat/WebGoatCoins/images/logos/premiumclassicsinc.png deleted file mode 100644 index 74c981a2f..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/premiumclassicsinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/premiumcollectables.png b/WebGoat/WebGoatCoins/images/logos/premiumcollectables.png deleted file mode 100644 index 9332d58be..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/premiumcollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/qubechomeshoppingnetwork.png b/WebGoat/WebGoatCoins/images/logos/qubechomeshoppingnetwork.png deleted file mode 100644 index 4ebe00b01..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/qubechomeshoppingnetwork.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/raananstores.png b/WebGoat/WebGoatCoins/images/logos/raananstores.png deleted file mode 100644 index 8e0f0423f..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/raananstores.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/reimscollectables.png b/WebGoat/WebGoatCoins/images/logos/reimscollectables.png deleted file mode 100644 index 7bbb049a1..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/reimscollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/rovelligold.png b/WebGoat/WebGoatCoins/images/logos/rovelligold.png deleted file mode 100644 index 484f454ae..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/rovelligold.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/royalcanadiancollectables.png b/WebGoat/WebGoatCoins/images/logos/royalcanadiancollectables.png deleted file mode 100644 index efa928ff8..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/royalcanadiancollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/royalebelge.png b/WebGoat/WebGoatCoins/images/logos/royalebelge.png deleted file mode 100644 index 5b38c80cc..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/royalebelge.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/salzburgcollectables.png b/WebGoat/WebGoatCoins/images/logos/salzburgcollectables.png deleted file mode 100644 index 5309262e4..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/salzburgcollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/sardistributors.png b/WebGoat/WebGoatCoins/images/logos/sardistributors.png deleted file mode 100644 index 69d7a2dee..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/sardistributors.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/saveleyhenriot.png b/WebGoat/WebGoatCoins/images/logos/saveleyhenriot.png deleted file mode 100644 index 346265293..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/saveleyhenriot.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/scandinaviangoldideas.png b/WebGoat/WebGoatCoins/images/logos/scandinaviangoldideas.png deleted file mode 100644 index 8324f0056..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/scandinaviangoldideas.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/schuylerimports.png b/WebGoat/WebGoatCoins/images/logos/schuylerimports.png deleted file mode 100644 index 2d4c98d59..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/schuylerimports.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/signalcollectiblesltd.png b/WebGoat/WebGoatCoins/images/logos/signalcollectiblesltd.png deleted file mode 100644 index 4f5e29554..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/signalcollectiblesltd.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/stuttgartcollectableexchange.png b/WebGoat/WebGoatCoins/images/logos/stuttgartcollectableexchange.png deleted file mode 100644 index 5dae46d76..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/stuttgartcollectableexchange.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/stylishdeskdecors.png b/WebGoat/WebGoatCoins/images/logos/stylishdeskdecors.png deleted file mode 100644 index 7a6b6df3e..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/stylishdeskdecors.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/suominencoinage.png b/WebGoat/WebGoatCoins/images/logos/suominencoinage.png deleted file mode 100644 index 6a0173e88..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/suominencoinage.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/supersilverinc.png b/WebGoat/WebGoatCoins/images/logos/supersilverinc.png deleted file mode 100644 index 51582a6c3..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/supersilverinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/technicsstoresinc.png b/WebGoat/WebGoatCoins/images/logos/technicsstoresinc.png deleted file mode 100644 index d4e630eb6..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/technicsstoresinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/teknicollectablesinc.png b/WebGoat/WebGoatCoins/images/logos/teknicollectablesinc.png deleted file mode 100644 index 2eb9c7cb1..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/teknicollectablesinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/thesharpgoldwarehouse.png b/WebGoat/WebGoatCoins/images/logos/thesharpgoldwarehouse.png deleted file mode 100644 index 1679843c9..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/thesharpgoldwarehouse.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/tokyocollectables.png b/WebGoat/WebGoatCoins/images/logos/tokyocollectables.png deleted file mode 100644 index fe7497a91..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/tokyocollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/tomsspezialitten.png b/WebGoat/WebGoatCoins/images/logos/tomsspezialitten.png deleted file mode 100644 index adb93b41a..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/tomsspezialitten.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/ukcollectables.png b/WebGoat/WebGoatCoins/images/logos/ukcollectables.png deleted file mode 100644 index be7e23a2d..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/ukcollectables.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/vidasport.png b/WebGoat/WebGoatCoins/images/logos/vidasport.png deleted file mode 100644 index 210888588..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/vidasport.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/vitachromeinc.png b/WebGoat/WebGoatCoins/images/logos/vitachromeinc.png deleted file mode 100644 index d3d4c5c85..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/vitachromeinc.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/volvomodelreplicas.png b/WebGoat/WebGoatCoins/images/logos/volvomodelreplicas.png deleted file mode 100644 index 1194beab6..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/volvomodelreplicas.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/warburgexchange.png b/WebGoat/WebGoatCoins/images/logos/warburgexchange.png deleted file mode 100644 index 7025367a9..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/warburgexchange.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/logos/westcoastcollectablesco.png b/WebGoat/WebGoatCoins/images/logos/westcoastcollectablesco.png deleted file mode 100644 index 95756a56e..000000000 Binary files a/WebGoat/WebGoatCoins/images/logos/westcoastcollectablesco.png and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/07AEPltProofRevThumb.jpg b/WebGoat/WebGoatCoins/images/products/07AEPltProofRevThumb.jpg deleted file mode 100644 index 378e294d0..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/07AEPltProofRevThumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2008_AESilverProof_thumb.jpg b/WebGoat/WebGoatCoins/images/products/2008_AESilverProof_thumb.jpg deleted file mode 100644 index 014881d8d..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2008_AESilverProof_thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2008_AE_Plat_Bullion_Thumb.jpg b/WebGoat/WebGoatCoins/images/products/2008_AE_Plat_Bullion_Thumb.jpg deleted file mode 100644 index 534373482..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2008_AE_Plat_Bullion_Thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2009WHHarrisonObvthumb.jpg b/WebGoat/WebGoatCoins/images/products/2009WHHarrisonObvthumb.jpg deleted file mode 100644 index 5a1981a6d..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2009WHHarrisonObvthumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2010MFillmore_thumb.jpg b/WebGoat/WebGoatCoins/images/products/2010MFillmore_thumb.jpg deleted file mode 100644 index b06dc5db7..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2010MFillmore_thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2010_AEGoldProof_thumb.jpg b/WebGoat/WebGoatCoins/images/products/2010_AEGoldProof_thumb.jpg deleted file mode 100644 index cd6a76dbb..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2010_AEGoldProof_thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2011-Gold-Eagle-unc-thumb.jpg b/WebGoat/WebGoatCoins/images/products/2011-Gold-Eagle-unc-thumb.jpg deleted file mode 100644 index 3ef155889..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2011-Gold-Eagle-unc-thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2011-SilverEagle-unc-thumb.jpg b/WebGoat/WebGoatCoins/images/products/2011-SilverEagle-unc-thumb.jpg deleted file mode 100644 index e1cef5ad9..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2011-SilverEagle-unc-thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2011-Unc-Gettysburg_thumb.jpg b/WebGoat/WebGoatCoins/images/products/2011-Unc-Gettysburg_thumb.jpg deleted file mode 100644 index 266342f78..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2011-Unc-Gettysburg_thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2011AJohnson_thumb.jpg b/WebGoat/WebGoatCoins/images/products/2011AJohnson_thumb.jpg deleted file mode 100644 index 603a46b88..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2011AJohnson_thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2011_AE_PlatProof_thumb.jpg b/WebGoat/WebGoatCoins/images/products/2011_AE_PlatProof_thumb.jpg deleted file mode 100644 index 4229c4716..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2011_AE_PlatProof_thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2012-ATB-El-Yunque_thumb.jpg b/WebGoat/WebGoatCoins/images/products/2012-ATB-El-Yunque_thumb.jpg deleted file mode 100644 index 426a15754..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2012-ATB-El-Yunque_thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2012-Gold-Eagle-bullion-thumb.jpg b/WebGoat/WebGoatCoins/images/products/2012-Gold-Eagle-bullion-thumb.jpg deleted file mode 100644 index 7bc9d4e6b..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2012-Gold-Eagle-bullion-thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2012-Natl-Infantry-Commem-thumb.jpg b/WebGoat/WebGoatCoins/images/products/2012-Natl-Infantry-Commem-thumb.jpg deleted file mode 100644 index bcf3552ae..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2012-Natl-Infantry-Commem-thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2012-Proof-HalfDollar-thumb.jpg b/WebGoat/WebGoatCoins/images/products/2012-Proof-HalfDollar-thumb.jpg deleted file mode 100644 index 387c3e21b..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2012-Proof-HalfDollar-thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2012-Proof-Nickel-thumb.jpg b/WebGoat/WebGoatCoins/images/products/2012-Proof-Nickel-thumb.jpg deleted file mode 100644 index b503ca8cf..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2012-Proof-Nickel-thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/2012-SilverEagle-bullion-thumb.jpg b/WebGoat/WebGoatCoins/images/products/2012-SilverEagle-bullion-thumb.jpg deleted file mode 100644 index a2347011c..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/2012-SilverEagle-bullion-thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/21_Arthur_Pre1_thumb.jpg b/WebGoat/WebGoatCoins/images/products/21_Arthur_Pre1_thumb.jpg deleted file mode 100644 index 58ac3da81..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/21_Arthur_Pre1_thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/AEPlatUnc_thumb.jpg b/WebGoat/WebGoatCoins/images/products/AEPlatUnc_thumb.jpg deleted file mode 100644 index 2ae252bd5..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/AEPlatUnc_thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/EJohnson_Proof-thumb.jpg b/WebGoat/WebGoatCoins/images/products/EJohnson_Proof-thumb.jpg deleted file mode 100644 index c4d303a64..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/EJohnson_Proof-thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/HOTSPRINGS_thumb.jpg b/WebGoat/WebGoatCoins/images/products/HOTSPRINGS_thumb.jpg deleted file mode 100644 index 1193b9614..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/HOTSPRINGS_thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/SSB_Gold_thumb_LineArt.jpg b/WebGoat/WebGoatCoins/images/products/SSB_Gold_thumb_LineArt.jpg deleted file mode 100644 index ee8fa80df..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/SSB_Gold_thumb_LineArt.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-1_10-Koala-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-1_10-Koala-Reverse.jpg deleted file mode 100644 index 658a7f106..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-1_10-Koala-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-2011-Aust-Kangaroo-Mini-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-2011-Aust-Kangaroo-Mini-Coin-Reverse.jpg deleted file mode 100644 index 0eb4589bb..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-2011-Aust-Kangaroo-Mini-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-2011-Love-Coin-12oz-Silver-Proof-Coin_Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-2011-Love-Coin-12oz-Silver-Proof-Coin_Reverse.jpg deleted file mode 100644 index 6a44839fb..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-2011-Love-Coin-12oz-Silver-Proof-Coin_Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-2011-countdown-pack-front.jpg b/WebGoat/WebGoatCoins/images/products/other/0-2011-countdown-pack-front.jpg deleted file mode 100644 index b8de5a3c5..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-2011-countdown-pack-front.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-2011_UK_Gold_Proof_Quarter_Sovereign_Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-2011_UK_Gold_Proof_Quarter_Sovereign_Reverse.jpg deleted file mode 100644 index b9c9d096a..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-2011_UK_Gold_Proof_Quarter_Sovereign_Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-ANDA-Show-Special-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-ANDA-Show-Special-Reverse.jpg deleted file mode 100644 index 50097f9a3..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-ANDA-Show-Special-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Australian-Battles-Kokoda-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Australian-Battles-Kokoda-Reverse.jpg deleted file mode 100644 index 2b0a0f3fa..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Australian-Battles-Kokoda-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-BR11AGN_-_Britannia_Bullion_Rev.jpg b/WebGoat/WebGoatCoins/images/products/other/0-BR11AGN_-_Britannia_Bullion_Rev.jpg deleted file mode 100644 index ec6c80d97..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-BR11AGN_-_Britannia_Bullion_Rev.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-BRM-2012-Oympic-Coin.jpg b/WebGoat/WebGoatCoins/images/products/other/0-BRM-2012-Oympic-Coin.jpg deleted file mode 100644 index 80f396bbc..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-BRM-2012-Oympic-Coin.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-BRM-2012-Proof-Year-Set-Case-Inside.jpg b/WebGoat/WebGoatCoins/images/products/other/0-BRM-2012-Proof-Year-Set-Case-Inside.jpg deleted file mode 100644 index 7397f3cfc..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-BRM-2012-Proof-Year-Set-Case-Inside.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Celebrate-australia-WA-Silver-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Celebrate-australia-WA-Silver-Coin-Reverse.jpg deleted file mode 100644 index 79e06fcfb..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Celebrate-australia-WA-Silver-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Discover-Australia-2011-5-Coin-Set-Silver.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Discover-Australia-2011-5-Coin-Set-Silver.jpg deleted file mode 100644 index 857e6d205..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Discover-Australia-2011-5-Coin-Set-Silver.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Discover-Australia-2011-Dingo-Silver-1oz-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Discover-Australia-2011-Dingo-Silver-1oz-Reverse.jpg deleted file mode 100644 index 473ff6b8a..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Discover-Australia-2011-Dingo-Silver-1oz-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Discover-Australia-2011-TasDevil-Silver-1oz-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Discover-Australia-2011-TasDevil-Silver-1oz-Reverse.jpg deleted file mode 100644 index 5bec0d8c8..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Discover-Australia-2011-TasDevil-Silver-1oz-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Dreaming-Platypus-Gold-2.5g-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Dreaming-Platypus-Gold-2.5g-Reverse.jpg deleted file mode 100644 index bfa7beeb9..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Dreaming-Platypus-Gold-2.5g-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Dreaming-Platypus-Silver-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Dreaming-Platypus-Silver-Reverse.jpg deleted file mode 100644 index f114e108d..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Dreaming-Platypus-Silver-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Duntroon-PNC-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Duntroon-PNC-Reverse.jpg deleted file mode 100644 index b5148203c..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Duntroon-PNC-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Famous-Naval-Battles-Midway-Silver-Coin--Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Famous-Naval-Battles-Midway-Silver-Coin--Reverse.jpg deleted file mode 100644 index 760ecbc2c..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Famous-Naval-Battles-Midway-Silver-Coin--Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Forever-Love-2012-Silver-Proof-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Forever-Love-2012-Silver-Proof-Coin-Reverse.jpg deleted file mode 100644 index 9b05ded99..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Forever-Love-2012-Silver-Proof-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Giant-Panda-In-Need-Silver-1oz-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Giant-Panda-In-Need-Silver-1oz-Reverse.jpg deleted file mode 100644 index bf06bc306..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Giant-Panda-In-Need-Silver-1oz-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Great-Composers-Liszt-Silver-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Great-Composers-Liszt-Silver-Coin-Reverse.jpg deleted file mode 100644 index 3dd9fe4a1..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Great-Composers-Liszt-Silver-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Great-Warriors-1oz-Silver-Proof-Samurai-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Great-Warriors-1oz-Silver-Proof-Samurai-Coin-Reverse.jpg deleted file mode 100644 index 20d6126e3..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Great-Warriors-1oz-Silver-Proof-Samurai-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Koala-2012-1oz-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Koala-2012-1oz-Coin-Reverse.jpg deleted file mode 100644 index 73bb8f821..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Koala-2012-1oz-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Lost-Endangered-Tasmanian-Wedged-Tail-Eagle-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Lost-Endangered-Tasmanian-Wedged-Tail-Eagle-Reverse.jpg deleted file mode 100644 index 4f195ca6d..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Lost-Endangered-Tasmanian-Wedged-Tail-Eagle-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Lunar-Silver-Gemstone-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Lunar-Silver-Gemstone-Reverse.jpg deleted file mode 100644 index 651908c33..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Lunar-Silver-Gemstone-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Men-of-Gold-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Men-of-Gold-Reverse.jpg deleted file mode 100644 index 6f36ac4b5..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Men-of-Gold-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-RAN-PNC-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-RAN-PNC-Reverse.jpg deleted file mode 100644 index 8ccdf7dec..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-RAN-PNC-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Sea-Life-II-Starfish-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Sea-Life-II-Starfish-Reverse.jpg deleted file mode 100644 index eddedbd22..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Sea-Life-II-Starfish-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Sea-Life-II-Turtle-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Sea-Life-II-Turtle-Reverse.jpg deleted file mode 100644 index 8e558da35..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Sea-Life-II-Turtle-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Ships-Changed-World-Santa-Maria-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Ships-Changed-World-Santa-Maria-Reverse.jpg deleted file mode 100644 index a73089624..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Ships-Changed-World-Santa-Maria-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Silver-Koala-5oz-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Silver-Koala-5oz-Reverse.jpg deleted file mode 100644 index 3fa159879..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Silver-Koala-5oz-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Transformers-Optimus-Prime-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Transformers-Optimus-Prime-Reverse.jpg deleted file mode 100644 index 5998bc00a..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Transformers-Optimus-Prime-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Tuvalu---Fu.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Tuvalu---Fu.jpg deleted file mode 100644 index fbb8b31b0..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Tuvalu---Fu.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Tuvalu---Lu.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Tuvalu---Lu.jpg deleted file mode 100644 index bf0e87d69..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Tuvalu---Lu.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-Wildlife-Orangutan-1oz-Silver-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-Wildlife-Orangutan-1oz-Silver-Reverse.jpg deleted file mode 100644 index 34295f25b..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-Wildlife-Orangutan-1oz-Silver-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-dame-nellie-coin-reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/0-dame-nellie-coin-reverse.jpg deleted file mode 100644 index 0ce73dcd0..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-dame-nellie-coin-reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/0-kookaburra-baby-pack-2012.jpg b/WebGoat/WebGoatCoins/images/products/other/0-kookaburra-baby-pack-2012.jpg deleted file mode 100644 index 74bbf6656..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/0-kookaburra-baby-pack-2012.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2450-Discover-Australia-Crocodile-1oz-Silver-Proof-Coin-Hero.jpg b/WebGoat/WebGoatCoins/images/products/other/2450-Discover-Australia-Crocodile-1oz-Silver-Proof-Coin-Hero.jpg deleted file mode 100644 index 52d384145..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2450-Discover-Australia-Crocodile-1oz-Silver-Proof-Coin-Hero.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2519-Great-Warrior-Series-2010-Viking-1oz-Silver-Proof-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2519-Great-Warrior-Series-2010-Viking-1oz-Silver-Proof-Reverse.jpg deleted file mode 100644 index 421494ba6..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2519-Great-Warrior-Series-2010-Viking-1oz-Silver-Proof-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2541-Aust_Bush_Baby_Sugar_Glider_Silver_Coin_Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2541-Aust_Bush_Baby_Sugar_Glider_Silver_Coin_Reverse.jpg deleted file mode 100644 index b2f162789..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2541-Aust_Bush_Baby_Sugar_Glider_Silver_Coin_Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2549-Lucky-Waving-Purple-Cat-1_25oz-Gold-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2549-Lucky-Waving-Purple-Cat-1_25oz-Gold-Coin-Reverse.jpg deleted file mode 100644 index 020deae33..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2549-Lucky-Waving-Purple-Cat-1_25oz-Gold-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2550-Lucky-Waving-Green-Cat-1_25oz-Gold-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2550-Lucky-Waving-Green-Cat-1_25oz-Gold-Coin-Reverse.jpg deleted file mode 100644 index 97bcd0021..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2550-Lucky-Waving-Green-Cat-1_25oz-Gold-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2553-Great-Composers-Gustav-Mahler-1oz-Silver-Proof-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2553-Great-Composers-Gustav-Mahler-1oz-Silver-Proof-Coin-Reverse.jpg deleted file mode 100644 index ac242177b..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2553-Great-Composers-Gustav-Mahler-1oz-Silver-Proof-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2554-2011-Tasmanian-Tiger-1oz-silver-proof-coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2554-2011-Tasmanian-Tiger-1oz-silver-proof-coin-Reverse.jpg deleted file mode 100644 index 96498f7ef..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2554-2011-Tasmanian-Tiger-1oz-silver-proof-coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2568-Centenary-of-Australian-Commonwealth-of-Bronze-Coinage-1oz-Silver-Proof-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2568-Centenary-of-Australian-Commonwealth-of-Bronze-Coinage-1oz-Silver-Proof-Coin-Reverse.jpg deleted file mode 100644 index 447090e2b..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2568-Centenary-of-Australian-Commonwealth-of-Bronze-Coinage-1oz-Silver-Proof-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2569-Border-Collie-1oz-Silver-Proof-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2569-Border-Collie-1oz-Silver-Proof-Coin-Reverse.jpg deleted file mode 100644 index 52e6e8f50..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2569-Border-Collie-1oz-Silver-Proof-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2573-2011-Year-of-the-Rabbit-1oz-Silver-Coloured-Coin Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2573-2011-Year-of-the-Rabbit-1oz-Silver-Coloured-Coin Reverse.jpg deleted file mode 100644 index 3f18dc99c..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2573-2011-Year-of-the-Rabbit-1oz-Silver-Coloured-Coin Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2574-2011-Year-of-the-Rabbit-1oz-Silver-Gilded-Coin Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2574-2011-Year-of-the-Rabbit-1oz-Silver-Gilded-Coin Reverse.jpg deleted file mode 100644 index c6464274b..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2574-2011-Year-of-the-Rabbit-1oz-Silver-Gilded-Coin Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2577-Bush-Babies-1_2oz-Silver-Proof-Dingo-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2577-Bush-Babies-1_2oz-Silver-Proof-Dingo-Coin-Reverse.jpg deleted file mode 100644 index 5a1adaf01..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2577-Bush-Babies-1_2oz-Silver-Proof-Dingo-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2585-Great-Naval-Battles-1oz-Silver-Proof-Jutland-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2585-Great-Naval-Battles-1oz-Silver-Proof-Jutland-Coin-Reverse.jpg deleted file mode 100644 index cf2080c8d..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2585-Great-Naval-Battles-1oz-Silver-Proof-Jutland-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2597-Celebrate-Australia-1oz-Silver-Proof-Tasmania-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2597-Celebrate-Australia-1oz-Silver-Proof-Tasmania-Coin-Reverse.jpg deleted file mode 100644 index 6fd439f62..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2597-Celebrate-Australia-1oz-Silver-Proof-Tasmania-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2598-Celebrate-Australia-1oz-Silver-Proof-South-Australia-Coin-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2598-Celebrate-Australia-1oz-Silver-Proof-South-Australia-Coin-Reverse.jpg deleted file mode 100644 index def92e9ce..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2598-Celebrate-Australia-1oz-Silver-Proof-South-Australia-Coin-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2601-Pre-decimal-minature-coins-in-card.jpg b/WebGoat/WebGoatCoins/images/products/other/2601-Pre-decimal-minature-coins-in-card.jpg deleted file mode 100644 index c4468310a..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2601-Pre-decimal-minature-coins-in-card.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2741-killer-whale-coin-reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2741-killer-whale-coin-reverse.jpg deleted file mode 100644 index 33bdeea78..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2741-killer-whale-coin-reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2775-Melb-Coin-Show-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2775-Melb-Coin-Show-Reverse.jpg deleted file mode 100644 index 8aea0fd74..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2775-Melb-Coin-Show-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2777-Kangaroo-Silver-High-Relief-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2777-Kangaroo-Silver-High-Relief-Reverse.jpg deleted file mode 100644 index bbfaa66f5..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2777-Kangaroo-Silver-High-Relief-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2781-Famous-Battles-Tobruk-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2781-Famous-Battles-Tobruk-Reverse.jpg deleted file mode 100644 index a8938e91b..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2781-Famous-Battles-Tobruk-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2835-Lunar-Silver-Gilded-Reverse.jpg b/WebGoat/WebGoatCoins/images/products/other/2835-Lunar-Silver-Gilded-Reverse.jpg deleted file mode 100644 index 686273631..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2835-Lunar-Silver-Gilded-Reverse.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2900-Lu-Fu-Shou-Combined-v2.jpg b/WebGoat/WebGoatCoins/images/products/other/2900-Lu-Fu-Shou-Combined-v2.jpg deleted file mode 100644 index 0c857f47f..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2900-Lu-Fu-Shou-Combined-v2.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/other/2901-Fu-Lu-Combined.jpg b/WebGoat/WebGoatCoins/images/products/other/2901-Fu-Lu-Combined.jpg deleted file mode 100644 index e621780f4..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/other/2901-Fu-Lu-Combined.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/stacked-coins2_thumb.jpg b/WebGoat/WebGoatCoins/images/products/stacked-coins2_thumb.jpg deleted file mode 100644 index 02cfbdb5b..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/stacked-coins2_thumb.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/thumbBuffaloBullion.jpg b/WebGoat/WebGoatCoins/images/products/thumbBuffaloBullion.jpg deleted file mode 100644 index 39b20550e..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/thumbBuffaloBullion.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/thumbJMonroe.jpg b/WebGoat/WebGoatCoins/images/products/thumbJMonroe.jpg deleted file mode 100644 index 339f8ac0c..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/thumbJMonroe.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/images/products/thumbWashington.jpg b/WebGoat/WebGoatCoins/images/products/thumbWashington.jpg deleted file mode 100644 index 3f8842c2f..000000000 Binary files a/WebGoat/WebGoatCoins/images/products/thumbWashington.jpg and /dev/null differ diff --git a/WebGoat/WebGoatCoins/uploads/1. Development cycle v1.pdf b/WebGoat/WebGoatCoins/uploads/1. Development cycle v1.pdf deleted file mode 100644 index 7c9773e32..000000000 Binary files a/WebGoat/WebGoatCoins/uploads/1. Development cycle v1.pdf and /dev/null differ diff --git a/WebGoat/WebGoatCoins/uploads/attack.aspx b/WebGoat/WebGoatCoins/uploads/attack.aspx deleted file mode 100644 index 0928515f9..000000000 --- a/WebGoat/WebGoatCoins/uploads/attack.aspx +++ /dev/null @@ -1,14 +0,0 @@ -<% - lblTest.Text = "Hello, world!"; -%> - - - - - -
    - - -
    - - diff --git a/WebGoat/WebGoatCoins/uploads/test.aspx b/WebGoat/WebGoatCoins/uploads/test.aspx deleted file mode 100644 index 2f86cc5c9..000000000 --- a/WebGoat/WebGoatCoins/uploads/test.aspx +++ /dev/null @@ -1,14 +0,0 @@ -<% - lblTest.Text = "Hello, world!"; -%> - - - - - -
    - - -
    - - \ No newline at end of file diff --git a/WebGoat/dbtest.aspx.cs b/WebGoat/dbtest.aspx.cs deleted file mode 100644 index 77dcb838f..000000000 --- a/WebGoat/dbtest.aspx.cs +++ /dev/null @@ -1,137 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Web; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Data; -using System.IO; -using System.Configuration; -using OWASP.WebGoat.NET.App_Code.DB; -using OWASP.WebGoat.NET.App_Code; - -namespace OWASP.WebGoat.NET -{ - public partial class RebuildDatabase : System.Web.UI.Page - { - protected void Page_Load (object sender, EventArgs e) - { - ConfigFile configFile = Settings.CurrentConfigFile; - - if(!Page.IsPostBack) - { - dropDownDataProvider.Text = configFile.Get(DbConstants.KEY_DB_TYPE); - txtClientExecutable.Text = configFile.Get(DbConstants.KEY_CLIENT_EXEC); - txtFilePath.Text = configFile.Get(DbConstants.KEY_FILE_NAME); - txtServer.Text = configFile.Get(DbConstants.KEY_HOST); - txtPort.Text = configFile.Get(DbConstants.KEY_PORT); - txtDatabase.Text = configFile.Get(DbConstants.KEY_DATABASE); - txtUserName.Text = configFile.Get(DbConstants.KEY_UID); - txtPassword.Text = configFile.Get(DbConstants.KEY_PWD); - } - - PanelSuccess.Visible = false; - PanelError.Visible = false; - - PanelRebuildSuccess.Visible = false; - PanelRebuildFailure.Visible = false; - - } - - protected void btnTest_Click (object sender, EventArgs e) - { - lblOutput.Text = Settings.CurrentDbProvider.TestConnection() ? "Works!" : "Problem"; - } - - protected void btnTestConfiguration_Click(object sender, EventArgs e) - { - ConfigFile configFile = Settings.CurrentConfigFile; - - //TODO: Need to provide interface for saving multiple configs need VS for it. - UpdateConfigFile(configFile); - - Settings.CurrentDbProvider = DbProviderFactory.Create(configFile); - - if (Settings.CurrentDbProvider.TestConnection()) - { - labelSuccess.Text = "Connection to Database Successful!"; - PanelSuccess.Visible = true; - Session["DBConfigured"] = true; - } - else - { - labelError.Text = "Error testing database. Please see logs."; - PanelError.Visible = true; - Session["DBConfigured"] = null; - } - } - - protected void btnRebuildDatabase_Click(object sender, EventArgs e) - { - ConfigFile configFile = Settings.CurrentConfigFile; - - UpdateConfigFile(configFile); - - Settings.CurrentDbProvider = DbProviderFactory.Create(configFile); - Settings.CurrentDbProvider.RecreateGoatDb(); - - if (Settings.CurrentDbProvider.TestConnection()) - { - labelRebuildSuccess.Text = "Database Rebuild Successful!"; - PanelRebuildSuccess.Visible = true; - Session["DBConfigured"] = true; - } - else - { - labelRebuildFailure.Text = "Error rebuilding database. Please see logs."; - PanelRebuildFailure.Visible = true; - Session["DBConfigured"] = null; - } - } - - private void UpdateConfigFile(ConfigFile configFile) - { - if (string.IsNullOrEmpty(txtServer.Text)) - configFile.Remove(DbConstants.KEY_HOST); - else - configFile.Set(DbConstants.KEY_HOST, txtServer.Text); - - if (string.IsNullOrEmpty(txtFilePath.Text)) - configFile.Remove(DbConstants.KEY_FILE_NAME); - else - configFile.Set(DbConstants.KEY_FILE_NAME, txtFilePath.Text); - - if (string.IsNullOrEmpty(dropDownDataProvider.Text)) - configFile.Remove(DbConstants.KEY_DB_TYPE); - else - configFile.Set(DbConstants.KEY_DB_TYPE, dropDownDataProvider.Text); - - if (string.IsNullOrEmpty(txtPort.Text)) - configFile.Remove(DbConstants.KEY_PORT); - else - configFile.Set(DbConstants.KEY_PORT, txtPort.Text); - - if (string.IsNullOrEmpty(txtClientExecutable.Text)) - configFile.Remove(DbConstants.KEY_CLIENT_EXEC); - else - configFile.Set(DbConstants.KEY_CLIENT_EXEC, txtClientExecutable.Text); - - if (string.IsNullOrEmpty(txtDatabase.Text)) - configFile.Remove(DbConstants.KEY_DATABASE); - else - configFile.Set(DbConstants.KEY_DATABASE, txtDatabase.Text); - - if (string.IsNullOrEmpty(txtUserName.Text)) - configFile.Remove(DbConstants.KEY_UID); - else - configFile.Set(DbConstants.KEY_UID, txtUserName.Text); - - if (string.IsNullOrEmpty(txtPassword.Text)) - configFile.Remove(DbConstants.KEY_PWD); - else - configFile.Set(DbConstants.KEY_PWD, txtPassword.Text); - - configFile.Save(); - } - } -} \ No newline at end of file diff --git a/WebGoat/dbtest.aspx.designer.cs b/WebGoat/dbtest.aspx.designer.cs deleted file mode 100644 index 263a10ad7..000000000 --- a/WebGoat/dbtest.aspx.designer.cs +++ /dev/null @@ -1,222 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -namespace OWASP.WebGoat.NET { - - - public partial class RebuildDatabase { - - /// - /// PanelWelcome control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Panel PanelWelcome; - - /// - /// labelMessage control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Literal labelMessage; - - /// - /// dropDownDataProvider control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.DropDownList dropDownDataProvider; - - /// - /// txtFilePath control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtFilePath; - - /// - /// txtClientExecutable control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtClientExecutable; - - /// - /// txtServer control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtServer; - - /// - /// txtPort control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtPort; - - /// - /// txtDatabase control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtDatabase; - - /// - /// txtUserName control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtUserName; - - /// - /// txtPassword control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.TextBox txtPassword; - - /// - /// PanelSuccess control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Panel PanelSuccess; - - /// - /// labelSuccess control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Literal labelSuccess; - - /// - /// PanelError control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Panel PanelError; - - /// - /// labelError control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Literal labelError; - - /// - /// btnTestConfiguration control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button btnTestConfiguration; - - /// - /// PanelRebuildFailure control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Panel PanelRebuildFailure; - - /// - /// labelRebuildFailure control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Literal labelRebuildFailure; - - /// - /// PanelRebuildSuccess control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Panel PanelRebuildSuccess; - - /// - /// labelRebuildSuccess control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Literal labelRebuildSuccess; - - /// - /// btnRebuildDatabase control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button btnRebuildDatabase; - - /// - /// lblStatus control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Label lblStatus; - - /// - /// lblOutput control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Label lblOutput; - - /// - /// grdView control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.GridView grdView; - } -} diff --git a/WebGoat/lib/Mono.Data.Sqlite.dll b/WebGoat/lib/Mono.Data.Sqlite.dll deleted file mode 100644 index 0cd2565c7..000000000 Binary files a/WebGoat/lib/Mono.Data.Sqlite.dll and /dev/null differ diff --git a/WebGoat/lib/System.Data.SQLite.XML b/WebGoat/lib/System.Data.SQLite.XML deleted file mode 100644 index 51fa94534..000000000 --- a/WebGoat/lib/System.Data.SQLite.XML +++ /dev/null @@ -1,3637 +0,0 @@ - - - - System.Data.SQLite - - - - - MetaDataCollections specific to SQLite - - - - - Returns a list of databases attached to the connection - - - - - Returns column information for the specified table - - - - - Returns index information for the optionally-specified table - - - - - Returns base columns for the given index - - - - - Returns the tables in the given catalog - - - - - Returns user-defined views in the given catalog - - - - - Returns underlying column information on the given view - - - - - Returns foreign key information for the given catalog - - - - - Returns the triggers on the database - - - - - SQLite implementation of DbConnectionStringBuilder. - - - - - Properties of this class - - - - - Constructs a new instance of the class - - - Default constructor - - - - - Constructs a new instance of the class using the specified connection string. - - The connection string to parse - - - - Private initializer, which assigns the connection string and resets the builder - - The connection string to assign - - - - Helper function for retrieving values from the connectionstring - - The keyword to retrieve settings for - The resulting parameter value - Returns true if the value was found and returned - - - - Fallback method for MONO, which doesn't implement DbConnectionStringBuilder.GetProperties() - - The hashtable to fill with property descriptors - - - - Gets/Sets the default version of the SQLite engine to instantiate. Currently the only valid value is 3, indicating version 3 of the sqlite library. - - - - - Gets/Sets the synchronization mode (file flushing) of the connection string. Default is "Normal". - - - - - Gets/Sets the encoding for the connection string. The default is "False" which indicates UTF-8 encoding. - - - - - Gets/Sets whether or not to use connection pooling. The default is "False" - - - - - Gets/Sets whethor not to store GUID's in binary format. The default is True - which saves space in the database. - - - - - Gets/Sets the filename to open on the connection string. - - - - - An alternate to the data source property - - - - - Gets/sets the default command timeout for newly-created commands. This is especially useful for - commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. - - - - - Determines whether or not the connection will automatically participate - in the current distributed transaction (if one exists) - - - - - If set to true, will throw an exception if the database specified in the connection - string does not exist. If false, the database will be created automatically. - - - - - If enabled, uses the legacy 3.xx format for maximum compatibility, but results in larger - database sizes. - - - - - When enabled, the database will be opened for read-only access and writing will be disabled. - - - - - Gets/sets the database encryption password - - - - - Gets/Sets the page size for the connection. - - - - - Gets/Sets the maximum number of pages the database may hold - - - - - Gets/Sets the cache size for the connection. - - - - - Gets/Sets the datetime format for the connection. - - - - - Determines how SQLite handles the transaction journal file. - - - - - Sets the default isolation level for transactions on the connection. - - - - - SQLite implementation of DbCommandBuilder. - - - - - Default constructor - - - - - Initializes the command builder and associates it with the specified data adapter. - - - - - - Minimal amount of parameter processing. Primarily sets the DbType for the parameter equal to the provider type in the schema - - The parameter to use in applying custom behaviors to a row - The row to apply the parameter to - The type of statement - Whether the application of the parameter is part of a WHERE clause - - - - Returns a valid named parameter - - The name of the parameter - Error - - - - Returns a named parameter for the given ordinal - - The i of the parameter - Error - - - - Returns a placeholder character for the specified parameter i. - - The index of the parameter to provide a placeholder for - Returns a named parameter - - - - Sets the handler for receiving row updating events. Used by the DbCommandBuilder to autogenerate SQL - statements that may not have previously been generated. - - A data adapter to receive events on. - - - - Returns the automatically-generated SQLite command to delete rows from the database - - - - - - Returns the automatically-generated SQLite command to delete rows from the database - - - - - - - Returns the automatically-generated SQLite command to update rows in the database - - - - - - Returns the automatically-generated SQLite command to update rows in the database - - - - - - - Returns the automatically-generated SQLite command to insert rows into the database - - - - - - Returns the automatically-generated SQLite command to insert rows into the database - - - - - - - Places brackets around an identifier - - The identifier to quote - The bracketed identifier - - - - Removes brackets around an identifier - - The quoted (bracketed) identifier - The undecorated identifier - - - - Override helper, which can help the base command builder choose the right keys for the given query - - - - - - - Gets/sets the DataAdapter for this CommandBuilder - - - - - Overridden to hide its property from the designer - - - - - Overridden to hide its property from the designer - - - - - Overridden to hide its property from the designer - - - - - Overridden to hide its property from the designer - - - - - Overridden to hide its property from the designer - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to <?xml version="1.0" standalone="yes"?> - <DocumentElement> - <DataTypes> - <TypeName>smallint</TypeName> - <ProviderDbType>10</ProviderDbType> - <ColumnSize>5</ColumnSize> - <DataType>System.Int16</DataType> - <CreateFormat>smallint</CreateFormat> - <IsAutoIncrementable>false</IsAutoIncrementable> - <IsCaseSensitive>false</IsCaseSensitive> - <IsFixedLength>true</IsFixedLength> - <IsFixedPrecisionScale>true</IsFixedPrecisionScale> - <IsLong>false</IsLong> - <IsNullable>true</ [rest of string was truncated]";. - - - - - Looks up a localized string similar to ALL,ALTER,AND,AS,AUTOINCREMENT,BETWEEN,BY,CASE,CHECK,COLLATE,COMMIT,CONSTRAINT,CREATE,CROSS,DEFAULT,DEFERRABLE,DELETE,DISTINCT,DROP,ELSE,ESCAPE,EXCEPT,FOREIGN,FROM,FULL,GROUP,HAVING,IN,INDEX,INNER,INSERT,INTERSECT,INTO,IS,ISNULL,JOIN,LEFT,LIMIT,NATURAL,NOT,NOTNULL,NULL,ON,OR,ORDER,OUTER,PRIMARY,REFERENCES,RIGHT,ROLLBACK,SELECT,SET,TABLE,THEN,TO,TRANSACTION,UNION,UNIQUE,UPDATE,USING,VALUES,WHEN,WHERE. - - - - - Looks up a localized string similar to <?xml version="1.0" encoding="utf-8" ?> - <DocumentElement> - <MetaDataCollections> - <CollectionName>MetaDataCollections</CollectionName> - <NumberOfRestrictions>0</NumberOfRestrictions> - <NumberOfIdentifierParts>0</NumberOfIdentifierParts> - </MetaDataCollections> - <MetaDataCollections> - <CollectionName>DataSourceInformation</CollectionName> - <NumberOfRestrictions>0</NumberOfRestrictions> - <NumberOfIdentifierParts>0</NumberOfIdentifierParts> - </MetaDataCollections> - <MetaDataC [rest of string was truncated]";. - - - - - The connection pool object - - - - - The default version number new pools will get - - - - - Attempt to pull a pooled connection out of the queue for active duty - - The filename for a desired connection - The maximum size the connection pool for the filename can be - The pool version the returned connection will belong to - Returns NULL if no connections were available. Even if none are, the poolversion will still be a valid pool version - - - - Clears out all pooled connections and rev's up the default pool version to force all old active objects - not in the pool to get discarded rather than returned to their pools. - - - - - Clear a given pool for a given filename. Discards anything in the pool for the given file, and revs the pool - version so current active objects on the old version of the pool will get discarded rather than be returned to the pool. - - The filename of the pool to clear - - - - Return a connection to the pool for someone else to use. - - The filename of the pool to use - The connection handle to pool - The pool version the handle was created under - - If the version numbers don't match between the connection and the pool, then the handle is discarded. - - - - - We don't have to thread-lock anything in this function, because it's only called by other functions above - which already have a thread-safe lock. - - The queue to resize - If a function intends to add to the pool, this is true, which forces the resize - to take one more than it needs from the pool - - - - Keeps track of connections made on a specified file. The PoolVersion dictates whether old objects get - returned to the pool or discarded when no longer in use. - - - - - SQLite implentation of DbConnection. - - - The ConnectionString property of the SQLiteConnection class can contain the following parameter(s), delimited with a semi-colon: - - - Parameter - Values - Required - Default - - - Data Source - {filename} - Y - - - - Version - 3 - N - 3 - - - UseUTF16Encoding - True
    False
    - N - False -
    - - DateTimeFormat - Ticks - Use DateTime.Ticks
    ISO8601 - Use ISO8601 DateTime format
    - N - ISO8601 -
    - - BinaryGUID - True - Store GUID columns in binary form
    False - Store GUID columns as text
    - N - True -
    - - Cache Size - {size in bytes} - N - 2000 - - - Synchronous - Normal - Normal file flushing behavior
    Full - Full flushing after all writes
    Off - Underlying OS flushes I/O's
    - N - Normal -
    - - Page Size - {size in bytes} - N - 1024 - - - Password - {password} - N - - - - Enlist - Y - Automatically enlist in distributed transactions
    N - No automatic enlistment
    - N - Y -
    - - Pooling - True - Use connection pooling
    False - Do not use connection pooling
    - N - False -
    - - FailIfMissing - True - Don't create the database if it does not exist, throw an error instead
    False - Automatically create the database if it does not exist
    - N - False -
    - - Max Page Count - {size in pages} - Limits the maximum number of pages (limits the size) of the database - N - 0 - - - Legacy Format - True - Use the more compatible legacy 3.x database format
    False - Use the newer 3.3x database format which compresses numbers more effectively
    - N - False -
    - - Default Timeout - {time in seconds}
    The default command timeout
    - N - 30 -
    - - Journal Mode - Delete - Delete the journal file after a commit
    Persist - Zero out and leave the journal file on disk after a commit
    Off - Disable the rollback journal entirely
    - N - Delete -
    - - Read Only - True - Open the database for read only access
    False - Open the database for normal read/write access
    - N - False -
    - - Max Pool Size - The maximum number of connections for the given connection string that can be in the connection pool - N - 100 - - - Default IsolationLevel - The default transaciton isolation level - N - Serializable - -
    -
    -
    - - - State of the current connection - - - - - The connection string - - - - - Nesting level of the transactions open on the connection - - - - - The default isolation level for new transactions - - - - - Whether or not the connection is enlisted in a distrubuted transaction - - - - - The base SQLite object to interop with - - - - - The database filename minus path and extension - - - - - Temporary password storage, emptied after the database has been opened - - - - - Default command timeout - - - - - Constructs a new SQLiteConnection object - - - Default constructor - - - - - Initializes the connection with the specified connection string - - The connection string to use on the connection - - - - Clones the settings and connection string from an existing connection. If the existing connection is already open, this - function will open its own connection, enumerate any attached databases of the original connection, and automatically - attach to them. - - - - - - Creates a clone of the connection. All attached databases and user-defined functions are cloned. If the existing connection is open, the cloned connection - will also be opened. - - - - - - Disposes of the SQLiteConnection, closing it if it is active. - - True if the connection is being explicitly closed. - - - - Creates a database file. This just creates a zero-byte file which SQLite - will turn into a database when the file is opened properly. - - The file to create - - - - Raises the state change event when the state of the connection changes - - The new state. If it is different from the previous state, an event is raised. - - - - OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. - - This parameter is ignored. - When TRUE, SQLite defers obtaining a write lock until a write operation is requested. - When FALSE, a writelock is obtained immediately. The default is TRUE, but in a multi-threaded multi-writer - environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. - Returns a SQLiteTransaction object. - - - - OBSOLETE. Creates a new SQLiteTransaction if one isn't already active on the connection. - - When TRUE, SQLite defers obtaining a write lock until a write operation is requested. - When FALSE, a writelock is obtained immediately. The default is false, but in a multi-threaded multi-writer - environment, one may instead choose to lock the database immediately to avoid any possible writer deadlock. - Returns a SQLiteTransaction object. - - - - Creates a new SQLiteTransaction if one isn't already active on the connection. - - Supported isolation levels are Serializable, ReadCommitted and Unspecified. - - Unspecified will use the default isolation level specified in the connection string. If no isolation level is specified in the - connection string, Serializable is used. - Serializable transactions are the default. In this mode, the engine gets an immediate lock on the database, and no other threads - may begin a transaction. Other threads may read from the database, but not write. - With a ReadCommitted isolation level, locks are deferred and elevated as needed. It is possible for multiple threads to start - a transaction in ReadCommitted mode, but if a thread attempts to commit a transaction while another thread - has a ReadCommitted lock, it may timeout or cause a deadlock on both threads until both threads' CommandTimeout's are reached. - - Returns a SQLiteTransaction object. - - - - Creates a new SQLiteTransaction if one isn't already active on the connection. - - Returns a SQLiteTransaction object. - - - - Forwards to the local BeginTransaction() function - - Supported isolation levels are Unspecified, Serializable, and ReadCommitted - - - - - Not implemented - - - - - - When the database connection is closed, all commands linked to this connection are automatically reset. - - - - - Clears the connection pool associated with the connection. Any other active connections using the same database file - will be discarded instead of returned to the pool when they are closed. - - - - - - Clears all connection pools. Any active connections will be discarded instead of sent to the pool when they are closed. - - - - - Create a new SQLiteCommand and associate it with this connection. - - Returns an instantiated SQLiteCommand object already assigned to this connection. - - - - Forwards to the local CreateCommand() function - - - - - - Parses the connection string into component parts - - The connection string to parse - An array of key-value pairs representing each parameter of the connection string - - - - Manual distributed transaction enlistment support - - The distributed transaction to enlist in - - - - Looks for a key in the array of key/values of the parameter string. If not found, return the specified default value - - The list to look in - The key to find - The default value to return if the key is not found - The value corresponding to the specified key, or the default value if not found. - - - - Opens the connection using the parameters found in the ConnectionString - - - - - Change the password (or assign a password) to an open database. - - - No readers or writers may be active for this process. The database must already be open - and if it already was password protected, the existing password must already have been supplied. - - The new password to assign to the database - - - - Change the password (or assign a password) to an open database. - - - No readers or writers may be active for this process. The database must already be open - and if it already was password protected, the existing password must already have been supplied. - - The new password to assign to the database - - - - Sets the password for a password-protected database. A password-protected database is - unusable for any operation until the password has been set. - - The password for the database - - - - Sets the password for a password-protected database. A password-protected database is - unusable for any operation until the password has been set. - - The password for the database - - - - Expand the filename of the data source, resolving the |DataDirectory| macro as appropriate. - - The database filename to expand - The expanded path and filename of the filename - - - - The following commands are used to extract schema information out of the database. Valid schema types are: - - - MetaDataCollections - - - DataSourceInformation - - - Catalogs - - - Columns - - - ForeignKeys - - - Indexes - - - IndexColumns - - - Tables - - - Views - - - ViewColumns - - - - - Returns the MetaDataCollections schema - - A DataTable of the MetaDataCollections schema - - - - Returns schema information of the specified collection - - The schema collection to retrieve - A DataTable of the specified collection - - - - Retrieves schema information using the specified constraint(s) for the specified collection - - The collection to retrieve - The restrictions to impose - A DataTable of the specified collection - - - - Builds a MetaDataCollections schema datatable - - DataTable - - - - Builds a DataSourceInformation datatable - - DataTable - - - - Build a Columns schema - - The catalog (attached database) to query, can be null - The table to retrieve schema information for, must not be null - The column to retrieve schema information for, can be null - DataTable - - - - Returns index information for the given database and catalog - - The catalog (attached database) to query, can be null - The name of the index to retrieve information for, can be null - The table to retrieve index information for, can be null - DataTable - - - - Retrieves table schema information for the database and catalog - - The catalog (attached database) to retrieve tables on - The table to retrieve, can be null - The table type, can be null - DataTable - - - - Retrieves view schema information for the database - - The catalog (attached database) to retrieve views on - The view name, can be null - DataTable - - - - Retrieves catalog (attached databases) schema information for the database - - The catalog to retrieve, can be null - DataTable - - - - Returns the base column information for indexes in a database - - The catalog to retrieve indexes for (can be null) - The table to restrict index information by (can be null) - The index to restrict index information by (can be null) - The source column to restrict index information by (can be null) - A DataTable containing the results - - - - Returns detailed column information for a specified view - - The catalog to retrieve columns for (can be null) - The view to restrict column information by (can be null) - The source column to restrict column information by (can be null) - A DataTable containing the results - - - - Retrieves foreign key information from the specified set of filters - - An optional catalog to restrict results on - An optional table to restrict results on - An optional foreign key name to restrict results on - A DataTable with the results of the query - - - - Returns a SQLiteProviderFactory object. - - - - - This event is raised whenever the database is opened or closed. - - - - - The connection string containing the parameters for the connection - - - - - Parameter - Values - Required - Default - - - Data Source - {filename} - Y - - - - Version - 3 - N - 3 - - - UseUTF16Encoding - True
    False
    - N - False -
    - - DateTimeFormat - Ticks - Use DateTime.Ticks
    ISO8601 - Use ISO8601 DateTime format
    JulianDay - Use JulianDay format
    - N - ISO8601 -
    - - BinaryGUID - Yes/On/1 - Store GUID columns in binary form
    No/Off/0 - Store GUID columns as text
    - N - On -
    - - Cache Size - {size in bytes} - N - 2000 - - - Synchronous - Normal - Normal file flushing behavior
    Full - Full flushing after all writes
    Off - Underlying OS flushes I/O's
    - N - Normal -
    - - Page Size - {size in bytes} - N - 1024 - - - Password - {password} - N - - - - Enlist - Y - Automatically enlist in distributed transactions
    N - No automatic enlistment
    - N - Y -
    - - Pooling - True - Use connection pooling
    False - Do not use connection pooling
    - N - False -
    - - FailIfMissing - True - Don't create the database if it does not exist, throw an error instead
    False - Automatically create the database if it does not exist
    - N - False -
    - - Max Page Count - {size in pages} - Limits the maximum number of pages (limits the size) of the database - N - 0 - - - Legacy Format - True - Use the more compatible legacy 3.x database format
    False - Use the newer 3.3x database format which compresses numbers more effectively
    - N - False -
    - - Default Timeout - {time in seconds}
    The default command timeout
    - N - 30 -
    - - Journal Mode - Delete - Delete the journal file after a commit
    Persist - Zero out and leave the journal file on disk after a commit
    Off - Disable the rollback journal entirely
    - N - Delete -
    - - Read Only - True - Open the database for read only access
    False - Open the database for normal read/write access
    - N - False -
    - - Max Pool Size - The maximum number of connections for the given connection string that can be in the connection pool - N - 100 - - - Default IsolationLevel - The default transaciton isolation level - N - Serializable - -
    -
    -
    - - - Returns the filename without extension or path - - - - - Returns an empty string - - - - - Gets/sets the default command timeout for newly-created commands. This is especially useful for - commands used internally such as inside a SQLiteTransaction, where setting the timeout is not possible. - This can also be set in the ConnectionString with "Default Timeout" - - - - - Returns the version of the underlying SQLite database engine - - - - - Returns the version of the underlying SQLite database engine - - - - - Returns the state of the connection. - - - - - This event is raised whenever SQLite makes an update/delete/insert into the database on - this connection. It only applies to the given connection. - - - - - This event is raised whenever SQLite is committing a transaction. - Return non-zero to trigger a rollback - - - - - This event is raised whenever SQLite is committing a transaction. - Return non-zero to trigger a rollback - - - - - The I/O file cache flushing behavior for the connection - - - - - Normal file flushing at critical sections of the code - - - - - Full file flushing after every write operation - - - - - Use the default operating system's file flushing, SQLite does not explicitly flush the file buffers after writing - - - - - Raised when a transaction is about to be committed. To roll back a transaction, set the - rollbackTrans boolean value to true. - - The connection committing the transaction - Event arguments on the transaction - - - - Raised when data is inserted, updated and deleted on a given connection - - The connection committing the transaction - The event parameters which triggered the event - - - - Whenever an update event is triggered on a connection, this enum will indicate - exactly what type of operation is being performed. - - - - - A row is being deleted from the given database and table - - - - - A row is being inserted into the table. - - - - - A row is being updated in the table. - - - - - Passed during an Update callback, these event arguments detail the type of update operation being performed - on the given connection. - - - - - The name of the database being updated (usually "main" but can be any attached or temporary database) - - - - - The name of the table being updated - - - - - The type of update being performed (insert/update/delete) - - - - - The RowId affected by this update. - - - - - Event arguments raised when a transaction is being committed - - - - - Set to true to abort the transaction and trigger a rollback - - - - - This abstract class is designed to handle user-defined functions easily. An instance of the derived class is made for each - connection to the database. - - - Although there is one instance of a class derived from SQLiteFunction per database connection, the derived class has no access - to the underlying connection. This is necessary to deter implementers from thinking it would be a good idea to make database - calls during processing. - - It is important to distinguish between a per-connection instance, and a per-SQL statement context. One instance of this class - services all SQL statements being stepped through on that connection, and there can be many. One should never store per-statement - information in member variables of user-defined function classes. - - For aggregate functions, always create and store your per-statement data in the contextData object on the 1st step. This data will - be automatically freed for you (and Dispose() called if the item supports IDisposable) when the statement completes. - - - - - The base connection this function is attached to - - - - - Internal array used to keep track of aggregate function context data - - - - - Holds a reference to the callback function for user functions - - - - - Holds a reference to the callbakc function for stepping in an aggregate function - - - - - Holds a reference to the callback function for finalizing an aggregate function - - - - - Holds a reference to the callback function for collation sequences - - - - - Current context of the current callback. Only valid during a callback - - - - - This static list contains all the user-defined functions declared using the proper attributes. - - - - - Internal constructor, initializes the function's internal variables. - - - - - Scalar functions override this method to do their magic. - - - Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available - to force them into a certain type. Therefore the only types you will ever see as parameters are - DBNull.Value, Int64, Double, String or byte[] array. - - The arguments for the command to process - You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or - you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, - just return it! - - - - Aggregate functions override this method to do their magic. - - - Typically you'll be updating whatever you've placed in the contextData field and returning as quickly as possible. - - The arguments for the command to process - The 1-based step number. This is incrememted each time the step method is called. - A placeholder for implementers to store contextual data pertaining to the current context. - - - - Aggregate functions override this method to finish their aggregate processing. - - - If you implemented your aggregate function properly, - you've been recording and keeping track of your data in the contextData object provided, and now at this stage you should have - all the information you need in there to figure out what to return. - NOTE: It is possible to arrive here without receiving a previous call to Step(), in which case the contextData will - be null. This can happen when no rows were returned. You can either return null, or 0 or some other custom return value - if that is the case. - - Your own assigned contextData, provided for you so you can return your final results. - You may return most simple types as a return value, null or DBNull.Value to return null, DateTime, or - you may return an Exception-derived class if you wish to return an error to SQLite. Do not actually throw the error, - just return it! - - - - - User-defined collation sequences override this method to provide a custom string sorting algorithm. - - The first string to compare - The second strnig to compare - 1 if param1 is greater than param2, 0 if they are equal, or -1 if param1 is less than param2 - - - - Converts an IntPtr array of context arguments to an object array containing the resolved parameters the pointers point to. - - - Parameters passed to functions have only an affinity for a certain data type, there is no underlying schema available - to force them into a certain type. Therefore the only types you will ever see as parameters are - DBNull.Value, Int64, Double, String or byte[] array. - - The number of arguments - A pointer to the array of arguments - An object array of the arguments once they've been converted to .NET values - - - - Takes the return value from Invoke() and Final() and figures out how to return it to SQLite's context. - - The context the return value applies to - The parameter to return to SQLite - - - - Internal scalar callback function, which wraps the raw context pointer and calls the virtual Invoke() method. - - A raw context pointer - Number of arguments passed in - A pointer to the array of arguments - - - - Internal collation sequence function, which wraps up the raw string pointers and executes the Compare() virtual function. - - Not used - Length of the string pv1 - Pointer to the first string to compare - Length of the string pv2 - Pointer to the second string to compare - Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater - than the second. - - - - The internal aggregate Step function callback, which wraps the raw context pointer and calls the virtual Step() method. - - - This function takes care of doing the lookups and getting the important information put together to call the Step() function. - That includes pulling out the user's contextData and updating it after the call is made. We use a sorted list for this so - binary searches can be done to find the data. - - A raw context pointer - Number of arguments passed in - A pointer to the array of arguments - - - - An internal aggregate Final function callback, which wraps the context pointer and calls the virtual Final() method. - - A raw context pointer - - - - Placeholder for a user-defined disposal routine - - True if the object is being disposed explicitly - - - - Disposes of any active contextData variables that were not automatically cleaned up. Sometimes this can happen if - someone closes the connection while a DataReader is open. - - - - - Using reflection, enumerate all assemblies in the current appdomain looking for classes that - have a SQLiteFunctionAttribute attribute, and registering them accordingly. - - - - - Manual method of registering a function. The type must still have the SQLiteFunctionAttributes in order to work - properly, but this is a workaround for the Compact Framework where enumerating assemblies is not currently supported. - - The type of the function to register - - - - Called by SQLiteBase derived classes, this function binds all user-defined functions to a connection. - It is done this way so that all user-defined functions will access the database using the same encoding scheme - as the connection (UTF-8 or UTF-16). - - - The wrapper functions that interop with SQLite will create a unique cookie value, which internally is a pointer to - all the wrapped callback functions. The interop function uses it to map CDecl callbacks to StdCall callbacks. - - The base object on which the functions are to bind - Returns an array of functions which the connection object should retain until the connection is closed. - - - - Returns a reference to the underlying connection's SQLiteConvert class, which can be used to convert - strings and DateTime's into the current connection's encoding schema. - - - - - Extends SQLiteFunction and allows an inherited class to obtain the collating sequence associated with a function call. - - - User-defined functions can call the GetCollationSequence() method in this class and use it to compare strings and char arrays. - - - - - Obtains the collating sequence in effect for the given function. - - - - - - The type of user-defined function to declare - - - - - Scalar functions are designed to be called and return a result immediately. Examples include ABS(), Upper(), Lower(), etc. - - - - - Aggregate functions are designed to accumulate data until the end of a call and then return a result gleaned from the accumulated data. - Examples include SUM(), COUNT(), AVG(), etc. - - - - - Collation sequences are used to sort textual data in a custom manner, and appear in an ORDER BY clause. Typically text in an ORDER BY is - sorted using a straight case-insensitive comparison function. Custom collating sequences can be used to alter the behavior of text sorting - in a user-defined manner. - - - - - An internal callback delegate declaration. - - Raw context pointer for the user function - Count of arguments to the function - A pointer to the array of argument pointers - - - - An internal final callback delegate declaration. - - Raw context pointer for the user function - - - - Internal callback delegate for implementing collation sequences - - Not used - Length of the string pv1 - Pointer to the first string to compare - Length of the string pv2 - Pointer to the second string to compare - Returns -1 if the first string is less than the second. 0 if they are equal, or 1 if the first string is greater - than the second. - - - - The type of collating sequence - - - - - The built-in BINARY collating sequence - - - - - The built-in NOCASE collating sequence - - - - - The built-in REVERSE collating sequence - - - - - A custom user-defined collating sequence - - - - - The encoding type the collation sequence uses - - - - - The collation sequence is UTF8 - - - - - The collation sequence is UTF16 little-endian - - - - - The collation sequence is UTF16 big-endian - - - - - A struct describing the collating sequence a function is executing in - - - - - The name of the collating sequence - - - - - The type of collating sequence - - - - - The text encoding of the collation sequence - - - - - Context of the function that requested the collating sequence - - - - - Calls the base collating sequence to compare two strings - - The first string to compare - The second string to compare - -1 if s1 is less than s2, 0 if s1 is equal to s2, and 1 if s1 is greater than s2 - - - - Calls the base collating sequence to compare two character arrays - - The first array to compare - The second array to compare - -1 if c1 is less than c2, 0 if c1 is equal to c2, and 1 if c1 is greater than c2 - - - - SQLite implementation of DbProviderFactory. - - - SQLite implementation of DbProviderFactory. - - - - - Static instance member which returns an instanced SQLiteFactory class. - - - - - Returns a new SQLiteCommand object. - - A SQLiteCommand object. - - - - Returns a new SQLiteCommandBuilder object. - - A SQLiteCommandBuilder object. - - - - Creates a new SQLiteConnection. - - A SQLiteConnection object. - - - - Creates a new SQLiteConnectionStringBuilder. - - A SQLiteConnectionStringBuilder object. - - - - Creates a new SQLiteDataAdapter. - - A SQLiteDataAdapter object. - - - - Creates a new SQLiteParameter. - - A SQLiteParameter object. - - - - Will provide a DbProviderServices object in .NET 3.5 - - The class or interface type to query for - - - - - SQLite exception class. - - - - - Public constructor for generating a SQLite error given the base error code - - The SQLite error code to report - Extra text to go along with the error message text - - - - Various public constructors that just pass along to the base Exception - - Passed verbatim to Exception - - - - Various public constructors that just pass along to the base Exception - - - - - Various public constructors that just pass along to the base Exception - Passed to Exception - Passed to Exception - - - - - Initializes the exception class with the SQLite error code. - - The SQLite error code - A detailed error message - An error message string - - - - Retrieves the underlying SQLite error code for this exception - - - - - SQLite error codes - - - - - Success - - - - - SQL error or missing database - - - - - Internal logic error in SQLite - - - - - Access permission denied - - - - - Callback routine requested an abort - - - - - The database file is locked - - - - - A table in the database is locked - - - - - malloc() failed - - - - - Attempt to write a read-only database - - - - - Operation terminated by sqlite3_interrupt() - - - - - Some kind of disk I/O error occurred - - - - - The database disk image is malformed - - - - - Table or record not found - - - - - Insertion failed because database is full - - - - - Unable to open the database file - - - - - Database lock protocol error - - - - - Database is empty - - - - - The database schema changed - - - - - Too much data for one row of a table - - - - - Abort due to constraint violation - - - - - Data type mismatch - - - - - Library used incorrectly - - - - - Uses OS features not supported on host - - - - - Authorization denied - - - - - Auxiliary database format error - - - - - 2nd parameter to sqlite3_bind out of range - - - - - File opened that is not a database file - - - - - sqlite3_step() has another row ready - - - - - sqlite3_step() has finished executing - - - - - This internal class provides the foundation of SQLite support. It defines all the abstract members needed to implement - a SQLite data provider, and inherits from SQLiteConvert which allows for simple translations of string to and from SQLite. - - - - - This base class provides datatype conversion services for the SQLite provider. - - - - - An array of ISO8601 datetime formats we support conversion from - - - - - An UTF-8 Encoding instance, so we can convert strings to and from UTF-8 - - - - - The default DateTime format for this instance - - - - - Initializes the conversion class - - The default date/time format to use for this instance - - - - Converts a string to a UTF-8 encoded byte array sized to include a null-terminating character. - - The string to convert to UTF-8 - A byte array containing the converted string plus an extra 0 terminating byte at the end of the array. - - - - Convert a DateTime to a UTF-8 encoded, zero-terminated byte array. - - - This function is a convenience function, which first calls ToString() on the DateTime, and then calls ToUTF8() with the - string result. - - The DateTime to convert. - The UTF-8 encoded string, including a 0 terminating byte at the end of the array. - - - - Converts a UTF-8 encoded IntPtr of the specified length into a .NET string - - The pointer to the memory where the UTF-8 string is encoded - The number of bytes to decode - A string containing the translated character(s) - - - - Converts a UTF-8 encoded IntPtr of the specified length into a .NET string - - The pointer to the memory where the UTF-8 string is encoded - The number of bytes to decode - A string containing the translated character(s) - - - - Converts a string into a DateTime, using the current DateTimeFormat specified for the connection when it was opened. - - - Acceptable ISO8601 DateTime formats are: - yyyy-MM-dd HH:mm:ss - yyyyMMddHHmmss - yyyyMMddTHHmmssfffffff - yyyy-MM-dd - yy-MM-dd - yyyyMMdd - HH:mm:ss - THHmmss - - The string containing either a Tick value, a JulianDay double, or an ISO8601-format string - A DateTime value - - - - Converts a julianday value into a DateTime - - The value to convert - A .NET DateTime - - - - Converts a DateTime struct to a JulianDay double - - The DateTime to convert - The JulianDay value the Datetime represents - - - - Converts a DateTime to a string value, using the current DateTimeFormat specified for the connection when it was opened. - - The DateTime value to convert - Either a string consisting of the tick count for DateTimeFormat.Ticks, a JulianDay double, or a date/time in ISO8601 format. - - - - Internal function to convert a UTF-8 encoded IntPtr of the specified length to a DateTime. - - - This is a convenience function, which first calls ToString() on the IntPtr to convert it to a string, then calls - ToDateTime() on the string to return a DateTime. - - A pointer to the UTF-8 encoded string - The length in bytes of the string - The parsed DateTime value - - - - Smart method of splitting a string. Skips quoted elements, removes the quotes. - - - This split function works somewhat like the String.Split() function in that it breaks apart a string into - pieces and returns the pieces as an array. The primary differences are: - - Only one character can be provided as a separator character - Quoted text inside the string is skipped over when searching for the separator, and the quotes are removed. - - Thus, if splitting the following string looking for a comma:
    - One,Two, "Three, Four", Five
    -
    - The resulting array would contain
    - [0] One
    - [1] Two
    - [2] Three, Four
    - [3] Five
    -
    - Note that the leading and trailing spaces were removed from each item during the split. -
    - Source string to split apart - Separator character - A string array of the split up elements -
    - - - Convert a value to true or false. - - A string or number representing true or false - - - - - Convert a string to true or false. - - A string representing true or false - - - "yes", "no", "y", "n", "0", "1", "on", "off" as well as Boolean.FalseString and Boolean.TrueString will all be - converted to a proper boolean value. - - - - - Determines the data type of a column in a statement - - The statement to retrieve information for - The column to retrieve type information on - The SQLiteType to receive the affinity for the given column - - - - Converts a SQLiteType to a .NET Type object - - The SQLiteType to convert - Returns a .NET Type object - - - - For a given intrinsic type, return a DbType - - The native type to convert - The corresponding (closest match) DbType - - - - Returns the ColumnSize for the given DbType - - The DbType to get the size of - - - - - Convert a DbType to a Type - - The DbType to convert from - The closest-match .NET type - - - - For a given type, return the closest-match SQLite TypeAffinity, which only understands a very limited subset of types. - - The type to evaluate - The SQLite type affinity for that type. - - - - For a given type name, return a closest-match .NET type - - The name of the type to match - The .NET DBType the text evaluates to. - - - - Opens a database. - - - Implementers should call SQLiteFunction.BindFunctions() and save the array after opening a connection - to bind all attributed user-defined functions and collating sequences to the new connection. - - The filename of the database to open. SQLite automatically creates it if it doesn't exist. - The open flags to use when creating the connection - The maximum size of the pool for the given filename - If true, the connection can be pulled from the connection pool - - - - Closes the currently-open database. - - - After the database has been closed implemeters should call SQLiteFunction.UnbindFunctions() to deallocate all interop allocated - memory associated with the user-defined functions and collating sequences tied to the closed connection. - - - - - Sets the busy timeout on the connection. SQLiteCommand will call this before executing any command. - - The number of milliseconds to wait before returning SQLITE_BUSY - - - - Returns the text of the last error issued by SQLite - - - - - - When pooling is enabled, force this connection to be disposed rather than returned to the pool - - - - - Prepares a SQL statement for execution. - - The source connection preparing the command. Can be null for any caller except LINQ - The SQL command text to prepare - The previous statement in a multi-statement command, or null if no previous statement exists - The timeout to wait before aborting the prepare - The remainder of the statement that was not processed. Each call to prepare parses the - SQL up to to either the end of the text or to the first semi-colon delimiter. The remaining text is returned - here for a subsequent call to Prepare() until all the text has been processed. - Returns an initialized SQLiteStatement. - - - - Steps through a prepared statement. - - The SQLiteStatement to step through - True if a row was returned, False if not. - - - - Resets a prepared statement so it can be executed again. If the error returned is SQLITE_SCHEMA, - transparently attempt to rebuild the SQL statement and throw an error if that was not possible. - - The statement to reset - Returns -1 if the schema changed while resetting, 0 if the reset was sucessful or 6 (SQLITE_LOCKED) if the reset failed due to a lock - - - - Returns a string representing the active version of SQLite - - - - - Returns the number of changes the last executing insert/update caused. - - - - - SQLite has very limited types, and is inherently text-based. The first 5 types below represent the sum of all types SQLite - understands. The DateTime extension to the spec is for internal use only. - - - - - Not used - - - - - All integers in SQLite default to Int64 - - - - - All floating point numbers in SQLite default to double - - - - - The default data type of SQLite is text - - - - - Typically blob types are only seen when returned from a function - - - - - Null types can be returned from functions - - - - - Used internally by this provider - - - - - Used internally - - - - - This implementation of SQLite for ADO.NET can process date/time fields in databases in only one of three formats. Ticks, ISO8601 - and JulianDay. - - - ISO8601 is more compatible, readable, fully-processable, but less accurate as it doesn't provide time down to fractions of a second. - JulianDay is the numeric format the SQLite uses internally and is arguably the most compatible with 3rd party tools. It is - not readable as text without post-processing. - Ticks less compatible with 3rd party tools that query the database, and renders the DateTime field unreadable as text without post-processing. - - The preferred order of choosing a datetime format is JulianDay, ISO8601, and then Ticks. Ticks is mainly present for legacy - code support. - - - - - Using ticks is not recommended and is not well supported with LINQ. - - - - - The default format for this provider. - - - - - JulianDay format, which is what SQLite uses internally - - - - - This enum determines how SQLite treats its journal file. - - - By default SQLite will create and delete the journal file when needed during a transaction. - However, for some computers running certain filesystem monitoring tools, the rapid - creation and deletion of the journal file can cause those programs to fail, or to interfere with SQLite. - - If a program or virus scanner is interfering with SQLite's journal file, you may receive errors like "unable to open database file" - when starting a transaction. If this is happening, you may want to change the default journal mode to Persist. - - - - - The default mode, this causes SQLite to create and destroy the journal file as-needed. - - - - - When this is set, SQLite will keep the journal file even after a transaction has completed. It's contents will be erased, - and the journal re-used as often as needed. If it is deleted, it will be recreated the next time it is needed. - - - - - This option disables the rollback journal entirely. Interrupted transactions or a program crash can cause database - corruption in this mode! - - - - - Struct used internally to determine the datatype of a column in a resultset - - - - - The DbType of the column, or DbType.Object if it cannot be determined - - - - - The affinity of a column, used for expressions or when Type is DbType.Object - - - - - Represents a single SQL statement in SQLite. - - - - - The underlying SQLite object this statement is bound to - - - - - The command text of this SQL statement - - - - - The actual statement pointer - - - - - An index from which unnamed parameters begin - - - - - Names of the parameters as SQLite understands them to be - - - - - Parameters for this statement - - - - - Command this statement belongs to (if any) - - - - - Initializes the statement and attempts to get all information about parameters in the statement - - The base SQLite object - The statement - The command text for this statement - The previous command in a multi-statement command - - - - Called by SQLiteParameterCollection, this function determines if the specified parameter name belongs to - this statement, and if so, keeps a reference to the parameter so it can be bound later. - - The parameter name to map - The parameter to assign it - - - - Disposes and finalizes the statement - - - - - Bind all parameters, making sure the caller didn't miss any - - - - - Perform the bind operation for an individual parameter - - The index of the parameter to bind - The parameter we're binding - - - - SQLite implementation of DbDataReader. - - - - - Underlying command this reader is attached to - - - - - Index of the current statement in the command being processed - - - - - Current statement being Read() - - - - - State of the current statement being processed. - -1 = First Step() executed, so the first Read() will be ignored - 0 = Actively reading - 1 = Finished reading - 2 = Non-row-returning statement, no records - - - - - Number of records affected by the insert/update statements executed on the command - - - - - Count of fields (columns) in the row-returning statement currently being processed - - - - - Datatypes of active fields (columns) in the current statement, used for type-restricting data - - - - - The behavior of the datareader - - - - - If set, then dispose of the command object when the reader is finished - - - - - An array of rowid's for the active statement if CommandBehavior.KeyInfo is specified - - - - - Internal constructor, initializes the datareader and sets up to begin executing statements - - The SQLiteCommand this data reader is for - The expected behavior of the data reader - - - - Closes the datareader, potentially closing the connection as well if CommandBehavior.CloseConnection was specified. - - - - - Throw an error if the datareader is closed - - - - - Throw an error if a row is not loaded - - - - - Enumerator support - - Returns a DbEnumerator object. - - - - SQLite is inherently un-typed. All datatypes in SQLite are natively strings. The definition of the columns of a table - and the affinity of returned types are all we have to go on to type-restrict data in the reader. - - This function attempts to verify that the type of data being requested of a column matches the datatype of the column. In - the case of columns that are not backed into a table definition, we attempt to match up the affinity of a column (int, double, string or blob) - to a set of known types that closely match that affinity. It's not an exact science, but its the best we can do. - - - This function throws an InvalidTypeCast() exception if the requested type doesn't match the column's definition or affinity. - - The index of the column to type-check - The type we want to get out of the column - - - - Retrieves the column as a boolean value - - The index of the column to retrieve - bool - - - - Retrieves the column as a single byte value - - The index of the column to retrieve - byte - - - - Retrieves a column as an array of bytes (blob) - - The index of the column to retrieve - The zero-based index of where to begin reading the data - The buffer to write the bytes into - The zero-based index of where to begin writing into the array - The number of bytes to retrieve - The actual number of bytes written into the array - - To determine the number of bytes in the column, pass a null value for the buffer. The total length will be returned. - - - - - Returns the column as a single character - - The index of the column to retrieve - char - - - - Retrieves a column as an array of chars (blob) - - The index of the column to retrieve - The zero-based index of where to begin reading the data - The buffer to write the characters into - The zero-based index of where to begin writing into the array - The number of bytes to retrieve - The actual number of characters written into the array - - To determine the number of characters in the column, pass a null value for the buffer. The total length will be returned. - - - - - Retrieves the name of the back-end datatype of the column - - The index of the column to retrieve - string - - - - Retrieve the column as a date/time value - - The index of the column to retrieve - DateTime - - - - Retrieve the column as a decimal value - - The index of the column to retrieve - decimal - - - - Returns the column as a double - - The index of the column to retrieve - double - - - - Returns the .NET type of a given column - - The index of the column to retrieve - Type - - - - Returns a column as a float value - - The index of the column to retrieve - float - - - - Returns the column as a Guid - - The index of the column to retrieve - Guid - - - - Returns the column as a short - - The index of the column to retrieve - Int16 - - - - Retrieves the column as an int - - The index of the column to retrieve - Int32 - - - - Retrieves the column as a long - - The index of the column to retrieve - Int64 - - - - Retrieves the name of the column - - The index of the column to retrieve - string - - - - Retrieves the i of a column, given its name - - The name of the column to retrieve - The int i of the column - - - - Schema information in SQLite is difficult to map into .NET conventions, so a lot of work must be done - to gather the necessary information so it can be represented in an ADO.NET manner. - - Returns a DataTable containing the schema information for the active SELECT statement being processed. - - - - Retrieves the column as a string - - The index of the column to retrieve - string - - - - Retrieves the column as an object corresponding to the underlying datatype of the column - - The index of the column to retrieve - object - - - - Retreives the values of multiple columns, up to the size of the supplied array - - The array to fill with values from the columns in the current resultset - The number of columns retrieved - - - - Returns True if the specified column is null - - The index of the column to retrieve - True or False - - - - Moves to the next resultset in multiple row-returning SQL command. - - True if the command was successful and a new resultset is available, False otherwise. - - - - Retrieves the SQLiteType for a given column, and caches it to avoid repetetive interop calls. - - The index of the column to retrieve - A SQLiteType structure - - - - Reads the next row from the resultset - - True if a new row was successfully loaded and is ready for processing - - - - Not implemented. Returns 0 - - - - - Returns the number of columns in the current resultset - - - - - Returns the number of visible fielsd in the current resultset - - - - - Returns True if the resultset has rows that can be fetched - - - - - Returns True if the data reader is closed - - - - - Retrieve the count of records affected by an update/insert command. Only valid once the data reader is closed! - - - - - Indexer to retrieve data from a column given its name - - The name of the column to retrieve data for - The value contained in the column - - - - Indexer to retrieve data from a column given its i - - The index of the column to retrieve - The value contained in the column - - - - SQLite implementation of DbDataAdapter. - - - - - This class is just a shell around the DbDataAdapter. Nothing from DbDataAdapter is overridden here, just a few constructors are defined. - - - Default constructor. - - - - - Constructs a data adapter using the specified select command. - - The select command to associate with the adapter. - - - - Constructs a data adapter with the supplied select command text and associated with the specified connection. - - The select command text to associate with the data adapter. - The connection to associate with the select command. - - - - Constructs a data adapter with the specified select command text, and using the specified database connection string. - - The select command text to use to construct a select command. - A connection string suitable for passing to a new SQLiteConnection, which is associated with the select command. - - - - Raised by the underlying DbDataAdapter when a row is being updated - - The event's specifics - - - - Raised by DbDataAdapter after a row is updated - - The event's specifics - - - - Row updating event handler - - - - - Row updated event handler - - - - - Gets/sets the select command for this DataAdapter - - - - - Gets/sets the insert command for this DataAdapter - - - - - Gets/sets the update command for this DataAdapter - - - - - Gets/sets the delete command for this DataAdapter - - - - - SQLite implementation of DbTransaction. - - - - - The connection to which this transaction is bound - - - - - Constructs the transaction object, binding it to the supplied connection - - The connection to open a transaction on - TRUE to defer the writelock, or FALSE to lock immediately - - - - Commits the current transaction. - - - - - Disposes the transaction. If it is currently active, any changes are rolled back. - - - - - Rolls back the active transaction. - - - - - Returns the underlying connection to which this transaction applies. - - - - - Forwards to the local Connection property - - - - - Gets the isolation level of the transaction. SQLite only supports Serializable transactions. - - - - - SQLite implementation of DbParameterCollection. - - - - - The underlying command to which this collection belongs - - - - - The internal array of parameters in this collection - - - - - Determines whether or not all parameters have been bound to their statement(s) - - - - - Initializes the collection - - The command to which the collection belongs - - - - Retrieves an enumerator for the collection - - An enumerator for the underlying array - - - - Adds a parameter to the collection - - The parameter name - The data type - The size of the value - The source column - A SQLiteParameter object - - - - Adds a parameter to the collection - - The parameter name - The data type - The size of the value - A SQLiteParameter object - - - - Adds a parameter to the collection - - The parameter name - The data type - A SQLiteParameter object - - - - Adds a parameter to the collection - - The parameter to add - A zero-based index of where the parameter is located in the array - - - - Adds a parameter to the collection - - The parameter to add - A zero-based index of where the parameter is located in the array - - - - Adds a named/unnamed parameter and its value to the parameter collection. - - Name of the parameter, or null to indicate an unnamed parameter - The initial value of the parameter - Returns the SQLiteParameter object created during the call. - - - - Adds an array of parameters to the collection - - The array of parameters to add - - - - Adds an array of parameters to the collection - - The array of parameters to add - - - - Clears the array and resets the collection - - - - - Determines if the named parameter exists in the collection - - The name of the parameter to check - True if the parameter is in the collection - - - - Determines if the parameter exists in the collection - - The SQLiteParameter to check - True if the parameter is in the collection - - - - Not implemented - - - - - - - Retrieve a parameter by name from the collection - - The name of the parameter to fetch - A DbParameter object - - - - Retrieves a parameter by its index in the collection - - The index of the parameter to retrieve - A DbParameter object - - - - Returns the index of a parameter given its name - - The name of the parameter to find - -1 if not found, otherwise a zero-based index of the parameter - - - - Returns the index of a parameter - - The parameter to find - -1 if not found, otherwise a zero-based index of the parameter - - - - Inserts a parameter into the array at the specified location - - The zero-based index to insert the parameter at - The parameter to insert - - - - Removes a parameter from the collection - - The parameter to remove - - - - Removes a parameter from the collection given its name - - The name of the parameter to remove - - - - Removes a parameter from the collection given its index - - The zero-based parameter index to remove - - - - Re-assign the named parameter to a new parameter object - - The name of the parameter to replace - The new parameter - - - - Re-assign a parameter at the specified index - - The zero-based index of the parameter to replace - The new parameter - - - - Un-binds all parameters from their statements - - - - - This function attempts to map all parameters in the collection to all statements in a Command. - Since named parameters may span multiple statements, this function makes sure all statements are bound - to the same named parameter. Unnamed parameters are bound in sequence. - - - - - Returns true - - - - - Returns false - - - - - Returns false - - - - - Returns null - - - - - Returns a count of parameters in the collection - - - - - Overloaded to specialize the return value of the default indexer - - Name of the parameter to get/set - The specified named SQLite parameter - - - - Overloaded to specialize the return value of the default indexer - - The index of the parameter to get/set - The specified SQLite parameter - - - - This class provides key info for a given SQLite statement. - - Providing key information for a given statement is non-trivial :( - - - - - - This function does all the nasty work at determining what keys need to be returned for - a given statement. - - - - - - - - Make sure all the subqueries are open and ready and sync'd with the current rowid - of the table they're supporting - - - - - Release any readers on any subqueries - - - - - Append all the columns we've added to the original query to the schema - - - - - - How many additional columns of keyinfo we're holding - - - - - Used to support CommandBehavior.KeyInfo - - - - - A single sub-query for a given table/database. - - - - - SQLite implementation of DbCommand. - - - - - The command text this command is based on - - - - - The connection the command is associated with - - - - - The version of the connection the command is associated with - - - - - Indicates whether or not a DataReader is active on the command. - - - - - The timeout for the command, kludged because SQLite doesn't support per-command timeout values - - - - - Designer support - - - - - Used by DbDataAdapter to determine updating behavior - - - - - The collection of parameters for the command - - - - - The SQL command text, broken into individual SQL statements as they are executed - - - - - Unprocessed SQL text that has not been executed - - - - - Transaction associated with this command - - - - - Constructs a new SQLiteCommand - - - Default constructor - - - - - Initializes the command with the given command text - - The SQL command text - - - - Initializes the command with the given SQL command text and attach the command to the specified - connection. - - The SQL command text - The connection to associate with the command - - - - Initializes the command and associates it with the specified connection. - - The connection to associate with the command - - - - Initializes a command with the given SQL, connection and transaction - - The SQL command text - The connection to associate with the command - The transaction the command should be associated with - - - - Disposes of the command and clears all member variables - - Whether or not the class is being explicitly or implicitly disposed - - - - Clears and destroys all statements currently prepared - - - - - Builds an array of prepared statements for each complete SQL statement in the command text - - - - - Not implemented - - - - - Forwards to the local CreateParameter() function - - - - - - Create a new parameter - - - - - - This function ensures there are no active readers, that we have a valid connection, - that the connection is open, that all statements are prepared and all parameters are assigned - in preparation for allocating a data reader. - - - - - Creates a new SQLiteDataReader to execute/iterate the array of SQLite prepared statements - - The behavior the data reader should adopt - Returns a SQLiteDataReader object - - - - Overrides the default behavior to return a SQLiteDataReader specialization class - - The flags to be associated with the reader - A SQLiteDataReader - - - - Overrides the default behavior of DbDataReader to return a specialized SQLiteDataReader class - - A SQLiteDataReader - - - - Called by the SQLiteDataReader when the data reader is closed. - - - - - Execute the command and return the number of rows inserted/updated affected by it. - - - - - - Execute the command and return the first column of the first row of the resultset - (if present), or null if no resultset was returned. - - The first column of the first row of the first resultset from the query - - - - Does nothing. Commands are prepared as they are executed the first time, and kept in prepared state afterwards. - - - - - Clones a command, including all its parameters - - A new SQLiteCommand with the same commandtext, connection and parameters - - - - The SQL command text associated with the command - - - - - The amount of time to wait for the connection to become available before erroring out - - - - - The type of the command. SQLite only supports CommandType.Text - - - - - The connection associated with this command - - - - - Forwards to the local Connection property - - - - - Returns the SQLiteParameterCollection for the given command - - - - - Forwards to the local Parameters property - - - - - The transaction associated with this command. SQLite only supports one transaction per connection, so this property forwards to the - command's underlying connection. - - - - - Forwards to the local Transaction property - - - - - Sets the method the SQLiteCommandBuilder uses to determine how to update inserted or updated rows in a DataTable. - - - - - Determines if the command is visible at design time. Defaults to True. - - - - - A simple custom attribute to enable us to easily find user-defined functions in - the loaded assemblies and initialize them in SQLite as connections are made. - - - - - Default constructor, initializes the internal variables for the function. - - - - - The function's name as it will be used in SQLite command text. - - - - - The number of arguments this function expects. -1 if the number of arguments is variable. - - - - - The type of function this implementation will be. - - - - - This class implements SQLiteBase completely, and is the guts of the code that interop's SQLite with .NET - - - - - The opaque pointer returned to us by the sqlite provider - - - - - The user-defined functions registered on this connection - - - - - Helper function to retrieve a column of data from an active statement. - - The statement being step()'d through - The column index to retrieve - The type of data contained in the column. If Uninitialized, this function will retrieve the datatype information. - Returns the data in the column - - - - Alternate SQLite3 object, overriding many text behaviors to support UTF-16 (Unicode) - - - - - Overrides SQLiteConvert.ToString() to marshal UTF-16 strings instead of UTF-8 - - A pointer to a UTF-16 string - The length (IN BYTES) of the string - A .NET string - - - - SQLite implementation of DbParameter. - - - - - The data type of the parameter - - - - - The version information for mapping the parameter - - - - - The value of the data in the parameter - - - - - The source column for the parameter - - - - - The column name - - - - - The data size, unused by SQLite - - - - - Default constructor - - - - - Constructs a named parameter given the specified parameter name - - The parameter name - - - - Constructs a named parameter given the specified parameter name and initial value - - The parameter name - The initial value of the parameter - - - - Constructs a named parameter of the specified type - - The parameter name - The datatype of the parameter - - - - Constructs a named parameter of the specified type and source column reference - - The parameter name - The data type - The source column - - - - Constructs a named parameter of the specified type, source column and row version - - The parameter name - The data type - The source column - The row version information - - - - Constructs an unnamed parameter of the specified data type - - The datatype of the parameter - - - - Constructs an unnamed parameter of the specified data type and sets the initial value - - The datatype of the parameter - The initial value of the parameter - - - - Constructs an unnamed parameter of the specified data type and source column - - The datatype of the parameter - The source column - - - - Constructs an unnamed parameter of the specified data type, source column and row version - - The data type - The source column - The row version information - - - - Constructs a named parameter of the specified type and size - - The parameter name - The data type - The size of the parameter - - - - Constructs a named parameter of the specified type, size and source column - - The name of the parameter - The data type - The size of the parameter - The source column - - - - Constructs a named parameter of the specified type, size, source column and row version - - The name of the parameter - The data type - The size of the parameter - The source column - The row version information - - - - Constructs a named parameter of the specified type, size, source column and row version - - The name of the parameter - The data type - The size of the parameter - Only input parameters are supported in SQLite - Ignored - Ignored - Ignored - The source column - The row version information - The initial value to assign the parameter - - - - Constructs a named parameter, yet another flavor - - The name of the parameter - The data type - The size of the parameter - Only input parameters are supported in SQLite - Ignored - Ignored - The source column - The row version information - Whether or not this parameter is for comparing NULL's - The intial value to assign the parameter - - - - Constructs an unnamed parameter of the specified type and size - - The data type - The size of the parameter - - - - Constructs an unnamed parameter of the specified type, size, and source column - - The data type - The size of the parameter - The source column - - - - Constructs an unnamed parameter of the specified type, size, source column and row version - - The data type - The size of the parameter - The source column - The row version information - - - - Resets the DbType of the parameter so it can be inferred from the value - - - - - Clones a parameter - - A new, unassociated SQLiteParameter - - - - Whether or not the parameter can contain a null value - - - - - Returns the datatype of the parameter - - - - - Supports only input parameters - - - - - Returns the parameter name - - - - - Returns the size of the parameter - - - - - Gets/sets the source column - - - - - Used by DbCommandBuilder to determine the mapping for nullable fields - - - - - Gets and sets the row version - - - - - Gets and sets the parameter value. If no datatype was specified, the datatype will assume the type from the value given. - - -
    -
    diff --git a/WebGoat/lib/System.Data.SQLite.dll b/WebGoat/lib/System.Data.SQLite.dll deleted file mode 100644 index 9e5a0277f..000000000 Binary files a/WebGoat/lib/System.Data.SQLite.dll and /dev/null differ diff --git a/WebGoat/lib/log4net.dll b/WebGoat/lib/log4net.dll deleted file mode 100755 index a366176d2..000000000 Binary files a/WebGoat/lib/log4net.dll and /dev/null differ diff --git a/WebGoat/lib/log4net.xml b/WebGoat/lib/log4net.xml deleted file mode 100755 index 17fe47ad3..000000000 --- a/WebGoat/lib/log4net.xml +++ /dev/null @@ -1,29056 +0,0 @@ - - - - /home/stefan/dev/ASF/log4net/tags/1.2.11RC1/bin/mono/2.0/release/log4net - - - - - Appender that logs to a database. - - - - appends logging events to a table within a - database. The appender can be configured to specify the connection - string by setting the property. - The connection type (provider) can be specified by setting the - property. For more information on database connection strings for - your specific database see http://www.connectionstrings.com/. - - - Records are written into the database either using a prepared - statement or a stored procedure. The property - is set to (System.Data.CommandType.Text) to specify a prepared statement - or to (System.Data.CommandType.StoredProcedure) to specify a stored - procedure. - - - The prepared statement text or the name of the stored procedure - must be set in the property. - - - The prepared statement or stored procedure can take a number - of parameters. Parameters are added using the - method. This adds a single to the - ordered list of parameters. The - type may be subclassed if required to provide database specific - functionality. The specifies - the parameter name, database type, size, and how the value should - be generated using a . - - - - An example of a SQL Server table that could be logged to: - - CREATE TABLE [dbo].[Log] ( - [ID] [int] IDENTITY (1, 1) NOT NULL , - [Date] [datetime] NOT NULL , - [Thread] [varchar] (255) NOT NULL , - [Level] [varchar] (20) NOT NULL , - [Logger] [varchar] (255) NOT NULL , - [Message] [varchar] (4000) NOT NULL - ) ON [PRIMARY] - - - An example configuration to log to the above table: - - Julian Biddle - Nicko Cadell - Gert Driesen - Lance Nehring - - - - Initializes a new instance of the class. - - - Public default constructor to initialize a new instance of this class. - - - - - Flag to indicate if we are using a command object - - - - Set to true when the appender is to use a prepared - statement or stored procedure to insert into the database. - - - - - - The list of objects. - - - - The list of objects. - - - - - - The security context to use for privileged calls - - - - - The that will be used - to insert logging events into a database. - - - - - The database command. - - - - - Database connection string. - - - - - The appSettings key from App.Config that contains the connection string. - - - - - String type name of the type name. - - - - - The text of the command. - - - - - The command type. - - - - - Indicates whether to use transactions when writing to the database. - - - - - Indicates whether to use transactions when writing to the database. - - - - - The fully qualified type of the AdoNetAppender class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets or sets the database connection string that is used to connect to - the database. - - - The database connection string used to connect to the database. - - - - The connections string is specific to the connection type. - See for more information. - - - Connection string for MS Access via ODBC: - "DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb" - Another connection string for MS Access via ODBC: - "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;" - Connection string for MS Access via OLE DB: - "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;" - - - - The appSettings key from App.Config that contains the connection string. - - - - - Gets or sets the type name of the connection - that should be created. - - - The type name of the connection. - - - - The type name of the ADO.NET provider to use. - - - The default is to use the OLE DB provider. - - - Use the OLE DB Provider. This is the default value. - System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Use the MS SQL Server Provider. - System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Use the ODBC Provider. - Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral - This is an optional package that you can download from - http://msdn.microsoft.com/downloads - search for ODBC .NET Data Provider. - - Use the Oracle Provider. - System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - This is an optional package that you can download from - http://msdn.microsoft.com/downloads - search for .NET Managed Provider for Oracle. - - - - - Gets or sets the command text that is used to insert logging events - into the database. - - - The command text used to insert logging events into the database. - - - - Either the text of the prepared statement or the - name of the stored procedure to execute to write into - the database. - - - The property determines if - this text is a prepared statement or a stored procedure. - - - - - - Gets or sets the command type to execute. - - - The command type to execute. - - - - This value may be either (System.Data.CommandType.Text) to specify - that the is a prepared statement to execute, - or (System.Data.CommandType.StoredProcedure) to specify that the - property is the name of a stored procedure - to execute. - - - The default value is (System.Data.CommandType.Text). - - - - - - Should transactions be used to insert logging events in the database. - - - true if transactions should be used to insert logging events in - the database, otherwise false. The default value is true. - - - - Gets or sets a value that indicates whether transactions should be used - to insert logging events in the database. - - - When set a single transaction will be used to insert the buffered events - into the database. Otherwise each event will be inserted without using - an explicit transaction. - - - - - - Gets or sets the used to call the NetSend method. - - - The used to call the NetSend method. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - Should this appender try to reconnect to the database on error. - - - true if the appender should try to reconnect to the database after an - error has occurred, otherwise false. The default value is false, - i.e. not to try to reconnect. - - - - The default behaviour is for the appender not to try to reconnect to the - database if an error occurs. Subsequent logging events are discarded. - - - To force the appender to attempt to reconnect to the database set this - property to true. - - - When the appender attempts to connect to the database there may be a - delay of up to the connection timeout specified in the connection string. - This delay will block the calling application's thread. - Until the connection can be reestablished this potential delay may occur multiple times. - - - - - - Gets or sets the underlying . - - - The underlying . - - - creates a to insert - logging events into a database. Classes deriving from - can use this property to get or set this . Use the - underlying returned from if - you require access beyond that which provides. - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Override the parent method to close the database - - - - Closes the database command and database connection. - - - - - - Inserts the events into the database. - - The events to insert into the database. - - - Insert all the events specified in the - array into the database. - - - - - - Adds a parameter to the command. - - The parameter to add to the command. - - - Adds a parameter to the ordered list of command parameters. - - - - - - Writes the events to the database using the transaction specified. - - The transaction that the events will be executed under. - The array of events to insert into the database. - - - The transaction argument can be null if the appender has been - configured not to use transactions. See - property for more information. - - - - - - Formats the log message into database statement text. - - The event being logged. - - This method can be overridden by subclasses to provide - more control over the format of the database statement. - - - Text that can be passed to a . - - - - - Creates an instance used to connect to the database. - - - This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary). - - The of the object. - The connectionString output from the ResolveConnectionString method. - An instance with a valid connection string. - - - - Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey - property. - - - ConnectiongStringName is only supported on .NET 2.0 and higher. - - Additional information describing the connection string. - A connection string used to connect to the database. - - - - Retrieves the class type of the ADO.NET provider. - - - - Gets the Type of the ADO.NET provider to use to connect to the - database. This method resolves the type specified in the - property. - - - Subclasses can override this method to return a different type - if necessary. - - - The of the ADO.NET provider - - - - Prepares the database command and initialize the parameters. - - - - - Connects to the database. - - - - - Cleanup the existing command. - - - If true, a message will be written using LogLog.Warn if an exception is encountered when calling Dispose. - - - - - Cleanup the existing connection. - - - Calls the IDbConnection's method. - - - - - Parameter type used by the . - - - - This class provides the basic database parameter properties - as defined by the interface. - - This type can be subclassed to provide database specific - functionality. The two methods that are called externally are - and . - - - - - - Initializes a new instance of the class. - - - Default constructor for the AdoNetAppenderParameter class. - - - - - The name of this parameter. - - - - - The database type for this parameter. - - - - - Flag to infer type rather than use the DbType - - - - - The precision for this parameter. - - - - - The scale for this parameter. - - - - - The size for this parameter. - - - - - The to use to render the - logging event into an object for this parameter. - - - - - Gets or sets the name of this parameter. - - - The name of this parameter. - - - - The name of this parameter. The parameter name - must match up to a named parameter to the SQL stored procedure - or prepared statement. - - - - - - Gets or sets the database type for this parameter. - - - The database type for this parameter. - - - - The database type for this parameter. This property should - be set to the database type from the - enumeration. See . - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the type from the value. - - - - - - - Gets or sets the precision for this parameter. - - - The precision for this parameter. - - - - The maximum number of digits used to represent the Value. - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the precision from the value. - - - - - - - Gets or sets the scale for this parameter. - - - The scale for this parameter. - - - - The number of decimal places to which Value is resolved. - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the scale from the value. - - - - - - - Gets or sets the size for this parameter. - - - The size for this parameter. - - - - The maximum size, in bytes, of the data within the column. - - - This property is optional. If not specified the ADO.NET provider - will attempt to infer the size from the value. - - - - - - - Gets or sets the to use to - render the logging event into an object for this - parameter. - - - The used to render the - logging event into an object for this parameter. - - - - The that renders the value for this - parameter. - - - The can be used to adapt - any into a - for use in the property. - - - - - - Prepare the specified database command object. - - The command to prepare. - - - Prepares the database command object by adding - this parameter to its collection of parameters. - - - - - - Renders the logging event and set the parameter value in the command. - - The command containing the parameter. - The event to be rendered. - - - Renders the logging event using this parameters layout - object. Sets the value of the parameter on the command object. - - - - - - Appends logging events to the terminal using ANSI color escape sequences. - - - - AnsiColorTerminalAppender appends log events to the standard output stream - or the error output stream using a layout specified by the - user. It also allows the color of a specific level of message to be set. - - - This appender expects the terminal to understand the VT100 control set - in order to interpret the color codes. If the terminal or console does not - understand the control codes the behavior is not defined. - - - By default, all output is written to the console's standard output stream. - The property can be set to direct the output to the - error stream. - - - NOTE: This appender writes each message to the System.Console.Out or - System.Console.Error that is set at the time the event is appended. - Therefore it is possible to programmatically redirect the output of this appender - (for example NUnit does this to capture program output). While this is the desired - behavior of this appender it may have security implications in your application. - - - When configuring the ANSI colored terminal appender, a mapping should be - specified to map a logging level to a color. For example: - - - - - - - - - - - - - - - The Level is the standard log4net logging level and ForeColor and BackColor can be any - of the following values: - BlueGreenRedWhiteYellowPurpleCyan - These color values cannot be combined together to make new colors. - - - The attributes can be any combination of the following: - Brightforeground is brighterDimforeground is dimmerUnderscoremessage is underlinedBlinkforeground is blinking (does not work on all terminals)Reverseforeground and background are reversedHiddenoutput is hiddenStrikethroughmessage has a line through it - While any of these attributes may be combined together not all combinations - work well together, for example setting both Bright and Dim attributes makes - no sense. - - - Patrick Wagstrom - Nicko Cadell - - - - Initializes a new instance of the class. - - - The instance of the class is set up to write - to the standard output stream. - - - - - The enum of possible display attributes - - - - The following flags can be combined together to - form the ANSI color attributes. - - - - - - - text is bright - - - - - text is dim - - - - - text is underlined - - - - - text is blinking - - - Not all terminals support this attribute - - - - - text and background colors are reversed - - - - - text is hidden - - - - - text is displayed with a strikethrough - - - - - The enum of possible foreground or background color values for - use with the color mapping method - - - - The output can be in one for the following ANSI colors. - - - - - - - color is black - - - - - color is red - - - - - color is green - - - - - color is yellow - - - - - color is blue - - - - - color is magenta - - - - - color is cyan - - - - - color is white - - - - - A class to act as a mapping between the level that a logging call is made at and - the color it should be displayed as. - - - - Defines the mapping between a level and the color it should be displayed in. - - - - - - The mapped foreground color for the specified level - - - - Required property. - The mapped foreground color for the specified level - - - - - - The mapped background color for the specified level - - - - Required property. - The mapped background color for the specified level - - - - - - The color attributes for the specified level - - - - Required property. - The color attributes for the specified level - - - - - - The combined , and - suitable for setting the ansi terminal color. - - - - - Initialize the options for the object - - - - Combine the and together - and append the attributes. - - - - - - The to use when writing to the Console - standard output stream. - - - - The to use when writing to the Console - standard output stream. - - - - - - The to use when writing to the Console - standard error output stream. - - - - The to use when writing to the Console - standard error output stream. - - - - - - Ansi code to reset terminal - - - - - Flag to write output to the error stream rather than the standard output stream - - - - - Mapping from level object to color value - - - - - Target is the value of the console output stream. - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - - - This appender requires a to be set. - - - true - - - - This appender requires a to be set. - - - - - - Add a mapping of level to color - - The mapping to add - - - Add a mapping to this appender. - Each mapping defines the foreground and background colours - for a level. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to the console. - - - The format of the output will depend on the appender's layout. - - - - - - Initialize the options for this appender - - - - Initialize the level to color mappings set on this appender. - - - - - - A strongly-typed collection of objects. - - Nicko Cadell - - - - Initializes a new instance of the AppenderCollection class - that is empty and has the default initial capacity. - - - - - Initializes a new instance of the AppenderCollection class - that has the specified initial capacity. - - - The number of elements that the new AppenderCollection is initially capable of storing. - - - - - Initializes a new instance of the AppenderCollection class - that contains elements copied from the specified AppenderCollection. - - The AppenderCollection whose elements are copied to the new collection. - - - - Initializes a new instance of the AppenderCollection class - that contains elements copied from the specified array. - - The array whose elements are copied to the new list. - - - - Initializes a new instance of the AppenderCollection class - that contains elements copied from the specified collection. - - The collection whose elements are copied to the new list. - - - - Allow subclasses to avoid our default constructors - - - - - - - - Supports type-safe iteration over a . - - - - - - Gets the current element in the collection. - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Type visible only to our subclasses - Used to access protected constructor - - - - - - A value - - - - - Supports simple iteration over a . - - - - - - Initializes a new instance of the Enumerator class. - - - - - - - Gets the current element in the collection. - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - - - - An empty readonly static AppenderCollection - - - - - Gets or sets the at the specified index. - - The zero-based index of the element to get or set. - - - is less than zero - -or- - - is equal to or greater than . - - - - - Gets the number of elements actually contained in the AppenderCollection. - - - - - Gets a value indicating whether access to the collection is synchronized (thread-safe). - - true if access to the ICollection is synchronized (thread-safe); otherwise, false. - - - - Gets an object that can be used to synchronize access to the collection. - - - - - Gets a value indicating whether the collection has a fixed size. - - true if the collection has a fixed size; otherwise, false. The default is false - - - - Gets a value indicating whether the IList is read-only. - - true if the collection is read-only; otherwise, false. The default is false - - - - Gets or sets the number of elements the AppenderCollection can contain. - - - - - Creates a read-only wrapper for a AppenderCollection instance. - - list to create a readonly wrapper arround - - An AppenderCollection wrapper that is read-only. - - - - - Copies the entire AppenderCollection to a one-dimensional - array. - - The one-dimensional array to copy to. - - - - Copies the entire AppenderCollection to a one-dimensional - array, starting at the specified index of the target array. - - The one-dimensional array to copy to. - The zero-based index in at which copying begins. - - - - Adds a to the end of the AppenderCollection. - - The to be added to the end of the AppenderCollection. - The index at which the value has been added. - - - - Removes all elements from the AppenderCollection. - - - - - Creates a shallow copy of the . - - A new with a shallow copy of the collection data. - - - - Determines whether a given is in the AppenderCollection. - - The to check for. - - true if is found in the AppenderCollection; otherwise, false. - - - - Returns the zero-based index of the first occurrence of a - in the AppenderCollection. - - The to locate in the AppenderCollection. - - The zero-based index of the first occurrence of - in the entire AppenderCollection, if found; otherwise, -1. - - - - - Inserts an element into the AppenderCollection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - - is less than zero - -or- - - is equal to or greater than . - - - - - Removes the first occurrence of a specific from the AppenderCollection. - - The to remove from the AppenderCollection. - - The specified was not found in the AppenderCollection. - - - - - Removes the element at the specified index of the AppenderCollection. - - The zero-based index of the element to remove. - - - is less than zero - -or- - - is equal to or greater than . - - - - - Returns an enumerator that can iterate through the AppenderCollection. - - An for the entire AppenderCollection. - - - - Adds the elements of another AppenderCollection to the current AppenderCollection. - - The AppenderCollection whose elements should be added to the end of the current AppenderCollection. - The new of the AppenderCollection. - - - - Adds the elements of a array to the current AppenderCollection. - - The array whose elements should be added to the end of the AppenderCollection. - The new of the AppenderCollection. - - - - Adds the elements of a collection to the current AppenderCollection. - - The collection whose elements should be added to the end of the AppenderCollection. - The new of the AppenderCollection. - - - - Sets the capacity to the actual number of elements. - - - - - Return the collection elements as an array - - the array - - - - - is less than zero - -or- - - is equal to or greater than . - - - - - - is less than zero - -or- - - is equal to or greater than . - - - - - Abstract base class implementation of . - - - - This class provides the code for common functionality, such - as support for threshold filtering and support for general filters. - - - Appenders can also implement the interface. Therefore - they would require that the method - be called after the appenders properties have been configured. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - Empty default constructor - - - - - Initial buffer size - - - - - Maximum buffer size before it is recycled - - - - - The layout of this appender. - - - See for more information. - - - - - The name of this appender. - - - See for more information. - - - - - The level threshold of this appender. - - - - There is no level threshold filtering by default. - - - See for more information. - - - - - - It is assumed and enforced that errorHandler is never null. - - - - It is assumed and enforced that errorHandler is never null. - - - See for more information. - - - - - - The first filter in the filter chain. - - - - Set to null initially. - - - See for more information. - - - - - - The last filter in the filter chain. - - - See for more information. - - - - - Flag indicating if this appender is closed. - - - See for more information. - - - - - The guard prevents an appender from repeatedly calling its own DoAppend method - - - - - StringWriter used to render events - - - - - The fully qualified type of the AppenderSkeleton class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets or sets the threshold of this appender. - - - The threshold of the appender. - - - - All log events with lower level than the threshold level are ignored - by the appender. - - - In configuration files this option is specified by setting the - value of the option to a level - string, such as "DEBUG", "INFO" and so on. - - - - - - Gets or sets the for this appender. - - The of the appender - - - The provides a default - implementation for the property. - - - - - - The filter chain. - - The head of the filter chain filter chain. - - - Returns the head Filter. The Filters are organized in a linked list - and so all Filters on this Appender are available through the result. - - - - - - Gets or sets the for this appender. - - The layout of the appender. - - - See for more information. - - - - - - - Gets or sets the name of this appender. - - The name of the appender. - - - The name uniquely identifies the appender. - - - - - - Tests if this appender requires a to be set. - - - - In the rather exceptional case, where the appender - implementation admits a layout but can also work without it, - then the appender should return true. - - - This default implementation always returns false. - - - - true if the appender requires a layout object, otherwise false. - - - - - Finalizes this appender by calling the implementation's - method. - - - - If this appender has not been closed then the Finalize method - will call . - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Closes the appender and release resources. - - - - Release any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - This method cannot be overridden by subclasses. This method - delegates the closing of the appender to the - method which must be overridden in the subclass. - - - - - - Performs threshold checks and invokes filters before - delegating actual logging to the subclasses specific - method. - - The event to log. - - - This method cannot be overridden by derived classes. A - derived class should override the method - which is called by this method. - - - The implementation of this method is as follows: - - - - - - Checks that the severity of the - is greater than or equal to the of this - appender. - - - - Checks that the chain accepts the - . - - - - - Calls and checks that - it returns true. - - - - - If all of the above steps succeed then the - will be passed to the abstract method. - - - - - - Performs threshold checks and invokes filters before - delegating actual logging to the subclasses specific - method. - - The array of events to log. - - - This method cannot be overridden by derived classes. A - derived class should override the method - which is called by this method. - - - The implementation of this method is as follows: - - - - - - Checks that the severity of the - is greater than or equal to the of this - appender. - - - - Checks that the chain accepts the - . - - - - - Calls and checks that - it returns true. - - - - - If all of the above steps succeed then the - will be passed to the method. - - - - - - Test if the logging event should we output by this appender - - the event to test - - true if the event should be output, false if the event should be ignored - - - This method checks the logging event against the threshold level set - on this appender and also against the filters specified on this - appender. - - - The implementation of this method is as follows: - - - - - - Checks that the severity of the - is greater than or equal to the of this - appender. - - - - Checks that the chain accepts the - . - - - - - - - - - Adds a filter to the end of the filter chain. - - the filter to add to this appender - - - The Filters are organized in a linked list. - - - Setting this property causes the new filter to be pushed onto the - back of the filter chain. - - - - - - Clears the filter list for this appender. - - - - Clears the filter list for this appender. - - - - - - Checks if the message level is below this appender's threshold. - - - to test against. - - - If there is no threshold set, then the return value is always true. - - - - true if the meets the - requirements of this appender. - - - - - Is called when the appender is closed. Derived classes should override - this method if resources need to be released. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Subclasses of should implement this method - to perform actual logging. - - The event to append. - - - A subclass must implement this method to perform - logging of the . - - This method will be called by - if all the conditions listed for that method are met. - - - To restrict the logging of events in the appender - override the method. - - - - - - Append a bulk array of logging events. - - the array of logging events - - - This base class implementation calls the - method for each element in the bulk array. - - - A sub class that can better process a bulk array of events should - override this method in addition to . - - - - - - Called before as a precondition. - - - - This method is called by - before the call to the abstract method. - - - This method can be overridden in a subclass to extend the checks - made before the event is passed to the method. - - - A subclass should ensure that they delegate this call to - this base class if it is overridden. - - - - true if the call to should proceed. - - - - Renders the to a string. - - The event to render. - The event rendered as a string. - - - Helper method to render a to - a string. This appender must have a - set to render the to - a string. - - If there is exception data in the logging event and - the layout does not process the exception, this method - will append the exception text to the rendered string. - - - Where possible use the alternative version of this method - . - That method streams the rendering onto an existing Writer - which can give better performance if the caller already has - a open and ready for writing. - - - - - - Renders the to a string. - - The event to render. - The TextWriter to write the formatted event to - - - Helper method to render a to - a string. This appender must have a - set to render the to - a string. - - If there is exception data in the logging event and - the layout does not process the exception, this method - will append the exception text to the rendered string. - - - Use this method in preference to - where possible. If, however, the caller needs to render the event - to a string then does - provide an efficient mechanism for doing so. - - - - - - - Appends log events to the ASP.NET system. - - - - - Diagnostic information and tracing messages that you specify are appended to the output - of the page that is sent to the requesting browser. Optionally, you can view this information - from a separate trace viewer (Trace.axd) that displays trace information for every page in a - given application. - - - Trace statements are processed and displayed only when tracing is enabled. You can control - whether tracing is displayed to a page, to the trace viewer, or both. - - - The logging event is passed to the or - method depending on the level of the logging event. - The event's logger name is the default value for the category parameter of the Write/Warn method. - - - Nicko Cadell - Gert Driesen - Ron Grabowski - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Defaults to %logger - - - - - This appender requires a to be set. - - - true - - - - This appender requires a to be set. - - - - - - The category parameter sent to the Trace method. - - - - Defaults to %logger which will use the logger name of the current - as the category parameter. - - - - - - - - Write the logging event to the ASP.NET trace - - the event to log - - - Write the logging event to the ASP.NET trace - HttpContext.Current.Trace - (). - - - - - - Abstract base class implementation of that - buffers events in a fixed size buffer. - - - - This base class should be used by appenders that need to buffer a - number of events before logging them. For example the - buffers events and then submits the entire contents of the buffer to - the underlying database in one go. - - - Subclasses should override the - method to deliver the buffered events. - - The BufferingAppenderSkeleton maintains a fixed size cyclic - buffer of events. The size of the buffer is set using - the property. - - A is used to inspect - each event as it arrives in the appender. If the - triggers, then the current buffer is sent immediately - (see ). Otherwise the event - is stored in the buffer. For example, an evaluator can be used to - deliver the events immediately when an ERROR event arrives. - - - The buffering appender can be configured in a mode. - By default the appender is NOT lossy. When the buffer is full all - the buffered events are sent with . - If the property is set to true then the - buffer will not be sent when it is full, and new events arriving - in the appender will overwrite the oldest event in the buffer. - In lossy mode the buffer will only be sent when the - triggers. This can be useful behavior when you need to know about - ERROR events but not about events with a lower level, configure an - evaluator that will trigger when an ERROR event arrives, the whole - buffer will be sent which gives a history of events leading up to - the ERROR event. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Protected default constructor to allow subclassing. - - - - - - Initializes a new instance of the class. - - the events passed through this appender must be - fixed by the time that they arrive in the derived class' SendBuffer method. - - - Protected constructor to allow subclassing. - - - The should be set if the subclass - expects the events delivered to be fixed even if the - is set to zero, i.e. when no buffering occurs. - - - - - - The default buffer size. - - - The default size of the cyclic buffer used to store events. - This is set to 512 by default. - - - - - The size of the cyclic buffer used to hold the logging events. - - - Set to by default. - - - - - The cyclic buffer used to store the logging events. - - - - - The triggering event evaluator that causes the buffer to be sent immediately. - - - The object that is used to determine if an event causes the entire - buffer to be sent immediately. This field can be null, which - indicates that event triggering is not to be done. The evaluator - can be set using the property. If this appender - has the ( property) set to - true then an must be set. - - - - - Indicates if the appender should overwrite events in the cyclic buffer - when it becomes full, or if the buffer should be flushed when the - buffer is full. - - - If this field is set to true then an must - be set. - - - - - The triggering event evaluator filters discarded events. - - - The object that is used to determine if an event that is discarded should - really be discarded or if it should be sent to the appenders. - This field can be null, which indicates that all discarded events will - be discarded. - - - - - Value indicating which fields in the event should be fixed - - - By default all fields are fixed - - - - - The events delivered to the subclass must be fixed. - - - - - Gets or sets a value that indicates whether the appender is lossy. - - - true if the appender is lossy, otherwise false. The default is false. - - - - This appender uses a buffer to store logging events before - delivering them. A triggering event causes the whole buffer - to be send to the remote sink. If the buffer overruns before - a triggering event then logging events could be lost. Set - to false to prevent logging events - from being lost. - - If is set to true then an - must be specified. - - - - - Gets or sets the size of the cyclic buffer used to hold the - logging events. - - - The size of the cyclic buffer used to hold the logging events. - - - - The option takes a positive integer - representing the maximum number of logging events to collect in - a cyclic buffer. When the is reached, - oldest events are deleted as new events are added to the - buffer. By default the size of the cyclic buffer is 512 events. - - - If the is set to a value less than - or equal to 1 then no buffering will occur. The logging event - will be delivered synchronously (depending on the - and properties). Otherwise the event will - be buffered. - - - - - - Gets or sets the that causes the - buffer to be sent immediately. - - - The that causes the buffer to be - sent immediately. - - - - The evaluator will be called for each event that is appended to this - appender. If the evaluator triggers then the current buffer will - immediately be sent (see ). - - If is set to true then an - must be specified. - - - - - Gets or sets the value of the to use. - - - The value of the to use. - - - - The evaluator will be called for each event that is discarded from this - appender. If the evaluator triggers then the current buffer will immediately - be sent (see ). - - - - - - Gets or sets a value indicating if only part of the logging event data - should be fixed. - - - true if the appender should only fix part of the logging event - data, otherwise false. The default is false. - - - - Setting this property to true will cause only part of the - event data to be fixed and serialized. This will improve performance. - - - See for more information. - - - - - - Gets or sets a the fields that will be fixed in the event - - - The event fields that will be fixed before the event is buffered - - - - The logging event needs to have certain thread specific values - captured before it can be buffered. See - for details. - - - - - - - Flush the currently buffered events - - - - Flushes any events that have been buffered. - - - If the appender is buffering in mode then the contents - of the buffer will NOT be flushed to the appender. - - - - - - Flush the currently buffered events - - set to true to flush the buffer of lossy events - - - Flushes events that have been buffered. If is - false then events will only be flushed if this buffer is non-lossy mode. - - - If the appender is buffering in mode then the contents - of the buffer will only be flushed if is true. - In this case the contents of the buffer will be tested against the - and if triggering will be output. All other buffered - events will be discarded. - - - If is true then the buffer will always - be emptied by calling this method. - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Close this appender instance. - - - - Close this appender instance. If this appender is marked - as not then the remaining events in - the buffer must be sent when the appender is closed. - - - - - - This method is called by the method. - - the event to log - - - Stores the in the cyclic buffer. - - - The buffer will be sent (i.e. passed to the - method) if one of the following conditions is met: - - - - The cyclic buffer is full and this appender is - marked as not lossy (see ) - - - An is set and - it is triggered for the - specified. - - - - Before the event is stored in the buffer it is fixed - (see ) to ensure that - any data referenced by the event will be valid when the buffer - is processed. - - - - - - Sends the contents of the buffer. - - The first logging event. - The buffer containing the events that need to be send. - - - The subclass must override . - - - - - - Sends the events. - - The events that need to be send. - - - The subclass must override this method to process the buffered events. - - - - - - Buffers events and then forwards them to attached appenders. - - - - The events are buffered in this appender until conditions are - met to allow the appender to deliver the events to the attached - appenders. See for the - conditions that cause the buffer to be sent. - - The forwarding appender can be used to specify different - thresholds and filters for the same appender at different locations - within the hierarchy. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Implementation of the interface - - - - - Gets the appenders contained in this appender as an - . - - - If no appenders can be found, then an - is returned. - - - A collection of the appenders in this appender. - - - - - Closes the appender and releases resources. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Send the events. - - The events that need to be send. - - - Forwards the events to the attached appenders. - - - - - - Adds an to the list of appenders of this - instance. - - The to add to this appender. - - - If the specified is already in the list of - appenders, then it won't be added again. - - - - - - Looks for the appender with the specified name. - - The name of the appender to lookup. - - The appender with the specified name, or null. - - - - Get the named appender attached to this buffering appender. - - - - - - Removes all previously added appenders from this appender. - - - - This is useful when re-reading configuration information. - - - - - - Removes the specified appender from the list of appenders. - - The appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Appends logging events to the console. - - - - ConsoleAppender appends log events to the standard output stream - or the error output stream using a layout specified by the - user. - - - By default, all output is written to the console's standard output stream. - The property can be set to direct the output to the - error stream. - - - NOTE: This appender writes each message to the System.Console.Out or - System.Console.Error that is set at the time the event is appended. - Therefore it is possible to programmatically redirect the output of this appender - (for example NUnit does this to capture program output). While this is the desired - behavior of this appender it may have security implications in your application. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - - The instance of the class is set up to write - to the standard output stream. - - - - - Initializes a new instance of the class - with the specified layout. - - the layout to use for this appender - flag set to true to write to the console error stream - - When is set to true, output is written to - the standard error output stream. Otherwise, output is written to the standard - output stream. - - - - - The to use when writing to the Console - standard output stream. - - - - The to use when writing to the Console - standard output stream. - - - - - - The to use when writing to the Console - standard error output stream. - - - - The to use when writing to the Console - standard error output stream. - - - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - Target is the value of the console output stream. - This is either "Console.Out" or "Console.Error". - - - - - - This appender requires a to be set. - - - true - - - - This appender requires a to be set. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to the console. - - - The format of the output will depend on the appender's layout. - - - - - - Appends log events to the system. - - - - The application configuration file can be used to control what listeners - are actually used. See the MSDN documentation for the - class for details on configuring the - debug system. - - - Events are written using the - method. The event's logger name is passed as the value for the category name to the Write method. - - - Nicko Cadell - - - - Initializes a new instance of the . - - - - Default constructor. - - - - - - Initializes a new instance of the - with a specified layout. - - The layout to use with this appender. - - - Obsolete constructor. - - - - - - Immediate flush means that the underlying writer or output stream - will be flushed at the end of each append operation. - - - - Immediate flush is slower but ensures that each append request is - actually written. If is set to - false, then there is a good chance that the last few - logs events are not actually written to persistent media if and - when the application crashes. - - - The default value is true. - - - - - Gets or sets a value that indicates whether the appender will - flush at the end of each write. - - - The default behavior is to flush at the end of each - write. If the option is set tofalse, then the underlying - stream can defer writing to physical medium to a later time. - - - Avoiding the flush operation at the end of each append results - in a performance gain of 10 to 20 percent. However, there is safety - trade-off involved in skipping flushing. Indeed, when flushing is - skipped, then it is likely that the last few log events will not - be recorded on disk when the application exits. This is a high - price to pay even for a 20% performance gain. - - - - - - This appender requires a to be set. - - - true - - - - This appender requires a to be set. - - - - - - Writes the logging event to the system. - - The event to log. - - - Writes the logging event to the system. - If is true then the - is called. - - - - - - Writes events to the system event log. - - - - The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges. - See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog - - - The EventID of the event log entry can be - set using the EventID property () - on the . - - - The Category of the event log entry can be - set using the Category property () - on the . - - - There is a limit of 32K characters for an event log message - - - When configuring the EventLogAppender a mapping can be - specified to map a logging level to an event log entry type. For example: - - - <mapping> - <level value="ERROR" /> - <eventLogEntryType value="Error" /> - </mapping> - <mapping> - <level value="DEBUG" /> - <eventLogEntryType value="Information" /> - </mapping> - - - The Level is the standard log4net logging level and eventLogEntryType can be any value - from the enum, i.e.: - Erroran error eventWarninga warning eventInformationan informational event - - Aspi Havewala - Douglas de la Torre - Nicko Cadell - Gert Driesen - Thomas Voss - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initializes a new instance of the class - with the specified . - - The to use with this appender. - - - Obsolete constructor. - - - - - - A class to act as a mapping between the level that a logging call is made at and - the color it should be displayed as. - - - - Defines the mapping between a level and its event log entry type. - - - - - - The for this entry - - - - Required property. - The for this entry - - - - - - The log name is the section in the event logs where the messages - are stored. - - - - - Name of the application to use when logging. This appears in the - application column of the event log named by . - - - - - The name of the machine which holds the event log. This is - currently only allowed to be '.' i.e. the current machine. - - - - - Mapping from level object to EventLogEntryType - - - - - The security context to use for privileged calls - - - - - The event ID to use unless one is explicitly specified via the LoggingEvent's properties. - - - - - The event category to use unless one is explicitly specified via the LoggingEvent's properties. - - - - - The fully qualified type of the EventLogAppender class. - - - Used by the internal logger to record the Type of the - log message. - - - - - The name of the log where messages will be stored. - - - The string name of the log where messages will be stored. - - - This is the name of the log as it appears in the Event Viewer - tree. The default value is to log into the Application - log, this is where most applications write their events. However - if you need a separate log for your application (or applications) - then you should set the appropriately. - This should not be used to distinguish your event log messages - from those of other applications, the - property should be used to distinguish events. This property should be - used to group together events into a single log. - - - - - - Property used to set the Application name. This appears in the - event logs when logging. - - - The string used to distinguish events from different sources. - - - Sets the event log source property. - - - - - This property is used to return the name of the computer to use - when accessing the event logs. Currently, this is the current - computer, denoted by a dot "." - - - The string name of the machine holding the event log that - will be logged into. - - - This property cannot be changed. It is currently set to '.' - i.e. the local machine. This may be changed in future. - - - - - Gets or sets the used to write to the EventLog. - - - The used to write to the EventLog. - - - - The system security context used to write to the EventLog. - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - Gets or sets the EventId to use unless one is explicitly specified via the LoggingEvent's properties. - - - - The EventID of the event log entry will normally be - set using the EventID property () - on the . - This property provides the fallback value which defaults to 0. - - - - - - Gets or sets the Category to use unless one is explicitly specified via the LoggingEvent's properties. - - - - The Category of the event log entry will normally be - set using the Category property () - on the . - This property provides the fallback value which defaults to 0. - - - - - - This appender requires a to be set. - - - true - - - - This appender requires a to be set. - - - - - - Add a mapping of level to - done by the config file - - The mapping to add - - - Add a mapping to this appender. - Each mapping defines the event log entry type for a level. - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Create an event log source - - - Uses different API calls under NET_2_0 - - - - - This method is called by the - method. - - the event to log - - Writes the event to the system event log using the - . - If the event has an EventID property (see ) - set then this integer will be used as the event log event id. - - There is a limit of 32K characters for an event log message - - - - - - Get the equivalent for a - the Level to convert to an EventLogEntryType - The equivalent for a - - Because there are fewer applicable - values to use in logging levels than there are in the - this is a one way mapping. There is - a loss of information during the conversion. - - - - - Appends logging events to a file. - - - - Logging events are sent to the file specified by - the property. - - - The file can be opened in either append or overwrite mode - by specifying the property. - If the file path is relative it is taken as relative from - the application base directory. The file encoding can be - specified by setting the property. - - - The layout's and - values will be written each time the file is opened and closed - respectively. If the property is - then the file may contain multiple copies of the header and footer. - - - This appender will first try to open the file for writing when - is called. This will typically be during configuration. - If the file cannot be opened for writing the appender will attempt - to open the file again each time a message is logged to the appender. - If the file cannot be opened for writing when a message is logged then - the message will be discarded by this appender. - - - The supports pluggable file locking models via - the property. - The default behavior, implemented by - is to obtain an exclusive write lock on the file until this appender is closed. - The alternative models only hold a - write lock while the appender is writing a logging event () - or synchronize by using a named system wide Mutex (). - - - All locking strategies have issues and you should seriously consider using a different strategy that - avoids having multiple processes logging to the same file. - - - Nicko Cadell - Gert Driesen - Rodrigo B. de Oliveira - Douglas de la Torre - Niall Daley - - - - Default constructor - - - - Default constructor - - - - - - Construct a new appender using the layout, file and append mode. - - the layout to use with this appender - the full path to the file to write to - flag to indicate if the file should be appended to - - - Obsolete constructor. - - - - - - Construct a new appender using the layout and file specified. - The file will be appended to. - - the layout to use with this appender - the full path to the file to write to - - - Obsolete constructor. - - - - - - Write only that uses the - to manage access to an underlying resource. - - - - - True asynchronous writes are not supported, the implementation forces a synchronous write. - - - - - Locking model base class - - - - Base class for the locking models available to the derived loggers. - - - - - - Gets or sets the for this LockingModel - - - The for this LockingModel - - - - The file appender this locking model is attached to and working on - behalf of. - - - The file appender is used to locate the security context and the error handler to use. - - - The value of this property will be set before is - called. - - - - - - Open the output file - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Acquire the lock on the file in preparation for writing to it. - Return a stream pointing to the file. - must be called to release the lock on the output file. - - - - - - Release the lock on the file - - - - Release the lock on the file. No further writes will be made to the - stream until is called again. - - - - - - Helper method that creates a FileStream under CurrentAppender's SecurityContext. - - - - Typically called during OpenFile or AcquireLock. - - - If the directory portion of the does not exist, it is created - via Directory.CreateDirecctory. - - - - - - - - - - - - - - Helper method to close under CurrentAppender's SecurityContext. - - - Does not set to null. - - - - - - - Hold an exclusive lock on the output file - - - - Open the file once for writing and hold it open until is called. - Maintains an exclusive lock on the file during this time. - - - - - - Open the file specified and prepare for logging. - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Does nothing. The lock is already taken - - - - - - Release the lock on the file - - - - Does nothing. The lock will be released when the file is closed. - - - - - - Acquires the file lock for each write - - - - Opens the file once for each / cycle, - thus holding the lock for the minimal amount of time. This method of locking - is considerably slower than but allows - other processes to move/delete the log file whilst logging continues. - - - - - - Prepares to open the file when the first message is logged. - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Acquire the lock on the file in preparation for writing to it. - Return a stream pointing to the file. - must be called to release the lock on the output file. - - - - - - Release the lock on the file - - - - Release the lock on the file. No further writes will be made to the - stream until is called again. - - - - - - Provides cross-process file locking. - - Ron Grabowski - Steve Wranovsky - - - - Open the file specified and prepare for logging. - - The filename to use - Whether to append to the file, or overwrite - The encoding to use - - - Open the file specified and prepare for logging. - No writes will be made until is called. - Must be called before any calls to , - - and . - - - - - - Close the file - - - - Close the file. No further writes will be made. - - - - - - Acquire the lock on the file - - A stream that is ready to be written to. - - - Does nothing. The lock is already taken - - - - - - - - - - Flag to indicate if we should append to the file - or overwrite the file. The default is to append. - - - - - The name of the log file. - - - - - The encoding to use for the file stream. - - - - - The security context to use for privileged calls - - - - - The stream to log to. Has added locking semantics - - - - - The locking model to use - - - - - The fully qualified type of the FileAppender class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets or sets the path to the file that logging will be written to. - - - The path to the file that logging will be written to. - - - - If the path is relative it is taken as relative from - the application base directory. - - - - - - Gets or sets a flag that indicates whether the file should be - appended to or overwritten. - - - Indicates whether the file should be appended to or overwritten. - - - - If the value is set to false then the file will be overwritten, if - it is set to true then the file will be appended to. - - The default value is true. - - - - - Gets or sets used to write to the file. - - - The used to write to the file. - - - - The default encoding set is - which is the encoding for the system's current ANSI code page. - - - - - - Gets or sets the used to write to the file. - - - The used to write to the file. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - Gets or sets the used to handle locking of the file. - - - The used to lock the file. - - - - Gets or sets the used to handle locking of the file. - - - There are three built in locking models, , and . - The first locks the file from the start of logging to the end, the - second locks only for the minimal amount of time when logging each message - and the last synchronizes processes using a named system wide Mutex. - - - The default locking model is the . - - - - - - Activate the options on the file appender. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - This will cause the file to be opened. - - - - - - Closes any previously opened file and calls the parent's . - - - - Resets the filename and the file stream. - - - - - - Called to initialize the file writer - - - - Will be called for each logged message until the file is - successfully opened. - - - - - - This method is called by the - method. - - The event to log. - - - Writes a log statement to the output stream if the output stream exists - and is writable. - - - The format of the output will depend on the appender's layout. - - - - - - This method is called by the - method. - - The array of events to log. - - - Acquires the output file locks once before writing all the events to - the stream. - - - - - - Writes a footer as produced by the embedded layout's property. - - - - Writes a footer as produced by the embedded layout's property. - - - - - - Writes a header produced by the embedded layout's property. - - - - Writes a header produced by the embedded layout's property. - - - - - - Closes the underlying . - - - - Closes the underlying . - - - - - - Closes the previously opened file. - - - - Writes the to the file and then - closes the file. - - - - - - Sets and opens the file where the log output will go. The specified file must be writable. - - The path to the log file. Must be a fully qualified path. - If true will append to fileName. Otherwise will truncate fileName - - - Calls but guarantees not to throw an exception. - Errors are passed to the . - - - - - - Sets and opens the file where the log output will go. The specified file must be writable. - - The path to the log file. Must be a fully qualified path. - If true will append to fileName. Otherwise will truncate fileName - - - If there was already an opened file, then the previous file - is closed first. - - - This method will ensure that the directory structure - for the specified exists. - - - - - - Sets the quiet writer used for file output - - the file stream that has been opened for writing - - - This implementation of creates a - over the and passes it to the - method. - - - This method can be overridden by sub classes that want to wrap the - in some way, for example to encrypt the output - data using a System.Security.Cryptography.CryptoStream. - - - - - - Sets the quiet writer being used. - - the writer over the file stream that has been opened for writing - - - This method can be overridden by sub classes that want to - wrap the in some way. - - - - - - Convert a path into a fully qualified path. - - The path to convert. - The fully qualified path. - - - Converts the path specified to a fully - qualified path. If the path is relative it is - taken as relative from the application base - directory. - - - - - - This appender forwards logging events to attached appenders. - - - - The forwarding appender can be used to specify different thresholds - and filters for the same appender at different locations within the hierarchy. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Implementation of the interface - - - - - Gets the appenders contained in this appender as an - . - - - If no appenders can be found, then an - is returned. - - - A collection of the appenders in this appender. - - - - - Closes the appender and releases resources. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Forward the logging event to the attached appenders - - The event to log. - - - Delivers the logging event to all the attached appenders. - - - - - - Forward the logging events to the attached appenders - - The array of events to log. - - - Delivers the logging events to all the attached appenders. - - - - - - Adds an to the list of appenders of this - instance. - - The to add to this appender. - - - If the specified is already in the list of - appenders, then it won't be added again. - - - - - - Looks for the appender with the specified name. - - The name of the appender to lookup. - - The appender with the specified name, or null. - - - - Get the named appender attached to this appender. - - - - - - Removes all previously added appenders from this appender. - - - - This is useful when re-reading configuration information. - - - - - - Removes the specified appender from the list of appenders. - - The appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - Implement this interface for your own strategies for printing log statements. - - - - Implementors should consider extending the - class which provides a default implementation of this interface. - - - Appenders can also implement the interface. Therefore - they would require that the method - be called after the appenders properties have been configured. - - - Nicko Cadell - Gert Driesen - - - - Gets or sets the name of this appender. - - The name of the appender. - - The name uniquely identifies the appender. - - - - - Closes the appender and releases resources. - - - - Releases any resources allocated within the appender such as file handles, - network connections, etc. - - - It is a programming error to append to a closed appender. - - - - - - Log the logging event in Appender specific way. - - The event to log - - - This method is called to log a message into this appender. - - - - - - Interface for appenders that support bulk logging. - - - - This interface extends the interface to - support bulk logging of objects. Appenders - should only implement this interface if they can bulk log efficiently. - - - Nicko Cadell - - - - Log the array of logging events in Appender specific way. - - The events to log - - - This method is called to log an array of events into this appender. - - - - - - Logs events to a local syslog service. - - - - This appender uses the POSIX libc library functions openlog, syslog, and closelog. - If these functions are not available on the local system then this appender will not work! - - - The functions openlog, syslog, and closelog are specified in SUSv2 and - POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service. - - - This appender talks to a local syslog service. If you need to log to a remote syslog - daemon and you cannot configure your local syslog service to do this you may be - able to use the to log via UDP. - - - Syslog messages must have a facility and and a severity. The severity - is derived from the Level of the logging event. - The facility must be chosen from the set of defined syslog - values. The facilities list is predefined - and cannot be extended. - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - Rob Lyon - Nicko Cadell - - - - Initializes a new instance of the class. - - - This instance of the class is set up to write - to a local syslog service. - - - - - syslog severities - - - - The log4net Level maps to a syslog severity using the - method and the - class. The severity is set on . - - - - - - system is unusable - - - - - action must be taken immediately - - - - - critical conditions - - - - - error conditions - - - - - warning conditions - - - - - normal but significant condition - - - - - informational - - - - - debug-level messages - - - - - syslog facilities - - - - The syslog facility defines which subsystem the logging comes from. - This is set on the property. - - - - - - kernel messages - - - - - random user-level messages - - - - - mail system - - - - - system daemons - - - - - security/authorization messages - - - - - messages generated internally by syslogd - - - - - line printer subsystem - - - - - network news subsystem - - - - - UUCP subsystem - - - - - clock (cron/at) daemon - - - - - security/authorization messages (private) - - - - - ftp daemon - - - - - NTP subsystem - - - - - log audit - - - - - log alert - - - - - clock daemon - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - - - The mapped syslog severity for the specified level - - - - Required property. - The mapped syslog severity for the specified level - - - - - - The facility. The default facility is . - - - - - The message identity - - - - - Marshaled handle to the identity string. We have to hold on to the - string as the openlog and syslog APIs just hold the - pointer to the ident and dereference it for each log message. - - - - - Mapping from level object to syslog severity - - - - - Message identity - - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - - - - Syslog facility - - - Set to one of the values. The list of - facilities is predefined and cannot be extended. The default value - is . - - - - - This appender requires a to be set. - - - true - - - - This appender requires a to be set. - - - - - - Add a mapping of level to severity - - The mapping to add - - - Adds a to this appender. - - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to a remote syslog daemon. - - - The format of the output will depend on the appender's layout. - - - - - - Close the syslog when the appender is closed - - - - Close the syslog when the appender is closed - - - - - - Translates a log4net level to a syslog severity. - - A log4net level. - A syslog severity. - - - Translates a log4net level to a syslog severity. - - - - - - Generate a syslog priority. - - The syslog facility. - The syslog severity. - A syslog priority. - - - - Open connection to system logger. - - - - - Generate a log message. - - - - The libc syslog method takes a format string and a variable argument list similar - to the classic printf function. As this type of vararg list is not supported - by C# we need to specify the arguments explicitly. Here we have specified the - format string with a single message argument. The caller must set the format - string to "%s". - - - - - - Close descriptor used to write to system logger. - - - - - Stores logging events in an array. - - - - The memory appender stores all the logging events - that are appended in an in-memory array. - - - Use the method to get - the current list of events that have been appended. - - - Use the method to clear the - current list of events. - - - Julian Biddle - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - The list of events that have been appended. - - - - - Value indicating which fields in the event should be fixed - - - By default all fields are fixed - - - - - Gets or sets a value indicating whether only part of the logging event - data should be fixed. - - - true if the appender should only fix part of the logging event - data, otherwise false. The default is false. - - - - Setting this property to true will cause only part of the event - data to be fixed and stored in the appender, hereby improving performance. - - - See for more information. - - - - - - Gets or sets the fields that will be fixed in the event - - - - The logging event needs to have certain thread specific values - captured before it can be buffered. See - for details. - - - - - - Gets the events that have been logged. - - The events that have been logged - - - Gets the events that have been logged. - - - - - - This method is called by the method. - - the event to log - - Stores the in the events list. - - - - - Clear the list of events - - - Clear the list of events - - - - - Logs events to a remote syslog daemon. - - - - The BSD syslog protocol is used to remotely log to - a syslog daemon. The syslogd listens for for messages - on UDP port 514. - - - The syslog UDP protocol is not authenticated. Most syslog daemons - do not accept remote log messages because of the security implications. - You may be able to use the LocalSyslogAppender to talk to a local - syslog service. - - - There is an RFC 3164 that claims to document the BSD Syslog Protocol. - This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html. - This appender generates what the RFC calls an "Original Device Message", - i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation - this format of message will be accepted by all current syslog daemon - implementations. The daemon will attach the current time and the source - hostname or IP address to any messages received. - - - Syslog messages must have a facility and and a severity. The severity - is derived from the Level of the logging event. - The facility must be chosen from the set of defined syslog - values. The facilities list is predefined - and cannot be extended. - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - Rob Lyon - Nicko Cadell - - - - Initializes a new instance of the class. - - - This instance of the class is set up to write - to a remote syslog daemon. - - - - - syslog severities - - - - The syslog severities. - - - - - - system is unusable - - - - - action must be taken immediately - - - - - critical conditions - - - - - error conditions - - - - - warning conditions - - - - - normal but significant condition - - - - - informational - - - - - debug-level messages - - - - - syslog facilities - - - - The syslog facilities - - - - - - kernel messages - - - - - random user-level messages - - - - - mail system - - - - - system daemons - - - - - security/authorization messages - - - - - messages generated internally by syslogd - - - - - line printer subsystem - - - - - network news subsystem - - - - - UUCP subsystem - - - - - clock (cron/at) daemon - - - - - security/authorization messages (private) - - - - - ftp daemon - - - - - NTP subsystem - - - - - log audit - - - - - log alert - - - - - clock daemon - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - reserved for local use - - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - A class to act as a mapping between the level that a logging call is made at and - the syslog severity that is should be logged at. - - - - - - The mapped syslog severity for the specified level - - - - Required property. - The mapped syslog severity for the specified level - - - - - - Syslog port 514 - - - - - The facility. The default facility is . - - - - - The message identity - - - - - Mapping from level object to syslog severity - - - - - Message identity - - - - An identifier is specified with each log message. This can be specified - by setting the property. The identity (also know - as the tag) must not contain white space. The default value for the - identity is the application name (from ). - - - - - - Syslog facility - - - Set to one of the values. The list of - facilities is predefined and cannot be extended. The default value - is . - - - - - Add a mapping of level to severity - - The mapping to add - - - Add a mapping to this appender. - - - - - - This method is called by the method. - - The event to log. - - - Writes the event to a remote syslog daemon. - - - The format of the output will depend on the appender's layout. - - - - - - Initialize the options for this appender - - - - Initialize the level to syslog severity mappings set on this appender. - - - - - - Translates a log4net level to a syslog severity. - - A log4net level. - A syslog severity. - - - Translates a log4net level to a syslog severity. - - - - - - Generate a syslog priority. - - The syslog facility. - The syslog severity. - A syslog priority. - - - Generate a syslog priority. - - - - - - Delivers logging events to a remote logging sink. - - - - This Appender is designed to deliver events to a remote sink. - That is any object that implements the - interface. It delivers the events using .NET remoting. The - object to deliver events to is specified by setting the - appenders property. - - The RemotingAppender buffers events before sending them. This allows it to - make more efficient use of the remoting infrastructure. - - Once the buffer is full the events are still not sent immediately. - They are scheduled to be sent using a pool thread. The effect is that - the send occurs asynchronously. This is very important for a - number of non obvious reasons. The remoting infrastructure will - flow thread local variables (stored in the ), - if they are marked as , across the - remoting boundary. If the server is not contactable then - the remoting infrastructure will clear the - objects from the . To prevent a logging failure from - having side effects on the calling application the remoting call must be made - from a separate thread to the one used by the application. A - thread is used for this. If no thread is available then - the events will block in the thread pool manager until a thread is available. - - Because the events are sent asynchronously using pool threads it is possible to close - this appender before all the queued events have been sent. - When closing the appender attempts to wait until all the queued events have been sent, but - this will timeout after 30 seconds regardless. - - If this appender is being closed because the - event has fired it may not be possible to send all the queued events. During process - exit the runtime limits the time that a - event handler is allowed to run for. If the runtime terminates the threads before - the queued events have been sent then they will be lost. To ensure that all events - are sent the appender must be closed before the application exits. See - for details on how to shutdown - log4net programmatically. - - - Nicko Cadell - Gert Driesen - Daniel Cazzulino - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Interface used to deliver objects to a remote sink. - - - This interface must be implemented by a remoting sink - if the is to be used - to deliver logging events to the sink. - - - - - Delivers logging events to the remote sink - - Array of events to log. - - - Delivers logging events to the remote sink - - - - - - The URL of the remote sink. - - - - - The local proxy (.NET remoting) for the remote logging sink. - - - - - The number of queued callbacks currently waiting or executing - - - - - Event used to signal when there are no queued work items - - - This event is set when there are no queued work items. In this - state it is safe to close the appender. - - - - - Gets or sets the URL of the well-known object that will accept - the logging events. - - - The well-known URL of the remote sink. - - - - The URL of the remoting sink that will accept logging events. - The sink must implement the - interface. - - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Send the contents of the buffer to the remote sink. - - - The events are not sent immediately. They are scheduled to be sent - using a pool thread. The effect is that the send occurs asynchronously. - This is very important for a number of non obvious reasons. The remoting - infrastructure will flow thread local variables (stored in the ), - if they are marked as , across the - remoting boundary. If the server is not contactable then - the remoting infrastructure will clear the - objects from the . To prevent a logging failure from - having side effects on the calling application the remoting call must be made - from a separate thread to the one used by the application. A - thread is used for this. If no thread is available then - the events will block in the thread pool manager until a thread is available. - - The events to send. - - - - Override base class close. - - - - This method waits while there are queued work items. The events are - sent asynchronously using work items. These items - will be sent once a thread pool thread is available to send them, therefore - it is possible to close the appender before all the queued events have been - sent. - - This method attempts to wait until all the queued events have been sent, but this - method will timeout after 30 seconds regardless. - - If the appender is being closed because the - event has fired it may not be possible to send all the queued events. During process - exit the runtime limits the time that a - event handler is allowed to run for. - - - - - A work item is being queued into the thread pool - - - - - A work item from the thread pool has completed - - - - - Send the contents of the buffer to the remote sink. - - - This method is designed to be used with the . - This method expects to be passed an array of - objects in the state param. - - the logging events to send - - - - Appender that rolls log files based on size or date or both. - - - - RollingFileAppender can roll log files based on size or date or both - depending on the setting of the property. - When set to the log file will be rolled - once its size exceeds the . - When set to the log file will be rolled - once the date boundary specified in the property - is crossed. - When set to the log file will be - rolled once the date boundary specified in the property - is crossed, but within a date boundary the file will also be rolled - once its size exceeds the . - When set to the log file will be rolled when - the appender is configured. This effectively means that the log file can be - rolled once per program execution. - - - A of few additional optional features have been added: - Attach date pattern for current log file Backup number increments for newer files Infinite number of backups by file size - - - For large or infinite numbers of backup files a - greater than zero is highly recommended, otherwise all the backup files need - to be renamed each time a new backup is created. - - - When Date/Time based rolling is used setting - to will reduce the number of file renamings to few or none. - - - - - Changing or without clearing - the log file directory of backup files will cause unexpected and unwanted side effects. - - - - If Date/Time based rolling is enabled this appender will attempt to roll existing files - in the directory without a Date/Time tag based on the last write date of the base log file. - The appender only rolls the log file when a message is logged. If Date/Time based rolling - is enabled then the appender will not roll the log file at the Date/Time boundary but - at the point when the next message is logged after the boundary has been crossed. - - - The extends the and - has the same behavior when opening the log file. - The appender will first try to open the file for writing when - is called. This will typically be during configuration. - If the file cannot be opened for writing the appender will attempt - to open the file again each time a message is logged to the appender. - If the file cannot be opened for writing when a message is logged then - the message will be discarded by this appender. - - - When rolling a backup file necessitates deleting an older backup file the - file to be deleted is moved to a temporary name before being deleted. - - - - A maximum number of backup files when rolling on date/time boundaries is not supported. - - - - Nicko Cadell - Gert Driesen - Aspi Havewala - Douglas de la Torre - Edward Smit - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Style of rolling to use - - - - Style of rolling to use - - - - - - Roll files once per program execution - - - - Roll files once per program execution. - Well really once each time this appender is - configured. - - - Setting this option also sets AppendToFile to - false on the RollingFileAppender, otherwise - this appender would just be a normal file appender. - - - - - - Roll files based only on the size of the file - - - - - Roll files based only on the date - - - - - Roll files based on both the size and date of the file - - - - - The code assumes that the following 'time' constants are in a increasing sequence. - - - - The code assumes that the following 'time' constants are in a increasing sequence. - - - - - - Roll the log not based on the date - - - - - Roll the log for each minute - - - - - Roll the log for each hour - - - - - Roll the log twice a day (midday and midnight) - - - - - Roll the log each day (midnight) - - - - - Roll the log each week - - - - - Roll the log each month - - - - - This interface is used to supply Date/Time information to the . - - - This interface is used to supply Date/Time information to the . - Used primarily to allow test classes to plug themselves in so they can - supply test date/times. - - - - - Gets the current time. - - The current time. - - - Gets the current time. - - - - - - Default implementation of that returns the current time. - - - - - Gets the current time. - - The current time. - - - Gets the current time. - - - - - - Implementation of that returns the current time as the coordinated universal time (UTC). - - - - - Gets the current time. - - The current time. - - - Gets the current time. - - - - - - The fully qualified type of the RollingFileAppender class. - - - Used by the internal logger to record the Type of the - log message. - - - - - This object supplies the current date/time. Allows test code to plug in - a method to control this class when testing date/time based rolling. The default - implementation uses the underlying value of DateTime.Now. - - - - - The date pattern. By default, the pattern is set to ".yyyy-MM-dd" - meaning daily rollover. - - - - - The actual formatted filename that is currently being written to - or will be the file transferred to on roll over - (based on staticLogFileName). - - - - - The timestamp when we shall next recompute the filename. - - - - - Holds date of last roll over - - - - - The type of rolling done - - - - - The default maximum file size is 10MB - - - - - There is zero backup files by default - - - - - How many sized based backups have been made so far - - - - - The rolling file count direction. - - - - - The rolling mode used in this appender. - - - - - Cache flag set if we are rolling by date. - - - - - Cache flag set if we are rolling by size. - - - - - Value indicating whether to always log to the same file. - - - - - Value indicating whether to preserve the file name extension when rolling. - - - - - FileName provided in configuration. Used for rolling properly - - - - - The 1st of January 1970 in UTC - - - - - Gets or sets the strategy for determining the current date and time. The default - implementation is to use LocalDateTime which internally calls through to DateTime.Now. - DateTime.UtcNow may be used on frameworks newer than .NET 1.0 by specifying - . - - - An implementation of the interface which returns the current date and time. - - - - Gets or sets the used to return the current date and time. - - - There are two built strategies for determining the current date and time, - - and . - - - The default strategy is . - - - - - - Gets or sets the date pattern to be used for generating file names - when rolling over on date. - - - The date pattern to be used for generating file names when rolling - over on date. - - - - Takes a string in the same format as expected by - . - - - This property determines the rollover schedule when rolling over - on date. - - - - - - Gets or sets the maximum number of backup files that are kept before - the oldest is erased. - - - The maximum number of backup files that are kept before the oldest is - erased. - - - - If set to zero, then there will be no backup files and the log file - will be truncated when it reaches . - - - If a negative number is supplied then no deletions will be made. Note - that this could result in very slow performance as a large number of - files are rolled over unless is used. - - - The maximum applies to each time based group of files and - not the total. - - - - - - Gets or sets the maximum size that the output file is allowed to reach - before being rolled over to backup files. - - - The maximum size in bytes that the output file is allowed to reach before being - rolled over to backup files. - - - - This property is equivalent to except - that it is required for differentiating the setter taking a - argument from the setter taking a - argument. - - - The default maximum file size is 10MB (10*1024*1024). - - - - - - Gets or sets the maximum size that the output file is allowed to reach - before being rolled over to backup files. - - - The maximum size that the output file is allowed to reach before being - rolled over to backup files. - - - - This property allows you to specify the maximum size with the - suffixes "KB", "MB" or "GB" so that the size is interpreted being - expressed respectively in kilobytes, megabytes or gigabytes. - - - For example, the value "10KB" will be interpreted as 10240 bytes. - - - The default maximum file size is 10MB. - - - If you have the option to set the maximum file size programmatically - consider using the property instead as this - allows you to set the size in bytes as a . - - - - - - Gets or sets the rolling file count direction. - - - The rolling file count direction. - - - - Indicates if the current file is the lowest numbered file or the - highest numbered file. - - - By default newer files have lower numbers ( < 0), - i.e. log.1 is most recent, log.5 is the 5th backup, etc... - - - >= 0 does the opposite i.e. - log.1 is the first backup made, log.5 is the 5th backup made, etc. - For infinite backups use >= 0 to reduce - rollover costs. - - The default file count direction is -1. - - - - - Gets or sets the rolling style. - - The rolling style. - - - The default rolling style is . - - - When set to this appender's - property is set to false, otherwise - the appender would append to a single file rather than rolling - the file each time it is opened. - - - - - - Gets or sets a value indicating whether to preserve the file name extension when rolling. - - - true if the file name extension should be preserved. - - - - By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup. - However, under Windows the new file name will loose any program associations as the - extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or - file.curSizeRollBackup.log to maintain any program associations. - - - - - - Gets or sets a value indicating whether to always log to - the same file. - - - true if always should be logged to the same file, otherwise false. - - - - By default file.log is always the current file. Optionally - file.log.yyyy-mm-dd for current formatted datePattern can by the currently - logging file (or file.log.curSizeRollBackup or even - file.log.yyyy-mm-dd.curSizeRollBackup). - - - This will make time based rollovers with a large number of backups - much faster as the appender it won't have to rename all the backups! - - - - - - Sets the quiet writer being used. - - - This method can be overridden by sub classes. - - the writer to set - - - - Write out a logging event. - - the event to write to file. - - - Handles append time behavior for RollingFileAppender. This checks - if a roll over either by date (checked first) or time (checked second) - is need and then appends to the file last. - - - - - - Write out an array of logging events. - - the events to write to file. - - - Handles append time behavior for RollingFileAppender. This checks - if a roll over either by date (checked first) or time (checked second) - is need and then appends to the file last. - - - - - - Performs any required rolling before outputting the next event - - - - Handles append time behavior for RollingFileAppender. This checks - if a roll over either by date (checked first) or time (checked second) - is need and then appends to the file last. - - - - - - Creates and opens the file for logging. If - is false then the fully qualified name is determined and used. - - the name of the file to open - true to append to existing file - - This method will ensure that the directory structure - for the specified exists. - - - - - Get the current output file name - - the base file name - the output file name - - The output file name is based on the base fileName specified. - If is set then the output - file name is the same as the base file passed in. Otherwise - the output file depends on the date pattern, on the count - direction or both. - - - - - Determines curSizeRollBackups (only within the current roll point) - - - - - Generates a wildcard pattern that can be used to find all files - that are similar to the base file name. - - - - - - - - - Builds a list of filenames for all files matching the base filename plus a file - pattern. - - - - - - - - - Initiates a roll over if needed for crossing a date boundary since the last run. - - - - - Initializes based on existing conditions at time of . - - - - Initializes based on existing conditions at time of . - The following is done - determine curSizeRollBackups (only within the current roll point)initiates a roll over if needed for crossing a date boundary since the last run. - - - - - Does the work of bumping the 'current' file counter higher - to the highest count when an incremental file name is seen. - The highest count is either the first file (when count direction - is greater than 0) or the last file (when count direction less than 0). - In either case, we want to know the highest count that is present. - - - - - - - - - Attempts to extract a number from the end of the file name that indicates - the number of the times the file has been rolled over. - - - Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes. - - - - - - - - - Takes a list of files and a base file name, and looks for - 'incremented' versions of the base file. Bumps the max - count up to the highest count seen. - - - - - - - - - Calculates the RollPoint for the datePattern supplied. - - the date pattern to calculate the check period for - The RollPoint that is most accurate for the date pattern supplied - - Essentially the date pattern is examined to determine what the - most suitable roll point is. The roll point chosen is the roll point - with the smallest period that can be detected using the date pattern - supplied. i.e. if the date pattern only outputs the year, month, day - and hour then the smallest roll point that can be detected would be - and hourly roll point as minutes could not be detected. - - - - - Initialize the appender based on the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Sets initial conditions including date/time roll over information, first check, - scheduledFilename, and calls to initialize - the current number of backups. - - - - - - - - - .1, .2, .3, etc. - - - - - - Rollover the file(s) to date/time tagged file(s). - - set to true if the file to be rolled is currently open - - - Rollover the file(s) to date/time tagged file(s). - Resets curSizeRollBackups. - If fileIsOpen is set then the new file is opened (through SafeOpenFile). - - - - - - Renames file to file . - - Name of existing file to roll. - New name for file. - - - Renames file to file . It - also checks for existence of target file and deletes if it does. - - - - - - Test if a file exists at a specified path - - the path to the file - true if the file exists - - - Test if a file exists at a specified path - - - - - - Deletes the specified file if it exists. - - The file to delete. - - - Delete a file if is exists. - The file is first moved to a new filename then deleted. - This allows the file to be removed even when it cannot - be deleted, but it still can be moved. - - - - - - Implements file roll base on file size. - - - - If the maximum number of size based backups is reached - (curSizeRollBackups == maxSizeRollBackups) then the oldest - file is deleted -- its index determined by the sign of countDirection. - If countDirection < 0, then files - {File.1, ..., File.curSizeRollBackups -1} - are renamed to {File.2, ..., - File.curSizeRollBackups}. Moreover, File is - renamed File.1 and closed. - - - A new file is created to receive further log output. - - - If maxSizeRollBackups is equal to zero, then the - File is truncated with no backup files created. - - - If maxSizeRollBackups < 0, then File is - renamed if needed and no files are deleted. - - - - - - Implements file roll. - - the base name to rename - - - If the maximum number of size based backups is reached - (curSizeRollBackups == maxSizeRollBackups) then the oldest - file is deleted -- its index determined by the sign of countDirection. - If countDirection < 0, then files - {File.1, ..., File.curSizeRollBackups -1} - are renamed to {File.2, ..., - File.curSizeRollBackups}. - - - If maxSizeRollBackups is equal to zero, then the - File is truncated with no backup files created. - - - If maxSizeRollBackups < 0, then File is - renamed if needed and no files are deleted. - - - This is called by to rename the files. - - - - - - Get the start time of the next window for the current rollpoint - - the current date - the type of roll point we are working with - the start time for the next roll point an interval after the currentDateTime date - - - Returns the date of the next roll point after the currentDateTime date passed to the method. - - - The basic strategy is to subtract the time parts that are less significant - than the rollpoint from the current time. This should roll the time back to - the start of the time window for the current rollpoint. Then we add 1 window - worth of time and get the start time of the next window for the rollpoint. - - - - - - Send an e-mail when a specific logging event occurs, typically on errors - or fatal errors. - - - - The number of logging events delivered in this e-mail depend on - the value of option. The - keeps only the last - logging events in its - cyclic buffer. This keeps memory requirements at a reasonable level while - still delivering useful application context. - - - Authentication and setting the server Port are only available on the MS .NET 1.1 runtime. - For these features to be enabled you need to ensure that you are using a version of - the log4net assembly that is built against the MS .NET 1.1 framework and that you are - running the your application on the MS .NET 1.1 runtime. On all other platforms only sending - unauthenticated messages to a server listening on port 25 (the default) is supported. - - - Authentication is supported by setting the property to - either or . - If using authentication then the - and properties must also be set. - - - To set the SMTP server port use the property. The default port is 25. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Default constructor - - - - - - Values for the property. - - - - SMTP authentication modes. - - - - - - No authentication - - - - - Basic authentication. - - - Requires a username and password to be supplied - - - - - Integrated authentication - - - Uses the Windows credentials from the current thread or process to authenticate. - - - - - Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions). - - - - For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. - - - For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. - - - - - For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. - - - For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. - - - - - - Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses - that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions). - - - - For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. - - - For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. - - - - - For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. - - - For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. - - - - - - Gets or sets a semicolon-delimited list of recipient e-mail addresses - that will be blind carbon copied. - - - A semicolon-delimited list of e-mail addresses. - - - - A semicolon-delimited list of recipient e-mail addresses. - - - - - - Gets or sets the e-mail address of the sender. - - - The e-mail address of the sender. - - - - The e-mail address of the sender. - - - - - - Gets or sets the subject line of the e-mail message. - - - The subject line of the e-mail message. - - - - The subject line of the e-mail message. - - - - - - Gets or sets the name of the SMTP relay mail server to use to send - the e-mail messages. - - - The name of the e-mail relay server. If SmtpServer is not set, the - name of the local SMTP server is used. - - - - The name of the e-mail relay server. If SmtpServer is not set, the - name of the local SMTP server is used. - - - - - - Obsolete - - - Use the BufferingAppenderSkeleton Fix methods instead - - - - Obsolete property. - - - - - - The mode to use to authentication with the SMTP server - - - Authentication is only available on the MS .NET 1.1 runtime. - - Valid Authentication mode values are: , - , and . - The default value is . When using - you must specify the - and to use to authenticate. - When using the Windows credentials for the current - thread, if impersonating, or the process will be used to authenticate. - - - - - - The username to use to authenticate with the SMTP server - - - Authentication is only available on the MS .NET 1.1 runtime. - - A and must be specified when - is set to , - otherwise the username will be ignored. - - - - - - The password to use to authenticate with the SMTP server - - - Authentication is only available on the MS .NET 1.1 runtime. - - A and must be specified when - is set to , - otherwise the password will be ignored. - - - - - - The port on which the SMTP server is listening - - - Server Port is only available on the MS .NET 1.1 runtime. - - The port on which the SMTP server is listening. The default - port is 25. The Port can only be changed when running on - the MS .NET 1.1 runtime. - - - - - - Gets or sets the priority of the e-mail message - - - One of the values. - - - - Sets the priority of the e-mails generated by this - appender. The default priority is . - - - If you are using this appender to report errors then - you may want to set the priority to . - - - - - - This appender requires a to be set. - - - true - - - - This appender requires a to be set. - - - - - - Sends the contents of the cyclic buffer as an e-mail message. - - The logging events to send. - - - - Send the email message - - the body text to include in the mail - - - - Send an email when a specific logging event occurs, typically on errors - or fatal errors. Rather than sending via smtp it writes a file into the - directory specified by . This allows services such - as the IIS SMTP agent to manage sending the messages. - - - - The configuration for this appender is identical to that of the SMTPAppender, - except that instead of specifying the SMTPAppender.SMTPHost you specify - . - - - The number of logging events delivered in this e-mail depend on - the value of option. The - keeps only the last - logging events in its - cyclic buffer. This keeps memory requirements at a reasonable level while - still delivering useful application context. - - - Niall Daley - Nicko Cadell - - - - Default constructor - - - - Default constructor - - - - - - The security context to use for privileged calls - - - - - Gets or sets a semicolon-delimited list of recipient e-mail addresses. - - - A semicolon-delimited list of e-mail addresses. - - - - A semicolon-delimited list of e-mail addresses. - - - - - - Gets or sets the e-mail address of the sender. - - - The e-mail address of the sender. - - - - The e-mail address of the sender. - - - - - - Gets or sets the subject line of the e-mail message. - - - The subject line of the e-mail message. - - - - The subject line of the e-mail message. - - - - - - Gets or sets the path to write the messages to. - - - - Gets or sets the path to write the messages to. This should be the same - as that used by the agent sending the messages. - - - - - - Gets or sets the used to write to the pickup directory. - - - The used to write to the pickup directory. - - - - Unless a specified here for this appender - the is queried for the - security context to use. The default behavior is to use the security context - of the current thread. - - - - - - This appender requires a to be set. - - - true - - - - This appender requires a to be set. - - - - - - Sends the contents of the cyclic buffer as an e-mail message. - - The logging events to send. - - - Sends the contents of the cyclic buffer as an e-mail message. - - - - - - Activate the options on this appender. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Convert a path into a fully qualified path. - - The path to convert. - The fully qualified path. - - - Converts the path specified to a fully - qualified path. If the path is relative it is - taken as relative from the application base - directory. - - - - - - Appender that allows clients to connect via Telnet to receive log messages - - - - The TelnetAppender accepts socket connections and streams logging messages - back to the client. - The output is provided in a telnet-friendly way so that a log can be monitored - over a TCP/IP socket. - This allows simple remote monitoring of application logging. - - - The default is 23 (the telnet port). - - - Keith Long - Nicko Cadell - - - - Default constructor - - - - Default constructor - - - - - - Helper class to manage connected clients - - - - The SocketHandler class is used to accept connections from - clients. It is threaded so that clients can connect/disconnect - asynchronously. - - - - - - Opens a new server port on - the local port to listen on for connections - - - Creates a socket handler on the specified local server port. - - - - - - Class that represents a client connected to this handler - - - - Class that represents a client connected to this handler - - - - - - Create this for the specified - the client's socket - - - Opens a stream writer on the socket. - - - - - - Write a string to the client - - string to send - - - Write a string to the client - - - - - - Cleanup the clients connection - - - - Close the socket connection. - - - - - - Test if this handler has active connections - - - true if this handler has active connections - - - - This property will be true while this handler has - active connections, that is at least one connection that - the handler will attempt to send a message to. - - - - - - Sends a string message to each of the connected clients - - the text to send - - - Sends a string message to each of the connected clients - - - - - - Add a client to the internal clients list - - client to add - - - - Remove a client from the internal clients list - - client to remove - - - - Callback used to accept a connection on the server socket - - The result of the asynchronous operation - - - On connection adds to the list of connections - if there are two many open connections you will be disconnected - - - - - - Close all network connections - - - - Make sure we close all network connections - - - - - - The fully qualified type of the TelnetAppender class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets or sets the TCP port number on which this will listen for connections. - - - An integer value in the range to - indicating the TCP port number on which this will listen for connections. - - - - The default value is 23 (the telnet port). - - - The value specified is less than - or greater than . - - - - This appender requires a to be set. - - - true - - - - This appender requires a to be set. - - - - - - Overrides the parent method to close the socket handler - - - - Closes all the outstanding connections. - - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Create the socket handler and wait for connections - - - - - - Writes the logging event to each connected client. - - The event to log. - - - Writes the logging event to each connected client. - - - - - - Sends logging events to a . - - - - An Appender that writes to a . - - - This appender may be used stand alone if initialized with an appropriate - writer, however it is typically used as a base class for an appender that - can open a to write to. - - - Nicko Cadell - Gert Driesen - Douglas de la Torre - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initializes a new instance of the class and - sets the output destination to a new initialized - with the specified . - - The layout to use with this appender. - The to output to. - - - Obsolete constructor. - - - - - - Initializes a new instance of the class and sets - the output destination to the specified . - - The layout to use with this appender - The to output to - - The must have been previously opened. - - - - Obsolete constructor. - - - - - - This is the where logging events - will be written to. - - - - - Immediate flush means that the underlying - or output stream will be flushed at the end of each append operation. - - - - Immediate flush is slower but ensures that each append request is - actually written. If is set to - false, then there is a good chance that the last few - logging events are not actually persisted if and when the application - crashes. - - - The default value is true. - - - - - - The fully qualified type of the TextWriterAppender class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets or set whether the appender will flush at the end - of each append operation. - - - - The default behavior is to flush at the end of each - append operation. - - - If this option is set to false, then the underlying - stream can defer persisting the logging event to a later - time. - - - - Avoiding the flush operation at the end of each append results in - a performance gain of 10 to 20 percent. However, there is safety - trade-off involved in skipping flushing. Indeed, when flushing is - skipped, then it is likely that the last few log events will not - be recorded on disk when the application exits. This is a high - price to pay even for a 20% performance gain. - - - - - Sets the where the log output will go. - - - - The specified must be open and writable. - - - The will be closed when the appender - instance is closed. - - - Note: Logging to an unopened will fail. - - - - - - Gets or set the and the underlying - , if any, for this appender. - - - The for this appender. - - - - - This appender requires a to be set. - - - true - - - - This appender requires a to be set. - - - - - - Gets or sets the where logging events - will be written to. - - - The where logging events are written. - - - - This is the where logging events - will be written to. - - - - - - This method determines if there is a sense in attempting to append. - - - - This method checks if an output target has been set and if a - layout has been set. - - - - false if any of the preconditions fail. - - - - This method is called by the - method. - - The event to log. - - - Writes a log statement to the output stream if the output stream exists - and is writable. - - - The format of the output will depend on the appender's layout. - - - - - - This method is called by the - method. - - The array of events to log. - - - This method writes all the bulk logged events to the output writer - before flushing the stream. - - - - - - Close this appender instance. The underlying stream or writer is also closed. - - - Closed appenders cannot be reused. - - - - - Writes the footer and closes the underlying . - - - - Writes the footer and closes the underlying . - - - - - - Closes the underlying . - - - - Closes the underlying . - - - - - - Clears internal references to the underlying - and other variables. - - - - Subclasses can override this method for an alternate closing behavior. - - - - - - Writes a footer as produced by the embedded layout's property. - - - - Writes a footer as produced by the embedded layout's property. - - - - - - Writes a header produced by the embedded layout's property. - - - - Writes a header produced by the embedded layout's property. - - - - - - Called to allow a subclass to lazily initialize the writer - - - - This method is called when an event is logged and the or - have not been set. This allows a subclass to - attempt to initialize the writer multiple times. - - - - - - Appends log events to the system. - - - - The application configuration file can be used to control what listeners - are actually used. See the MSDN documentation for the - class for details on configuring the - trace system. - - - Events are written using the System.Diagnostics.Trace.Write(string,string) - method. The event's logger name is the default value for the category parameter - of the Write method. - - - Compact Framework -
    - The Compact Framework does not support the - class for any operation except Assert. When using the Compact Framework this - appender will write to the system rather than - the Trace system. This appender will therefore behave like the . -
    -
    - Douglas de la Torre - Nicko Cadell - Gert Driesen - Ron Grabowski -
    - - - Initializes a new instance of the . - - - - Default constructor. - - - - - - Initializes a new instance of the - with a specified layout. - - The layout to use with this appender. - - - Obsolete constructor. - - - - - - Immediate flush means that the underlying writer or output stream - will be flushed at the end of each append operation. - - - - Immediate flush is slower but ensures that each append request is - actually written. If is set to - false, then there is a good chance that the last few - logs events are not actually written to persistent media if and - when the application crashes. - - - The default value is true. - - - - - Defaults to %logger - - - - - Gets or sets a value that indicates whether the appender will - flush at the end of each write. - - - The default behavior is to flush at the end of each - write. If the option is set tofalse, then the underlying - stream can defer writing to physical medium to a later time. - - - Avoiding the flush operation at the end of each append results - in a performance gain of 10 to 20 percent. However, there is safety - trade-off involved in skipping flushing. Indeed, when flushing is - skipped, then it is likely that the last few log events will not - be recorded on disk when the application exits. This is a high - price to pay even for a 20% performance gain. - - - - - - The category parameter sent to the Trace method. - - - - Defaults to %logger which will use the logger name of the current - as the category parameter. - - - - - - - - This appender requires a to be set. - - - true - - - - This appender requires a to be set. - - - - - - Writes the logging event to the system. - - The event to log. - - - Writes the logging event to the system. - - - - - - Sends logging events as connectionless UDP datagrams to a remote host or a - multicast group using an . - - - - UDP guarantees neither that messages arrive, nor that they arrive in the correct order. - - - To view the logging results, a custom application can be developed that listens for logging - events. - - - When decoding events send via this appender remember to use the same encoding - to decode the events as was used to send the events. See the - property to specify the encoding to use. - - - - This example shows how to log receive logging events that are sent - on IP address 244.0.0.1 and port 8080 to the console. The event is - encoded in the packet as a unicode string and it is decoded as such. - - IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); - UdpClient udpClient; - byte[] buffer; - string loggingEvent; - try - { - udpClient = new UdpClient(8080); - while(true) - { - buffer = udpClient.Receive(ref remoteEndPoint); - loggingEvent = System.Text.Encoding.Unicode.GetString(buffer); - Console.WriteLine(loggingEvent); - } - } - catch(Exception e) - { - Console.WriteLine(e.ToString()); - } - - Dim remoteEndPoint as IPEndPoint - Dim udpClient as UdpClient - Dim buffer as Byte() - Dim loggingEvent as String - Try - remoteEndPoint = new IPEndPoint(IPAddress.Any, 0) - udpClient = new UdpClient(8080) - While True - buffer = udpClient.Receive(ByRef remoteEndPoint) - loggingEvent = System.Text.Encoding.Unicode.GetString(buffer) - Console.WriteLine(loggingEvent) - Wend - Catch e As Exception - Console.WriteLine(e.ToString()) - End Try - - An example configuration section to log information using this appender to the - IP 224.0.0.1 on port 8080: - - Gert Driesen - Nicko Cadell - - - - Initializes a new instance of the class. - - - The default constructor initializes all fields to their default values. - - - - - The IP address of the remote host or multicast group to which - the logging event will be sent. - - - - - The TCP port number of the remote host or multicast group to - which the logging event will be sent. - - - - - The cached remote endpoint to which the logging events will be sent. - - - - - The TCP port number from which the will communicate. - - - - - The instance that will be used for sending the - logging events. - - - - - The encoding to use for the packet. - - - - - Gets or sets the IP address of the remote host or multicast group to which - the underlying should sent the logging event. - - - The IP address of the remote host or multicast group to which the logging event - will be sent. - - - - Multicast addresses are identified by IP class D addresses (in the range 224.0.0.0 to - 239.255.255.255). Multicast packets can pass across different networks through routers, so - it is possible to use multicasts in an Internet scenario as long as your network provider - supports multicasting. - - - Hosts that want to receive particular multicast messages must register their interest by joining - the multicast group. Multicast messages are not sent to networks where no host has joined - the multicast group. Class D IP addresses are used for multicast groups, to differentiate - them from normal host addresses, allowing nodes to easily detect if a message is of interest. - - - Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below: - - - - - IP Address - Description - - - 224.0.0.1 - - - Sends a message to all system on the subnet. - - - - - 224.0.0.2 - - - Sends a message to all routers on the subnet. - - - - - 224.0.0.12 - - - The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet. - - - - - - - A complete list of actually reserved multicast addresses and their owners in the ranges - defined by RFC 3171 can be found at the IANA web site. - - - The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative - addresses. These addresses can be reused with other local groups. Routers are typically - configured with filters to prevent multicast traffic in this range from flowing outside - of the local network. - - - - - - Gets or sets the TCP port number of the remote host or multicast group to which - the underlying should sent the logging event. - - - An integer value in the range to - indicating the TCP port number of the remote host or multicast group to which the logging event - will be sent. - - - The underlying will send messages to this TCP port number - on the remote host or multicast group. - - The value specified is less than or greater than . - - - - Gets or sets the TCP port number from which the underlying will communicate. - - - An integer value in the range to - indicating the TCP port number from which the underlying will communicate. - - - - The underlying will bind to this port for sending messages. - - - Setting the value to 0 (the default) will cause the udp client not to bind to - a local port. - - - The value specified is less than or greater than . - - - - Gets or sets used to write the packets. - - - The used to write the packets. - - - - The used to write the packets. - - - - - - Gets or sets the underlying . - - - The underlying . - - - creates a to send logging events - over a network. Classes deriving from can use this - property to get or set this . Use the underlying - returned from if you require access beyond that which - provides. - - - - - Gets or sets the cached remote endpoint to which the logging events should be sent. - - - The cached remote endpoint to which the logging events will be sent. - - - The method will initialize the remote endpoint - with the values of the and - properties. - - - - - This appender requires a to be set. - - - true - - - - This appender requires a to be set. - - - - - - Initialize the appender based on the options set. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - The appender will be ignored if no was specified or - an invalid remote or local TCP port number was specified. - - - The required property was not specified. - The TCP port number assigned to or is less than or greater than . - - - - This method is called by the method. - - The event to log. - - - Sends the event using an UDP datagram. - - - Exceptions are passed to the . - - - - - - Closes the UDP connection and releases all resources associated with - this instance. - - - - Disables the underlying and releases all managed - and unmanaged resources associated with the . - - - - - - Initializes the underlying connection. - - - - The underlying is initialized and binds to the - port number from which you intend to communicate. - - - Exceptions are passed to the . - - - - - - Assembly level attribute that specifies a domain to alias to this assembly's repository. - - - - AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. - - - An assembly's logger repository is defined by its , - however this can be overridden by an assembly loaded before the target assembly. - - - An assembly can alias another assembly's domain to its repository by - specifying this attribute with the name of the target domain. - - - This attribute can only be specified on the assembly and may be used - as many times as necessary to alias all the required domains. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class with - the specified domain to alias to this assembly's repository. - - The domain to alias to this assemby's repository. - - - Obsolete. Use instead of . - - - - - - Assembly level attribute that specifies a repository to alias to this assembly's repository. - - - - An assembly's logger repository is defined by its , - however this can be overridden by an assembly loaded before the target assembly. - - - An assembly can alias another assembly's repository to its repository by - specifying this attribute with the name of the target repository. - - - This attribute can only be specified on the assembly and may be used - as many times as necessary to alias all the required repositories. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class with - the specified repository to alias to this assembly's repository. - - The repository to alias to this assemby's repository. - - - Initializes a new instance of the class with - the specified repository to alias to this assembly's repository. - - - - - - Gets or sets the repository to alias to this assemby's repository. - - - The repository to alias to this assemby's repository. - - - - The name of the repository to alias to this assemby's repository. - - - - - - Use this class to quickly configure a . - - - - Allows very simple programmatic configuration of log4net. - - - Only one appender can be configured using this configurator. - The appender is set at the root of the hierarchy and all logging - events will be delivered to that appender. - - - Appenders can also implement the interface. Therefore - they would require that the method - be called after the appenders properties have been configured. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - The fully qualified type of the BasicConfigurator class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Initializes the log4net system with a default configuration. - - - - Initializes the log4net logging system using a - that will write to Console.Out. The log messages are - formatted using the layout object - with the - layout style. - - - - - - Initializes the log4net system using the specified appender. - - The appender to use to log all logging events. - - - Initializes the log4net system using the specified appender. - - - - - - Initializes the log4net system using the specified appenders. - - The appenders to use to log all logging events. - - - Initializes the log4net system using the specified appenders. - - - - - - Initializes the with a default configuration. - - The repository to configure. - - - Initializes the specified repository using a - that will write to Console.Out. The log messages are - formatted using the layout object - with the - layout style. - - - - - - Initializes the using the specified appender. - - The repository to configure. - The appender to use to log all logging events. - - - Initializes the using the specified appender. - - - - - - Initializes the using the specified appenders. - - The repository to configure. - The appenders to use to log all logging events. - - - Initializes the using the specified appender. - - - - - - Base class for all log4net configuration attributes. - - - This is an abstract class that must be extended by - specific configurators. This attribute allows the - configurator to be parameterized by an assembly level - attribute. - - Nicko Cadell - Gert Driesen - - - - Constructor used by subclasses. - - the ordering priority for this configurator - - - The is used to order the configurator - attributes before they are invoked. Higher priority configurators are executed - before lower priority ones. - - - - - - Configures the for the specified assembly. - - The assembly that this attribute was defined on. - The repository to configure. - - - Abstract method implemented by a subclass. When this method is called - the subclass should configure the . - - - - - - Compare this instance to another ConfiguratorAttribute - - the object to compare to - see - - - Compares the priorities of the two instances. - Sorts by priority in descending order. Objects with the same priority are - randomly ordered. - - - - - - Use this class to initialize the log4net environment using an Xml tree. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - Configures a using an Xml tree. - - - Nicko Cadell - Gert Driesen - - - - Private constructor - - - - - Automatically configures the log4net system based on the - application's configuration settings. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - - - - Automatically configures the using settings - stored in the application's configuration file. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - The repository to configure. - - - - Configures log4net using a log4net element - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Loads the log4net configuration from the XML element - supplied as . - - The element to parse. - - - - Configures the using the specified XML - element. - - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - Loads the log4net configuration from the XML element - supplied as . - - The repository to configure. - The element to parse. - - - - Configures log4net using the specified configuration file. - - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - ... - DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures log4net using the specified configuration file. - - A stream to load the XML configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - ... - DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The stream to load the XML configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures log4net using the file specified, monitors the file for changes - and reloads the configuration if a change is detected. - - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Configures the using the file specified, - monitors the file for changes and reloads the configuration if a change - is detected. - - The repository to configure. - The XML file to load the configuration from. - - - DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Assembly level attribute to configure the . - - - - AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. - - - This attribute may only be used at the assembly scope and can only - be used once per assembly. - - - Use this attribute to configure the - without calling one of the - methods. - - - Nicko Cadell - Gert Driesen - - - - Assembly level attribute that specifies the logging domain for the assembly. - - - - DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute. - - - Assemblies are mapped to logging domains. Each domain has its own - logging repository. This attribute specified on the assembly controls - the configuration of the domain. The property specifies the name - of the domain that this assembly is a part of. The - specifies the type of the repository objects to create for the domain. If - this attribute is not specified and a is not specified - then the assembly will be part of the default shared logging domain. - - - This attribute can only be specified on the assembly and may only be used - once per assembly. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Obsolete. Use RepositoryAttribute instead of DomainAttribute. - - - - - - Initialize a new instance of the class - with the name of the domain. - - The name of the domain. - - - Obsolete. Use RepositoryAttribute instead of DomainAttribute. - - - - - - Class to register for the log4net section of the configuration file - - - The log4net section of the configuration file needs to have a section - handler registered. This is the section handler used. It simply returns - the XML element that is the root of the section. - - - Example of registering the log4net section handler : -
    - log4net configuration XML goes here - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Parses the configuration section. - - The configuration settings in a corresponding parent configuration section. - The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference. - The for the log4net section. - The for the log4net section. - - - Returns the containing the configuration data, - - - - - - Assembly level attribute that specifies a plugin to attach to - the repository. - - - - Specifies the type of a plugin to create and attach to the - assembly's repository. The plugin type must implement the - interface. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class - with the specified type. - - The type name of plugin to create. - - - Create the attribute with the plugin type specified. - - - Where possible use the constructor that takes a . - - - - - - Initializes a new instance of the class - with the specified type. - - The type of plugin to create. - - - Create the attribute with the plugin type specified. - - - - - - Gets or sets the type for the plugin. - - - The type for the plugin. - - - - The type for the plugin. - - - - - - Gets or sets the type name for the plugin. - - - The type name for the plugin. - - - - The type name for the plugin. - - - Where possible use the property instead. - - - - - - Creates the plugin object defined by this attribute. - - - - Creates the instance of the object as - specified by this attribute. - - - The plugin object. - - - - Returns a representation of the properties of this object. - - - - Overrides base class method to - return a representation of the properties of this object. - - - A representation of the properties of this object - - - - Assembly level attribute that specifies the logging repository for the assembly. - - - - Assemblies are mapped to logging repository. This attribute specified - on the assembly controls - the configuration of the repository. The property specifies the name - of the repository that this assembly is a part of. The - specifies the type of the object - to create for the assembly. If this attribute is not specified or a - is not specified then the assembly will be part of the default shared logging repository. - - - This attribute can only be specified on the assembly and may only be used - once per assembly. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Default constructor. - - - - - - Initialize a new instance of the class - with the name of the repository. - - The name of the repository. - - - Initialize the attribute with the name for the assembly's repository. - - - - - - Gets or sets the name of the logging repository. - - - The string name to use as the name of the repository associated with this - assembly. - - - - This value does not have to be unique. Several assemblies can share the - same repository. They will share the logging configuration of the repository. - - - - - - Gets or sets the type of repository to create for this assembly. - - - The type of repository to create for this assembly. - - - - The type of the repository to create for the assembly. - The type must implement the - interface. - - - This will be the type of repository created when - the repository is created. If multiple assemblies reference the - same repository then the repository is only created once using the - of the first assembly to call into the - repository. - - - - - - Assembly level attribute to configure the . - - - - This attribute may only be used at the assembly scope and can only - be used once per assembly. - - - Use this attribute to configure the - without calling one of the - methods. - - - Nicko Cadell - - - - Construct provider attribute with type specified - - the type of the provider to use - - - The provider specified must subclass the - class. - - - - - - The fully qualified type of the SecurityContextProviderAttribute class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets or sets the type of the provider to use. - - - the type of the provider to use. - - - - The provider specified must subclass the - class. - - - - - - Configures the SecurityContextProvider - - The assembly that this attribute was defined on. - The repository to configure. - - - Creates a provider instance from the specified. - Sets this as the default security context provider . - - - - - - Use this class to initialize the log4net environment using an Xml tree. - - - - Configures a using an Xml tree. - - - Nicko Cadell - Gert Driesen - - - - Private constructor - - - - - Class used to watch config files. - - - - Uses the to monitor - changes to a specified file. Because multiple change notifications - may be raised when the file is modified, a timer is used to - compress the notifications into a single event. The timer - waits for time before delivering - the event notification. If any further - change notifications arrive while the timer is waiting it - is reset and waits again for to - elapse. - - - - - - Initializes a new instance of the class to - watch a specified config file used to configure a repository. - - The repository to configure. - The configuration file to watch. - - - Initializes a new instance of the class. - - - - - - The default amount of time to wait after receiving notification - before reloading the config file. - - - - - Holds the FileInfo used to configure the XmlConfigurator - - - - - Holds the repository being configured. - - - - - The timer used to compress the notification events. - - - - - Watches file for changes. This object should be disposed when no longer - needed to free system handles on the watched resources. - - - - - Event handler used by . - - The firing the event. - The argument indicates the file that caused the event to be fired. - - - This handler reloads the configuration from the file when the event is fired. - - - - - - Event handler used by . - - The firing the event. - The argument indicates the file that caused the event to be fired. - - - This handler reloads the configuration from the file when the event is fired. - - - - - - Called by the timer when the configuration has been updated. - - null - - - - Release the handles held by the watcher and timer. - - - - - Maps repository names to ConfigAndWatchHandler instances to allow a particular - ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is - reconfigured. - - - - - The fully qualified type of the XmlConfigurator class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Automatically configures the log4net system based on the - application's configuration settings. - - - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - - To use this method to configure log4net you must specify - the section - handler for the log4net configuration section. See the - for an example. - - - - - - - Automatically configures the using settings - stored in the application's configuration file. - - - - Each application has a configuration file. This has the - same name as the application with '.config' appended. - This file is XML and calling this function prompts the - configurator to look in that file for a section called - log4net that contains the configuration data. - - - To use this method to configure log4net you must specify - the section - handler for the log4net configuration section. See the - for an example. - - - The repository to configure. - - - - Configures log4net using a log4net element - - - - Loads the log4net configuration from the XML element - supplied as . - - - The element to parse. - - - - Configures the using the specified XML - element. - - - Loads the log4net configuration from the XML element - supplied as . - - The repository to configure. - The element to parse. - - - - Configures log4net using the specified configuration file. - - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The first element matching <configuration> will be read as the - configuration. If this file is also a .NET .config file then you must specify - a configuration section for the log4net element otherwise .NET will - complain. Set the type for the section handler to , for example: -
    - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - ... - XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures log4net using the specified configuration URI. - - A URI to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - The must support the URI scheme specified. - - - - - - Configures log4net using the specified configuration data stream. - - A stream to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the log4net configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The log4net configuration file can possible be specified in the application's - configuration file (either MyAppName.exe.config for a - normal application on Web.config for an ASP.NET application). - - - The first element matching <configuration> will be read as the - configuration. If this file is also a .NET .config file then you must specify - a configuration section for the log4net element otherwise .NET will - complain. Set the type for the section handler to , for example: -
    - - The following example configures log4net using a configuration file, of which the - location is stored in the application's configuration file : - - - using log4net.Config; - using System.IO; - using System.Configuration; - ... - XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); - - - In the .config file, the path to the log4net can be specified like this : - - - - - - - - - - - - - Configures the using the specified configuration - URI. - - The repository to configure. - A URI to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The must support the URI scheme specified. - - - - - - Configures the using the specified configuration - file. - - The repository to configure. - The stream to load the XML configuration from. - - - The configuration data must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - Note that this method will NOT close the stream parameter. - - - - - - Configures log4net using the file specified, monitors the file for changes - and reloads the configuration if a change is detected. - - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Configures the using the file specified, - monitors the file for changes and reloads the configuration if a change - is detected. - - The repository to configure. - The XML file to load the configuration from. - - - The configuration file must be valid XML. It must contain - at least one element called log4net that holds - the configuration data. - - - The configuration file will be monitored using a - and depends on the behavior of that class. - - - For more information on how to configure log4net using - a separate configuration file, see . - - - - - - - Configures the specified repository using a log4net element. - - The hierarchy to configure. - The element to parse. - - - Loads the log4net configuration from the XML element - supplied as . - - - This method is ultimately called by one of the Configure methods - to load the configuration from an . - - - - - - Assembly level attribute to configure the . - - - - This attribute may only be used at the assembly scope and can only - be used once per assembly. - - - Use this attribute to configure the - without calling one of the - methods. - - - If neither of the or - properties are set the configuration is loaded from the application's .config file. - If set the property takes priority over the - property. The property - specifies a path to a file to load the config from. The path is relative to the - application's base directory; . - The property is used as a postfix to the assembly file name. - The config file must be located in the application's base directory; . - For example in a console application setting the to - config has the same effect as not specifying the or - properties. - - - The property can be set to cause the - to watch the configuration file for changes. - - - - Log4net will only look for assembly level configuration attributes once. - When using the log4net assembly level attributes to control the configuration - of log4net you must ensure that the first call to any of the - methods is made from the assembly with the configuration - attributes. - - - If you cannot guarantee the order in which log4net calls will be made from - different assemblies you must use programmatic configuration instead, i.e. - call the method directly. - - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Default constructor - - - - - - The fully qualified type of the XmlConfiguratorAttribute class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets or sets the filename of the configuration file. - - - The filename of the configuration file. - - - - If specified, this is the name of the configuration file to use with - the . This file path is relative to the - application base directory (). - - - The takes priority over the . - - - - - - Gets or sets the extension of the configuration file. - - - The extension of the configuration file. - - - - If specified this is the extension for the configuration file. - The path to the config file is built by using the application - base directory (), - the assembly file name and the config file extension. - - - If the is set to MyExt then - possible config file names would be: MyConsoleApp.exe.MyExt or - MyClassLibrary.dll.MyExt. - - - The takes priority over the . - - - - - - Gets or sets a value indicating whether to watch the configuration file. - - - true if the configuration should be watched, false otherwise. - - - - If this flag is specified and set to true then the framework - will watch the configuration file and will reload the config each time - the file is modified. - - - The config file can only be watched if it is loaded from local disk. - In a No-Touch (Smart Client) deployment where the application is downloaded - from a web server the config file may not reside on the local disk - and therefore it may not be able to watch it. - - - Watching configuration is not supported on the SSCLI. - - - - - - Configures the for the specified assembly. - - The assembly that this attribute was defined on. - The repository to configure. - - - Configure the repository using the . - The specified must extend the - class otherwise the will not be able to - configure it. - - - The does not extend . - - - - Attempt to load configuration from the local file system - - The assembly that this attribute was defined on. - The repository to configure. - - - - Configure the specified repository using a - The repository to configure. - the FileInfo pointing to the config file - - - - Attempt to load configuration from a URI - - The assembly that this attribute was defined on. - The repository to configure. - - - - The implementation of the interface suitable - for use with the compact framework - - - - This implementation is a simple - mapping between repository name and - object. - - - The .NET Compact Framework 1.0 does not support retrieving assembly - level attributes therefore unlike the DefaultRepositorySelector - this selector does not examine the calling assembly for attributes. - - - Nicko Cadell - - - - Create a new repository selector - - the type of the repositories to create, must implement - - - Create an new compact repository selector. - The default type for repositories must be specified, - an appropriate value would be . - - - throw if is null - throw if does not implement - - - - The fully qualified type of the CompactRepositorySelector class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Event to notify that a logger repository has been created. - - - Event to notify that a logger repository has been created. - - - - Event raised when a new repository is created. - The event source will be this selector. The event args will - be a which - holds the newly created . - - - - - - Get the for the specified assembly - - not used - The default - - - The argument is not used. This selector does not create a - separate repository for each assembly. - - - As a named repository is not specified the default repository is - returned. The default repository is named log4net-default-repository. - - - - - - Get the named - the name of the repository to lookup - The named - - - Get the named . The default - repository is log4net-default-repository. Other repositories - must be created using the . - If the named repository does not exist an exception is thrown. - - - throw if is null - throw if the does not exist - - - - Create a new repository for the assembly specified - - not used - the type of repository to create, must implement - the repository created - - - The argument is not used. This selector does not create a - separate repository for each assembly. - - - If the is null then the - default repository type specified to the constructor is used. - - - As a named repository is not specified the default repository is - returned. The default repository is named log4net-default-repository. - - - - - - Create a new repository for the repository specified - - the repository to associate with the - the type of repository to create, must implement . - If this param is null then the default repository type is used. - the repository created - - - The created will be associated with the repository - specified such that a call to with the - same repository specified will return the same repository instance. - - - If the named repository already exists an exception will be thrown. - - - If is null then the default - repository type specified to the constructor is used. - - - throw if is null - throw if the already exists - - - - Test if a named repository exists - - the named repository to check - - true if the repository exists - - - Test if a named repository exists. Use - to create a new repository and to retrieve - a repository. - - - - - - Gets a list of objects - - an array of all known objects - - - Gets an array of all of the repositories created by this selector. - - - - - - Notify the registered listeners that the repository has been created - - The repository that has been created - - - Raises the LoggerRepositoryCreatedEvent - event. - - - - - - The default implementation of the interface. - - - - Uses attributes defined on the calling assembly to determine how to - configure the hierarchy for the repository. - - - Nicko Cadell - Gert Driesen - - - - Creates a new repository selector. - - The type of the repositories to create, must implement - - - Create an new repository selector. - The default type for repositories must be specified, - an appropriate value would be . - - - - is . - - does not implement . - - - - The fully qualified type of the DefaultRepositorySelector class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Event to notify that a logger repository has been created. - - - Event to notify that a logger repository has been created. - - - - Event raised when a new repository is created. - The event source will be this selector. The event args will - be a which - holds the newly created . - - - - - - Gets the for the specified assembly. - - The assembly use to lookup the . - - - The type of the created and the repository - to create can be overridden by specifying the - attribute on the . - - - The default values are to use the - implementation of the interface and to use the - as the name of the repository. - - - The created will be automatically configured using - any attributes defined on - the . - - - The for the assembly - - is . - - - - Gets the for the specified repository. - - The repository to use to lookup the . - The for the specified repository. - - - Returns the named repository. If is null - a is thrown. If the repository - does not exist a is thrown. - - - Use to create a repository. - - - - is . - - does not exist. - - - - Create a new repository for the assembly specified - - the assembly to use to create the repository to associate with the . - The type of repository to create, must implement . - The repository created. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The type of the created and - the repository to create can be overridden by specifying the - attribute on the - . The default values are to use the - implementation of the - interface and to use the - as the name of the repository. - - - The created will be automatically - configured using any - attributes defined on the . - - - If a repository for the already exists - that repository will be returned. An error will not be raised and that - repository may be of a different type to that specified in . - Also the attribute on the - assembly may be used to override the repository type specified in - . - - - - is . - - - - Creates a new repository for the assembly specified. - - the assembly to use to create the repository to associate with the . - The type of repository to create, must implement . - The name to assign to the created repository - Set to true to read and apply the assembly attributes - The repository created. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The type of the created and - the repository to create can be overridden by specifying the - attribute on the - . The default values are to use the - implementation of the - interface and to use the - as the name of the repository. - - - The created will be automatically - configured using any - attributes defined on the . - - - If a repository for the already exists - that repository will be returned. An error will not be raised and that - repository may be of a different type to that specified in . - Also the attribute on the - assembly may be used to override the repository type specified in - . - - - - is . - - - - Creates a new repository for the specified repository. - - The repository to associate with the . - The type of repository to create, must implement . - If this param is then the default repository type is used. - The new repository. - - - The created will be associated with the repository - specified such that a call to with the - same repository specified will return the same repository instance. - - - - is . - - already exists. - - - - Test if a named repository exists - - the named repository to check - - true if the repository exists - - - Test if a named repository exists. Use - to create a new repository and to retrieve - a repository. - - - - - - Gets a list of objects - - an array of all known objects - - - Gets an array of all of the repositories created by this selector. - - - - - - Aliases a repository to an existing repository. - - The repository to alias. - The repository that the repository is aliased to. - - - The repository specified will be aliased to the repository when created. - The repository must not already exist. - - - When the repository is created it must utilize the same repository type as - the repository it is aliased to, otherwise the aliasing will fail. - - - - - is . - -or- - - is . - - - - - Notifies the registered listeners that the repository has been created. - - The repository that has been created. - - - Raises the event. - - - - - - Gets the repository name and repository type for the specified assembly. - - The assembly that has a . - in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling. - in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling. - - is . - - - - Configures the repository using information from the assembly. - - The assembly containing - attributes which define the configuration for the repository. - The repository to configure. - - - is . - -or- - - is . - - - - - Loads the attribute defined plugins on the assembly. - - The assembly that contains the attributes. - The repository to add the plugins to. - - - is . - -or- - - is . - - - - - Loads the attribute defined aliases on the assembly. - - The assembly that contains the attributes. - The repository to alias to. - - - is . - -or- - - is . - - - - - Defined error codes that can be passed to the method. - - - - Values passed to the method. - - - Nicko Cadell - - - - A general error - - - - - Error while writing output - - - - - Failed to flush file - - - - - Failed to close file - - - - - Unable to open output file - - - - - No layout specified - - - - - Failed to parse address - - - - - An evaluator that triggers on an Exception type - - - - This evaluator will trigger if the type of the Exception - passed to - is equal to a Type in . /// - - - Drew Schaeffer - - - - Default ctor to allow dynamic creation through a configurator. - - - - - Constructs an evaluator and initializes to trigger on - the type that triggers this evaluator. - If true, this evaluator will trigger on subclasses of . - - - - The type that causes the trigger to fire. - - - - - Causes subclasses of to cause the trigger to fire. - - - - - The type that triggers this evaluator. - - - - - If true, this evaluator will trigger on subclasses of . - - - - - Is this the triggering event? - - The event to check - This method returns true, if the logging event Exception - Type is . - Otherwise it returns false - - - This evaluator will trigger if the Exception Type of the event - passed to - is . - - - - - - Interface for attaching appenders to objects. - - - - Interface for attaching, removing and retrieving appenders. - - - Nicko Cadell - Gert Driesen - - - - Gets all attached appenders. - - - A collection of attached appenders. - - - - Gets a collection of attached appenders. - If there are no attached appenders the - implementation should return an empty - collection rather than null. - - - - - - Attaches an appender. - - The appender to add. - - - Add the specified appender. The implementation may - choose to allow or deny duplicate appenders. - - - - - - Gets an attached appender with the specified name. - - The name of the appender to get. - - The appender with the name specified, or null if no appender with the - specified name is found. - - - - Returns an attached appender with the specified. - If no appender with the specified name is found null will be - returned. - - - - - - Removes all attached appenders. - - - - Removes and closes all attached appenders - - - - - - Removes the specified appender from the list of attached appenders. - - The appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Appenders may delegate their error handling to an . - - - - Error handling is a particularly tedious to get right because by - definition errors are hard to predict and to reproduce. - - - Nicko Cadell - Gert Driesen - - - - Handles the error and information about the error condition is passed as - a parameter. - - The message associated with the error. - The that was thrown when the error occurred. - The error code associated with the error. - - - Handles the error and information about the error condition is passed as - a parameter. - - - - - - Prints the error message passed as a parameter. - - The message associated with the error. - The that was thrown when the error occurred. - - - See . - - - - - - Prints the error message passed as a parameter. - - The message associated with the error. - - - See . - - - - - - Interface for objects that require fixing. - - - - Interface that indicates that the object requires fixing before it - can be taken outside the context of the appender's - method. - - - When objects that implement this interface are stored - in the context properties maps and are fixed - (see ) the - method will be called. - - - Nicko Cadell - - - - Get a portable version of this object - - the portable instance of this object - - - Get a portable instance object that represents the current - state of this object. The portable object can be stored - and logged from any thread with identical results. - - - - - - Interface that all loggers implement - - - - This interface supports logging events and testing if a level - is enabled for logging. - - - These methods will not throw exceptions. Note to implementor, ensure - that the implementation of these methods cannot allow an exception - to be thrown to the caller. - - - Nicko Cadell - Gert Driesen - - - - Gets the name of the logger. - - - The name of the logger. - - - - The name of this logger - - - - - - Gets the where this - Logger instance is attached to. - - - The that this logger belongs to. - - - - Gets the where this - Logger instance is attached to. - - - - - - This generic form is intended to be used by wrappers. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The level of the message to be logged. - The message object to log. - the exception to log, including its stack trace. Pass null to not log an exception. - - - Generates a logging event for the specified using - the and . - - - - - - This is the most generic printing method that is intended to be used - by wrappers. - - The event being logged. - - - Logs the specified logging event through this logger. - - - - - - Checks if this logger is enabled for a given passed as parameter. - - The level to check. - - true if this logger is enabled for level, otherwise false. - - - - Test if this logger is going to log events of the specified . - - - - - - Base interface for all wrappers - - - - Base interface for all wrappers. - - - All wrappers must implement this interface. - - - Nicko Cadell - - - - Get the implementation behind this wrapper object. - - - The object that in implementing this object. - - - - The object that in implementing this - object. The Logger object may not - be the same object as this object because of logger decorators. - This gets the actual underlying objects that is used to process - the log events. - - - - - - Interface used to delay activate a configured object. - - - - This allows an object to defer activation of its options until all - options have been set. This is required for components which have - related options that remain ambiguous until all are set. - - - If a component implements this interface then the method - must be called by the container after its all the configured properties have been set - and before the component can be used. - - - Nicko Cadell - - - - Activate the options that were previously set with calls to properties. - - - - This allows an object to defer activation of its options until all - options have been set. This is required for components which have - related options that remain ambiguous until all are set. - - - If a component implements this interface then this method must be called - after its properties have been set before the component can be used. - - - - - - Provides data for the event. - - - - A - event is raised every time a is created. - - - - - - Construct instance using specified - - the that has been created - - - Construct instance using specified - - - - - - The created - - - - - The that has been created - - - The that has been created - - - - The that has been created - - - - - - Interface used by the to select the . - - - - The uses a - to specify the policy for selecting the correct - to return to the caller. - - - Nicko Cadell - Gert Driesen - - - - Event to notify that a logger repository has been created. - - - Event to notify that a logger repository has been created. - - - - Event raised when a new repository is created. - The event source will be this selector. The event args will - be a which - holds the newly created . - - - - - - Gets the for the specified assembly. - - The assembly to use to lookup to the - The for the assembly. - - - Gets the for the specified assembly. - - - How the association between and - is made is not defined. The implementation may choose any method for - this association. The results of this method must be repeatable, i.e. - when called again with the same arguments the result must be the - save value. - - - - - - Gets the named . - - The name to use to lookup to the . - The named - - Lookup a named . This is the repository created by - calling . - - - - - Creates a new repository for the assembly specified. - - The assembly to use to create the domain to associate with the . - The type of repository to create, must implement . - The repository created. - - - The created will be associated with the domain - specified such that a call to with the - same assembly specified will return the same repository instance. - - - How the association between and - is made is not defined. The implementation may choose any method for - this association. - - - - - - Creates a new repository with the name specified. - - The name to associate with the . - The type of repository to create, must implement . - The repository created. - - - The created will be associated with the name - specified such that a call to with the - same name will return the same repository instance. - - - - - - Test if a named repository exists - - the named repository to check - - true if the repository exists - - - Test if a named repository exists. Use - to create a new repository and to retrieve - a repository. - - - - - - Gets an array of all currently defined repositories. - - - An array of the instances created by - this . - - - Gets an array of all of the repositories created by this selector. - - - - - - Test if an triggers an action - - - - Implementations of this interface allow certain appenders to decide - when to perform an appender specific action. - - - The action or behavior triggered is defined by the implementation. - - - Nicko Cadell - - - - Test if this event triggers the action - - The event to check - - true if this event triggers the action, otherwise false - - - Return true if this event triggers the action - - - - - - Defines the default set of levels recognized by the system. - - - - Each has an associated . - - - Levels have a numeric that defines the relative - ordering between levels. Two Levels with the same - are deemed to be equivalent. - - - The levels that are recognized by log4net are set for each - and each repository can have different levels defined. The levels are stored - in the on the repository. Levels are - looked up by name from the . - - - When logging at level INFO the actual level used is not but - the value of LoggerRepository.LevelMap["INFO"]. The default value for this is - , but this can be changed by reconfiguring the level map. - - - Each level has a in addition to its . The - is the string that is written into the output log. By default - the display name is the same as the level name, but this can be used to alias levels - or to localize the log output. - - - Some of the predefined levels recognized by the system are: - - - - - . - - - - . - - - - . - - - - . - - - - . - - - - . - - - - . - - - - Nicko Cadell - Gert Driesen - - - - Constructor - - Integer value for this level, higher values represent more severe levels. - The string name of this level. - The display name for this level. This may be localized or otherwise different from the name - - - Initializes a new instance of the class with - the specified level name and value. - - - - - - Constructor - - Integer value for this level, higher values represent more severe levels. - The string name of this level. - - - Initializes a new instance of the class with - the specified level name and value. - - - - - - The level designates a higher level than all the rest. - - - - - The level designates very severe error events. - System unusable, emergencies. - - - - - The level designates very severe error events. - System unusable, emergencies. - - - - - The level designates very severe error events - that will presumably lead the application to abort. - - - - - The level designates very severe error events. - Take immediate action, alerts. - - - - - The level designates very severe error events. - Critical condition, critical. - - - - - The level designates very severe error events. - - - - - The level designates error events that might - still allow the application to continue running. - - - - - The level designates potentially harmful - situations. - - - - - The level designates informational messages - that highlight the progress of the application at the highest level. - - - - - The level designates informational messages that - highlight the progress of the application at coarse-grained level. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates fine-grained informational - events that are most useful to debug an application. - - - - - The level designates the lowest level possible. - - - - - Gets the name of this level. - - - The name of this level. - - - - Gets the name of this level. - - - - - - Gets the value of this level. - - - The value of this level. - - - - Gets the value of this level. - - - - - - Gets the display name of this level. - - - The display name of this level. - - - - Gets the display name of this level. - - - - - - Returns the representation of the current - . - - - A representation of the current . - - - - Returns the level . - - - - - - Compares levels. - - The object to compare against. - - true if the objects are equal. - - - Compares the levels of instances, and - defers to base class if the target object is not a - instance. - - - - - - Returns a hash code - - A hash code for the current . - - - Returns a hash code suitable for use in hashing algorithms and data - structures like a hash table. - - - Returns the hash code of the level . - - - - - - Compares this instance to a specified object and returns an - indication of their relative values. - - A instance or to compare with this instance. - - A 32-bit signed integer that indicates the relative order of the - values compared. The return value has these meanings: - ValueMeaningLess than zeroThis instance is less than .ZeroThis instance is equal to .Greater than zeroThis instance is greater than .-or- is . - - - must be an instance of - or ; otherwise, an exception is thrown. - - - - is not a . - - - - Compares two specified instances. - - The first to compare. - The second to compare. - - A 32-bit signed integer that indicates the relative order of the - two values compared. The return value has these meanings: - ValueMeaningLess than zero is less than .Zero is equal to .Greater than zero is greater than . - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is greater than another specified . - - A - A - - true if is greater than - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is less than another specified . - - A - A - - true if is less than - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is greater than or equal to another specified . - - A - A - - true if is greater than or equal to - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether a specified - is less than or equal to another specified . - - A - A - - true if is less than or equal to - ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether two specified - objects have the same value. - - A or . - A or . - - true if the value of is the same as the - value of ; otherwise, false. - - - - Compares two levels. - - - - - - Returns a value indicating whether two specified - objects have different values. - - A or . - A or . - - true if the value of is different from - the value of ; otherwise, false. - - - - Compares two levels. - - - - - - A strongly-typed collection of objects. - - Nicko Cadell - - - - Initializes a new instance of the LevelCollection class - that is empty and has the default initial capacity. - - - - - Initializes a new instance of the LevelCollection class - that has the specified initial capacity. - - - The number of elements that the new LevelCollection is initially capable of storing. - - - - - Initializes a new instance of the LevelCollection class - that contains elements copied from the specified LevelCollection. - - The LevelCollection whose elements are copied to the new collection. - - - - Initializes a new instance of the LevelCollection class - that contains elements copied from the specified array. - - The array whose elements are copied to the new list. - - - - Initializes a new instance of the LevelCollection class - that contains elements copied from the specified collection. - - The collection whose elements are copied to the new list. - - - - Allow subclasses to avoid our default constructors - - - - - - - Supports type-safe iteration over a . - - - - - Gets the current element in the collection. - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Type visible only to our subclasses - Used to access protected constructor - - - - - A value - - - - - Supports simple iteration over a . - - - - - Initializes a new instance of the Enumerator class. - - - - - - - Gets the current element in the collection. - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Gets or sets the at the specified index. - - The zero-based index of the element to get or set. - - - is less than zero - -or- - - is equal to or greater than . - - - - - Gets the number of elements actually contained in the LevelCollection. - - - - - Gets a value indicating whether access to the collection is synchronized (thread-safe). - - true if access to the ICollection is synchronized (thread-safe); otherwise, false. - - - - Gets an object that can be used to synchronize access to the collection. - - - - - Gets a value indicating whether the collection has a fixed size. - - true if the collection has a fixed size; otherwise, false. The default is false - - - - Gets a value indicating whether the IList is read-only. - - true if the collection is read-only; otherwise, false. The default is false - - - - Gets or sets the number of elements the LevelCollection can contain. - - - - - Creates a read-only wrapper for a LevelCollection instance. - - list to create a readonly wrapper arround - - A LevelCollection wrapper that is read-only. - - - - - Copies the entire LevelCollection to a one-dimensional - array. - - The one-dimensional array to copy to. - - - - Copies the entire LevelCollection to a one-dimensional - array, starting at the specified index of the target array. - - The one-dimensional array to copy to. - The zero-based index in at which copying begins. - - - - Adds a to the end of the LevelCollection. - - The to be added to the end of the LevelCollection. - The index at which the value has been added. - - - - Removes all elements from the LevelCollection. - - - - - Creates a shallow copy of the . - - A new with a shallow copy of the collection data. - - - - Determines whether a given is in the LevelCollection. - - The to check for. - - true if is found in the LevelCollection; otherwise, false. - - - - Returns the zero-based index of the first occurrence of a - in the LevelCollection. - - The to locate in the LevelCollection. - - The zero-based index of the first occurrence of - in the entire LevelCollection, if found; otherwise, -1. - - - - - Inserts an element into the LevelCollection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - - is less than zero - -or- - - is equal to or greater than . - - - - - Removes the first occurrence of a specific from the LevelCollection. - - The to remove from the LevelCollection. - - The specified was not found in the LevelCollection. - - - - - Removes the element at the specified index of the LevelCollection. - - The zero-based index of the element to remove. - - - is less than zero - -or- - - is equal to or greater than . - - - - - Returns an enumerator that can iterate through the LevelCollection. - - An for the entire LevelCollection. - - - - Adds the elements of another LevelCollection to the current LevelCollection. - - The LevelCollection whose elements should be added to the end of the current LevelCollection. - The new of the LevelCollection. - - - - Adds the elements of a array to the current LevelCollection. - - The array whose elements should be added to the end of the LevelCollection. - The new of the LevelCollection. - - - - Adds the elements of a collection to the current LevelCollection. - - The collection whose elements should be added to the end of the LevelCollection. - The new of the LevelCollection. - - - - Sets the capacity to the actual number of elements. - - - - - - is less than zero - -or- - - is equal to or greater than . - - - - - - is less than zero - -or- - - is equal to or greater than . - - - - - An evaluator that triggers at a threshold level - - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - Nicko Cadell - - - - Create a new evaluator using the threshold. - - - - Create a new evaluator using the threshold. - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - Create a new evaluator using the specified threshold. - - the threshold to trigger at - - - Create a new evaluator using the specified threshold. - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - The threshold for triggering - - - - - the threshold to trigger at - - - The that will cause this evaluator to trigger - - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - Is this the triggering event? - - The event to check - This method returns true, if the event level - is equal or higher than the . - Otherwise it returns false - - - This evaluator will trigger if the level of the event - passed to - is equal to or greater than the - level. - - - - - - Mapping between string name and Level object - - - - Mapping between string name and object. - This mapping is held separately for each . - The level name is case insensitive. - - - Nicko Cadell - - - - Construct the level map - - - - Construct the level map. - - - - - - Mapping from level name to Level object. The - level name is case insensitive - - - - - Lookup a by name - - The name of the Level to lookup - a Level from the map with the name specified - - - Returns the from the - map with the name specified. If the no level is - found then null is returned. - - - - - - Return all possible levels as a list of Level objects. - - all possible levels as a list of Level objects - - - Return all possible levels as a list of Level objects. - - - - - - Clear the internal maps of all levels - - - - Clear the internal maps of all levels - - - - - - Create a new Level and add it to the map - - the string to display for the Level - the level value to give to the Level - - - Create a new Level and add it to the map - - - - - - - Create a new Level and add it to the map - - the string to display for the Level - the level value to give to the Level - the display name to give to the Level - - - Create a new Level and add it to the map - - - - - - Add a Level to the map - - the Level to add - - - Add a Level to the map - - - - - - Lookup a named level from the map - - the name of the level to lookup is taken from this level. - If the level is not set on the map then this level is added - the level in the map with the name specified - - - Lookup a named level from the map. The name of the level to lookup is taken - from the property of the - argument. - - - If no level with the specified name is found then the - argument is added to the level map - and returned. - - - - - - The internal representation of caller location information. - - - - This class uses the System.Diagnostics.StackTrace class to generate - a call stack. The caller's information is then extracted from this stack. - - - The System.Diagnostics.StackTrace class is not supported on the - .NET Compact Framework 1.0 therefore caller location information is not - available on that framework. - - - The System.Diagnostics.StackTrace class has this to say about Release builds: - - - "StackTrace information will be most informative with Debug build configurations. - By default, Debug builds include debug symbols, while Release builds do not. The - debug symbols contain most of the file, method name, line number, and column - information used in constructing StackFrame and StackTrace objects. StackTrace - might not report as many method calls as expected, due to code transformations - that occur during optimization." - - - This means that in a Release build the caller information may be incomplete or may - not exist at all! Therefore caller location information cannot be relied upon in a Release build. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The declaring type of the method that is - the stack boundary into the logging system for this call. - - - Initializes a new instance of the - class based on the current thread. - - - - - - Constructor - - The fully qualified class name. - The method name. - The file name. - The line number of the method within the file. - - - Initializes a new instance of the - class with the specified data. - - - - - - When location information is not available the constant - NA is returned. Current value of this string - constant is ?. - - - - - The fully qualified type of the LocationInfo class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets the fully qualified class name of the caller making the logging - request. - - - The fully qualified class name of the caller making the logging - request. - - - - Gets the fully qualified class name of the caller making the logging - request. - - - - - - Gets the file name of the caller. - - - The file name of the caller. - - - - Gets the file name of the caller. - - - - - - Gets the line number of the caller. - - - The line number of the caller. - - - - Gets the line number of the caller. - - - - - - Gets the method name of the caller. - - - The method name of the caller. - - - - Gets the method name of the caller. - - - - - - Gets all available caller information - - - All available caller information, in the format - fully.qualified.classname.of.caller.methodName(Filename:line) - - - Gets all available caller information, in the format - fully.qualified.classname.of.caller.methodName(Filename:line) - - - - - Gets the stack frames from the stack trace of the caller making the log request - - - - - Exception base type for log4net. - - - - This type extends . It - does not add any new functionality but does differentiate the - type of exception being thrown. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - A message to include with the exception. - - - Initializes a new instance of the class with - the specified message. - - - - - - Constructor - - A message to include with the exception. - A nested exception to include. - - - Initializes a new instance of the class - with the specified message and inner exception. - - - - - - Serialization constructor - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Implementation of wrapper interface. - - - - This implementation of the interface - forwards to the held by the base class. - - - This logger has methods to allow the caller to log at the following - levels: - - - - DEBUG - - The and methods log messages - at the DEBUG level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - INFO - - The and methods log messages - at the INFO level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - WARN - - The and methods log messages - at the WARN level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - ERROR - - The and methods log messages - at the ERROR level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - FATAL - - The and methods log messages - at the FATAL level. That is the level with that name defined in the - repositories . The default value - for this level is . The - property tests if this level is enabled for logging. - - - - - The values for these levels and their semantic meanings can be changed by - configuring the for the repository. - - - Nicko Cadell - Gert Driesen - - - - Construct a new wrapper for the specified logger. - - The logger to wrap. - - - Construct a new wrapper for the specified logger. - - - - - - The fully qualified name of this declaring type not the type of any subclass. - - - - - Checks if this logger is enabled for the DEBUG - level. - - - true if this logger is enabled for DEBUG events, - false otherwise. - - - - This function is intended to lessen the computational cost of - disabled log debug statements. - - - For some log Logger object, when you write: - - - log.Debug("This is entry number: " + i ); - - - You incur the cost constructing the message, concatenation in - this case, regardless of whether the message is logged or not. - - - If you are worried about speed, then you should write: - - - if (log.IsDebugEnabled()) - { - log.Debug("This is entry number: " + i ); - } - - - This way you will not incur the cost of parameter - construction if debugging is disabled for log. On - the other hand, if the log is debug enabled, you - will incur the cost of evaluating whether the logger is debug - enabled twice. Once in IsDebugEnabled and once in - the Debug. This is an insignificant overhead - since evaluating a logger takes about 1% of the time it - takes to actually log. - - - - - - Checks if this logger is enabled for the INFO level. - - - true if this logger is enabled for INFO events, - false otherwise. - - - - See for more information and examples - of using this method. - - - - - - - Checks if this logger is enabled for the WARN level. - - - true if this logger is enabled for WARN events, - false otherwise. - - - - See for more information and examples - of using this method. - - - - - - - Checks if this logger is enabled for the ERROR level. - - - true if this logger is enabled for ERROR events, - false otherwise. - - - - See for more information and examples of using this method. - - - - - - - Checks if this logger is enabled for the FATAL level. - - - true if this logger is enabled for FATAL events, - false otherwise. - - - - See for more information and examples of using this method. - - - - - - - Virtual method called when the configuration of the repository changes - - the repository holding the levels - - - Virtual method called when the configuration of the repository changes - - - - - - Logs a message object with the DEBUG level. - - The message object to log. - - - This method first checks if this logger is DEBUG - enabled by comparing the level of this logger with the - DEBUG level. If this logger is - DEBUG enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the DEBUG level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the DEBUG level including - the stack trace of the passed - as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the DEBUG level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the INFO level. - - The message object to log. - - - This method first checks if this logger is INFO - enabled by comparing the level of this logger with the - INFO level. If this logger is - INFO enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of - the additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the INFO level. - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the INFO level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the INFO level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the WARN level. - - the message object to log - - - This method first checks if this logger is WARN - enabled by comparing the level of this logger with the - WARN level. If this logger is - WARN enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger and - also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an to this - method will print the name of the but no - stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the WARN level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the WARN level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the WARN level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the ERROR level. - - The message object to log. - - - This method first checks if this logger is ERROR - enabled by comparing the level of this logger with the - ERROR level. If this logger is - ERROR enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger and - also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an to this - method will print the name of the but no - stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the ERROR level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the ERROR level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the ERROR level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a message object with the FATAL level. - - The message object to log. - - - This method first checks if this logger is FATAL - enabled by comparing the level of this logger with the - FATAL level. If this logger is - FATAL enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger and - also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an to this - method will print the name of the but no - stack trace. To print a stack trace use the - form instead. - - - - - - Logs a message object with the FATAL level - - The message object to log. - The exception to log, including its stack trace. - - - Logs a message object with the FATAL level including - the stack trace of the - passed as a parameter. - - - See the form for more detailed information. - - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - The string is formatted using the - format provider. To specify a localized provider use the - method. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Logs a formatted message string with the FATAL level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the method. See - String.Format for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - Event handler for the event - - the repository - Empty - - - - Static manager that controls the creation of repositories - - - - Static manager that controls the creation of repositories - - - This class is used by the wrapper managers (e.g. ) - to provide access to the objects. - - - This manager also holds the that is used to - lookup and create repositories. The selector can be set either programmatically using - the property, or by setting the log4net.RepositorySelector - AppSetting in the applications config file to the fully qualified type name of the - selector to use. - - - Nicko Cadell - Gert Driesen - - - - Hook the shutdown event - - - - On the full .NET runtime, the static constructor hooks up the - AppDomain.ProcessExit and AppDomain.DomainUnload> events. - These are used to shutdown the log4net system as the application exits. - - - - - - Private constructor to prevent instances. Only static methods should be used. - - - - Private constructor to prevent instances. Only static methods should be used. - - - - - - The fully qualified type of the LoggerManager class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Initialize the default repository selector - - - - - Gets or sets the repository selector used by the . - - - The repository selector used by the . - - - - The repository selector () is used by - the to create and select repositories - (). - - - The caller to supplies either a string name - or an assembly (if not supplied the assembly is inferred using - ). - - - This context is used by the selector to lookup a specific repository. - - - For the full .NET Framework, the default repository is DefaultRepositorySelector; - for the .NET Compact Framework CompactRepositorySelector is the default - repository. - - - - - - Register for ProcessExit and DomainUnload events on the AppDomain - - - - This needs to be in a separate method because the events make - a LinkDemand for the ControlAppDomain SecurityPermission. Because - this is a LinkDemand it is demanded at JIT time. Therefore we cannot - catch the exception in the method itself, we have to catch it in the - caller. - - - - - - Return the default instance. - - the repository to lookup in - Return the default instance - - - Gets the for the repository specified - by the argument. - - - - - - Returns the default instance. - - The assembly to use to lookup the repository. - The default instance. - - - - Return the default instance. - - the repository to lookup in - Return the default instance - - - Gets the for the repository specified - by the argument. - - - - - - Returns the default instance. - - The assembly to use to lookup the repository. - The default instance. - - - Returns the default instance. - - - - - - Returns the named logger if it exists. - - The repository to lookup in. - The fully qualified logger name to look for. - - The logger found, or null if the named logger does not exist in the - specified repository. - - - - If the named logger exists (in the specified repository) then it - returns a reference to the logger, otherwise it returns - null. - - - - - - Returns the named logger if it exists. - - The assembly to use to lookup the repository. - The fully qualified logger name to look for. - - The logger found, or null if the named logger does not exist in the - specified assembly's repository. - - - - If the named logger exists (in the specified assembly's repository) then it - returns a reference to the logger, otherwise it returns - null. - - - - - - Returns all the currently defined loggers in the specified repository. - - The repository to lookup in. - All the defined loggers. - - - The root logger is not included in the returned array. - - - - - - Returns all the currently defined loggers in the specified assembly's repository. - - The assembly to use to lookup the repository. - All the defined loggers. - - - The root logger is not included in the returned array. - - - - - - Retrieves or creates a named logger. - - The repository to lookup in. - The name of the logger to retrieve. - The logger with the name specified. - - - Retrieves a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - - - - Retrieves or creates a named logger. - - The assembly to use to lookup the repository. - The name of the logger to retrieve. - The logger with the name specified. - - - Retrieves a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - - - - Shorthand for . - - The repository to lookup in. - The of which the fullname will be used as the name of the logger to retrieve. - The logger with the name specified. - - - Gets the logger for the fully qualified name of the type specified. - - - - - - Shorthand for . - - the assembly to use to lookup the repository - The of which the fullname will be used as the name of the logger to retrieve. - The logger with the name specified. - - - Gets the logger for the fully qualified name of the type specified. - - - - - - Shuts down the log4net system. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in all the - default repositories. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Shuts down the repository for the repository specified. - - The repository to shutdown. - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - repository for the specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Shuts down the repository for the repository specified. - - The assembly to use to lookup the repository. - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - repository for the repository. The repository is looked up using - the specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Resets all values contained in this repository instance to their defaults. - - The repository to reset. - - - Resets all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set its default "off" value. - - - - - - Resets all values contained in this repository instance to their defaults. - - The assembly to use to lookup the repository to reset. - - - Resets all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set its default "off" value. - - - - - - Creates a repository with the specified name. - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository with the specified name. - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The name must be unique. Repositories cannot be redefined. - An Exception will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - The name must be unique. Repositories cannot be redefined. - An Exception will be thrown if the repository already exists. - - - The specified repository already exists. - - - - Creates a repository for the specified assembly and repository type. - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - - - - Creates a repository for the specified assembly and repository type. - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - - - - Gets an array of all currently defined repositories. - - An array of all the known objects. - - - Gets an array of all currently defined repositories. - - - - - - Internal method to get pertinent version info. - - A string of version info. - - - - Called when the event fires - - the that is exiting - null - - - Called when the event fires. - - - When the event is triggered the log4net system is . - - - - - - Called when the event fires - - the that is exiting - null - - - Called when the event fires. - - - When the event is triggered the log4net system is . - - - - - - Implementation of the interface. - - - - This class should be used as the base for all wrapper implementations. - - - Nicko Cadell - Gert Driesen - - - - Constructs a new wrapper for the specified logger. - - The logger to wrap. - - - Constructs a new wrapper for the specified logger. - - - - - - The logger that this object is wrapping - - - - - Gets the implementation behind this wrapper object. - - - The object that this object is implementing. - - - - The Logger object may not be the same object as this object - because of logger decorators. - - - This gets the actual underlying objects that is used to process - the log events. - - - - - - Portable data structure used by - - - Portable data structure used by - - Nicko Cadell - - - - The logger name. - - - - The logger name. - - - - - - Level of logging event. - - - - Level of logging event. Level cannot be Serializable - because it is a flyweight. Due to its special serialization it - cannot be declared final either. - - - - - - The application supplied message. - - - - The application supplied message of logging event. - - - - - - The name of thread - - - - The name of thread in which this logging event was generated - - - - - - The time the event was logged - - - - The TimeStamp is stored in the local time zone for this computer. - - - - - - Location information for the caller. - - - - Location information for the caller. - - - - - - String representation of the user - - - - String representation of the user's windows name, - like DOMAIN\username - - - - - - String representation of the identity. - - - - String representation of the current thread's principal identity. - - - - - - The string representation of the exception - - - - The string representation of the exception - - - - - - String representation of the AppDomain. - - - - String representation of the AppDomain. - - - - - - Additional event specific properties - - - - A logger or an appender may attach additional - properties to specific events. These properties - have a string key and an object value. - - - - - - Flags passed to the property - - - - Flags passed to the property - - - Nicko Cadell - - - - Fix the MDC - - - - - Fix the NDC - - - - - Fix the rendered message - - - - - Fix the thread name - - - - - Fix the callers location information - - - CAUTION: Very slow to generate - - - - - Fix the callers windows user name - - - CAUTION: Slow to generate - - - - - Fix the domain friendly name - - - - - Fix the callers principal name - - - CAUTION: May be slow to generate - - - - - Fix the exception text - - - - - Fix the event properties. Active properties must implement in order to be eligible for fixing. - - - - - No fields fixed - - - - - All fields fixed - - - - - Partial fields fixed - - - - This set of partial fields gives good performance. The following fields are fixed: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The internal representation of logging events. - - - - When an affirmative decision is made to log then a - instance is created. This instance - is passed around to the different log4net components. - - - This class is of concern to those wishing to extend log4net. - - - Some of the values in instances of - are considered volatile, that is the values are correct at the - time the event is delivered to appenders, but will not be consistent - at any time afterwards. If an event is to be stored and then processed - at a later time these volatile values must be fixed by calling - . There is a performance penalty - for incurred by calling but it - is essential to maintaining data consistency. - - - Nicko Cadell - Gert Driesen - Douglas de la Torre - Daniel Cazzulino - - - - Initializes a new instance of the class - from the supplied parameters. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The repository this event is logged in. - The name of the logger of this event. - The level of this event. - The message of this event. - The exception for this event. - - - Except , and , - all fields of LoggingEvent are filled when actually needed. Call - to cache all data locally - to prevent inconsistencies. - - This method is called by the log4net framework - to create a logging event. - - - - - - Initializes a new instance of the class - using specific data. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The repository this event is logged in. - Data used to initialize the logging event. - The fields in the struct that have already been fixed. - - - This constructor is provided to allow a - to be created independently of the log4net framework. This can - be useful if you require a custom serialization scheme. - - - Use the method to obtain an - instance of the class. - - - The parameter should be used to specify which fields in the - struct have been preset. Fields not specified in the - will be captured from the environment if requested or fixed. - - - - - - Initializes a new instance of the class - using specific data. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The repository this event is logged in. - Data used to initialize the logging event. - - - This constructor is provided to allow a - to be created independently of the log4net framework. This can - be useful if you require a custom serialization scheme. - - - Use the method to obtain an - instance of the class. - - - This constructor sets this objects flags to , - this assumes that all the data relating to this event is passed in via the - parameter and no other data should be captured from the environment. - - - - - - Initializes a new instance of the class - using specific data. - - Data used to initialize the logging event. - - - This constructor is provided to allow a - to be created independently of the log4net framework. This can - be useful if you require a custom serialization scheme. - - - Use the method to obtain an - instance of the class. - - - This constructor sets this objects flags to , - this assumes that all the data relating to this event is passed in via the - parameter and no other data should be captured from the environment. - - - - - - Serialization constructor - - The that holds the serialized object data. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - The key into the Properties map for the host name value. - - - - - The key into the Properties map for the thread identity value. - - - - - The key into the Properties map for the user name value. - - - - - The internal logging event data. - - - - - The internal logging event data. - - - - - The internal logging event data. - - - - - The fully qualified Type of the calling - logger class in the stack frame (i.e. the declaring type of the method). - - - - - The application supplied message of logging event. - - - - - The exception that was thrown. - - - This is not serialized. The string representation - is serialized instead. - - - - - The repository that generated the logging event - - - This is not serialized. - - - - - The fix state for this event - - - These flags indicate which fields have been fixed. - Not serialized. - - - - - Indicated that the internal cache is updateable (ie not fixed) - - - This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler - changes in the caching strategy. - - - - - Gets the time when the current process started. - - - This is the time when this process started. - - - - The TimeStamp is stored in the local time zone for this computer. - - - Tries to get the start time for the current process. - Failing that it returns the time of the first call to - this property. - - - Note that AppDomains may be loaded and unloaded within the - same process without the process terminating and therefore - without the process start time being reset. - - - - - - Gets the of the logging event. - - - The of the logging event. - - - - Gets the of the logging event. - - - - - - Gets the time of the logging event. - - - The time of the logging event. - - - - The TimeStamp is stored in the local time zone for this computer. - - - - - - Gets the name of the logger that logged the event. - - - The name of the logger that logged the event. - - - - Gets the name of the logger that logged the event. - - - - - - Gets the location information for this logging event. - - - The location information for this logging event. - - - - The collected information is cached for future use. - - - See the class for more information on - supported frameworks and the different behavior in Debug and - Release builds. - - - - - - Gets the message object used to initialize this event. - - - The message object used to initialize this event. - - - - Gets the message object used to initialize this event. - Note that this event may not have a valid message object. - If the event is serialized the message object will not - be transferred. To get the text of the message the - property must be used - not this property. - - - If there is no defined message object for this event then - null will be returned. - - - - - - Gets the exception object used to initialize this event. - - - The exception object used to initialize this event. - - - - Gets the exception object used to initialize this event. - Note that this event may not have a valid exception object. - If the event is serialized the exception object will not - be transferred. To get the text of the exception the - method must be used - not this property. - - - If there is no defined exception object for this event then - null will be returned. - - - - - - The that this event was created in. - - - - The that this event was created in. - - - - - - Gets the message, rendered through the . - - - The message rendered through the . - - - - The collected information is cached for future use. - - - - - - Gets the name of the current thread. - - - The name of the current thread, or the thread ID when - the name is not available. - - - - The collected information is cached for future use. - - - - - - Gets the name of the current user. - - - The name of the current user, or NOT AVAILABLE when the - underlying runtime has no support for retrieving the name of the - current user. - - - - Calls WindowsIdentity.GetCurrent().Name to get the name of - the current windows user. - - - To improve performance, we could cache the string representation of - the name, and reuse that as long as the identity stayed constant. - Once the identity changed, we would need to re-assign and re-render - the string. - - - However, the WindowsIdentity.GetCurrent() call seems to - return different objects every time, so the current implementation - doesn't do this type of caching. - - - Timing for these operations: - - - - Method - Results - - - - WindowsIdentity.GetCurrent() - - 10000 loops, 00:00:00.2031250 seconds - - - - WindowsIdentity.GetCurrent().Name - - 10000 loops, 00:00:08.0468750 seconds - - - - This means we could speed things up almost 40 times by caching the - value of the WindowsIdentity.GetCurrent().Name property, since - this takes (8.04-0.20) = 7.84375 seconds. - - - - - - Gets the identity of the current thread principal. - - - The string name of the identity of the current thread principal. - - - - Calls System.Threading.Thread.CurrentPrincipal.Identity.Name to get - the name of the current thread principal. - - - - - - Gets the AppDomain friendly name. - - - The AppDomain friendly name. - - - - Gets the AppDomain friendly name. - - - - - - Additional event specific properties. - - - Additional event specific properties. - - - - A logger or an appender may attach additional - properties to specific events. These properties - have a string key and an object value. - - - This property is for events that have been added directly to - this event. The aggregate properties (which include these - event properties) can be retrieved using - and . - - - Once the properties have been fixed this property - returns the combined cached properties. This ensures that updates to - this property are always reflected in the underlying storage. When - returning the combined properties there may be more keys in the - Dictionary than expected. - - - - - - The fixed fields in this event - - - The set of fields that are fixed in this event - - - - Fields will not be fixed if they have previously been fixed. - It is not possible to 'unfix' a field. - - - - - - Ensure that the repository is set. - - the value for the repository - - - - Write the rendered message to a TextWriter - - the writer to write the message to - - - Unlike the property this method - does store the message data in the internal cache. Therefore - if called only once this method should be faster than the - property, however if the message is - to be accessed multiple times then the property will be more efficient. - - - - - - Serializes this object into the provided. - - The to populate with data. - The destination for this serialization. - - - The data in this event must be fixed before it can be serialized. - - - The method must be called during the - method call if this event - is to be used outside that method. - - - - - - Gets the portable data for this . - - The for this event. - - - A new can be constructed using a - instance. - - - Does a fix of the data - in the logging event before returning the event data. - - - - - - Gets the portable data for this . - - The set of data to ensure is fixed in the LoggingEventData - The for this event. - - - A new can be constructed using a - instance. - - - - - - Returns this event's exception's rendered using the - . - - - This event's exception's rendered using the . - - - - Obsolete. Use instead. - - - - - - Returns this event's exception's rendered using the - . - - - This event's exception's rendered using the . - - - - Returns this event's exception's rendered using the - . - - - - - - Fix instance fields that hold volatile data. - - - - Some of the values in instances of - are considered volatile, that is the values are correct at the - time the event is delivered to appenders, but will not be consistent - at any time afterwards. If an event is to be stored and then processed - at a later time these volatile values must be fixed by calling - . There is a performance penalty - incurred by calling but it - is essential to maintaining data consistency. - - - Calling is equivalent to - calling passing the parameter - false. - - - See for more - information. - - - - - - Fixes instance fields that hold volatile data. - - Set to true to not fix data that takes a long time to fix. - - - Some of the values in instances of - are considered volatile, that is the values are correct at the - time the event is delivered to appenders, but will not be consistent - at any time afterwards. If an event is to be stored and then processed - at a later time these volatile values must be fixed by calling - . There is a performance penalty - for incurred by calling but it - is essential to maintaining data consistency. - - - The param controls the data that - is fixed. Some of the data that can be fixed takes a long time to - generate, therefore if you do not require those settings to be fixed - they can be ignored by setting the param - to true. This setting will ignore the - and settings. - - - Set to false to ensure that all - settings are fixed. - - - - - - Fix the fields specified by the parameter - - the fields to fix - - - Only fields specified in the will be fixed. - Fields will not be fixed if they have previously been fixed. - It is not possible to 'unfix' a field. - - - - - - Lookup a composite property in this event - - the key for the property to lookup - the value for the property - - - This event has composite properties that combine together properties from - several different contexts in the following order: - this events properties - This event has that can be set. These - properties are specific to this event only. - the thread properties - The that are set on the current - thread. These properties are shared by all events logged on this thread. - the global properties - The that are set globally. These - properties are shared by all the threads in the AppDomain. - - - - - - Get all the composite properties in this event - - the containing all the properties - - - See for details of the composite properties - stored by the event. - - - This method returns a single containing all the - properties defined for this event. - - - - - - A SecurityContext used by log4net when interacting with protected resources - - - - A SecurityContext used by log4net when interacting with protected resources - for example with operating system services. This can be used to impersonate - a principal that has been granted privileges on the system resources. - - - Nicko Cadell - - - - Impersonate this SecurityContext - - State supplied by the caller - An instance that will - revoke the impersonation of this SecurityContext, or null - - - Impersonate this security context. Further calls on the current - thread should now be made in the security context provided - by this object. When the result - method is called the security - context of the thread should be reverted to the state it was in - before was called. - - - - - - The providers default instances. - - - - A configured component that interacts with potentially protected system - resources uses a to provide the elevated - privileges required. If the object has - been not been explicitly provided to the component then the component - will request one from this . - - - By default the is - an instance of which returns only - objects. This is a reasonable default - where the privileges required are not know by the system. - - - This default behavior can be overridden by subclassing the - and overriding the method to return - the desired objects. The default provider - can be replaced by programmatically setting the value of the - property. - - - An alternative is to use the log4net.Config.SecurityContextProviderAttribute - This attribute can be applied to an assembly in the same way as the - log4net.Config.XmlConfiguratorAttribute". The attribute takes - the type to use as the as an argument. - - - Nicko Cadell - - - - Protected default constructor to allow subclassing - - - - Protected default constructor to allow subclassing - - - - - - The default provider - - - - - Gets or sets the default SecurityContextProvider - - - The default SecurityContextProvider - - - - The default provider is used by configured components that - require a and have not had one - given to them. - - - By default this is an instance of - that returns objects. - - - The default provider can be set programmatically by setting - the value of this property to a sub class of - that has the desired behavior. - - - - - - Create a SecurityContext for a consumer - - The consumer requesting the SecurityContext - An impersonation context - - - The default implementation is to return a . - - - Subclasses should override this method to provide their own - behavior. - - - - - - An evaluator that triggers after specified number of seconds. - - - - This evaluator will trigger if the specified time period - has passed since last check. - - - Robert Sevcik - - - - Create a new evaluator using the time threshold in seconds. - - - - Create a new evaluator using the time threshold in seconds. - - - This evaluator will trigger if the specified time period - has passed since last check. - - - - - - Create a new evaluator using the specified time threshold in seconds. - - - The time threshold in seconds to trigger after. - Zero means it won't trigger at all. - - - - Create a new evaluator using the specified time threshold in seconds. - - - This evaluator will trigger if the specified time period - has passed since last check. - - - - - - The default time threshold for triggering in seconds. Zero means it won't trigger at all. - - - - - The time threshold for triggering in seconds. Zero means it won't trigger at all. - - - - - The time of last check. This gets updated when the object is created and when the evaluator triggers. - - - - - The time threshold in seconds to trigger after - - - The time threshold in seconds to trigger after. - Zero means it won't trigger at all. - - - - This evaluator will trigger if the specified time period - has passed since last check. - - - - - - Is this the triggering event? - - The event to check - This method returns true, if the specified time period - has passed since last check.. - Otherwise it returns false - - - This evaluator will trigger if the specified time period - has passed since last check. - - - - - - Maps between logger objects and wrapper objects. - - - - This class maintains a mapping between objects and - objects. Use the method to - lookup the for the specified . - - - New wrapper instances are created by the - method. The default behavior is for this method to delegate construction - of the wrapper to the delegate supplied - to the constructor. This allows specialization of the behavior without - requiring subclassing of this type. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the - The handler to use to create the wrapper objects. - - - Initializes a new instance of the class with - the specified handler to create the wrapper objects. - - - - - - Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings - - - - - The handler to use to create the extension wrapper objects. - - - - - Internal reference to the delegate used to register for repository shutdown events. - - - - - Gets the map of logger repositories. - - - Map of logger repositories. - - - - Gets the hashtable that is keyed on . The - values are hashtables keyed on with the - value being the corresponding . - - - - - - Gets the wrapper object for the specified logger. - - The wrapper object for the specified logger - - - If the logger is null then the corresponding wrapper is null. - - - Looks up the wrapper it it has previously been requested and - returns it. If the wrapper has never been requested before then - the virtual method is - called. - - - - - - Creates the wrapper object for the specified logger. - - The logger to wrap in a wrapper. - The wrapper object for the logger. - - - This implementation uses the - passed to the constructor to create the wrapper. This method - can be overridden in a subclass. - - - - - - Called when a monitored repository shutdown event is received. - - The that is shutting down - - - This method is called when a that this - is holding loggers for has signaled its shutdown - event . The default - behavior of this method is to release the references to the loggers - and their wrappers generated for this repository. - - - - - - Event handler for repository shutdown event. - - The sender of the event. - The event args. - - - - Formats a as "HH:mm:ss,fff". - - - - Formats a in the format "HH:mm:ss,fff" for example, "15:49:37,459". - - - Nicko Cadell - Gert Driesen - - - - String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is ABSOLUTE. - - - - - String constant used to specify DateTimeDateFormat in layouts. Current value is DATE. - - - - - String constant used to specify ISO8601DateFormat in layouts. Current value is ISO8601. - - - - - Last stored time with precision up to the second. - - - - - Last stored time with precision up to the second, formatted - as a string. - - - - - Last stored time with precision up to the second, formatted - as a string. - - - - - Renders the date into a string. Format is "HH:mm:ss". - - The date to render into a string. - The string builder to write to. - - - Subclasses should override this method to render the date - into a string using a precision up to the second. This method - will be called at most once per second and the result will be - reused if it is needed again during the same second. - - - - - - Renders the date into a string. Format is "HH:mm:ss,fff". - - The date to render into a string. - The writer to write to. - - - Uses the method to generate the - time string up to the seconds and then appends the current - milliseconds. The results from are - cached and is called at most once - per second. - - - Sub classes should override - rather than . - - - - - - Formats a as "dd MMM yyyy HH:mm:ss,fff" - - - Formats a in the format - "dd MMM yyyy HH:mm:ss,fff" for example, - "06 Nov 1994 15:49:37,459". - - - Nicko Cadell - Gert Driesen - Angelika Schnagl - - - - Default constructor. - - - - Initializes a new instance of the class. - - - - - - The format info for the invariant culture. - - - - - Formats the date without the milliseconds part - - The date to format. - The string builder to write to. - - - Formats a DateTime in the format "dd MMM yyyy HH:mm:ss" - for example, "06 Nov 1994 15:49:37". - - - The base class will append the ",fff" milliseconds section. - This method will only be called at most once per second. - - - - - - Render a as a string. - - - - Interface to abstract the rendering of a - instance into a string. - - - The method is used to render the - date to a text writer. - - - Nicko Cadell - Gert Driesen - - - - Formats the specified date as a string. - - The date to format. - The writer to write to. - - - Format the as a string and write it - to the provided. - - - - - - Formats the as "yyyy-MM-dd HH:mm:ss,fff". - - - - Formats the specified as a string: "yyyy-MM-dd HH:mm:ss,fff". - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Initializes a new instance of the class. - - - - - - Formats the date without the milliseconds part - - The date to format. - The string builder to write to. - - - Formats the date specified as a string: "yyyy-MM-dd HH:mm:ss". - - - The base class will append the ",fff" milliseconds section. - This method will only be called at most once per second. - - - - - - Formats the using the method. - - - - Formats the using the method. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The format string. - - - Initializes a new instance of the class - with the specified format string. - - - The format string must be compatible with the options - that can be supplied to . - - - - - - The format string used to format the . - - - - The format string must be compatible with the options - that can be supplied to . - - - - - - Formats the date using . - - The date to convert to a string. - The writer to write to. - - - Uses the date format string supplied to the constructor to call - the method to format the date. - - - - - - This filter drops all . - - - - You can add this filter to the end of a filter chain to - switch from the default "accept all unless instructed otherwise" - filtering behavior to a "deny all unless instructed otherwise" - behavior. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - - Always returns the integer constant - the LoggingEvent to filter - Always returns - - - Ignores the event being logged and just returns - . This can be used to change the default filter - chain behavior from to . This filter - should only be used as the last filter in the chain - as any further filters will be ignored! - - - - - - The return result from - - - The return result from - - - - - The log event must be dropped immediately without - consulting with the remaining filters, if any, in the chain. - - - - - This filter is neutral with respect to the log event. - The remaining filters, if any, should be consulted for a final decision. - - - - - The log event must be logged immediately without - consulting with the remaining filters, if any, in the chain. - - - - - Subclass this type to implement customized logging event filtering - - - - Users should extend this class to implement customized logging - event filtering. Note that and - , the parent class of all standard - appenders, have built-in filtering rules. It is suggested that you - first use and understand the built-in rules before rushing to write - your own custom filters. - - - This abstract class assumes and also imposes that filters be - organized in a linear chain. The - method of each filter is called sequentially, in the order of their - addition to the chain. - - - The method must return one - of the integer constants , - or . - - - If the value is returned, then the log event is dropped - immediately without consulting with the remaining filters. - - - If the value is returned, then the next filter - in the chain is consulted. If there are no more filters in the - chain, then the log event is logged. Thus, in the presence of no - filters, the default behavior is to log all logging events. - - - If the value is returned, then the log - event is logged without consulting the remaining filters. - - - The philosophy of log4net filters is largely inspired from the - Linux ipchains. - - - Nicko Cadell - Gert Driesen - - - - Points to the next filter in the filter chain. - - - - See for more information. - - - - - - Property to get and set the next filter - - - The next filter in the chain - - - - Filters are typically composed into chains. This property allows the next filter in - the chain to be accessed. - - - - - - Initialize the filter with the options set - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Typically filter's options become active immediately on set, - however this method must still be called. - - - - - - Decide if the should be logged through an appender. - - The to decide upon - The decision of the filter - - - If the decision is , then the event will be - dropped. If the decision is , then the next - filter, if any, will be invoked. If the decision is then - the event will be logged without consulting with other filters in - the chain. - - - This method is marked abstract and must be implemented - in a subclass. - - - - - - Implement this interface to provide customized logging event filtering - - - - Users should implement this interface to implement customized logging - event filtering. Note that and - , the parent class of all standard - appenders, have built-in filtering rules. It is suggested that you - first use and understand the built-in rules before rushing to write - your own custom filters. - - - This abstract class assumes and also imposes that filters be - organized in a linear chain. The - method of each filter is called sequentially, in the order of their - addition to the chain. - - - The method must return one - of the integer constants , - or . - - - If the value is returned, then the log event is dropped - immediately without consulting with the remaining filters. - - - If the value is returned, then the next filter - in the chain is consulted. If there are no more filters in the - chain, then the log event is logged. Thus, in the presence of no - filters, the default behavior is to log all logging events. - - - If the value is returned, then the log - event is logged without consulting the remaining filters. - - - The philosophy of log4net filters is largely inspired from the - Linux ipchains. - - - Nicko Cadell - Gert Driesen - - - - Property to get and set the next filter - - - The next filter in the chain - - - - Filters are typically composed into chains. This property allows the next filter in - the chain to be accessed. - - - - - - Decide if the logging event should be logged through an appender. - - The LoggingEvent to decide upon - The decision of the filter - - - If the decision is , then the event will be - dropped. If the decision is , then the next - filter, if any, will be invoked. If the decision is then - the event will be logged without consulting with other filters in - the chain. - - - - - - This is a very simple filter based on matching. - - - - The filter admits two options and - . If there is an exact match between the value - of the option and the of the - , then the method returns in - case the option value is set - to true, if it is false then - is returned. If the does not match then - the result will be . - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - - flag to indicate if the filter should on a match - - - - - the to match against - - - - - when matching - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - The that the filter will match - - - - The level that this filter will attempt to match against the - level. If a match is found then - the result depends on the value of . - - - - - - Tests if the of the logging event matches that of the filter - - the event to filter - see remarks - - - If the of the event matches the level of the - filter then the result of the function depends on the - value of . If it is true then - the function will return , it it is false then it - will return . If the does not match then - the result will be . - - - - - - This is a simple filter based on matching. - - - - The filter admits three options and - that determine the range of priorities that are matched, and - . If there is a match between the range - of priorities and the of the , then the - method returns in case the - option value is set to true, if it is false - then is returned. If there is no match, is returned. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - - Flag to indicate the behavior when matching a - - - - the minimum value to match - - - - - the maximum value to match - - - - - when matching and - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - Set the minimum matched - - - The minimum level that this filter will attempt to match against the - level. If a match is found then - the result depends on the value of . - - - - - - Sets the maximum matched - - - The maximum level that this filter will attempt to match against the - level. If a match is found then - the result depends on the value of . - - - - - - Check if the event should be logged. - - the logging event to check - see remarks - - - If the of the logging event is outside the range - matched by this filter then - is returned. If the is matched then the value of - is checked. If it is true then - is returned, otherwise - is returned. - - - - - - Simple filter to match a string in the event's logger name. - - - - The works very similar to the . It admits two - options and . If the - of the starts - with the value of the option, then the - method returns in - case the option value is set to true, - if it is false then is returned. - - - Daniel Cazzulino - - - - Default constructor - - - - - Flag to indicate the behavior when we have a match - - - - - The logger name string to substring match against the event - - - - - when matching - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - The that the filter will match - - - - This filter will attempt to match this value against logger name in - the following way. The match will be done against the beginning of the - logger name (using ). The match is - case sensitive. If a match is found then - the result depends on the value of . - - - - - - Check if this filter should allow the event to be logged - - the event being logged - see remarks - - - The rendered message is matched against the . - If the equals the beginning of - the incoming () - then a match will have occurred. If no match occurs - this function will return - allowing other filters to check the event. If a match occurs then - the value of is checked. If it is - true then is returned otherwise - is returned. - - - - - - Simple filter to match a keyed string in the - - - Simple filter to match a keyed string in the - - As the MDC has been replaced with layered properties the - should be used instead. - - - Nicko Cadell - Gert Driesen - - - - Simple filter to match a string in the - - - Simple filter to match a string in the - - As the MDC has been replaced with named stacks stored in the - properties collections the should - be used instead. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Sets the to "NDC". - - - - - - Simple filter to match a string an event property - - - - Simple filter to match a string in the value for a - specific event property - - - Nicko Cadell - - - - Default constructor - - - - - The key to use to lookup the string from the event properties - - - - - The key to lookup in the event properties and then match against. - - - - The key name to use to lookup in the properties map of the - . The match will be performed against - the value of this property if it exists. - - - - - - Check if this filter should allow the event to be logged - - the event being logged - see remarks - - - The event property for the is matched against - the . - If the occurs as a substring within - the property value then a match will have occurred. If no match occurs - this function will return - allowing other filters to check the event. If a match occurs then - the value of is checked. If it is - true then is returned otherwise - is returned. - - - - - - Simple filter to match a string in the rendered message - - - - Simple filter to match a string in the rendered message - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - - Flag to indicate the behavior when we have a match - - - - - The string to substring match against the message - - - - - A string regex to match - - - - - A regex object to match (generated from m_stringRegexToMatch) - - - - - when matching or - - - The property is a flag that determines - the behavior when a matching is found. If the - flag is set to true then the filter will the - logging event, otherwise it will the event. - - - The default is true i.e. to the event. - - - - - - Sets the static string to match - - - - The string that will be substring matched against - the rendered message. If the message contains this - string then the filter will match. If a match is found then - the result depends on the value of . - - - One of or - must be specified. - - - - - - Sets the regular expression to match - - - - The regular expression pattern that will be matched against - the rendered message. If the message matches this - pattern then the filter will match. If a match is found then - the result depends on the value of . - - - One of or - must be specified. - - - - - - Initialize and precompile the Regex if required - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Check if this filter should allow the event to be logged - - the event being logged - see remarks - - - The rendered message is matched against the . - If the occurs as a substring within - the message then a match will have occurred. If no match occurs - this function will return - allowing other filters to check the event. If a match occurs then - the value of is checked. If it is - true then is returned otherwise - is returned. - - - - - - Write the event appdomain name to the output - - - - Writes the to the output writer. - - - Daniel Cazzulino - Nicko Cadell - - - - Write the event appdomain name to the output - - - that will receive the formatted result. - the event being logged - - - Writes the to the output . - - - - - - Converter for items in the ASP.Net Cache. - - - - Outputs an item from the . - - - Ron Grabowski - - - - Write the ASP.Net Cache item to the output - - - that will receive the formatted result. - The on which the pattern converter should be executed. - The under which the ASP.Net request is running. - - - Writes out the value of a named property. The property name - should be set in the - property. If no property has been set, all key value pairs from the Cache will - be written to the output. - - - - - - Converter for items in the . - - - - Outputs an item from the . - - - Ron Grabowski - - - - Write the ASP.Net HttpContext item to the output - - - that will receive the formatted result. - The on which the pattern converter should be executed. - The under which the ASP.Net request is running. - - - Writes out the value of a named property. The property name - should be set in the - property. - - - - - - Abstract class that provides access to the current HttpContext () that - derived classes need. - - - This class handles the case when HttpContext.Current is null by writing - to the writer. - - Ron Grabowski - - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the correct way. - - - that will receive the formatted result. - The on which the pattern converter should be executed. - The under which the ASP.Net request is running. - - - - Converter for items in the ASP.Net Cache. - - - - Outputs an item from the . - - - Ron Grabowski - - - - Write the ASP.Net Cache item to the output - - - that will receive the formatted result. - The on which the pattern converter should be executed. - The under which the ASP.Net request is running. - - - Writes out the value of a named property. The property name - should be set in the - property. - - - - - - Converter for items in the ASP.Net Cache. - - - - Outputs an item from the . - - - Ron Grabowski - - - - Write the ASP.Net Cache item to the output - - - that will receive the formatted result. - The on which the pattern converter should be executed. - The under which the ASP.Net request is running. - - - Writes out the value of a named property. The property name - should be set in the - property. If no property has been set, all key value pairs from the Session will - be written to the output. - - - - - - Date pattern converter, uses a to format - the date of a . - - - - Render the to the writer as a string. - - - The value of the determines - the formatting of the date. The following values are allowed: - Option valueOutputISO8601 - Uses the formatter. - Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. - DATE - Uses the formatter. - Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". - ABSOLUTE - Uses the formatter. - Formats using the "HH:mm:ss,yyyy" for example, "15:49:37,459". - other - Any other pattern string uses the formatter. - This formatter passes the pattern string to the method. - For details on valid patterns see - DateTimeFormatInfo Class. - - - The is in the local time zone and is rendered in that zone. - To output the time in Universal time see . - - - Nicko Cadell - - - - The used to render the date to a string - - - - The used to render the date to a string - - - - - - The fully qualified type of the DatePatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Initialize the converter pattern based on the property. - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Convert the pattern into the rendered message - - - that will receive the formatted result. - the event being logged - - - Pass the to the - for it to render it to the writer. - - - The passed is in the local time zone. - - - - - - Write the exception text to the output - - - - If an exception object is stored in the logging event - it will be rendered into the pattern output with a - trailing newline. - - - If there is no exception then nothing will be output - and no trailing newline will be appended. - It is typical to put a newline before the exception - and to have the exception as the last data in the pattern. - - - Nicko Cadell - - - - Default constructor - - - - - Write the exception text to the output - - - that will receive the formatted result. - the event being logged - - - If an exception object is stored in the logging event - it will be rendered into the pattern output with a - trailing newline. - - - If there is no exception or the exception property specified - by the Option value does not exist then nothing will be output - and no trailing newline will be appended. - It is typical to put a newline before the exception - and to have the exception as the last data in the pattern. - - - Recognized values for the Option parameter are: - - - - Message - - - Source - - - StackTrace - - - TargetSite - - - HelpLink - - - - - - - Writes the caller location file name to the output - - - - Writes the value of the for - the event to the output writer. - - - Nicko Cadell - - - - Write the caller location file name to the output - - - that will receive the formatted result. - the event being logged - - - Writes the value of the for - the to the output . - - - - - - Write the caller location info to the output - - - - Writes the to the output writer. - - - Nicko Cadell - - - - Write the caller location info to the output - - - that will receive the formatted result. - the event being logged - - - Writes the to the output writer. - - - - - - Writes the event identity to the output - - - - Writes the value of the to - the output writer. - - - Daniel Cazzulino - Nicko Cadell - - - - Writes the event identity to the output - - - that will receive the formatted result. - the event being logged - - - Writes the value of the to - the output . - - - - - - Write the event level to the output - - - - Writes the display name of the event - to the writer. - - - Nicko Cadell - - - - Write the event level to the output - - - that will receive the formatted result. - the event being logged - - - Writes the of the - to the . - - - - - - Write the caller location line number to the output - - - - Writes the value of the for - the event to the output writer. - - - Nicko Cadell - - - - Write the caller location line number to the output - - - that will receive the formatted result. - the event being logged - - - Writes the value of the for - the to the output . - - - - - - Converter for logger name - - - - Outputs the of the event. - - - Nicko Cadell - - - - Gets the fully qualified name of the logger - - the event being logged - The fully qualified logger name - - - Returns the of the . - - - - - - Writes the event message to the output - - - - Uses the method - to write out the event message. - - - Nicko Cadell - - - - Writes the event message to the output - - - that will receive the formatted result. - the event being logged - - - Uses the method - to write out the event message. - - - - - - Write the method name to the output - - - - Writes the caller location to - the output. - - - Nicko Cadell - - - - Write the method name to the output - - - that will receive the formatted result. - the event being logged - - - Writes the caller location to - the output. - - - - - - Converter to output and truncate '.' separated strings - - - - This abstract class supports truncating a '.' separated string - to show a specified number of elements from the right hand side. - This is used to truncate class names that are fully qualified. - - - Subclasses should override the method to - return the fully qualified string. - - - Nicko Cadell - - - - The fully qualified type of the NamedPatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Initialize the converter - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Get the fully qualified string data - - the event being logged - the fully qualified name - - - Overridden by subclasses to get the fully qualified name before the - precision is applied to it. - - - Return the fully qualified '.' (dot/period) separated string. - - - - - - Convert the pattern to the rendered message - - - that will receive the formatted result. - the event being logged - - Render the to the precision - specified by the property. - - - - - Converter to include event NDC - - - - Outputs the value of the event property named NDC. - - - The should be used instead. - - - Nicko Cadell - - - - Write the event NDC to the output - - - that will receive the formatted result. - the event being logged - - - As the thread context stacks are now stored in named event properties - this converter simply looks up the value of the NDC property. - - - The should be used instead. - - - - - - Abstract class that provides the formatting functionality that - derived classes need. - - - Conversion specifiers in a conversion patterns are parsed to - individual PatternConverters. Each of which is responsible for - converting a logging event in a converter specific manner. - - Nicko Cadell - - - - Initializes a new instance of the class. - - - - - Flag indicating if this converter handles exceptions - - - false if this converter handles exceptions - - - - - Flag indicating if this converter handles the logging event exception - - - false if this converter handles the logging event exception - - - If this converter handles the exception object contained within - , then this property should be set to - false. Otherwise, if the layout ignores the exception - object, then the property should be set to true. - - - Set this value to override a this default setting. The default - value is true, this converter does not handle the exception. - - - - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the correct way. - - - that will receive the formatted result. - The on which the pattern converter should be executed. - - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the correct way. - - - that will receive the formatted result. - The state object on which the pattern converter should be executed. - - - - Property pattern converter - - - - Writes out the value of a named property. The property name - should be set in the - property. - - - If the is set to null - then all the properties are written as key value pairs. - - - Nicko Cadell - - - - Write the property value to the output - - - that will receive the formatted result. - the event being logged - - - Writes out the value of a named property. The property name - should be set in the - property. - - - If the is set to null - then all the properties are written as key value pairs. - - - - - - Converter to output the relative time of the event - - - - Converter to output the time of the event relative to the start of the program. - - - Nicko Cadell - - - - Write the relative time to the output - - - that will receive the formatted result. - the event being logged - - - Writes out the relative time of the event in milliseconds. - That is the number of milliseconds between the event - and the . - - - - - - Helper method to get the time difference between two DateTime objects - - start time (in the current local time zone) - end time (in the current local time zone) - the time difference in milliseconds - - - - Write the caller stack frames to the output - - - - Writes the to the output writer, using format: - type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1.MethodCall1(type param,...) - - - Adam Davies - - - - The fully qualified type of the StackTraceDetailPatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Write the caller stack frames to the output - - - - Writes the to the output writer, using format: - type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1 - - - Michael Cromwell - - - - The fully qualified type of the StackTracePatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Initialize the converter - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write the strack frames to the output - - - that will receive the formatted result. - the event being logged - - - Writes the to the output writer. - - - - - - Returns the Name of the method - - - - This method was created, so this class could be used as a base class for StackTraceDetailPatternConverter - string - - - - Converter to include event thread name - - - - Writes the to the output. - - - Nicko Cadell - - - - Write the ThreadName to the output - - - that will receive the formatted result. - the event being logged - - - Writes the to the . - - - - - - Pattern converter for the class name - - - - Outputs the of the event. - - - Nicko Cadell - - - - Gets the fully qualified name of the class - - the event being logged - The fully qualified type name for the caller location - - - Returns the of the . - - - - - - Converter to include event user name - - Douglas de la Torre - Nicko Cadell - - - - Convert the pattern to the rendered message - - - that will receive the formatted result. - the event being logged - - - - Write the TimeStamp to the output - - - - Date pattern converter, uses a to format - the date of a . - - - Uses a to format the - in Universal time. - - - See the for details on the date pattern syntax. - - - - Nicko Cadell - - - - The fully qualified type of the UtcDatePatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Write the TimeStamp to the output - - - that will receive the formatted result. - the event being logged - - - Pass the to the - for it to render it to the writer. - - - The passed is in the local time zone, this is converted - to Universal time before it is rendered. - - - - - - - A Layout that renders only the Exception text from the logging event - - - - A Layout that renders only the Exception text from the logging event. - - - This Layout should only be used with appenders that utilize multiple - layouts (e.g. ). - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Constructs a ExceptionLayout - - - - - - Activate component options - - - - Part of the component activation - framework. - - - This method does nothing as options become effective immediately. - - - - - - Gets the exception text from the logging event - - The TextWriter to write the formatted event to - the event being logged - - - Write the exception string to the . - The exception string is retrieved from . - - - - - - Interface implemented by layout objects - - - - An object is used to format a - as text. The method is called by an - appender to transform the into a string. - - - The layout can also supply and - text that is appender before any events and after all the events respectively. - - - Nicko Cadell - Gert Driesen - - - - The content type output by this layout. - - The content type - - - The content type output by this layout. - - - This is a MIME type e.g. "text/plain". - - - - - - The header for the layout format. - - the layout header - - - The Header text will be appended before any logging events - are formatted and appended. - - - - - - The footer for the layout format. - - the layout footer - - - The Footer text will be appended after all the logging events - have been formatted and appended. - - - - - - Flag indicating if this layout handle exceptions - - - false if this layout handles exceptions - - - If this layout handles the exception object contained within - , then the layout should return - false. Otherwise, if the layout ignores the exception - object, then the layout should return true. - - - - - - Implement this method to create your own layout format. - - The TextWriter to write the formatted event to - The event to format - - - This method is called by an appender to format - the as text and output to a writer. - - - If the caller does not have a and prefers the - event to be formatted as a then the following - code can be used to format the event into a . - - - StringWriter writer = new StringWriter(); - Layout.Format(writer, loggingEvent); - string formattedEvent = writer.ToString(); - - - - - - Interface for raw layout objects - - - - Interface used to format a - to an object. - - - This interface should not be confused with the - interface. This interface is used in - only certain specialized situations where a raw object is - required rather than a formatted string. The - is not generally useful than this interface. - - - Nicko Cadell - Gert Driesen - - - - Implement this method to create your own layout format. - - The event to format - returns the formatted event - - - Implement this method to create your own layout format. - - - - - - Adapts any to a - - - Where an is required this adapter - allows a to be specified. - - - Nicko Cadell - Gert Driesen - - - - Construct a new adapter - - the layout to adapt - - - Create the adapter for the specified . - - - - - - The layout to adapt - - - - - Format the logging event as an object. - - The event to format - returns the formatted event - - - Format the logging event as an object. - - - Uses the object supplied to - the constructor to perform the formatting. - - - - - - Extend this abstract class to create your own log layout format. - - - - This is the base implementation of the - interface. Most layout objects should extend this class. - - - - - - Subclasses must implement the - method. - - - Subclasses should set the in their default - constructor. - - - - Nicko Cadell - Gert Driesen - - - - Empty default constructor - - - - Empty default constructor - - - - - - The header text - - - - See for more information. - - - - - - The footer text - - - - See for more information. - - - - - - Flag indicating if this layout handles exceptions - - - - false if this layout handles exceptions - - - - - - The content type output by this layout. - - The content type is "text/plain" - - - The content type output by this layout. - - - This base class uses the value "text/plain". - To change this value a subclass must override this - property. - - - - - - The header for the layout format. - - the layout header - - - The Header text will be appended before any logging events - are formatted and appended. - - - - - - The footer for the layout format. - - the layout footer - - - The Footer text will be appended after all the logging events - have been formatted and appended. - - - - - - Flag indicating if this layout handles exceptions - - - false if this layout handles exceptions - - - If this layout handles the exception object contained within - , then the layout should return - false. Otherwise, if the layout ignores the exception - object, then the layout should return true. - - - Set this value to override a this default setting. The default - value is true, this layout does not handle the exception. - - - - - - Activate component options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - This method must be implemented by the subclass. - - - - - - Implement this method to create your own layout format. - - The TextWriter to write the formatted event to - The event to format - - - This method is called by an appender to format - the as text. - - - - - - Convenience method for easily formatting the logging event into a string variable. - - - - - Creates a new StringWriter instance to store the formatted logging event. - - - - - A flexible layout configurable with pattern string. - - - - The goal of this class is to a - as a string. The results - depend on the conversion pattern. - - - The conversion pattern is closely related to the conversion - pattern of the printf function in C. A conversion pattern is - composed of literal text and format control expressions called - conversion specifiers. - - - You are free to insert any literal text within the conversion - pattern. - - - Each conversion specifier starts with a percent sign (%) and is - followed by optional format modifiers and a conversion - pattern name. The conversion pattern name specifies the type of - data, e.g. logger, level, date, thread name. The format - modifiers control such things as field width, padding, left and - right justification. The following is a simple example. - - - Let the conversion pattern be "%-5level [%thread]: %message%newline" and assume - that the log4net environment was set to use a PatternLayout. Then the - statements - - - ILog log = LogManager.GetLogger(typeof(TestApp)); - log.Debug("Message 1"); - log.Warn("Message 2"); - - would yield the output - - DEBUG [main]: Message 1 - WARN [main]: Message 2 - - - Note that there is no explicit separator between text and - conversion specifiers. The pattern parser knows when it has reached - the end of a conversion specifier when it reads a conversion - character. In the example above the conversion specifier - %-5level means the level of the logging event should be left - justified to a width of five characters. - - - The recognized conversion pattern names are: - - - - Conversion Pattern Name - Effect - - - a - Equivalent to appdomain - - - appdomain - - Used to output the friendly name of the AppDomain where the - logging event was generated. - - - - aspnet-cache - - - Used to output all cache items in the case of %aspnet-cache or just one named item if used as %aspnet-cache{key} - - This pattern is not available for Compact Framework or Client Profile assemblies. - - - - - aspnet-context - - - Used to output all context items in the case of %aspnet-context or just one named item if used as %aspnet-context{key} - - This pattern is not available for Compact Framework or Client Profile assemblies. - - - - - aspnet-request - - - Used to output all request parameters in the case of %aspnet-request or just one named param if used as %aspnet-request{key} - - This pattern is not available for Compact Framework or Client Profile assemblies. - - - - - aspnet-session - - - Used to output all session items in the case of %aspnet-session or just one named item if used as %aspnet-session{key} - - This pattern is not available for Compact Framework or Client Profile assemblies. - - - - - c - Equivalent to logger - - - C - Equivalent to type - - - class - Equivalent to type - - - d - Equivalent to date - - - date - - - Used to output the date of the logging event in the local time zone. - To output the date in universal time use the %utcdate pattern. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %date{HH:mm:ss,fff} or - %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %date{ISO8601} or %date{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - exception - - - Used to output the exception passed in with the log message. - - - If an exception object is stored in the logging event - it will be rendered into the pattern output with a - trailing newline. - If there is no exception then nothing will be output - and no trailing newline will be appended. - It is typical to put a newline before the exception - and to have the exception as the last data in the pattern. - - - - - F - Equivalent to file - - - file - - - Used to output the file name where the logging request was - issued. - - - WARNING Generating caller location information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - See the note below on the availability of caller location information. - - - - - identity - - - Used to output the user name for the currently active user - (Principal.Identity.Name). - - - WARNING Generating caller information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - - - l - Equivalent to location - - - L - Equivalent to line - - - location - - - Used to output location information of the caller which generated - the logging event. - - - The location information depends on the CLI implementation but - usually consists of the fully qualified name of the calling - method followed by the callers source the file name and line - number between parentheses. - - - The location information can be very useful. However, its - generation is extremely slow. Its use should be avoided - unless execution speed is not an issue. - - - See the note below on the availability of caller location information. - - - - - level - - - Used to output the level of the logging event. - - - - - line - - - Used to output the line number from where the logging request - was issued. - - - WARNING Generating caller location information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - See the note below on the availability of caller location information. - - - - - logger - - - Used to output the logger of the logging event. The - logger conversion specifier can be optionally followed by - precision specifier, that is a decimal constant in - brackets. - - - If a precision specifier is given, then only the corresponding - number of right most components of the logger name will be - printed. By default the logger name is printed in full. - - - For example, for the logger name "a.b.c" the pattern - %logger{2} will output "b.c". - - - - - m - Equivalent to message - - - M - Equivalent to method - - - message - - - Used to output the application supplied message associated with - the logging event. - - - - - mdc - - - The MDC (old name for the ThreadContext.Properties) is now part of the - combined event properties. This pattern is supported for compatibility - but is equivalent to property. - - - - - method - - - Used to output the method name where the logging request was - issued. - - - WARNING Generating caller location information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - See the note below on the availability of caller location information. - - - - - n - Equivalent to newline - - - newline - - - Outputs the platform dependent line separator character or - characters. - - - This conversion pattern offers the same performance as using - non-portable line separator strings such as "\n", or "\r\n". - Thus, it is the preferred way of specifying a line separator. - - - - - ndc - - - Used to output the NDC (nested diagnostic context) associated - with the thread that generated the logging event. - - - - - p - Equivalent to level - - - P - Equivalent to property - - - properties - Equivalent to property - - - property - - - Used to output the an event specific property. The key to - lookup must be specified within braces and directly following the - pattern specifier, e.g. %property{user} would include the value - from the property that is keyed by the string 'user'. Each property value - that is to be included in the log must be specified separately. - Properties are added to events by loggers or appenders. By default - the log4net:HostName property is set to the name of machine on - which the event was originally logged. - - - If no key is specified, e.g. %property then all the keys and their - values are printed in a comma separated list. - - - The properties of an event are combined from a number of different - contexts. These are listed below in the order in which they are searched. - - - - the event properties - - The event has that can be set. These - properties are specific to this event only. - - - - the thread properties - - The that are set on the current - thread. These properties are shared by all events logged on this thread. - - - - the global properties - - The that are set globally. These - properties are shared by all the threads in the AppDomain. - - - - - - - r - Equivalent to timestamp - - - stacktrace - - - Used to output the stack trace of the logging event - The stack trace level specifier may be enclosed - between braces. For example, %stacktrace{level}. - If no stack trace level specifier is given then 1 is assumed - - - Output uses the format: - type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1 - - - This pattern is not available for Compact Framework assemblies. - - - - - stacktracedetail - - - Used to output the stack trace of the logging event - The stack trace level specifier may be enclosed - between braces. For example, %stacktracedetail{level}. - If no stack trace level specifier is given then 1 is assumed - - - Output uses the format: - type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1.MethodCall1(type param,...) - - - This pattern is not available for Compact Framework assemblies. - - - - - t - Equivalent to thread - - - timestamp - - - Used to output the number of milliseconds elapsed since the start - of the application until the creation of the logging event. - - - - - thread - - - Used to output the name of the thread that generated the - logging event. Uses the thread number if no name is available. - - - - - type - - - Used to output the fully qualified type name of the caller - issuing the logging request. This conversion specifier - can be optionally followed by precision specifier, that - is a decimal constant in brackets. - - - If a precision specifier is given, then only the corresponding - number of right most components of the class name will be - printed. By default the class name is output in fully qualified form. - - - For example, for the class name "log4net.Layout.PatternLayout", the - pattern %type{1} will output "PatternLayout". - - - WARNING Generating the caller class information is - slow. Thus, its use should be avoided unless execution speed is - not an issue. - - - See the note below on the availability of caller location information. - - - - - u - Equivalent to identity - - - username - - - Used to output the WindowsIdentity for the currently - active user. - - - WARNING Generating caller WindowsIdentity information is - extremely slow. Its use should be avoided unless execution speed - is not an issue. - - - - - utcdate - - - Used to output the date of the logging event in universal time. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %utcdate{HH:mm:ss,fff} or - %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %utcdate{ISO8601} or %utcdate{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - w - Equivalent to username - - - x - Equivalent to ndc - - - X - Equivalent to mdc - - - % - - - The sequence %% outputs a single percent sign. - - - - - - The single letter patterns are deprecated in favor of the - longer more descriptive pattern names. - - - By default the relevant information is output as is. However, - with the aid of format modifiers it is possible to change the - minimum field width, the maximum field width and justification. - - - The optional format modifier is placed between the percent sign - and the conversion pattern name. - - - The first optional format modifier is the left justification - flag which is just the minus (-) character. Then comes the - optional minimum field width modifier. This is a decimal - constant that represents the minimum number of characters to - output. If the data item requires fewer characters, it is padded on - either the left or the right until the minimum width is - reached. The default is to pad on the left (right justify) but you - can specify right padding with the left justification flag. The - padding character is space. If the data item is larger than the - minimum field width, the field is expanded to accommodate the - data. The value is never truncated. - - - This behavior can be changed using the maximum field - width modifier which is designated by a period followed by a - decimal constant. If the data item is longer than the maximum - field, then the extra characters are removed from the - beginning of the data item and not from the end. For - example, it the maximum field width is eight and the data item is - ten characters long, then the first two characters of the data item - are dropped. This behavior deviates from the printf function in C - where truncation is done from the end. - - - Below are various format modifier examples for the logger - conversion specifier. - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Format modifierleft justifyminimum widthmaximum widthcomment
    %20loggerfalse20none - - Left pad with spaces if the logger name is less than 20 - characters long. - -
    %-20loggertrue20none - - Right pad with spaces if the logger - name is less than 20 characters long. - -
    %.30loggerNAnone30 - - Truncate from the beginning if the logger - name is longer than 30 characters. - -
    - %20.30logger - false2030 - - Left pad with spaces if the logger name is shorter than 20 - characters. However, if logger name is longer than 30 characters, - then truncate from the beginning. - -
    %-20.30loggertrue2030 - - Right pad with spaces if the logger name is shorter than 20 - characters. However, if logger name is longer than 30 characters, - then truncate from the beginning. - -
    -
    - - Note about caller location information. -
    - The following patterns %type %file %line %method %location %class %C %F %L %l %M - all generate caller location information. - Location information uses the System.Diagnostics.StackTrace class to generate - a call stack. The caller's information is then extracted from this stack. -
    - - - The System.Diagnostics.StackTrace class is not supported on the - .NET Compact Framework 1.0 therefore caller location information is not - available on that framework. - - - - - The System.Diagnostics.StackTrace class has this to say about Release builds: - - - "StackTrace information will be most informative with Debug build configurations. - By default, Debug builds include debug symbols, while Release builds do not. The - debug symbols contain most of the file, method name, line number, and column - information used in constructing StackFrame and StackTrace objects. StackTrace - might not report as many method calls as expected, due to code transformations - that occur during optimization." - - - This means that in a Release build the caller information may be incomplete or may - not exist at all! Therefore caller location information cannot be relied upon in a Release build. - - - - Additional pattern converters may be registered with a specific - instance using the method. - -
    - - This is a more detailed pattern. - %timestamp [%thread] %level %logger %ndc - %message%newline - - A similar pattern except that the relative time is - right padded if less than 6 digits, thread name is right padded if - less than 15 characters and truncated if longer and the logger - name is left padded if shorter than 30 characters and truncated if - longer. - %-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline - Nicko Cadell - Gert Driesen - Douglas de la Torre - Daniel Cazzulino -
    - - - Initialize the global registry - - - - Defines the builtin global rules. - - - - - - Constructs a PatternLayout using the DefaultConversionPattern - - - - The default pattern just produces the application supplied message. - - - Note to Inheritors: This constructor calls the virtual method - . If you override this method be - aware that it will be called before your is called constructor. - - - As per the contract the - method must be called after the properties on this object have been - configured. - - - - - - Constructs a PatternLayout using the supplied conversion pattern - - the pattern to use - - - Note to Inheritors: This constructor calls the virtual method - . If you override this method be - aware that it will be called before your is called constructor. - - - When using this constructor the method - need not be called. This may not be the case when using a subclass. - - - - - - Default pattern string for log output. - - - - Default pattern string for log output. - Currently set to the string "%message%newline" - which just prints the application supplied message. - - - - - - A detailed conversion pattern - - - - A conversion pattern which includes Time, Thread, Logger, and Nested Context. - Current value is %timestamp [%thread] %level %logger %ndc - %message%newline. - - - - - - Internal map of converter identifiers to converter types. - - - - This static map is overridden by the m_converterRegistry instance map - - - - - - the pattern - - - - - the head of the pattern converter chain - - - - - patterns defined on this PatternLayout only - - - - - The pattern formatting string - - - - The ConversionPattern option. This is the string which - controls formatting and consists of a mix of literal content and - conversion specifiers. - - - - - - Create the pattern parser instance - - the pattern to parse - The that will format the event - - - Creates the used to parse the conversion string. Sets the - global and instance rules on the . - - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Produces a formatted string as specified by the conversion pattern. - - the event being logged - The TextWriter to write the formatted event to - - - Parse the using the patter format - specified in the property. - - - - - - Add a converter to this PatternLayout - - the converter info - - - This version of the method is used by the configurator. - Programmatic users should use the alternative method. - - - - - - Add a converter to this PatternLayout - - the name of the conversion pattern for this converter - the type of the converter - - - Add a named pattern converter to this instance. This - converter will be used in the formatting of the event. - This method must be called before . - - - The specified must extend the - type. - - - - - - Type converter for the interface - - - - Used to convert objects to the interface. - Supports converting from the interface to - the interface using the . - - - Nicko Cadell - Gert Driesen - - - - Can the sourceType be converted to an - the source to be to be converted - - true if the source type can be converted to - - - Test if the can be converted to a - . Only is supported - as the . - - - - - - Convert the value to a object - - the value to convert - the object - - - Convert the object to a - object. If the object - is a then the - is used to adapt between the two interfaces, otherwise an - exception is thrown. - - - - - - Extract the value of a property from the - - - Extract the value of a property from the - - Nicko Cadell - - - - Constructs a RawPropertyLayout - - - - - The name of the value to lookup in the LoggingEvent Properties collection. - - - Value to lookup in the LoggingEvent Properties collection - - - - String name of the property to lookup in the . - - - - - - Lookup the property for - The event to format - returns property value - - - Looks up and returns the object value of the property - named . If there is no property defined - with than name then null will be returned. - - - - - - Extract the date from the - - - Extract the date from the - - Nicko Cadell - Gert Driesen - - - - Constructs a RawTimeStampLayout - - - - - Gets the as a . - - The event to format - returns the time stamp - - - Gets the as a . - - - The time stamp is in local time. To format the time stamp - in universal time use . - - - - - - Extract the date from the - - - Extract the date from the - - Nicko Cadell - Gert Driesen - - - - Constructs a RawUtcTimeStampLayout - - - - - Gets the as a . - - The event to format - returns the time stamp - - - Gets the as a . - - - The time stamp is in universal time. To format the time stamp - in local time use . - - - - - - A very simple layout - - - - SimpleLayout consists of the level of the log statement, - followed by " - " and then the log message itself. For example, - - DEBUG - Hello world - - - Nicko Cadell - Gert Driesen - - - - Constructs a SimpleLayout - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Produces a simple formatted output. - - the event being logged - The TextWriter to write the formatted event to - - - Formats the event as the level of the even, - followed by " - " and then the log message itself. The - output is terminated by a newline. - - - - - - Layout that formats the log events as XML elements. - - - - The output of the consists of a series of - log4net:event elements. It does not output a complete well-formed XML - file. The output is designed to be included as an external entity - in a separate file to form a correct XML file. - - - For example, if abc is the name of the file where - the output goes, then a well-formed XML file would - be: - - - <?xml version="1.0" ?> - <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]> - <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2> - &data; - </log4net:events> - - - This approach enforces the independence of the - and the appender where it is embedded. - - - The version attribute helps components to correctly - interpret output generated by . The value of - this attribute should be "1.2" for release 1.2 and later. - - - Alternatively the Header and Footer properties can be - configured to output the correct XML header, open tag and close tag. - When setting the Header and Footer properties it is essential - that the underlying data store not be appendable otherwise the data - will become invalid XML. - - - Nicko Cadell - Gert Driesen - - - - Constructs an XmlLayout - - - - - Constructs an XmlLayout. - - - - The LocationInfo option takes a boolean value. By - default, it is set to false which means there will be no location - information output by this layout. If the the option is set to - true, then the file name and line number of the statement - at the origin of the log statement will be output. - - - If you are embedding this layout within an SmtpAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - The prefix to use for all generated element names - - - - - The prefix to use for all element names - - - - The default prefix is log4net. Set this property - to change the prefix. If the prefix is set to an empty string - then no prefix will be written. - - - - - - Set whether or not to base64 encode the message. - - - - By default the log message will be written as text to the xml - output. This can cause problems when the message contains binary - data. By setting this to true the contents of the message will be - base64 encoded. If this is set then invalid character replacement - (see ) will not be performed - on the log message. - - - - - - Set whether or not to base64 encode the property values. - - - - By default the properties will be written as text to the xml - output. This can cause problems when one or more properties contain - binary data. By setting this to true the values of the properties - will be base64 encoded. If this is set then invalid character replacement - (see ) will not be performed - on the property values. - - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - Builds a cache of the element names - - - - - - Does the actual writing of the XML. - - The writer to use to output the event to. - The event to write. - - - Override the base class method - to write the to the . - - - - - - Layout that formats the log events as XML elements. - - - - This is an abstract class that must be subclassed by an implementation - to conform to a specific schema. - - - Deriving classes must implement the method. - - - Nicko Cadell - Gert Driesen - - - - Protected constructor to support subclasses - - - - Initializes a new instance of the class - with no location info. - - - - - - Protected constructor to support subclasses - - - - The parameter determines whether - location information will be output by the layout. If - is set to true, then the - file name and line number of the statement at the origin of the log - statement will be output. - - - If you are embedding this layout within an SMTPAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - Flag to indicate if location information should be included in - the XML events. - - - - - The string to replace invalid chars with - - - - - Gets a value indicating whether to include location information in - the XML events. - - - true if location information should be included in the XML - events; otherwise, false. - - - - If is set to true, then the file - name and line number of the statement at the origin of the log - statement will be output. - - - If you are embedding this layout within an SMTPAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - The string to replace characters that can not be expressed in XML with. - - Not all characters may be expressed in XML. This property contains the - string to replace those that can not with. This defaults to a ?. Set it - to the empty string to simply remove offending characters. For more - details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets - Character replacement will occur in the log message, the property names - and the property values. - - - - - Gets the content type output by this layout. - - - As this is the XML layout, the value is always "text/xml". - - - - As this is the XML layout, the value is always "text/xml". - - - - - - Initialize layout options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Produces a formatted string. - - The event being logged. - The TextWriter to write the formatted event to - - - Format the and write it to the . - - - This method creates an that writes to the - . The is passed - to the method. Subclasses should override the - method rather than this method. - - - - - - Does the actual writing of the XML. - - The writer to use to output the event to. - The event to write. - - - Subclasses should override this method to format - the as XML. - - - - - - Layout that formats the log events as XML elements compatible with the log4j schema - - - - Formats the log events according to the http://logging.apache.org/log4j schema. - - - Nicko Cadell - - - - Constructs an XMLLayoutSchemaLog4j - - - - - Constructs an XMLLayoutSchemaLog4j. - - - - The LocationInfo option takes a boolean value. By - default, it is set to false which means there will be no location - information output by this layout. If the the option is set to - true, then the file name and line number of the statement - at the origin of the log statement will be output. - - - If you are embedding this layout within an SMTPAppender - then make sure to set the LocationInfo option of that - appender as well. - - - - - - The 1st of January 1970 in UTC - - - - - The version of the log4j schema to use. - - - - Only version 1.2 of the log4j schema is supported. - - - - - - Actually do the writing of the xml - - the writer to use - the event to write - - - Generate XML that is compatible with the log4j schema. - - - - - - The default object Renderer. - - - - The default renderer supports rendering objects and collections to strings. - - - See the method for details of the output. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Default constructor - - - - - - Render the object to a string - - The map used to lookup renderers - The object to render - The writer to render to - - - Render the object to a string. - - - The parameter is - provided to lookup and render other objects. This is - very useful where contains - nested objects of unknown type. The - method can be used to render these objects. - - - The default renderer supports rendering objects to strings as follows: - - - - Value - Rendered String - - - - null - - - "(null)" - - - - - - - - - For a one dimensional array this is the - array type name, an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. - - - For example: int[] {1, 2, 3}. - - - If the array is not one dimensional the - Array.ToString() is returned. - - - - - - , & - - - Rendered as an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. - - - For example: {a, b, c}. - - - All collection classes that implement its subclasses, - or generic equivalents all implement the interface. - - - - - - - - - - Rendered as the key, an equals sign ('='), and the value (using the appropriate - renderer). - - - For example: key=value. - - - - - other - - - Object.ToString() - - - - - - - - - Render the array argument into a string - - The map used to lookup renderers - the array to render - The writer to render to - - - For a one dimensional array this is the - array type name, an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. For example: - int[] {1, 2, 3}. - - - If the array is not one dimensional the - Array.ToString() is returned. - - - - - - Render the enumerator argument into a string - - The map used to lookup renderers - the enumerator to render - The writer to render to - - - Rendered as an open brace, followed by a comma - separated list of the elements (using the appropriate - renderer), followed by a close brace. For example: - {a, b, c}. - - - - - - Render the DictionaryEntry argument into a string - - The map used to lookup renderers - the DictionaryEntry to render - The writer to render to - - - Render the key, an equals sign ('='), and the value (using the appropriate - renderer). For example: key=value. - - - - - - Implement this interface in order to render objects as strings - - - - Certain types require special case conversion to - string form. This conversion is done by an object renderer. - Object renderers implement the - interface. - - - Nicko Cadell - Gert Driesen - - - - Render the object to a string - - The map used to lookup renderers - The object to render - The writer to render to - - - Render the object to a - string. - - - The parameter is - provided to lookup and render other objects. This is - very useful where contains - nested objects of unknown type. The - method can be used to render these objects. - - - - - - Map class objects to an . - - - - Maintains a mapping between types that require special - rendering and the that - is used to render them. - - - The method is used to render an - object using the appropriate renderers defined in this map. - - - Nicko Cadell - Gert Driesen - - - - Default Constructor - - - - Default constructor. - - - - - - Get the default renderer instance - - the default renderer - - - Get the default renderer - - - - - - Render using the appropriate renderer. - - the object to render to a string - the object rendered as a string - - - This is a convenience method used to render an object to a string. - The alternative method - should be used when streaming output to a . - - - - - - Render using the appropriate renderer. - - the object to render to a string - The writer to render to - - - Find the appropriate renderer for the type of the - parameter. This is accomplished by calling the - method. Once a renderer is found, it is - applied on the object and the result is returned - as a . - - - - - - Gets the renderer for the specified object type - - the object to lookup the renderer for - the renderer for - - - Gets the renderer for the specified object type. - - - Syntactic sugar method that calls - with the type of the object parameter. - - - - - - Gets the renderer for the specified type - - the type to lookup the renderer for - the renderer for the specified type - - - Returns the renderer for the specified type. - If no specific renderer has been defined the - will be returned. - - - - - - Internal function to recursively search interfaces - - the type to lookup the renderer for - the renderer for the specified type - - - - Clear the map of renderers - - - - Clear the custom renderers defined by using - . The - cannot be removed. - - - - - - Register an for . - - the type that will be rendered by - the renderer for - - - Register an object renderer for a specific source type. - This renderer will be returned from a call to - specifying the same as an argument. - - - - - - Interface implemented by logger repository plugins. - - - - Plugins define additional behavior that can be associated - with a . - The held by the - property is used to store the plugins for a repository. - - - The log4net.Config.PluginAttribute can be used to - attach plugins to repositories created using configuration - attributes. - - - Nicko Cadell - Gert Driesen - - - - Gets the name of the plugin. - - - The name of the plugin. - - - - Plugins are stored in the - keyed by name. Each plugin instance attached to a - repository must be a unique name. - - - - - - Attaches the plugin to the specified . - - The that this plugin should be attached to. - - - A plugin may only be attached to a single repository. - - - This method is called when the plugin is attached to the repository. - - - - - - Is called when the plugin is to shutdown. - - - - This method is called to notify the plugin that - it should stop operating and should detach from - the repository. - - - - - - Interface used to create plugins. - - - - Interface used to create a plugin. - - - Nicko Cadell - Gert Driesen - - - - Creates the plugin object. - - the new plugin instance - - - Create and return a new plugin instance. - - - - - - A strongly-typed collection of objects. - - Nicko Cadell - - - - Initializes a new instance of the PluginCollection class - that is empty and has the default initial capacity. - - - - - Initializes a new instance of the PluginCollection class - that has the specified initial capacity. - - - The number of elements that the new PluginCollection is initially capable of storing. - - - - - Initializes a new instance of the PluginCollection class - that contains elements copied from the specified PluginCollection. - - The PluginCollection whose elements are copied to the new collection. - - - - Initializes a new instance of the PluginCollection class - that contains elements copied from the specified array. - - The array whose elements are copied to the new list. - - - - Initializes a new instance of the PluginCollection class - that contains elements copied from the specified collection. - - The collection whose elements are copied to the new list. - - - - Allow subclasses to avoid our default constructors - - - - - - - - Supports type-safe iteration over a . - - - - - - Gets the current element in the collection. - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - Type visible only to our subclasses - Used to access protected constructor - - - - - - A value - - - - - Supports simple iteration over a . - - - - - - Initializes a new instance of the Enumerator class. - - - - - - - Gets the current element in the collection. - - - The current element in the collection. - - - - - Advances the enumerator to the next element in the collection. - - - true if the enumerator was successfully advanced to the next element; - false if the enumerator has passed the end of the collection. - - - The collection was modified after the enumerator was created. - - - - - Sets the enumerator to its initial position, before the first element in the collection. - - - - - - - - Gets or sets the at the specified index. - - - The at the specified index. - - The zero-based index of the element to get or set. - - - is less than zero. - -or- - - is equal to or greater than . - - - - - Gets the number of elements actually contained in the PluginCollection. - - - - - Gets a value indicating whether access to the collection is synchronized (thread-safe). - - true if access to the ICollection is synchronized (thread-safe); otherwise, false. - - - - Gets an object that can be used to synchronize access to the collection. - - - An object that can be used to synchronize access to the collection. - - - - - Gets a value indicating whether the collection has a fixed size. - - - true if the collection has a fixed size; otherwise, false. The default is false. - - - - Gets a value indicating whether the IList is read-only. - - - true if the collection is read-only; otherwise, false. The default is false. - - - - Gets or sets the number of elements the PluginCollection can contain. - - - The number of elements the PluginCollection can contain. - - - - - Creates a read-only wrapper for a PluginCollection instance. - - list to create a readonly wrapper arround - - A PluginCollection wrapper that is read-only. - - - - - Copies the entire PluginCollection to a one-dimensional - array. - - The one-dimensional array to copy to. - - - - Copies the entire PluginCollection to a one-dimensional - array, starting at the specified index of the target array. - - The one-dimensional array to copy to. - The zero-based index in at which copying begins. - - - - Adds a to the end of the PluginCollection. - - The to be added to the end of the PluginCollection. - The index at which the value has been added. - - - - Removes all elements from the PluginCollection. - - - - - Creates a shallow copy of the . - - A new with a shallow copy of the collection data. - - - - Determines whether a given is in the PluginCollection. - - The to check for. - - true if is found in the PluginCollection; otherwise, false. - - - - Returns the zero-based index of the first occurrence of a - in the PluginCollection. - - The to locate in the PluginCollection. - - The zero-based index of the first occurrence of - in the entire PluginCollection, if found; otherwise, -1. - - - - - Inserts an element into the PluginCollection at the specified index. - - The zero-based index at which should be inserted. - The to insert. - - - is less than zero - -or- - - is equal to or greater than . - - - - - Removes the first occurrence of a specific from the PluginCollection. - - The to remove from the PluginCollection. - - The specified was not found in the PluginCollection. - - - - - Removes the element at the specified index of the PluginCollection. - - The zero-based index of the element to remove. - - - is less than zero. - -or- - - is equal to or greater than . - - - - - Returns an enumerator that can iterate through the PluginCollection. - - An for the entire PluginCollection. - - - - Adds the elements of another PluginCollection to the current PluginCollection. - - The PluginCollection whose elements should be added to the end of the current PluginCollection. - The new of the PluginCollection. - - - - Adds the elements of a array to the current PluginCollection. - - The array whose elements should be added to the end of the PluginCollection. - The new of the PluginCollection. - - - - Adds the elements of a collection to the current PluginCollection. - - The collection whose elements should be added to the end of the PluginCollection. - The new of the PluginCollection. - - - - Sets the capacity to the actual number of elements. - - - - - - is less than zero. - -or- - - is equal to or greater than . - - - - - - is less than zero. - -or- - - is equal to or greater than . - - - - - Map of repository plugins. - - - - This class is a name keyed map of the plugins that are - attached to a repository. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The repository that the plugins should be attached to. - - - Initialize a new instance of the class with a - repository that the plugins should be attached to. - - - - - - Gets a by name. - - The name of the to lookup. - - The from the map with the name specified, or - null if no plugin is found. - - - - Lookup a plugin by name. If the plugin is not found null - will be returned. - - - - - - Gets all possible plugins as a list of objects. - - All possible plugins as a list of objects. - - - Get a collection of all the plugins defined in this map. - - - - - - Adds a to the map. - - The to add to the map. - - - The will be attached to the repository when added. - - - If there already exists a plugin with the same name - attached to the repository then the old plugin will - be and replaced with - the new plugin. - - - - - - Removes a from the map. - - The to remove from the map. - - - Remove a specific plugin from this map. - - - - - - Base implementation of - - - Default abstract implementation of the - interface. This base class can be used by implementors - of the interface. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - the name of the plugin - - Initializes a new Plugin with the specified name. - - - - - The name of this plugin. - - - - - The repository this plugin is attached to. - - - - - Gets or sets the name of the plugin. - - - The name of the plugin. - - - - Plugins are stored in the - keyed by name. Each plugin instance attached to a - repository must be a unique name. - - - The name of the plugin must not change one the - plugin has been attached to a repository. - - - - - - The repository for this plugin - - - The that this plugin is attached to. - - - - Gets or sets the that this plugin is - attached to. - - - - - - Attaches this plugin to a . - - The that this plugin should be attached to. - - - A plugin may only be attached to a single repository. - - - This method is called when the plugin is attached to the repository. - - - - - - Is called when the plugin is to shutdown. - - - - This method is called to notify the plugin that - it should stop operating and should detach from - the repository. - - - - - - Plugin that listens for events from the - - - This plugin publishes an instance of - on a specified . This listens for logging events delivered from - a remote . - - - When an event is received it is relogged within the attached repository - as if it had been raised locally. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Initializes a new instance of the class. - - - The property must be set. - - - - - - Construct with sink Uri. - - The name to publish the sink under in the remoting infrastructure. - See for more details. - - - Initializes a new instance of the class - with specified name. - - - - - - Delivers objects to a remote sink. - - - - Internal class used to listen for logging events - and deliver them to the local repository. - - - - - - Constructor - - The repository to log to. - - - Initializes a new instance of the for the - specified . - - - - - - The underlying that events should - be logged to. - - - - - Logs the events to the repository. - - The events to log. - - - The events passed are logged to the - - - - - Obtains a lifetime service object to control the lifetime - policy for this instance. - - - null to indicate that this instance should live forever. - - - Obtains a lifetime service object to control the lifetime - policy for this instance. This object should live forever - therefore this implementation returns null. - - - - - - The fully qualified type of the RemoteLoggingServerPlugin class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets or sets the URI of this sink. - - - The URI of this sink. - - - - This is the name under which the object is marshaled. - - - - - - Attaches this plugin to a . - - The that this plugin should be attached to. - - - A plugin may only be attached to a single repository. - - - This method is called when the plugin is attached to the repository. - - - - - - Is called when the plugin is to shutdown. - - - - When the plugin is shutdown the remote logging - sink is disconnected. - - - - - - Default implementation of - - - This default implementation of the - interface is used to create the default subclass - of the object. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Initializes a new instance of the class. - - - - - - Default internal subclass of - - - This subclass has no additional behavior over the - class but does allow instances - to be created. - - - - - - Construct a new Logger - - the name of the logger - - - Initializes a new instance of the class - with the specified name. - - - - - - Create a new instance - - The that will own the . - The name of the . - The instance for the specified name. - - - Create a new instance with the - specified name. - - - Called by the to create - new named instances. - - - If the is null then the root logger - must be returned. - - - - - - Provides data for the event. - - - - A event is raised every time a - is created. - - - - - - Constructor - - The that has been created. - - - Initializes a new instance of the event argument - class,with the specified . - - - - - - The created - - - - - Gets the that has been created. - - - The that has been created. - - - - The that has been created. - - - - - - Hierarchical organization of loggers - - - - The casual user should not have to deal with this class - directly. - - - This class is specialized in retrieving loggers by name and - also maintaining the logger hierarchy. Implements the - interface. - - - The structure of the logger hierarchy is maintained by the - method. The hierarchy is such that children - link to their parent but parents do not have any references to their - children. Moreover, loggers can be instantiated in any order, in - particular descendant before ancestor. - - - In case a descendant is created before a particular ancestor, - then it creates a provision node for the ancestor and adds itself - to the provision node. Other descendants of the same ancestor add - themselves to the previously created provision node. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Initializes a new instance of the class. - - - - - - Construct with properties - - The properties to pass to this repository. - - - Initializes a new instance of the class. - - - - - - Construct with a logger factory - - The factory to use to create new logger instances. - - - Initializes a new instance of the class with - the specified . - - - - - - Construct with properties and a logger factory - - The properties to pass to this repository. - The factory to use to create new logger instances. - - - Initializes a new instance of the class with - the specified . - - - - - - A class to hold the value, name and display name for a level - - - - A class to hold the value, name and display name for a level - - - - - - Value of the level - - - - If the value is not set (defaults to -1) the value will be looked - up for the current level with the same name. - - - - - - Name of the level - - - The name of the level - - - - The name of the level. - - - - - - Display name for the level - - - The display name of the level - - - - The display name of the level. - - - - - - Override Object.ToString to return sensible debug info - - string info about this object - - - - The fully qualified type of the Hierarchy class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Event used to notify that a logger has been created. - - - - Event raised when a logger is created. - - - - - - Has no appender warning been emitted - - - - Flag to indicate if we have already issued a warning - about not having an appender warning. - - - - - - Get the root of this hierarchy - - - - Get the root of this hierarchy. - - - - - - Gets or sets the default instance. - - The default - - - The logger factory is used to create logger instances. - - - - - - Initialize the log4net system using the specified config - - the element containing the root of the config - - - - Initialize the log4net system using the specified appenders - - the appenders to use to log all logging events - - - - Initialize the log4net system using the specified appender - - the appender to use to log all logging events - - - - Test if a logger exists - - The name of the logger to lookup - The Logger object with the name specified - - - Check if the named logger exists in the hierarchy. If so return - its reference, otherwise returns null. - - - - - - Returns all the currently defined loggers in the hierarchy as an Array - - All the defined loggers - - - Returns all the currently defined loggers in the hierarchy as an Array. - The root logger is not included in the returned - enumeration. - - - - - - Return a new logger instance named as the first parameter using - the default factory. - - - - Return a new logger instance named as the first parameter using - the default factory. - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated and - then linked with its existing ancestors as well as children. - - - The name of the logger to retrieve - The logger object with the name specified - - - - Shutting down a hierarchy will safely close and remove - all appenders in all loggers including the root logger. - - - - Shutting down a hierarchy will safely close and remove - all appenders in all loggers including the root logger. - - - Some appenders need to be closed before the - application exists. Otherwise, pending logging events might be - lost. - - - The Shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Reset all values contained in this hierarchy instance to their default. - - - - Reset all values contained in this hierarchy instance to their - default. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set its default "off" value. - - - Existing loggers are not removed. They are just reset. - - - This method should be used sparingly and with care as it will - block all logging until it is completed. - - - - - - Log the logEvent through this hierarchy. - - the event to log - - - This method should not normally be used to log. - The interface should be used - for routine logging. This interface can be obtained - using the method. - - - The logEvent is delivered to the appropriate logger and - that logger is then responsible for logging the event. - - - - - - Returns all the Appenders that are currently configured - - An array containing all the currently configured appenders - - - Returns all the instances that are currently configured. - All the loggers are searched for appenders. The appenders may also be containers - for appenders and these are also searched for additional loggers. - - - The list returned is unordered but does not contain duplicates. - - - - - - Collect the appenders from an . - The appender may also be a container. - - - - - - - - - Collect the appenders from an container - - - - - - - - - Initialize the log4net system using the specified appenders - - the appenders to use to log all logging events - - - This method provides the same functionality as the - method implemented - on this object, but it is protected and therefore can be called by subclasses. - - - - - - Initialize the log4net system using the specified config - - the element containing the root of the config - - - This method provides the same functionality as the - method implemented - on this object, but it is protected and therefore can be called by subclasses. - - - - - - Test if this hierarchy is disabled for the specified . - - The level to check against. - - true if the repository is disabled for the level argument, false otherwise. - - - - If this hierarchy has not been configured then this method will - always return true. - - - This method will return true if this repository is - disabled for level object passed as parameter and - false otherwise. - - - See also the property. - - - - - - Clear all logger definitions from the internal hashtable - - - - This call will clear all logger definitions from the internal - hashtable. Invoking this method will irrevocably mess up the - logger hierarchy. - - - You should really know what you are doing before - invoking this method. - - - - - - Return a new logger instance named as the first parameter using - . - - The name of the logger to retrieve - The factory that will make the new logger instance - The logger object with the name specified - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated by the - parameter and linked with its existing - ancestors as well as children. - - - - - - Sends a logger creation event to all registered listeners - - The newly created logger - - Raises the logger creation event. - - - - - Updates all the parents of the specified logger - - The logger to update the parents for - - - This method loops through all the potential parents of - . There 3 possible cases: - - - - No entry for the potential parent of exists - - We create a ProvisionNode for this potential - parent and insert in that provision node. - - - - The entry is of type Logger for the potential parent. - - The entry is 's nearest existing parent. We - update 's parent field with this entry. We also break from - he loop because updating our parent's parent is our parent's - responsibility. - - - - The entry is of type ProvisionNode for this potential parent. - - We add to the list of children for this - potential parent. - - - - - - - - Replace a with a in the hierarchy. - - - - - - - - We update the links for all the children that placed themselves - in the provision node 'pn'. The second argument 'log' is a - reference for the newly created Logger, parent of all the - children in 'pn'. - - - We loop on all the children 'c' in 'pn'. - - - If the child 'c' has been already linked to a child of - 'log' then there is no need to update 'c'. - - - Otherwise, we set log's parent field to c's parent and set - c's parent field to log. - - - - - - Define or redefine a Level using the values in the argument - - the level values - - - Define or redefine a Level using the values in the argument - - - Supports setting levels via the configuration file. - - - - - - Set a Property using the values in the argument - - the property value - - - Set a Property using the values in the argument. - - - Supports setting property values via the configuration file. - - - - - - Interface abstracts creation of instances - - - - This interface is used by the to - create new objects. - - - The method is called - to create a named . - - - Implement this interface to create new subclasses of . - - - Nicko Cadell - Gert Driesen - - - - Create a new instance - - The that will own the . - The name of the . - The instance for the specified name. - - - Create a new instance with the - specified name. - - - Called by the to create - new named instances. - - - If the is null then the root logger - must be returned. - - - - - - Implementation of used by - - - Internal class used to provide implementation of - interface. Applications should use to get - logger instances. - - - This is one of the central classes in the log4net implementation. One of the - distinctive features of log4net are hierarchical loggers and their - evaluation. The organizes the - instances into a rooted tree hierarchy. - - - The class is abstract. Only concrete subclasses of - can be created. The - is used to create instances of this type for the . - - - Nicko Cadell - Gert Driesen - Aspi Havewala - Douglas de la Torre - - - - This constructor created a new instance and - sets its name. - - The name of the . - - - This constructor is protected and designed to be used by - a subclass that is not abstract. - - - Loggers are constructed by - objects. See for the default - logger creator. - - - - - - The fully qualified type of the Logger class. - - - - - The name of this logger. - - - - - The assigned level of this logger. - - - - The level variable need not be - assigned a value in which case it is inherited - form the hierarchy. - - - - - - The parent of this logger. - - - - The parent of this logger. - All loggers have at least one ancestor which is the root logger. - - - - - - Loggers need to know what Hierarchy they are in. - - - - Loggers need to know what Hierarchy they are in. - The hierarchy that this logger is a member of is stored - here. - - - - - - Helper implementation of the interface - - - - - Flag indicating if child loggers inherit their parents appenders - - - - Additivity is set to true by default, that is children inherit - the appenders of their ancestors by default. If this variable is - set to false then the appenders found in the - ancestors of this logger are not used. However, the children - of this logger will inherit its appenders, unless the children - have their additivity flag set to false too. See - the user manual for more details. - - - - - - Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl - - - - - Gets or sets the parent logger in the hierarchy. - - - The parent logger in the hierarchy. - - - - Part of the Composite pattern that makes the hierarchy. - The hierarchy is parent linked rather than child linked. - - - - - - Gets or sets a value indicating if child loggers inherit their parent's appenders. - - - true if child loggers inherit their parent's appenders. - - - - Additivity is set to true by default, that is children inherit - the appenders of their ancestors by default. If this variable is - set to false then the appenders found in the - ancestors of this logger are not used. However, the children - of this logger will inherit its appenders, unless the children - have their additivity flag set to false too. See - the user manual for more details. - - - - - - Gets the effective level for this logger. - - The nearest level in the logger hierarchy. - - - Starting from this logger, searches the logger hierarchy for a - non-null level and returns it. Otherwise, returns the level of the - root logger. - - The Logger class is designed so that this method executes as - quickly as possible. - - - - - Gets or sets the where this - Logger instance is attached to. - - The hierarchy that this logger belongs to. - - - This logger must be attached to a single . - - - - - - Gets or sets the assigned , if any, for this Logger. - - - The of this logger. - - - - The assigned can be null. - - - - - - Get the appenders contained in this logger as an - . - - A collection of the appenders in this logger - - - Get the appenders contained in this logger as an - . If no appenders - can be found, then a is returned. - - - - - - Gets the logger name. - - - The name of the logger. - - - - The name of this logger - - - - - - Gets the where this - Logger instance is attached to. - - - The that this logger belongs to. - - - - Gets the where this - Logger instance is attached to. - - - - - - Add to the list of appenders of this - Logger instance. - - An appender to add to this logger - - - Add to the list of appenders of this - Logger instance. - - - If is already in the list of - appenders, then it won't be added again. - - - - - - Look for the appender named as name - The name of the appender to lookup - The appender with the name specified, or null. - - - Returns the named appender, or null if the appender is not found. - - - - - - Remove all previously added appenders from this Logger instance. - - - - Remove all previously added appenders from this Logger instance. - - - This is useful when re-reading configuration information. - - - - - - Remove the appender passed as parameter form the list of appenders. - - The appender to remove - The appender removed from the list - - - Remove the appender passed as parameter form the list of appenders. - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Remove the appender passed as parameter form the list of appenders. - - The name of the appender to remove - The appender removed from the list - - - Remove the named appender passed as parameter form the list of appenders. - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - This generic form is intended to be used by wrappers. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The level of the message to be logged. - The message object to log. - The exception to log, including its stack trace. - - - Generate a logging event for the specified using - the and . - - - This method must not throw any exception to the caller. - - - - - - This is the most generic printing method that is intended to be used - by wrappers. - - The event being logged. - - - Logs the specified logging event through this logger. - - - This method must not throw any exception to the caller. - - - - - - Checks if this logger is enabled for a given passed as parameter. - - The level to check. - - true if this logger is enabled for level, otherwise false. - - - - Test if this logger is going to log events of the specified . - - - This method must not throw any exception to the caller. - - - - - - Deliver the to the attached appenders. - - The event to log. - - - Call the appenders in the hierarchy starting at - this. If no appenders could be found, emit a - warning. - - - This method calls all the appenders inherited from the - hierarchy circumventing any evaluation of whether to log or not - to log the particular log request. - - - - - - Closes all attached appenders implementing the interface. - - - - Used to ensure that the appenders are correctly shutdown. - - - - - - This is the most generic printing method. This generic form is intended to be used by wrappers - - The level of the message to be logged. - The message object to log. - The exception to log, including its stack trace. - - - Generate a logging event for the specified using - the . - - - - - - Creates a new logging event and logs the event without further checks. - - The declaring type of the method that is - the stack boundary into the logging system for this call. - The level of the message to be logged. - The message object to log. - The exception to log, including its stack trace. - - - Generates a logging event and delivers it to the attached - appenders. - - - - - - Creates a new logging event and logs the event without further checks. - - The event being logged. - - - Delivers the logging event to the attached appenders. - - - - - - Used internally to accelerate hash table searches. - - - - Internal class used to improve performance of - string keyed hashtables. - - - The hashcode of the string is cached for reuse. - The string is stored as an interned value. - When comparing two objects for equality - the reference equality of the interned strings is compared. - - - Nicko Cadell - Gert Driesen - - - - Construct key with string name - - - - Initializes a new instance of the class - with the specified name. - - - Stores the hashcode of the string and interns - the string key to optimize comparisons. - - - The Compact Framework 1.0 the - method does not work. On the Compact Framework - the string keys are not interned nor are they - compared by reference. - - - The name of the logger. - - - - Returns a hash code for the current instance. - - A hash code for the current instance. - - - Returns the cached hashcode. - - - - - - Determines whether two instances - are equal. - - The to compare with the current . - - true if the specified is equal to the current ; otherwise, false. - - - - Compares the references of the interned strings. - - - - - - Provision nodes are used where no logger instance has been specified - - - - instances are used in the - when there is no specified - for that node. - - - A provision node holds a list of child loggers on behalf of - a logger that does not exist. - - - Nicko Cadell - Gert Driesen - - - - Create a new provision node with child node - - A child logger to add to this node. - - - Initializes a new instance of the class - with the specified child logger. - - - - - - The sits at the root of the logger hierarchy tree. - - - - The is a regular except - that it provides several guarantees. - - - First, it cannot be assigned a null - level. Second, since the root logger cannot have a parent, the - property always returns the value of the - level field without walking the hierarchy. - - - Nicko Cadell - Gert Driesen - - - - Construct a - The level to assign to the root logger. - - - Initializes a new instance of the class with - the specified logging level. - - - The root logger names itself as "root". However, the root - logger cannot be retrieved by name. - - - - - - The fully qualified type of the RootLogger class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets the assigned level value without walking the logger hierarchy. - - The assigned level value without walking the logger hierarchy. - - - Because the root logger cannot have a parent and its level - must not be null this property just returns the - value of . - - - - - - Gets or sets the assigned for the root logger. - - - The of the root logger. - - - - Setting the level of the root logger to a null reference - may have catastrophic results. We prevent this here. - - - - - - Initializes the log4net environment using an XML DOM. - - - - Configures a using an XML DOM. - - - Nicko Cadell - Gert Driesen - - - - Construct the configurator for a hierarchy - - The hierarchy to build. - - - Initializes a new instance of the class - with the specified . - - - - - - key: appenderName, value: appender. - - - - - The Hierarchy being configured. - - - - - The fully qualified type of the XmlHierarchyConfigurator class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Configure the hierarchy by parsing a DOM tree of XML elements. - - The root element to parse. - - - Configure the hierarchy by parsing a DOM tree of XML elements. - - - - - - Parse appenders by IDREF. - - The appender ref element. - The instance of the appender that the ref refers to. - - - Parse an XML element that represents an appender and return - the appender. - - - - - - Parses an appender element. - - The appender element. - The appender instance or null when parsing failed. - - - Parse an XML element that represents an appender and return - the appender instance. - - - - - - Parses a logger element. - - The logger element. - - - Parse an XML element that represents a logger. - - - - - - Parses the root logger element. - - The root element. - - - Parse an XML element that represents the root logger. - - - - - - Parses the children of a logger element. - - The category element. - The logger instance. - Flag to indicate if the logger is the root logger. - - - Parse the child elements of a <logger> element. - - - - - - Parses an object renderer. - - The renderer element. - - - Parse an XML element that represents a renderer. - - - - - - Parses a level element. - - The level element. - The logger object to set the level on. - Flag to indicate if the logger is the root logger. - - - Parse an XML element that represents a level. - - - - - - Sets a parameter on an object. - - The parameter element. - The object to set the parameter on. - - The parameter name must correspond to a writable property - on the object. The value of the parameter is a string, - therefore this function will attempt to set a string - property first. If unable to set a string property it - will inspect the property and its argument type. It will - attempt to call a static method called Parse on the - type of the property. This method will take a single - string argument and return a value that can be used to - set the property. - - - - - Test if an element has no attributes or child elements - - the element to inspect - - true if the element has any attributes or child elements, false otherwise - - - - Test if a is constructible with Activator.CreateInstance. - - the type to inspect - - true if the type is creatable using a default constructor, false otherwise - - - - Look for a method on the that matches the supplied - - the type that has the method - the name of the method - the method info found - - - The method must be a public instance method on the . - The method must be named or "Add" followed by . - The method must take a single parameter. - - - - - - Converts a string value to a target type. - - The type of object to convert the string to. - The string value to use as the value of the object. - - - An object of type with value or - null when the conversion could not be performed. - - - - - - Creates an object as specified in XML. - - The XML element that contains the definition of the object. - The object type to use if not explicitly specified. - The type that the returned object must be or must inherit from. - The object or null - - - Parse an XML element and create an object instance based on the configuration - data. - - - The type of the instance may be specified in the XML. If not - specified then the is used - as the type. However the type is specified it must support the - type. - - - - - - - - - - - - - - - - - - - - Basic Configurator interface for repositories - - - - Interface used by basic configurator to configure a - with a default . - - - A should implement this interface to support - configuration by the . - - - Nicko Cadell - Gert Driesen - - - - Initialize the repository using the specified appender - - the appender to use to log all logging events - - - Configure the repository to route all logging events to the - specified appender. - - - - - - Initialize the repository using the specified appenders - - the appenders to use to log all logging events - - - Configure the repository to route all logging events to the - specified appenders. - - - - - - Interface implemented by logger repositories. - - - - This interface is implemented by logger repositories. e.g. - . - - - This interface is used by the - to obtain interfaces. - - - Nicko Cadell - Gert Driesen - - - - Event to notify that the repository has been shutdown. - - - Event to notify that the repository has been shutdown. - - - - Event raised when the repository has been shutdown. - - - - - - Event to notify that the repository has had its configuration reset. - - - Event to notify that the repository has had its configuration reset. - - - - Event raised when the repository's configuration has been - reset to default. - - - - - - Event to notify that the repository has had its configuration changed. - - - Event to notify that the repository has had its configuration changed. - - - - Event raised when the repository's configuration has been changed. - - - - - - The name of the repository - - - The name of the repository - - - - The name of the repository. - - - - - - RendererMap accesses the object renderer map for this repository. - - - RendererMap accesses the object renderer map for this repository. - - - - RendererMap accesses the object renderer map for this repository. - - - The RendererMap holds a mapping between types and - objects. - - - - - - The plugin map for this repository. - - - The plugin map for this repository. - - - - The plugin map holds the instances - that have been attached to this repository. - - - - - - Get the level map for the Repository. - - - - Get the level map for the Repository. - - - The level map defines the mappings between - level names and objects in - this repository. - - - - - - The threshold for all events in this repository - - - The threshold for all events in this repository - - - - The threshold for all events in this repository. - - - - - - Flag indicates if this repository has been configured. - - - Flag indicates if this repository has been configured. - - - - Flag indicates if this repository has been configured. - - - - - - Collection of internal messages captured during the most - recent configuration process. - - - - - Repository specific properties - - - Repository specific properties - - - - These properties can be specified on a repository specific basis. - - - - - - Check if the named logger exists in the repository. If so return - its reference, otherwise returns null. - - The name of the logger to lookup - The Logger object with the name specified - - - If the names logger exists it is returned, otherwise - null is returned. - - - - - - Returns all the currently defined loggers as an Array. - - All the defined loggers - - - Returns all the currently defined loggers as an Array. - - - - - - Returns a named logger instance - - The name of the logger to retrieve - The logger object with the name specified - - - Returns a named logger instance. - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated and - then linked with its existing ancestors as well as children. - - - - - Shutdown the repository - - - Shutting down a repository will safely close and remove - all appenders in all loggers including the root logger. - - - Some appenders need to be closed before the - application exists. Otherwise, pending logging events might be - lost. - - - The method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Reset the repositories configuration to a default state - - - - Reset all values contained in this instance to their - default state. - - - Existing loggers are not removed. They are just reset. - - - This method should be used sparingly and with care as it will - block all logging until it is completed. - - - - - - Log the through this repository. - - the event to log - - - This method should not normally be used to log. - The interface should be used - for routine logging. This interface can be obtained - using the method. - - - The logEvent is delivered to the appropriate logger and - that logger is then responsible for logging the event. - - - - - - Returns all the Appenders that are configured as an Array. - - All the Appenders - - - Returns all the Appenders that are configured as an Array. - - - - - - Configure repository using XML - - - - Interface used by Xml configurator to configure a . - - - A should implement this interface to support - configuration by the . - - - Nicko Cadell - Gert Driesen - - - - Initialize the repository using the specified config - - the element containing the root of the config - - - The schema for the XML configuration data is defined by - the implementation. - - - - - - Base implementation of - - - Default abstract implementation of the interface. - - - Skeleton implementation of the interface. - All types can extend this type. - - - Nicko Cadell - Gert Driesen - - - - Default Constructor - - - - Initializes the repository with default (empty) properties. - - - - - - Construct the repository using specific properties - - the properties to set for this repository - - - Initializes the repository with specified properties. - - - - - - The fully qualified type of the LoggerRepositorySkeleton class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Event to notify that the repository has been shutdown. - - - Event to notify that the repository has been shutdown. - - - - Event raised when the repository has been shutdown. - - - - - - Event to notify that the repository has had its configuration reset. - - - Event to notify that the repository has had its configuration reset. - - - - Event raised when the repository's configuration has been - reset to default. - - - - - - Event to notify that the repository has had its configuration changed. - - - Event to notify that the repository has had its configuration changed. - - - - Event raised when the repository's configuration has been changed. - - - - - - The name of the repository - - - The string name of the repository - - - - The name of this repository. The name is - used to store and lookup the repositories - stored by the . - - - - - - The threshold for all events in this repository - - - The threshold for all events in this repository - - - - The threshold for all events in this repository - - - - - - RendererMap accesses the object renderer map for this repository. - - - RendererMap accesses the object renderer map for this repository. - - - - RendererMap accesses the object renderer map for this repository. - - - The RendererMap holds a mapping between types and - objects. - - - - - - The plugin map for this repository. - - - The plugin map for this repository. - - - - The plugin map holds the instances - that have been attached to this repository. - - - - - - Get the level map for the Repository. - - - - Get the level map for the Repository. - - - The level map defines the mappings between - level names and objects in - this repository. - - - - - - Flag indicates if this repository has been configured. - - - Flag indicates if this repository has been configured. - - - - Flag indicates if this repository has been configured. - - - - - - Contains a list of internal messages captures during the - last configuration. - - - - - Repository specific properties - - - Repository specific properties - - - These properties can be specified on a repository specific basis - - - - - Test if logger exists - - The name of the logger to lookup - The Logger object with the name specified - - - Check if the named logger exists in the repository. If so return - its reference, otherwise returns null. - - - - - - Returns all the currently defined loggers in the repository - - All the defined loggers - - - Returns all the currently defined loggers in the repository as an Array. - - - - - - Return a new logger instance - - The name of the logger to retrieve - The logger object with the name specified - - - Return a new logger instance. - - - If a logger of that name already exists, then it will be - returned. Otherwise, a new logger will be instantiated and - then linked with its existing ancestors as well as children. - - - - - - Shutdown the repository - - - - Shutdown the repository. Can be overridden in a subclass. - This base class implementation notifies the - listeners and all attached plugins of the shutdown event. - - - - - - Reset the repositories configuration to a default state - - - - Reset all values contained in this instance to their - default state. - - - Existing loggers are not removed. They are just reset. - - - This method should be used sparingly and with care as it will - block all logging until it is completed. - - - - - - Log the logEvent through this repository. - - the event to log - - - This method should not normally be used to log. - The interface should be used - for routine logging. This interface can be obtained - using the method. - - - The logEvent is delivered to the appropriate logger and - that logger is then responsible for logging the event. - - - - - - Returns all the Appenders that are configured as an Array. - - All the Appenders - - - Returns all the Appenders that are configured as an Array. - - - - - - Adds an object renderer for a specific class. - - The type that will be rendered by the renderer supplied. - The object renderer used to render the object. - - - Adds an object renderer for a specific class. - - - - - - Notify the registered listeners that the repository is shutting down - - Empty EventArgs - - - Notify any listeners that this repository is shutting down. - - - - - - Notify the registered listeners that the repository has had its configuration reset - - Empty EventArgs - - - Notify any listeners that this repository's configuration has been reset. - - - - - - Notify the registered listeners that the repository has had its configuration changed - - Empty EventArgs - - - Notify any listeners that this repository's configuration has changed. - - - - - - Raise a configuration changed event on this repository - - EventArgs.Empty - - - Applications that programmatically change the configuration of the repository should - raise this event notification to notify listeners. - - - - - - Write the name of the current AppDomain to the output - - - - Write the name of the current AppDomain to the output writer - - - Nicko Cadell - - - - Write the name of the current AppDomain to the output - - the writer to write to - null, state is not set - - - Writes name of the current AppDomain to the output . - - - - - - Write the current date to the output - - - - Date pattern converter, uses a to format - the current date and time to the writer as a string. - - - The value of the determines - the formatting of the date. The following values are allowed: - Option valueOutputISO8601 - Uses the formatter. - Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. - DATE - Uses the formatter. - Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". - ABSOLUTE - Uses the formatter. - Formats using the "HH:mm:ss,fff" for example, "15:49:37,459". - other - Any other pattern string uses the formatter. - This formatter passes the pattern string to the method. - For details on valid patterns see - DateTimeFormatInfo Class. - - - The date and time is in the local time zone and is rendered in that zone. - To output the time in Universal time see . - - - Nicko Cadell - - - - The used to render the date to a string - - - - The used to render the date to a string - - - - - - The fully qualified type of the DatePatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Initialize the converter options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write the current date to the output - - - that will receive the formatted result. - null, state is not set - - - Pass the current date and time to the - for it to render it to the writer. - - - The date and time passed is in the local time zone. - - - - - - Write an folder path to the output - - - - Write an special path environment folder path to the output writer. - The value of the determines - the name of the variable to output. - should be a value in the enumeration. - - - Ron Grabowski - - - - The fully qualified type of the EnvironmentFolderPathPatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Write an special path environment folder path to the output - - the writer to write to - null, state is not set - - - Writes the special path environment folder path to the output . - The name of the special path environment folder path to output must be set - using the - property. - - - - - - Write an environment variable to the output - - - - Write an environment variable to the output writer. - The value of the determines - the name of the variable to output. - - - Nicko Cadell - - - - The fully qualified type of the EnvironmentPatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Write an environment variable to the output - - the writer to write to - null, state is not set - - - Writes the environment variable to the output . - The name of the environment variable to output must be set - using the - property. - - - - - - Write the current thread identity to the output - - - - Write the current thread identity to the output writer - - - Nicko Cadell - - - - The fully qualified type of the IdentityPatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Write the current thread identity to the output - - the writer to write to - null, state is not set - - - Writes the current thread identity to the output . - - - - - - Pattern converter for literal string instances in the pattern - - - - Writes the literal string value specified in the - property to - the output. - - - Nicko Cadell - - - - Set the next converter in the chain - - The next pattern converter in the chain - The next pattern converter - - - Special case the building of the pattern converter chain - for instances. Two adjacent - literals in the pattern can be represented by a single combined - pattern converter. This implementation detects when a - is added to the chain - after this converter and combines its value with this converter's - literal value. - - - - - - Write the literal to the output - - the writer to write to - null, not set - - - Override the formatting behavior to ignore the FormattingInfo - because we have a literal instead. - - - Writes the value of - to the output . - - - - - - Convert this pattern into the rendered message - - - that will receive the formatted result. - null, not set - - - This method is not used. - - - - - - Writes a newline to the output - - - - Writes the system dependent line terminator to the output. - This behavior can be overridden by setting the : - - - - Option Value - Output - - - DOS - DOS or Windows line terminator "\r\n" - - - UNIX - UNIX line terminator "\n" - - - - Nicko Cadell - - - - Initialize the converter - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write the current process ID to the output - - - - Write the current process ID to the output writer - - - Nicko Cadell - - - - The fully qualified type of the ProcessIdPatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Write the current process ID to the output - - the writer to write to - null, state is not set - - - Write the current process ID to the output . - - - - - - Property pattern converter - - - - This pattern converter reads the thread and global properties. - The thread properties take priority over global properties. - See for details of the - thread properties. See for - details of the global properties. - - - If the is specified then that will be used to - lookup a single property. If no is specified - then all properties will be dumped as a list of key value pairs. - - - Nicko Cadell - - - - Write the property value to the output - - - that will receive the formatted result. - null, state is not set - - - Writes out the value of a named property. The property name - should be set in the - property. - - - If the is set to null - then all the properties are written as key value pairs. - - - - - - A Pattern converter that generates a string of random characters - - - - The converter generates a string of random characters. By default - the string is length 4. This can be changed by setting the - to the string value of the length required. - - - The random characters in the string are limited to uppercase letters - and numbers only. - - - The random number generator used by this class is not cryptographically secure. - - - Nicko Cadell - - - - Shared random number generator - - - - - Length of random string to generate. Default length 4. - - - - - The fully qualified type of the RandomStringPatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Initialize the converter options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Write a randoim string to the output - - the writer to write to - null, state is not set - - - Write a randoim string to the output . - - - - - - Write the current threads username to the output - - - - Write the current threads username to the output writer - - - Nicko Cadell - - - - The fully qualified type of the UserNamePatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Write the current threads username to the output - - the writer to write to - null, state is not set - - - Write the current threads username to the output . - - - - - - Write the UTC date time to the output - - - - Date pattern converter, uses a to format - the current date and time in Universal time. - - - See the for details on the date pattern syntax. - - - - Nicko Cadell - - - - The fully qualified type of the UtcDatePatternConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Write the current date and time to the output - - - that will receive the formatted result. - null, state is not set - - - Pass the current date and time to the - for it to render it to the writer. - - - The date is in Universal time when it is rendered. - - - - - - - Type converter for Boolean. - - - - Supports conversion from string to bool type. - - - - - - Nicko Cadell - Gert Driesen - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Convert the source object to the type supported by this object - - the object to convert - the converted object - - - Uses the method to convert the - argument to a . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Exception base type for conversion errors. - - - - This type extends . It - does not add any new functionality but does differentiate the - type of exception being thrown. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - A message to include with the exception. - - - Initializes a new instance of the class - with the specified message. - - - - - - Constructor - - A message to include with the exception. - A nested exception to include. - - - Initializes a new instance of the class - with the specified message and inner exception. - - - - - - Serialization constructor - - The that holds the serialized object data about the exception being thrown. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - Creates a new instance of the class. - - The conversion destination type. - The value to convert. - An instance of the . - - - Creates a new instance of the class. - - - - - - Creates a new instance of the class. - - The conversion destination type. - The value to convert. - A nested exception to include. - An instance of the . - - - Creates a new instance of the class. - - - - - - Register of type converters for specific types. - - - - Maintains a registry of type converters used to convert between - types. - - - Use the and - methods to register new converters. - The and methods - lookup appropriate converters to use. - - - - - Nicko Cadell - Gert Driesen - - - - Static constructor. - - - - This constructor defines the intrinsic type converters. - - - - - - Private constructor - - - Initializes a new instance of the class. - - - - - The fully qualified type of the ConverterRegistry class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Mapping from to type converter. - - - - - Adds a converter for a specific type. - - The type being converted to. - The type converter to use to convert to the destination type. - - - Adds a converter instance for a specific type. - - - - - - Adds a converter for a specific type. - - The type being converted to. - The type of the type converter to use to convert to the destination type. - - - Adds a converter for a specific type. - - - - - - Gets the type converter to use to convert values to the destination type. - - The type being converted from. - The type being converted to. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - Gets the type converter to use to convert values to the destination type. - - - - - - Gets the type converter to use to convert values to the destination type. - - The type being converted to. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - Gets the type converter to use to convert values to the destination type. - - - - - - Lookups the type converter to use as specified by the attributes on the - destination type. - - The type being converted to. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - - Creates the instance of the type converter. - - The type of the type converter. - - The type converter instance to use for type conversions or null - if no type converter is found. - - - - The type specified for the type converter must implement - the or interfaces - and must have a public default (no argument) constructor. - - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - - - - Nicko Cadell - Gert Driesen - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to an encoding - the encoding - - - Uses the method to - convert the argument to an . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Interface supported by type converters - - - - This interface supports conversion from arbitrary types - to a single target type. See . - - - Nicko Cadell - Gert Driesen - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Test if the can be converted to the - type supported by this converter. - - - - - - Convert the source object to the type supported by this object - - the object to convert - the converted object - - - Converts the to the type supported - by this converter. - - - - - - Interface supported by type converters - - - - This interface supports conversion from a single type to arbitrary types. - See . - - - Nicko Cadell - - - - Returns whether this converter can convert the object to the specified type - - A Type that represents the type you want to convert to - true if the conversion is possible - - - Test if the type supported by this converter can be converted to the - . - - - - - - Converts the given value object to the specified type, using the arguments - - the object to convert - The Type to convert the value parameter to - the converted object - - - Converts the (which must be of the type supported - by this converter) to the specified.. - - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - - - Nicko Cadell - - - - Valid characters in an IPv4 or IPv6 address string. (Does not support subnets) - - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to an IPAddress - the IPAddress - - - Uses the method to convert the - argument to an . - If that fails then the string is resolved as a DNS hostname. - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - The string is used as the - of the . - - - - - - Nicko Cadell - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to a PatternLayout - the PatternLayout - - - Creates and returns a new using - the as the - . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Convert between string and - - - Supports conversion from string to type, - and from a type to a string. - - - The string is used as the - of the . - - - - - - Nicko Cadell - - - - Can the target type be converted to the type supported by this object - - A that represents the type you want to convert to - true if the conversion is possible - - - Returns true if the is - assignable from a type. - - - - - - Converts the given value object to the specified type, using the arguments - - the object to convert - The Type to convert the value parameter to - the converted object - - - Uses the method to convert the - argument to a . - - - - The object cannot be converted to the - . To check for this condition use the - method. - - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to a PatternString - the PatternString - - - Creates and returns a new using - the as the - . - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Supports conversion from string to type. - - - - Supports conversion from string to type. - - - - - - Nicko Cadell - - - - Can the source type be converted to the type supported by this object - - the type to convert - true if the conversion is possible - - - Returns true if the is - the type. - - - - - - Overrides the ConvertFrom method of IConvertFrom. - - the object to convert to a Type - the Type - - - Uses the method to convert the - argument to a . - Additional effort is made to locate partially specified types - by searching the loaded assemblies. - - - - The object cannot be converted to the - target type. To check for this condition use the - method. - - - - - Attribute used to associate a type converter - - - - Class and Interface level attribute that specifies a type converter - to use with the associated type. - - - To associate a type converter with a target type apply a - TypeConverterAttribute to the target type. Specify the - type of the type converter on the attribute. - - - Nicko Cadell - Gert Driesen - - - - Default constructor - - - - Default constructor - - - - - - Create a new type converter attribute for the specified type name - - The string type name of the type converter - - - The type specified must implement the - or the interfaces. - - - - - - Create a new type converter attribute for the specified type - - The type of the type converter - - - The type specified must implement the - or the interfaces. - - - - - - The string type name of the type converter - - - - - The string type name of the type converter - - - The string type name of the type converter - - - - The type specified must implement the - or the interfaces. - - - - - - A straightforward implementation of the interface. - - - - This is the default implementation of the - interface. Implementors of the interface - should aggregate an instance of this type. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - List of appenders - - - - - Array of appenders, used to cache the m_appenderList - - - - - The fully qualified type of the AppenderAttachedImpl class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets all attached appenders. - - - A collection of attached appenders, or null if there - are no attached appenders. - - - - The read only collection of all currently attached appenders. - - - - - - Append on on all attached appenders. - - The event being logged. - The number of appenders called. - - - Calls the method on all - attached appenders. - - - - - - Append on on all attached appenders. - - The array of events being logged. - The number of appenders called. - - - Calls the method on all - attached appenders. - - - - - - Calls the DoAppende method on the with - the objects supplied. - - The appender - The events - - - If the supports the - interface then the will be passed - through using that interface. Otherwise the - objects in the array will be passed one at a time. - - - - - - Attaches an appender. - - The appender to add. - - - If the appender is already in the list it won't be added again. - - - - - - Gets an attached appender with the specified name. - - The name of the appender to get. - - The appender with the name specified, or null if no appender with the - specified name is found. - - - - Lookup an attached appender by name. - - - - - - Removes all attached appenders. - - - - Removes and closes all attached appenders - - - - - - Removes the specified appender from the list of attached appenders. - - The appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - Removes the appender with the specified name from the list of appenders. - - The name of the appender to remove. - The appender removed from the list - - - The appender removed is not closed. - If you are discarding the appender you must call - on the appender removed. - - - - - - This class aggregates several PropertiesDictionary collections together. - - - - Provides a dictionary style lookup over an ordered list of - collections. - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Gets the value of a property - - - The value for the property with the specified key - - - - Looks up the value for the specified. - The collections are searched - in the order in which they were added to this collection. The value - returned is the value held by the first collection that contains - the specified key. - - - If none of the collections contain the specified key then - null is returned. - - - - - - Add a Properties Dictionary to this composite collection - - the properties to add - - - Properties dictionaries added first take precedence over dictionaries added - later. - - - - - - Flatten this composite collection into a single properties dictionary - - the flattened dictionary - - - Reduces the collection of ordered dictionaries to a single dictionary - containing the resultant values for the keys. - - - - - - Base class for Context Properties implementations - - - - This class defines a basic property get set accessor - - - Nicko Cadell - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Gets or sets the value of a property - - - - - - Wrapper class used to map converter names to converter types - - - - Pattern converter info class used during configuration by custom - PatternString and PatternLayer converters. - - - - - - default constructor - - - - - Gets or sets the name of the conversion pattern - - - - The name of the pattern in the format string - - - - - - Gets or sets the type of the converter - - - - The value specified must extend the - type. - - - - - - - - - - - - - - - - Subclass of that maintains a count of - the number of bytes written. - - - - This writer counts the number of bytes written. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The to actually write to. - The to report errors to. - - - Creates a new instance of the class - with the specified and . - - - - - - Total number of bytes written. - - - - - Gets or sets the total number of bytes written. - - - The total number of bytes written. - - - - Gets or sets the total number of bytes written. - - - - - - Writes a character to the underlying writer and counts the number of bytes written. - - the char to write - - - Overrides implementation of . Counts - the number of bytes written. - - - - - - Writes a buffer to the underlying writer and counts the number of bytes written. - - the buffer to write - the start index to write from - the number of characters to write - - - Overrides implementation of . Counts - the number of bytes written. - - - - - - Writes a string to the output and counts the number of bytes written. - - The string data to write to the output. - - - Overrides implementation of . Counts - the number of bytes written. - - - - - - A fixed size rolling buffer of logging events. - - - - An array backed fixed size leaky bucket. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The maximum number of logging events in the buffer. - - - Initializes a new instance of the class with - the specified maximum number of buffered logging events. - - - The argument is not a positive integer. - - - - Gets the th oldest event currently in the buffer. - - The th oldest event currently in the buffer. - - - If is outside the range 0 to the number of events - currently in the buffer, then null is returned. - - - - - - Gets the maximum size of the buffer. - - The maximum size of the buffer. - - - Gets the maximum size of the buffer - - - - - - Gets the number of logging events in the buffer. - - The number of logging events in the buffer. - - - This number is guaranteed to be in the range 0 to - (inclusive). - - - - - - Appends a to the buffer. - - The event to append to the buffer. - The event discarded from the buffer, if the buffer is full, otherwise null. - - - Append an event to the buffer. If the buffer still contains free space then - null is returned. If the buffer is full then an event will be dropped - to make space for the new event, the event dropped is returned. - - - - - - Get and remove the oldest event in the buffer. - - The oldest logging event in the buffer - - - Gets the oldest (first) logging event in the buffer and removes it - from the buffer. - - - - - - Pops all the logging events from the buffer into an array. - - An array of all the logging events in the buffer. - - - Get all the events in the buffer and clear the buffer. - - - - - - Clear the buffer - - - - Clear the buffer of all events. The events in the buffer are lost. - - - - - - An always empty . - - - - A singleton implementation of the - interface that always represents an empty collection. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - The singleton instance of the empty collection. - - - - - Gets the singleton instance of the empty collection. - - The singleton instance of the empty collection. - - - Gets the singleton instance of the empty collection. - - - - - - Gets a value indicating if access to the is synchronized (thread-safe). - - - true if access to the is synchronized (thread-safe); otherwise, false. - - - - For the this property is always true. - - - - - - Gets the number of elements contained in the . - - - The number of elements contained in the . - - - - As the collection is empty the is always 0. - - - - - - Gets an object that can be used to synchronize access to the . - - - An object that can be used to synchronize access to the . - - - - As the collection is empty and thread safe and synchronized this instance is also - the object. - - - - - - Copies the elements of the to an - , starting at a particular Array index. - - The one-dimensional - that is the destination of the elements copied from - . The Array must have zero-based - indexing. - The zero-based index in array at which - copying begins. - - - As the collection is empty no values are copied into the array. - - - - - - Returns an enumerator that can iterate through a collection. - - - An that can be used to - iterate through the collection. - - - - As the collection is empty a is returned. - - - - - - An always empty . - - - - A singleton implementation of the - interface that always represents an empty collection. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - The singleton instance of the empty dictionary. - - - - - Gets or sets the element with the specified key. - - The key of the element to get or set. - - null - - - - As the collection is empty no values can be looked up or stored. - If the index getter is called then null is returned. - A is thrown if the setter is called. - - - This dictionary is always empty and cannot be modified. - - - - Gets the singleton instance of the . - - The singleton instance of the . - - - Gets the singleton instance of the . - - - - - - Gets a value indicating if access to the is synchronized (thread-safe). - - - true if access to the is synchronized (thread-safe); otherwise, false. - - - - For the this property is always true. - - - - - - Gets the number of elements contained in the - - The number of elements contained in the . - - - - As the collection is empty the is always 0. - - - - - - Gets an object that can be used to synchronize access to the . - - - An object that can be used to synchronize access to the . - - - - As the collection is empty and thread safe and synchronized this instance is also - the object. - - - - - - Gets a value indicating whether the has a fixed size. - - - true - - - - As the collection is empty always returns true. - - - - - - Gets a value indicating whether the is read-only. - - - true - - - - As the collection is empty always returns true. - - - - - - Gets an containing the keys of the . - - An containing the keys of the . - - - As the collection is empty a is returned. - - - - - - Gets an containing the values of the . - - An containing the values of the . - - - As the collection is empty a is returned. - - - - - - Returns an enumerator that can iterate through a collection. - - - An that can be used to - iterate through the collection. - - - - As the collection is empty a is returned. - - - - - - Copies the elements of the to an - , starting at a particular Array index. - - The one-dimensional - that is the destination of the elements copied from - . The Array must have zero-based - indexing. - The zero-based index in array at which - copying begins. - - - As the collection is empty no values are copied into the array. - - - - - - Adds an element with the provided key and value to the - . - - The to use as the key of the element to add. - The to use as the value of the element to add. - - - As the collection is empty no new values can be added. A - is thrown if this method is called. - - - This dictionary is always empty and cannot be modified. - - - - Removes all elements from the . - - - - As the collection is empty no values can be removed. A - is thrown if this method is called. - - - This dictionary is always empty and cannot be modified. - - - - Determines whether the contains an element - with the specified key. - - The key to locate in the . - - false - - - - As the collection is empty the method always returns false. - - - - - - Returns an enumerator that can iterate through a collection. - - - An that can be used to - iterate through the collection. - - - - As the collection is empty a is returned. - - - - - - Removes the element with the specified key from the . - - The key of the element to remove. - - - As the collection is empty no values can be removed. A - is thrown if this method is called. - - - This dictionary is always empty and cannot be modified. - - - - Contain the information obtained when parsing formatting modifiers - in conversion modifiers. - - - - Holds the formatting information extracted from the format string by - the . This is used by the - objects when rendering the output. - - - Nicko Cadell - Gert Driesen - - - - Defaut Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - - - Initializes a new instance of the class - with the specified parameters. - - - - - - Gets or sets the minimum value. - - - The minimum value. - - - - Gets or sets the minimum value. - - - - - - Gets or sets the maximum value. - - - The maximum value. - - - - Gets or sets the maximum value. - - - - - - Gets or sets a flag indicating whether left align is enabled - or not. - - - A flag indicating whether left align is enabled or not. - - - - Gets or sets a flag indicating whether left align is enabled or not. - - - - - - Implementation of Properties collection for the - - - This class implements a properties collection that is thread safe and supports both - storing properties and capturing a read only copy of the current propertied. - - - This class is optimized to the scenario where the properties are read frequently - and are modified infrequently. - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - The read only copy of the properties. - - - - This variable is declared volatile to prevent the compiler and JIT from - reordering reads and writes of this thread performed on different threads. - - - - - - Lock object used to synchronize updates within this instance - - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Reading the value for a key is faster than setting the value. - When the value is written a new read only copy of - the properties is created. - - - - - - Remove a property from the global context - - the key for the entry to remove - - - Removing an entry from the global context properties is relatively expensive compared - with reading a value. - - - - - - Clear the global context properties - - - - - Get a readonly immutable copy of the properties - - the current global context properties - - - This implementation is fast because the GlobalContextProperties class - stores a readonly copy of the properties. - - - - - - Manages a mapping from levels to - - - Manages an ordered mapping from instances - to subclasses. - - - Nicko Cadell - - - - Default constructor - - - - Initialise a new instance of . - - - - - - Add a to this mapping - - the entry to add - - - If a has previously been added - for the same then that entry will be - overwritten. - - - - - - Lookup the mapping for the specified level - - the level to lookup - the for the level or null if no mapping found - - - Lookup the value for the specified level. Finds the nearest - mapping value for the level that is equal to or less than the - specified. - - - If no mapping could be found then null is returned. - - - - - - Initialize options - - - - Caches the sorted list of in an array - - - - - - An entry in the - - - This is an abstract base class for types that are stored in the - object. - - - Nicko Cadell - - - - Default protected constructor - - - - Default protected constructor - - - - - - The level that is the key for this mapping - - - The that is the key for this mapping - - - - Get or set the that is the key for this - mapping subclass. - - - - - - Initialize any options defined on this entry - - - - Should be overridden by any classes that need to initialise based on their options - - - - - - Outputs log statements from within the log4net assembly. - - - - Log4net components cannot make log4net logging calls. However, it is - sometimes useful for the user to learn about what log4net is - doing. - - - All log4net internal debug calls go to the standard output stream - whereas internal error messages are sent to the standard error output - stream. - - - Nicko Cadell - Gert Driesen - - - - Static constructor that initializes logging by reading - settings from the application configuration file. - - - - The log4net.Internal.Debug application setting - controls internal debugging. This setting should be set - to true to enable debugging. - - - The log4net.Internal.Quiet application setting - suppresses all internal logging including error messages. - This setting should be set to true to enable message - suppression. - - - - - - Initializes a new instance of the class. - - - - - - - - - - - - - Subscribes to the LogLog.LogReceived event and stores messages - to the supplied IList instance. - - - - - - - - - - - - - - - - - - - Default debug level - - - - - In quietMode not even errors generate any output. - - - - - The event raised when an internal message has been received. - - - - - The Type that generated the internal message. - - - - - The DateTime stamp of when the internal message was received. - - - - - A string indicating the severity of the internal message. - - - "log4net: ", - "log4net:ERROR ", - "log4net:WARN " - - - - - The internal log message. - - - - - The Exception related to the message. - - - Optional. Will be null if no Exception was passed. - - - - - Gets or sets a value indicating whether log4net internal logging - is enabled or disabled. - - - true if log4net internal logging is enabled, otherwise - false. - - - - When set to true, internal debug level logging will be - displayed. - - - This value can be set by setting the application setting - log4net.Internal.Debug in the application configuration - file. - - - The default value is false, i.e. debugging is - disabled. - - - - - The following example enables internal debugging using the - application configuration file : - - - - - - - - - - - - - Gets or sets a value indicating whether log4net should generate no output - from internal logging, not even for errors. - - - true if log4net should generate no output at all from internal - logging, otherwise false. - - - - When set to true will cause internal logging at all levels to be - suppressed. This means that no warning or error reports will be logged. - This option overrides the setting and - disables all debug also. - - This value can be set by setting the application setting - log4net.Internal.Quiet in the application configuration file. - - - The default value is false, i.e. internal logging is not - disabled. - - - - The following example disables internal logging using the - application configuration file : - - - - - - - - - Test if LogLog.Debug is enabled for output. - - - true if Debug is enabled - - - - Test if LogLog.Debug is enabled for output. - - - - - - Test if LogLog.Warn is enabled for output. - - - true if Warn is enabled - - - - Test if LogLog.Warn is enabled for output. - - - - - - Test if LogLog.Error is enabled for output. - - - true if Error is enabled - - - - Test if LogLog.Error is enabled for output. - - - - - - Formats Prefix, Source, and Message in the same format as the value - sent to Console.Out and Trace.Write. - - - - - - - Raises the LogReceived event when an internal messages is received. - - - - - - - - - - - - - Writes log4net internal debug messages to the - standard output stream. - - - - The message to log. - - - All internal debug messages are prepended with - the string "log4net: ". - - - - - - Writes log4net internal debug messages to the - standard output stream. - - The Type that generated this message. - The message to log. - An exception to log. - - - All internal debug messages are prepended with - the string "log4net: ". - - - - - - Writes log4net internal warning messages to the - standard error stream. - - The Type that generated this message. - The message to log. - - - All internal warning messages are prepended with - the string "log4net:WARN ". - - - - - - Writes log4net internal warning messages to the - standard error stream. - - The Type that generated this message. - The message to log. - An exception to log. - - - All internal warning messages are prepended with - the string "log4net:WARN ". - - - - - - Writes log4net internal error messages to the - standard error stream. - - The Type that generated this message. - The message to log. - - - All internal error messages are prepended with - the string "log4net:ERROR ". - - - - - - Writes log4net internal error messages to the - standard error stream. - - The Type that generated this message. - The message to log. - An exception to log. - - - All internal debug messages are prepended with - the string "log4net:ERROR ". - - - - - - Writes output to the standard output stream. - - The message to log. - - - Writes to both Console.Out and System.Diagnostics.Trace. - Note that the System.Diagnostics.Trace is not supported - on the Compact Framework. - - - If the AppDomain is not configured with a config file then - the call to System.Diagnostics.Trace may fail. This is only - an issue if you are programmatically creating your own AppDomains. - - - - - - Writes output to the standard error stream. - - The message to log. - - - Writes to both Console.Error and System.Diagnostics.Trace. - Note that the System.Diagnostics.Trace is not supported - on the Compact Framework. - - - If the AppDomain is not configured with a config file then - the call to System.Diagnostics.Trace may fail. This is only - an issue if you are programmatically creating your own AppDomains. - - - - - - - - - - - - - - - - - - - - Implementation of Properties collection for the - - - Class implements a collection of properties that is specific to each thread. - The class is not synchronized as each thread has its own . - - - This class stores its properties in a slot on the named - log4net.Util.LogicalThreadContextProperties. - - - The requires a link time - for the - . - If the calling code does not have this permission then this context will be disabled. - It will not store any property values set on it. - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Flag used to disable this context if we don't have permission to access the CallContext. - - - - - The fully qualified type of the LogicalThreadContextProperties class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Get or set the property value for the specified. - - - - - - Remove a property - - the key for the entry to remove - - - Remove the value for the specified from the context. - - - - - - Clear all the context properties - - - - Clear all the context properties - - - - - - Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread. - - create the dictionary if it does not exist, otherwise return null if is does not exist - the properties for this thread - - - The collection returned is only to be used on the calling thread. If the - caller needs to share the collection between different threads then the - caller must clone the collection before doings so. - - - - - - Gets the call context get data. - - The peroperties dictionary stored in the call context - - The method has a - security link demand, therfore we must put the method call in a seperate method - that we can wrap in an exception handler. - - - - - Sets the call context data. - - The properties. - - The method has a - security link demand, therfore we must put the method call in a seperate method - that we can wrap in an exception handler. - - - - - An always empty . - - - - A singleton implementation of the over a collection - that is empty and not modifiable. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - The singleton instance of the . - - - - - Gets the singleton instance of the . - - The singleton instance of the . - - - Gets the singleton instance of the . - - - - - - Gets the current object from the enumerator. - - - Throws an because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Gets the current key from the enumerator. - - - Throws an exception because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Gets the current value from the enumerator. - - The current value from the enumerator. - - Throws an because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Gets the current entry from the enumerator. - - - Throws an because the - never has a current entry. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Test if the enumerator can advance, if so advance. - - - false as the cannot advance. - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will always return false. - - - - - - Resets the enumerator back to the start. - - - - As the enumerator is over an empty collection does nothing. - - - - - - An always empty . - - - - A singleton implementation of the over a collection - that is empty and not modifiable. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to enforce the singleton pattern. - - - - - - The singleton instance of the . - - - - - Get the singleton instance of the . - - The singleton instance of the . - - - Gets the singleton instance of the . - - - - - - Gets the current object from the enumerator. - - - Throws an because the - never has a current value. - - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will throw an . - - - The collection is empty and - cannot be positioned over a valid location. - - - - Test if the enumerator can advance, if so advance - - - false as the cannot advance. - - - As the enumerator is over an empty collection its - value cannot be moved over a valid position, therefore - will always return false. - - - - - - Resets the enumerator back to the start. - - - - As the enumerator is over an empty collection does nothing. - - - - - - A SecurityContext used when a SecurityContext is not required - - - - The is a no-op implementation of the - base class. It is used where a - is required but one has not been provided. - - - Nicko Cadell - - - - Private constructor - - - - Private constructor for singleton pattern. - - - - - - Singleton instance of - - - Singleton instance of - - - - - Impersonate this SecurityContext - - State supplied by the caller - - null - - - - No impersonation is done and null is always returned. - - - - - - Implements log4net's default error handling policy which consists - of emitting a message for the first error in an appender and - ignoring all subsequent errors. - - - - The error message is processed using the LogLog sub-system. - - - This policy aims at protecting an otherwise working application - from being flooded with error messages when logging fails. - - - Nicko Cadell - Gert Driesen - Ron Grabowski - - - - Default Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - The prefix to use for each message. - - - Initializes a new instance of the class - with the specified prefix. - - - - - - The date the error was recorded. - - - - - Flag to indicate if it is the first error - - - - - The message recorded during the first error. - - - - - The exception recorded during the first error. - - - - - The error code recorded during the first error. - - - - - String to prefix each message with - - - - - The fully qualified type of the OnlyOnceErrorHandler class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Is error logging enabled - - - - Is error logging enabled. Logging is only enabled for the - first error delivered to the . - - - - - - The date the first error that trigged this error handler occured. - - - - - The message from the first error that trigged this error handler. - - - - - The exception from the first error that trigged this error handler. - - - May be . - - - - - The error code from the first error that trigged this error handler. - - - Defaults to - - - - Reset the error handler back to its initial disabled state. - - - - - Log an Error - - The error message. - The exception. - The internal error code. - - - Sends the error information to 's Error method. - - - - - - Log an Error - - The error message. - The exception. - - - Prints the message and the stack trace of the exception on the standard - error output stream. - - - - - - Log an error - - The error message. - - - Print a the error message passed as parameter on the standard - error output stream. - - - - - - A convenience class to convert property values to specific types. - - - - Utility functions for converting types and parsing values. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - The fully qualified type of the OptionConverter class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Converts a string to a value. - - String to convert. - The default value. - The value of . - - - If is "true", then true is returned. - If is "false", then false is returned. - Otherwise, is returned. - - - - - - Parses a file size into a number. - - String to parse. - The default value. - The value of . - - - Parses a file size of the form: number[KB|MB|GB] into a - long value. It is scaled with the appropriate multiplier. - - - is returned when - cannot be converted to a value. - - - - - - Converts a string to an object. - - The target type to convert to. - The string to convert to an object. - - The object converted from a string or null when the - conversion failed. - - - - Converts a string to an object. Uses the converter registry to try - to convert the string value into the specified target type. - - - - - - Checks if there is an appropriate type conversion from the source type to the target type. - - The type to convert from. - The type to convert to. - - true if there is a conversion from the source type to the target type. - - Checks if there is an appropriate type conversion from the source type to the target type. - - - - - Converts an object to the target type. - - The object to convert to the target type. - The type to convert to. - The converted object. - - - Converts an object to the target type. - - - - - - Instantiates an object given a class name. - - The fully qualified class name of the object to instantiate. - The class to which the new object should belong. - The object to return in case of non-fulfillment. - - An instance of the or - if the object could not be instantiated. - - - - Checks that the is a subclass of - . If that test fails or the object could - not be instantiated, then is returned. - - - - - - Performs variable substitution in string from the - values of keys found in . - - The string on which variable substitution is performed. - The dictionary to use to lookup variables. - The result of the substitutions. - - - The variable substitution delimiters are ${ and }. - - - For example, if props contains key=value, then the call - - - - string s = OptionConverter.SubstituteVariables("Value of key is ${key}."); - - - - will set the variable s to "Value of key is value.". - - - If no value could be found for the specified key, then substitution - defaults to an empty string. - - - For example, if system properties contains no value for the key - "nonExistentKey", then the call - - - - string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]"); - - - - will set s to "Value of nonExistentKey is []". - - - An Exception is thrown if contains a start - delimiter "${" which is not balanced by a stop delimiter "}". - - - - - - Converts the string representation of the name or numeric value of one or - more enumerated constants to an equivalent enumerated object. - - The type to convert to. - The enum string value. - If true, ignore case; otherwise, regard case. - An object of type whose value is represented by . - - - - Abstract class that provides the formatting functionality that - derived classes need. - - - - Conversion specifiers in a conversion patterns are parsed to - individual PatternConverters. Each of which is responsible for - converting a logging event in a converter specific manner. - - - Nicko Cadell - Gert Driesen - - - - Protected constructor - - - - Initializes a new instance of the class. - - - - - - Initial buffer size - - - - - Maximum buffer size before it is recycled - - - - - The option string to the converter - - - - - Get the next pattern converter in the chain - - - the next pattern converter in the chain - - - - Get the next pattern converter in the chain - - - - - - Gets or sets the formatting info for this converter - - - The formatting info for this converter - - - - Gets or sets the formatting info for this converter - - - - - - Gets or sets the option value for this converter - - - The option for this converter - - - - Gets or sets the option value for this converter - - - - - - - - - - Evaluate this pattern converter and write the output to a writer. - - - that will receive the formatted result. - The state object on which the pattern converter should be executed. - - - Derived pattern converters must override this method in order to - convert conversion specifiers in the appropriate way. - - - - - - Set the next pattern converter in the chains - - the pattern converter that should follow this converter in the chain - the next converter - - - The PatternConverter can merge with its neighbor during this method (or a sub class). - Therefore the return value may or may not be the value of the argument passed in. - - - - - - Write the pattern converter to the writer with appropriate formatting - - - that will receive the formatted result. - The state object on which the pattern converter should be executed. - - - This method calls to allow the subclass to perform - appropriate conversion of the pattern converter. If formatting options have - been specified via the then this method will - apply those formattings before writing the output. - - - - - - Fast space padding method. - - - to which the spaces will be appended. - The number of spaces to be padded. - - - Fast space padding method. - - - - - - Write an dictionary to a - the writer to write to - a to use for object conversion - the value to write to the writer - - - Writes the to a writer in the form: - - - {key1=value1, key2=value2, key3=value3} - - - If the specified - is not null then it is used to render the key and value to text, otherwise - the object's ToString method is called. - - - - - - Write an dictionary to a - the writer to write to - a to use for object conversion - the value to write to the writer - - - Writes the to a writer in the form: - - - {key1=value1, key2=value2, key3=value3} - - - If the specified - is not null then it is used to render the key and value to text, otherwise - the object's ToString method is called. - - - - - - Write an object to a - the writer to write to - a to use for object conversion - the value to write to the writer - - - Writes the Object to a writer. If the specified - is not null then it is used to render the object to text, otherwise - the object's ToString method is called. - - - - - - Most of the work of the class - is delegated to the PatternParser class. - - - - The PatternParser processes a pattern string and - returns a chain of objects. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - The pattern to parse. - - - Initializes a new instance of the class - with the specified pattern string. - - - - - - Sort strings by length - - - - that orders strings by string length. - The longest strings are placed first - - - - - - The first pattern converter in the chain - - - - - the last pattern converter in the chain - - - - - The pattern - - - - - Internal map of converter identifiers to converter types - - - - This map overrides the static s_globalRulesRegistry map. - - - - - - The fully qualified type of the PatternParser class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Get the converter registry used by this parser - - - The converter registry used by this parser - - - - Get the converter registry used by this parser - - - - - - Parses the pattern into a chain of pattern converters. - - The head of a chain of pattern converters. - - - Parses the pattern into a chain of pattern converters. - - - - - - Build the unified cache of converters from the static and instance maps - - the list of all the converter names - - - Build the unified cache of converters from the static and instance maps - - - - - - Internal method to parse the specified pattern to find specified matches - - the pattern to parse - the converter names to match in the pattern - - - The matches param must be sorted such that longer strings come before shorter ones. - - - - - - Process a parsed literal - - the literal text - - - - Process a parsed converter pattern - - the name of the converter - the optional option for the converter - the formatting info for the converter - - - - Resets the internal state of the parser and adds the specified pattern converter - to the chain. - - The pattern converter to add. - - - - This class implements a patterned string. - - - - This string has embedded patterns that are resolved and expanded - when the string is formatted. - - - This class functions similarly to the - in that it accepts a pattern and renders it to a string. Unlike the - however the PatternString - does not render the properties of a specific but - of the process in general. - - - The recognized conversion pattern names are: - - - - Conversion Pattern Name - Effect - - - appdomain - - - Used to output the friendly name of the current AppDomain. - - - - - date - - - Used to output the current date and time in the local time zone. - To output the date in universal time use the %utcdate pattern. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %date{HH:mm:ss,fff} or - %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %date{ISO8601} or %date{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - env - - - Used to output the a specific environment variable. The key to - lookup must be specified within braces and directly following the - pattern specifier, e.g. %env{COMPUTERNAME} would include the value - of the COMPUTERNAME environment variable. - - - The env pattern is not supported on the .NET Compact Framework. - - - - - identity - - - Used to output the user name for the currently active user - (Principal.Identity.Name). - - - - - newline - - - Outputs the platform dependent line separator character or - characters. - - - This conversion pattern name offers the same performance as using - non-portable line separator strings such as "\n", or "\r\n". - Thus, it is the preferred way of specifying a line separator. - - - - - processid - - - Used to output the system process ID for the current process. - - - - - property - - - Used to output a specific context property. The key to - lookup must be specified within braces and directly following the - pattern specifier, e.g. %property{user} would include the value - from the property that is keyed by the string 'user'. Each property value - that is to be included in the log must be specified separately. - Properties are stored in logging contexts. By default - the log4net:HostName property is set to the name of machine on - which the event was originally logged. - - - If no key is specified, e.g. %property then all the keys and their - values are printed in a comma separated list. - - - The properties of an event are combined from a number of different - contexts. These are listed below in the order in which they are searched. - - - - the thread properties - - The that are set on the current - thread. These properties are shared by all events logged on this thread. - - - - the global properties - - The that are set globally. These - properties are shared by all the threads in the AppDomain. - - - - - - - random - - - Used to output a random string of characters. The string is made up of - uppercase letters and numbers. By default the string is 4 characters long. - The length of the string can be specified within braces directly following the - pattern specifier, e.g. %random{8} would output an 8 character string. - - - - - username - - - Used to output the WindowsIdentity for the currently - active user. - - - - - utcdate - - - Used to output the date of the logging event in universal time. - The date conversion - specifier may be followed by a date format specifier enclosed - between braces. For example, %utcdate{HH:mm:ss,fff} or - %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is - given then ISO8601 format is - assumed (). - - - The date format specifier admits the same syntax as the - time pattern string of the . - - - For better results it is recommended to use the log4net date - formatters. These can be specified using one of the strings - "ABSOLUTE", "DATE" and "ISO8601" for specifying - , - and respectively - . For example, - %utcdate{ISO8601} or %utcdate{ABSOLUTE}. - - - These dedicated date formatters perform significantly - better than . - - - - - % - - - The sequence %% outputs a single percent sign. - - - - - - Additional pattern converters may be registered with a specific - instance using or - . - - - See the for details on the - format modifiers supported by the patterns. - - - Nicko Cadell - - - - Initialize the global registry - - - - - Default constructor - - - - Initialize a new instance of - - - - - Constructs a PatternString - - The pattern to use with this PatternString - - - Initialize a new instance of with the pattern specified. - - - - - - Internal map of converter identifiers to converter types. - - - - - the pattern - - - - - the head of the pattern converter chain - - - - - patterns defined on this PatternString only - - - - - Gets or sets the pattern formatting string - - - The pattern formatting string - - - - The ConversionPattern option. This is the string which - controls formatting and consists of a mix of literal content and - conversion specifiers. - - - - - - Initialize object options - - - - This is part of the delayed object - activation scheme. The method must - be called on this object after the configuration properties have - been set. Until is called this - object is in an undefined state and must not be used. - - - If any of the configuration properties are modified then - must be called again. - - - - - - Create the used to parse the pattern - - the pattern to parse - The - - - Returns PatternParser used to parse the conversion string. Subclasses - may override this to return a subclass of PatternParser which recognize - custom conversion pattern name. - - - - - - Produces a formatted string as specified by the conversion pattern. - - The TextWriter to write the formatted event to - - - Format the pattern to the . - - - - - - Format the pattern as a string - - the pattern formatted as a string - - - Format the pattern to a string. - - - - - - Add a converter to this PatternString - - the converter info - - - This version of the method is used by the configurator. - Programmatic users should use the alternative method. - - - - - - Add a converter to this PatternString - - the name of the conversion pattern for this converter - the type of the converter - - - Add a converter to this PatternString - - - - - - String keyed object map. - - - - While this collection is serializable only member - objects that are serializable will - be serialized along with this collection. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Constructor - - properties to copy - - - Initializes a new instance of the class. - - - - - - Initializes a new instance of the class - with serialized data. - - The that holds the serialized object data. - The that contains contextual information about the source or destination. - - - Because this class is sealed the serialization constructor is private. - - - - - - See - - The value for the key specified. - - - - Get or set a value for the specified . - - - Thrown if the is not a string - - - - Gets or sets the value of the property with the specified key. - - - The value of the property with the specified key. - - The key of the property to get or set. - - - The property value will only be serialized if it is serializable. - If it cannot be serialized it will be silently ignored if - a serialization operation is performed. - - - - - - See - - - - See - - - - See - - - - See - - - - See - - - - See - - false - - - - This collection is modifiable. This property always - returns false. - - - - - - See - - - - See - - - - - - - - See - the key - the value to store for the key - - - Store a value for the specified . - - - Thrown if the is not a string - - - - See - the key to lookup in the collection - - true if the collection contains the specified key - - - Test if this collection contains a specified key. - - - - - - See - the key to remove - - - Remove the entry with the specified key from this dictionary - - - - - - See - an enumerator - - - Returns a over the contest of this collection. - - - - - - Remove the entry with the specified key from this dictionary - - the key for the entry to remove - - - Remove the entry with the specified key from this dictionary - - - - - - Remove all properties from the properties collection - - - - Remove all properties from the properties collection - - - - - - A class to hold the key and data for a property set in the config file - - - - A class to hold the key and data for a property set in the config file - - - - - - Property Key - - - Property Key - - - - Property Key. - - - - - - Property Value - - - Property Value - - - - Property Value. - - - - - - Override Object.ToString to return sensible debug info - - string info about this object - - - - A that ignores the message - - - - This writer is used in special cases where it is necessary - to protect a writer from being closed by a client. - - - Nicko Cadell - - - - Constructor - - the writer to actually write to - - - Create a new ProtectCloseTextWriter using a writer - - - - - - Attach this instance to a different underlying - the writer to attach to - - - Attach this instance to a different underlying - - - - - Does not close the underlying output writer. - - - - Does not close the underlying output writer. - This method does nothing. - - - - - - that does not leak exceptions - - - - does not throw exceptions when things go wrong. - Instead, it delegates error handling to its . - - - Nicko Cadell - Gert Driesen - - - - Constructor - - the writer to actually write to - the error handler to report error to - - - Create a new QuietTextWriter using a writer and error handler - - - - - - The error handler instance to pass all errors to - - - - - Flag to indicate if this writer is closed - - - - - Gets or sets the error handler that all errors are passed to. - - - The error handler that all errors are passed to. - - - - Gets or sets the error handler that all errors are passed to. - - - - - - Gets a value indicating whether this writer is closed. - - - true if this writer is closed, otherwise false. - - - - Gets a value indicating whether this writer is closed. - - - - - - Writes a character to the underlying writer - - the char to write - - - Writes a character to the underlying writer - - - - - - Writes a buffer to the underlying writer - - the buffer to write - the start index to write from - the number of characters to write - - - Writes a buffer to the underlying writer - - - - - - Writes a string to the output. - - The string data to write to the output. - - - Writes a string to the output. - - - - - - Closes the underlying output writer. - - - - Closes the underlying output writer. - - - - - - String keyed object map that is read only. - - - - This collection is readonly and cannot be modified. - - - While this collection is serializable only member - objects that are serializable will - be serialized along with this collection. - - - Nicko Cadell - Gert Driesen - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Copy Constructor - - properties to copy - - - Initializes a new instance of the class. - - - - - - Deserialization constructor - - The that holds the serialized object data. - The that contains contextual information about the source or destination. - - - Initializes a new instance of the class - with serialized data. - - - - - - The Hashtable used to store the properties data - - - - - See - - - - Gets or sets the value of the property with the specified key. - - - The value of the property with the specified key. - - The key of the property to get or set. - - - The property value will only be serialized if it is serializable. - If it cannot be serialized it will be silently ignored if - a serialization operation is performed. - - - - - - See - - - - See - - - - See - - - - See - - - - See - - - - See - - - - The hashtable used to store the properties - - - The internal collection used to store the properties - - - - The hashtable used to store the properties - - - - - - The number of properties in this collection - - - - - See - - - - See - - - - - - - - See - - - - - - - - See - - - - - - - - See - - - - - - See - - - - Gets the key names. - - An array of all the keys. - - - Gets the key names. - - - - - - Test if the dictionary contains a specified key - - the key to look for - true if the dictionary contains the specified key - - - Test if the dictionary contains a specified key - - - - - - Serializes this object into the provided. - - The to populate with data. - The destination for this serialization. - - - Serializes this object into the provided. - - - - - - Remove all properties from the properties collection - - - - - Defines a lock that supports single writers and multiple readers - - - - ReaderWriterLock is used to synchronize access to a resource. - At any given time, it allows either concurrent read access for - multiple threads, or write access for a single thread. In a - situation where a resource is changed infrequently, a - ReaderWriterLock provides better throughput than a simple - one-at-a-time lock, such as . - - - If a platform does not support a System.Threading.ReaderWriterLock - implementation then all readers and writers are serialized. Therefore - the caller must not rely on multiple simultaneous readers. - - - Nicko Cadell - - - - Constructor - - - - Initializes a new instance of the class. - - - - - - Acquires a reader lock - - - - blocks if a different thread has the writer - lock, or if at least one thread is waiting for the writer lock. - - - - - - Decrements the lock count - - - - decrements the lock count. When the count - reaches zero, the lock is released. - - - - - - Acquires the writer lock - - - - This method blocks if another thread has a reader lock or writer lock. - - - - - - Decrements the lock count on the writer lock - - - - ReleaseWriterLock decrements the writer lock count. - When the count reaches zero, the writer lock is released. - - - - - - A that can be and reused - - - - A that can be and reused. - This uses a single buffer for string operations. - - - Nicko Cadell - - - - Create an instance of - the format provider to use - - - Create an instance of - - - - - Override Dispose to prevent closing of writer - - flag - - - Override Dispose to prevent closing of writer - - - - - - Reset this string writer so that it can be reused. - - the maximum buffer capacity before it is trimmed - the default size to make the buffer - - - Reset this string writer so that it can be reused. - The internal buffers are cleared and reset. - - - - - - Utility class for system specific information. - - - - Utility class of static methods for system specific information. - - - Nicko Cadell - Gert Driesen - Alexey Solofnenko - - - - Initialize default values for private static fields. - - - - Only static methods are exposed from this type. - - - - - - Private constructor to prevent instances. - - - - Only static methods are exposed from this type. - - - - - - Gets an empty array of types. - - - - The Type.EmptyTypes field is not available on - the .NET Compact Framework 1.0. - - - - - - The fully qualified type of the SystemInfo class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Cache the host name for the current machine - - - - - Cache the application friendly name - - - - - Text to output when a null is encountered. - - - - - Text to output when an unsupported feature is requested. - - - - - Start time for the current process. - - - - - Gets the system dependent line terminator. - - - The system dependent line terminator. - - - - Gets the system dependent line terminator. - - - - - - Gets the base directory for this . - - The base directory path for the current . - - - Gets the base directory for this . - - - The value returned may be either a local file path or a URI. - - - - - - Gets the path to the configuration file for the current . - - The path to the configuration file for the current . - - - The .NET Compact Framework 1.0 does not have a concept of a configuration - file. For this runtime, we use the entry assembly location as the root for - the configuration file name. - - - The value returned may be either a local file path or a URI. - - - - - - Gets the path to the file that first executed in the current . - - The path to the entry assembly. - - - Gets the path to the file that first executed in the current . - - - - - - Gets the ID of the current thread. - - The ID of the current thread. - - - On the .NET framework, the AppDomain.GetCurrentThreadId method - is used to obtain the thread ID for the current thread. This is the - operating system ID for the thread. - - - On the .NET Compact Framework 1.0 it is not possible to get the - operating system thread ID for the current thread. The native method - GetCurrentThreadId is implemented inline in a header file - and cannot be called. - - - On the .NET Framework 2.0 the Thread.ManagedThreadId is used as this - gives a stable id unrelated to the operating system thread ID which may - change if the runtime is using fibers. - - - - - - Get the host name or machine name for the current machine - - - The hostname or machine name - - - - Get the host name or machine name for the current machine - - - The host name () or - the machine name (Environment.MachineName) for - the current machine, or if neither of these are available - then NOT AVAILABLE is returned. - - - - - - Get this application's friendly name - - - The friendly name of this application as a string - - - - If available the name of the application is retrieved from - the AppDomain using AppDomain.CurrentDomain.FriendlyName. - - - Otherwise the file name of the entry assembly is used. - - - - - - Get the start time for the current process. - - - - This is the time at which the log4net library was loaded into the - AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime - this is not the start time for the current process. - - - The log4net library should be loaded by an application early during its - startup, therefore this start time should be a good approximation for - the actual start time. - - - Note that AppDomains may be loaded and unloaded within the - same process without the process terminating, however this start time - will be set per AppDomain. - - - - - - Text to output when a null is encountered. - - - - Use this value to indicate a null has been encountered while - outputting a string representation of an item. - - - The default value is (null). This value can be overridden by specifying - a value for the log4net.NullText appSetting in the application's - .config file. - - - - - - Text to output when an unsupported feature is requested. - - - - Use this value when an unsupported feature is requested. - - - The default value is NOT AVAILABLE. This value can be overridden by specifying - a value for the log4net.NotAvailableText appSetting in the application's - .config file. - - - - - - Gets the assembly location path for the specified assembly. - - The assembly to get the location for. - The location of the assembly. - - - This method does not guarantee to return the correct path - to the assembly. If only tries to give an indication as to - where the assembly was loaded from. - - - - - - Gets the fully qualified name of the , including - the name of the assembly from which the was - loaded. - - The to get the fully qualified name for. - The fully qualified name for the . - - - This is equivalent to the Type.AssemblyQualifiedName property, - but this method works on the .NET Compact Framework 1.0 as well as - the full .NET runtime. - - - - - - Gets the short name of the . - - The to get the name for. - The short name of the . - - - The short name of the assembly is the - without the version, culture, or public key. i.e. it is just the - assembly's file name without the extension. - - - Use this rather than Assembly.GetName().Name because that - is not available on the Compact Framework. - - - Because of a FileIOPermission security demand we cannot do - the obvious Assembly.GetName().Name. We are allowed to get - the of the assembly so we - start from there and strip out just the assembly name. - - - - - - Gets the file name portion of the , including the extension. - - The to get the file name for. - The file name of the assembly. - - - Gets the file name portion of the , including the extension. - - - - - - Loads the type specified in the type string. - - A sibling type to use to load the type. - The name of the type to load. - Flag set to true to throw an exception if the type cannot be loaded. - - true to ignore the case of the type name; otherwise, false - The type loaded or null if it could not be loaded. - - - If the type name is fully qualified, i.e. if contains an assembly name in - the type name, the type will be loaded from the system using - . - - - If the type name is not fully qualified, it will be loaded from the assembly - containing the specified relative type. If the type is not found in the assembly - then all the loaded assemblies will be searched for the type. - - - - - - Loads the type specified in the type string. - - The name of the type to load. - Flag set to true to throw an exception if the type cannot be loaded. - - true to ignore the case of the type name; otherwise, false - The type loaded or null if it could not be loaded. - - - If the type name is fully qualified, i.e. if contains an assembly name in - the type name, the type will be loaded from the system using - . - - - If the type name is not fully qualified it will be loaded from the - assembly that is directly calling this method. If the type is not found - in the assembly then all the loaded assemblies will be searched for the type. - - - - - - Loads the type specified in the type string. - - An assembly to load the type from. - The name of the type to load. - Flag set to true to throw an exception if the type cannot be loaded. - - true to ignore the case of the type name; otherwise, false - The type loaded or null if it could not be loaded. - - - If the type name is fully qualified, i.e. if contains an assembly name in - the type name, the type will be loaded from the system using - . - - - If the type name is not fully qualified it will be loaded from the specified - assembly. If the type is not found in the assembly then all the loaded assemblies - will be searched for the type. - - - - - - Generate a new guid - - A new Guid - - - Generate a new guid - - - - - - Create an - The name of the parameter that caused the exception - The value of the argument that causes this exception - The message that describes the error - the ArgumentOutOfRangeException object - - - Create a new instance of the class - with a specified error message, the parameter name, and the value - of the argument. - - - The Compact Framework does not support the 3 parameter constructor for the - type. This method provides an - implementation that works for all platforms. - - - - - - Parse a string into an value - - the string to parse - out param where the parsed value is placed - - true if the string was able to be parsed into an integer - - - Attempts to parse the string into an integer. If the string cannot - be parsed then this method returns false. The method does not throw an exception. - - - - - - Parse a string into an value - - the string to parse - out param where the parsed value is placed - - true if the string was able to be parsed into an integer - - - Attempts to parse the string into an integer. If the string cannot - be parsed then this method returns false. The method does not throw an exception. - - - - - - Parse a string into an value - - the string to parse - out param where the parsed value is placed - - true if the string was able to be parsed into an integer - - - Attempts to parse the string into an integer. If the string cannot - be parsed then this method returns false. The method does not throw an exception. - - - - - - Lookup an application setting - - the application settings key to lookup - the value for the key, or null - - - Configuration APIs are not supported under the Compact Framework - - - - - - Convert a path into a fully qualified local file path. - - The path to convert. - The fully qualified path. - - - Converts the path specified to a fully - qualified path. If the path is relative it is - taken as relative from the application base - directory. - - - The path specified must be a local file path, a URI is not supported. - - - - - - Creates a new case-insensitive instance of the class with the default initial capacity. - - A new case-insensitive instance of the class with the default initial capacity - - - The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer. - - - - - - Utility class that represents a format string. - - - - Utility class that represents a format string. - - - Nicko Cadell - - - - Initialise the - An that supplies culture-specific formatting information. - A containing zero or more format items. - An array containing zero or more objects to format. - - - - The fully qualified type of the SystemStringFormat class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Format the string and arguments - - the formatted string - - - - Replaces the format item in a specified with the text equivalent - of the value of a corresponding instance in a specified array. - A specified parameter supplies culture-specific formatting information. - - An that supplies culture-specific formatting information. - A containing zero or more format items. - An array containing zero or more objects to format. - - A copy of format in which the format items have been replaced by the - equivalent of the corresponding instances of in args. - - - - This method does not throw exceptions. If an exception thrown while formatting the result the - exception and arguments are returned in the result string. - - - - - - Process an error during StringFormat - - - - - Dump the contents of an array into a string builder - - - - - Dump an object to a string - - - - - Adapter that extends and forwards all - messages to an instance of . - - - - Adapter that extends and forwards all - messages to an instance of . - - - Nicko Cadell - - - - Create an instance of that forwards all - messages to a . - - The to forward to - - - Create an instance of that forwards all - messages to a . - - - - - - The writer to forward messages to - - - - - Gets or sets the underlying . - - - The underlying . - - - - Gets or sets the underlying . - - - - - - The Encoding in which the output is written - - - The - - - The Encoding in which the output is written - - - - - - Gets an object that controls formatting - - - The format provider - - - - Gets an object that controls formatting - - - - - - Gets or sets the line terminator string used by the TextWriter - - - The line terminator to use - - - - Gets or sets the line terminator string used by the TextWriter - - - - - - Closes the writer and releases any system resources associated with the writer - - - - - - - - - Dispose this writer - - flag indicating if we are being disposed - - - Dispose this writer - - - - - - Flushes any buffered output - - - - Clears all buffers for the writer and causes any buffered data to be written - to the underlying device - - - - - - Writes a character to the wrapped TextWriter - - the value to write to the TextWriter - - - Writes a character to the wrapped TextWriter - - - - - - Writes a character buffer to the wrapped TextWriter - - the data buffer - the start index - the number of characters to write - - - Writes a character buffer to the wrapped TextWriter - - - - - - Writes a string to the wrapped TextWriter - - the value to write to the TextWriter - - - Writes a string to the wrapped TextWriter - - - - - - Implementation of Properties collection for the - - - Class implements a collection of properties that is specific to each thread. - The class is not synchronized as each thread has its own . - - - Nicko Cadell - - - - Internal constructor - - - - Initializes a new instance of the class. - - - - - - The thread local data slot to use to store a PropertiesDictionary. - - - - - Gets or sets the value of a property - - - The value for the property with the specified key - - - - Gets or sets the value of a property - - - - - - Remove a property - - the key for the entry to remove - - - Remove a property - - - - - - Clear all properties - - - - Clear all properties - - - - - - Get the PropertiesDictionary for this thread. - - create the dictionary if it does not exist, otherwise return null if is does not exist - the properties for this thread - - - The collection returned is only to be used on the calling thread. If the - caller needs to share the collection between different threads then the - caller must clone the collection before doing so. - - - - - - Implementation of Stack for the - - - Implementation of Stack for the - - Nicko Cadell - - - - Internal constructor - - - - Initializes a new instance of the class. - - - - - - Inner class used to represent a single context frame in the stack. - - - - Inner class used to represent a single context frame in the stack. - - - - - - Constructor - - The message for this context. - The parent context in the chain. - - - Initializes a new instance of the class - with the specified message and parent context. - - - - - - Get the message. - - The message. - - - Get the message. - - - - - - Gets the full text of the context down to the root level. - - - The full text of the context down to the root level. - - - - Gets the full text of the context down to the root level. - - - - - - Struct returned from the method. - - - - This struct implements the and is designed to be used - with the pattern to remove the stack frame at the end of the scope. - - - - - - Constructor - - The internal stack used by the ThreadContextStack. - The depth to return the stack to when this object is disposed. - - - Initializes a new instance of the class with - the specified stack and return depth. - - - - - - The ThreadContextStack internal stack - - - - - The depth to trim the stack to when this instance is disposed - - - - - Returns the stack to the correct depth. - - - - Returns the stack to the correct depth. - - - - - - The stack store. - - - - - The number of messages in the stack - - - The current number of messages in the stack - - - - The current number of messages in the stack. That is - the number of times has been called - minus the number of times has been called. - - - - - - Gets and sets the internal stack used by this - The internal storage stack - - - This property is provided only to support backward compatability - of the . Tytpically the internal stack should not - be modified. - - - - - - Get a portable version of this object - - the portable instance of this object - - - Get a cross thread portable version of this object - - - - - - Clears all the contextual information held in this stack. - - - - Clears all the contextual information held in this stack. - Only call this if you think that this tread is being reused after - a previous call execution which may not have completed correctly. - You do not need to use this method if you always guarantee to call - the method of the - returned from even in exceptional circumstances, - for example by using the using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) - syntax. - - - - - - Removes the top context from this stack. - - The message in the context that was removed from the top of this stack. - - - Remove the top context from this stack, and return - it to the caller. If this stack is empty then an - empty string (not ) is returned. - - - - - - Pushes a new context message into this stack. - - The new context message. - - An that can be used to clean up the context stack. - - - - Pushes a new context onto this stack. An - is returned that can be used to clean up this stack. This - can be easily combined with the using keyword to scope the - context. - - - Simple example of using the Push method with the using keyword. - - using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) - { - log.Warn("This should have an ThreadContext Stack message"); - } - - - - - Gets the current context information for this stack. - - The current context information. - - - - Gets the current context information for this stack. - - Gets the current context information - - - Gets the current context information for this stack. - - - - - - Implementation of Stacks collection for the - - - Implementation of Stacks collection for the - - Nicko Cadell - - - - Internal constructor - - - - Initializes a new instance of the class. - - - - - - The fully qualified type of the ThreadContextStacks class. - - - Used by the internal logger to record the Type of the - log message. - - - - - Gets the named thread context stack - - - The named stack - - - - Gets the named thread context stack - - - - - - Utility class for transforming strings. - - - - Utility class for transforming strings. - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - Characters illegal in XML 1.0 - - - - - Write a string to an - the writer to write to - the string to write - The string to replace non XML compliant chars with - - - The test is escaped either using XML escape entities - or using CDATA sections. - - - - - - Replace invalid XML characters in text string - - the XML text input string - the string to use in place of invalid characters - A string that does not contain invalid XML characters. - - - Certain Unicode code points are not allowed in the XML InfoSet, for - details see: http://www.w3.org/TR/REC-xml/#charsets. - - - This method replaces any illegal characters in the input string - with the mask string specified. - - - - - - Count the number of times that the substring occurs in the text - - the text to search - the substring to find - the number of times the substring occurs in the text - - - The substring is assumed to be non repeating within itself. - - - - - - The log4net Global Context. - - - - The GlobalContext provides a location for global debugging - information to be stored. - - - The global context has a properties map and these properties can - be included in the output of log messages. The - supports selecting and outputing these properties. - - - By default the log4net:HostName property is set to the name of - the current machine. - - - - - GlobalContext.Properties["hostname"] = Environment.MachineName; - - - - Nicko Cadell - - - - Private Constructor. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - The global context properties instance - - - - - The global properties map. - - - The global properties map. - - - - The global properties map. - - - - - - The ILog interface is use by application to log messages into - the log4net framework. - - - - Use the to obtain logger instances - that implement this interface. The - static method is used to get logger instances. - - - This class contains methods for logging at different levels and also - has properties for determining if those logging levels are - enabled in the current configuration. - - - This interface can be implemented in different ways. This documentation - specifies reasonable behavior that a caller can expect from the actual - implementation, however different implementations reserve the right to - do things differently. - - - Simple example of logging messages - - ILog log = LogManager.GetLogger("application-log"); - log.Info("Application Start"); - log.Debug("This is a debug message"); - if (log.IsDebugEnabled) - { - log.Debug("This is another debug message"); - } - - - - Nicko Cadell - Gert Driesen - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - - This function is intended to lessen the computational cost of - disabled log debug statements. - - For some ILog interface log, when you write: - - log.Debug("This is entry number: " + i ); - - - You incur the cost constructing the message, string construction and concatenation in - this case, regardless of whether the message is logged or not. - - - If you are worried about speed (who isn't), then you should write: - - - if (log.IsDebugEnabled) - { - log.Debug("This is entry number: " + i ); - } - - - This way you will not incur the cost of parameter - construction if debugging is disabled for log. On - the other hand, if the log is debug enabled, you - will incur the cost of evaluating whether the logger is debug - enabled twice. Once in and once in - the . This is an insignificant overhead - since evaluating a logger takes about 1% of the time it - takes to actually log. This is the preferred style of logging. - - Alternatively if your logger is available statically then the is debug - enabled state can be stored in a static variable like this: - - - private static readonly bool isDebugEnabled = log.IsDebugEnabled; - - - Then when you come to log you can write: - - - if (isDebugEnabled) - { - log.Debug("This is entry number: " + i ); - } - - - This way the debug enabled state is only queried once - when the class is loaded. Using a private static readonly - variable is the most efficient because it is a run time constant - and can be heavily optimized by the JIT compiler. - - - Of course if you use a static readonly variable to - hold the enabled state of the logger then you cannot - change the enabled state at runtime to vary the logging - that is produced. You have to decide if you need absolute - speed or runtime flexibility. - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - - Checks if this logger is enabled for the level. - - - true if this logger is enabled for events, false otherwise. - - - For more information see . - - - - - - - Log a message object with the level. - - Log a message object with the level. - - The message object to log. - - - This method first checks if this logger is DEBUG - enabled by comparing the level of this logger with the - level. If this logger is - DEBUG enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of - the additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Logs a message object with the level. - - - - This method first checks if this logger is INFO - enabled by comparing the level of this logger with the - level. If this logger is - INFO enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - The message object to log. - - - - - - Logs a message object with the INFO level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Log a message object with the level. - - - - This method first checks if this logger is WARN - enabled by comparing the level of this logger with the - level. If this logger is - WARN enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - The message object to log. - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Logs a message object with the level. - - The message object to log. - - - This method first checks if this logger is ERROR - enabled by comparing the level of this logger with the - level. If this logger is - ERROR enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - Log a message object with the level. - - Log a message object with the level. - - - - This method first checks if this logger is FATAL - enabled by comparing the level of this logger with the - level. If this logger is - FATAL enabled, then it converts the message object - (passed as parameter) to a string by invoking the appropriate - . It then - proceeds to call all the registered appenders in this logger - and also higher in the hierarchy depending on the value of the - additivity flag. - - - WARNING Note that passing an - to this method will print the name of the - but no stack trace. To print a stack trace use the - form instead. - - - The message object to log. - - - - - - Log a message object with the level including - the stack trace of the passed - as a parameter. - - The message object to log. - The exception to log, including its stack trace. - - - See the form for more detailed information. - - - - - - - Log a formatted message string with the level. - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - A String containing zero or more format items - An Object to format - An Object to format - An Object to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Logs a formatted message string with the level. - - An that supplies culture-specific formatting information - A String containing zero or more format items - An Object array containing zero or more objects to format - - - The message is formatted using the String.Format method. See - for details of the syntax of the format string and the behavior - of the formatting. - - - This method does not take an object to include in the - log event. To pass an use one of the - methods instead. - - - - - - - - Provides information about the environment the assembly has - been built for. - - - - Version of the assembly - - - Version of the framework targeted - - - Type of framework targeted - - - Does it target a client profile? - - - - Identifies the version and target for this assembly. - - - - - This class is used by client applications to request logger instances. - - - - This class has static methods that are used by a client to request - a logger instance. The method is - used to retrieve a logger. - - - See the interface for more details. - - - Simple example of logging messages - - ILog log = LogManager.GetLogger("application-log"); - log.Info("Application Start"); - log.Debug("This is a debug message"); - if (log.IsDebugEnabled) - { - log.Debug("This is another debug message"); - } - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - The wrapper map to use to hold the objects. - - - - Returns the named logger if it exists. - - Returns the named logger if it exists. - - - - If the named logger exists (in the default repository) then it - returns a reference to the logger, otherwise it returns null. - - - The fully qualified logger name to look for. - The logger found, or null if no logger could be found. - - - - Returns the named logger if it exists. - - - - If the named logger exists (in the specified repository) then it - returns a reference to the logger, otherwise it returns - null. - - - The repository to lookup in. - The fully qualified logger name to look for. - - The logger found, or null if the logger doesn't exist in the specified - repository. - - - - - Returns the named logger if it exists. - - - - If the named logger exists (in the repository for the specified assembly) then it - returns a reference to the logger, otherwise it returns - null. - - - The assembly to use to lookup the repository. - The fully qualified logger name to look for. - - The logger, or null if the logger doesn't exist in the specified - assembly's repository. - - - - Get the currently defined loggers. - - Returns all the currently defined loggers in the default repository. - - - The root logger is not included in the returned array. - - All the defined loggers. - - - - Returns all the currently defined loggers in the specified repository. - - The repository to lookup in. - - The root logger is not included in the returned array. - - All the defined loggers. - - - - Returns all the currently defined loggers in the specified assembly's repository. - - The assembly to use to lookup the repository. - - The root logger is not included in the returned array. - - All the defined loggers. - - - Get or create a logger. - - Retrieves or creates a named logger. - - - - Retrieves a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - The name of the logger to retrieve. - The logger with the name specified. - - - - Retrieves or creates a named logger. - - - - Retrieve a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - The repository to lookup in. - The name of the logger to retrieve. - The logger with the name specified. - - - - Retrieves or creates a named logger. - - - - Retrieve a logger named as the - parameter. If the named logger already exists, then the - existing instance will be returned. Otherwise, a new instance is - created. - - - By default, loggers do not have a set level but inherit - it from the hierarchy. This is one of the central features of - log4net. - - - The assembly to use to lookup the repository. - The name of the logger to retrieve. - The logger with the name specified. - - - - Shorthand for . - - - Get the logger for the fully qualified name of the type specified. - - The full name of will be used as the name of the logger to retrieve. - The logger with the name specified. - - - - Shorthand for . - - - Gets the logger for the fully qualified name of the type specified. - - The repository to lookup in. - The full name of will be used as the name of the logger to retrieve. - The logger with the name specified. - - - - Shorthand for . - - - Gets the logger for the fully qualified name of the type specified. - - The assembly to use to lookup the repository. - The full name of will be used as the name of the logger to retrieve. - The logger with the name specified. - - - - Shuts down the log4net system. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in all the - default repositories. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - Shutdown a logger repository. - - Shuts down the default repository. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - default repository. - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - - - - Shuts down the repository for the repository specified. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - The repository to shutdown. - - - - Shuts down the repository specified. - - - - Calling this method will safely close and remove all - appenders in all the loggers including root contained in the - repository. The repository is looked up using - the specified. - - - Some appenders need to be closed before the application exists. - Otherwise, pending logging events might be lost. - - - The shutdown method is careful to close nested - appenders before closing regular appenders. This is allows - configurations where a regular appender is attached to a logger - and again to a nested appender. - - - The assembly to use to lookup the repository. - - - Reset the configuration of a repository - - Resets all values contained in this repository instance to their defaults. - - - - Resets all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set to its default "off" value. - - - - - - Resets all values contained in this repository instance to their defaults. - - - - Reset all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set to its default "off" value. - - - The repository to reset. - - - - Resets all values contained in this repository instance to their defaults. - - - - Reset all values contained in the repository instance to their - defaults. This removes all appenders from all loggers, sets - the level of all non-root loggers to null, - sets their additivity flag to true and sets the level - of the root logger to . Moreover, - message disabling is set to its default "off" value. - - - The assembly to use to lookup the repository to reset. - - - Get the logger repository. - - Returns the default instance. - - - - Gets the for the repository specified - by the callers assembly (). - - - The instance for the default repository. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The repository to lookup in. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The assembly to use to lookup the repository. - - - Get a logger repository. - - Returns the default instance. - - - - Gets the for the repository specified - by the callers assembly (). - - - The instance for the default repository. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The repository to lookup in. - - - - Returns the default instance. - - The default instance. - - - Gets the for the repository specified - by the argument. - - - The assembly to use to lookup the repository. - - - Create a domain - - Creates a repository with the specified repository type. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The created will be associated with the repository - specified such that a call to will return - the same repository instance. - - - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - Create a logger repository. - - Creates a repository with the specified repository type. - - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - The created will be associated with the repository - specified such that a call to will return - the same repository instance. - - - - - - Creates a repository with the specified name. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - The specified repository already exists. - - - - Creates a repository with the specified name. - - - - Creates the default type of which is a - object. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique amongst repositories. - The created for the repository. - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - The specified repository already exists. - - - - Creates a repository with the specified name and repository type. - - - - The name must be unique. Repositories cannot be redefined. - An will be thrown if the repository already exists. - - - The name of the repository, this must be unique to the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - The specified repository already exists. - - - - Creates a repository for the specified assembly and repository type. - - - - CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - - Creates a repository for the specified assembly and repository type. - - - - The created will be associated with the repository - specified such that a call to with the - same assembly specified will return the same repository instance. - - - The assembly to use to get the name of the repository. - A that implements - and has a no arg constructor. An instance of this type will be created to act - as the for the repository specified. - The created for the repository. - - - - Gets the list of currently defined repositories. - - - - Get an array of all the objects that have been created. - - - An array of all the known objects. - - - - Looks up the wrapper object for the logger specified. - - The logger to get the wrapper for. - The wrapper for the logger specified. - - - - Looks up the wrapper objects for the loggers specified. - - The loggers to get the wrappers for. - The wrapper objects for the loggers specified. - - - - Create the objects used by - this manager. - - The logger to wrap. - The wrapper for the logger specified. - - - - The log4net Logical Thread Context. - - - - The LogicalThreadContext provides a location for specific debugging - information to be stored. - The LogicalThreadContext properties override any or - properties with the same name. - - - The Logical Thread Context has a properties map and a stack. - The properties and stack can - be included in the output of log messages. The - supports selecting and outputting these properties. - - - The Logical Thread Context provides a diagnostic context for the current call context. - This is an instrument for distinguishing interleaved log - output from different sources. Log output is typically interleaved - when a server handles multiple clients near-simultaneously. - - - The Logical Thread Context is managed on a per basis. - - - The requires a link time - for the - . - If the calling code does not have this permission then this context will be disabled. - It will not store any property values set on it. - - - Example of using the thread context properties to store a username. - - LogicalThreadContext.Properties["user"] = userName; - log.Info("This log message has a LogicalThreadContext Property called 'user'"); - - Example of how to push a message into the context stack - - using(LogicalThreadContext.Stacks["LDC"].Push("my context message")) - { - log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'"); - } // at the end of the using block the message is automatically popped - - - Nicko Cadell - - - - Private Constructor. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - The thread context properties instance - - - - - The thread context stacks instance - - - - - The thread properties map - - - The thread properties map - - - - The LogicalThreadContext properties override any - or properties with the same name. - - - - - - The thread stacks - - - stack map - - - - The logical thread stacks. - - - - - - Implementation of Mapped Diagnostic Contexts. - - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - The MDC class is similar to the class except that it is - based on a map instead of a stack. It provides mapped - diagnostic contexts. A Mapped Diagnostic Context, or - MDC in short, is an instrument for distinguishing interleaved log - output from different sources. Log output is typically interleaved - when a server handles multiple clients near-simultaneously. - - - The MDC is managed on a per thread basis. - - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - Gets the context value identified by the parameter. - - The key to lookup in the MDC. - The string value held for the key, or a null reference if no corresponding value is found. - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - If the parameter does not look up to a - previously defined context then null will be returned. - - - - - - Add an entry to the MDC - - The key to store the value under. - The value to store. - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - Puts a context value (the parameter) as identified - with the parameter into the current thread's - context map. - - - If a value is already defined for the - specified then the value will be replaced. If the - is specified as null then the key value mapping will be removed. - - - - - - Removes the key value mapping for the key specified. - - The key to remove. - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - Remove the specified entry from this thread's MDC - - - - - - Clear all entries in the MDC - - - - - The MDC is deprecated and has been replaced by the . - The current MDC implementation forwards to the ThreadContext.Properties. - - - - Remove all the entries from this thread's MDC - - - - - - Implementation of Nested Diagnostic Contexts. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - A Nested Diagnostic Context, or NDC in short, is an instrument - to distinguish interleaved log output from different sources. Log - output is typically interleaved when a server handles multiple - clients near-simultaneously. - - - Interleaved log output can still be meaningful if each log entry - from different contexts had a distinctive stamp. This is where NDCs - come into play. - - - Note that NDCs are managed on a per thread basis. The NDC class - is made up of static methods that operate on the context of the - calling thread. - - - How to push a message into the context - - using(NDC.Push("my context message")) - { - ... all log calls will have 'my context message' included ... - } // at the end of the using block the message is automatically removed - - - Nicko Cadell - Gert Driesen - - - - Initializes a new instance of the class. - - - Uses a private access modifier to prevent instantiation of this class. - - - - - Gets the current context depth. - - The current context depth. - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - The number of context values pushed onto the context stack. - - - Used to record the current depth of the context. This can then - be restored using the method. - - - - - - - Clears all the contextual information held on the current thread. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Clears the stack of NDC data held on the current thread. - - - - - - Creates a clone of the stack of context information. - - A clone of the context info for this thread. - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - The results of this method can be passed to the - method to allow child threads to inherit the context of their - parent thread. - - - - - - Inherits the contextual information from another thread. - - The context stack to inherit. - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - This thread will use the context information from the stack - supplied. This can be used to initialize child threads with - the same contextual information as their parent threads. These - contexts will NOT be shared. Any further contexts that - are pushed onto the stack will not be visible to the other. - Call to obtain a stack to pass to - this method. - - - - - - Removes the top context from the stack. - - - The message in the context that was removed from the top - of the stack. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Remove the top context from the stack, and return - it to the caller. If the stack is empty then an - empty string (not null) is returned. - - - - - - Pushes a new context message. - - The new context message. - - An that can be used to clean up - the context stack. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Pushes a new context onto the context stack. An - is returned that can be used to clean up the context stack. This - can be easily combined with the using keyword to scope the - context. - - - Simple example of using the Push method with the using keyword. - - using(log4net.NDC.Push("NDC_Message")) - { - log.Warn("This should have an NDC message"); - } - - - - - Removes the context information for this thread. It is - not required to call this method. - - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - This method is not implemented. - - - - - - Forces the stack depth to be at most . - - The maximum depth of the stack - - - - The NDC is deprecated and has been replaced by the . - The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. - - - - Forces the stack depth to be at most . - This may truncate the head of the stack. This only affects the - stack in the current thread. Also it does not prevent it from - growing, it only sets the maximum depth at the time of the - call. This can be used to return to a known context depth. - - - - - - The log4net Thread Context. - - - - The ThreadContext provides a location for thread specific debugging - information to be stored. - The ThreadContext properties override any - properties with the same name. - - - The thread context has a properties map and a stack. - The properties and stack can - be included in the output of log messages. The - supports selecting and outputting these properties. - - - The Thread Context provides a diagnostic context for the current thread. - This is an instrument for distinguishing interleaved log - output from different sources. Log output is typically interleaved - when a server handles multiple clients near-simultaneously. - - - The Thread Context is managed on a per thread basis. - - - Example of using the thread context properties to store a username. - - ThreadContext.Properties["user"] = userName; - log.Info("This log message has a ThreadContext Property called 'user'"); - - Example of how to push a message into the context stack - - using(ThreadContext.Stacks["NDC"].Push("my context message")) - { - log.Info("This log message has a ThreadContext Stack message that includes 'my context message'"); - } // at the end of the using block the message is automatically popped - - - Nicko Cadell - - - - Private Constructor. - - - - Uses a private access modifier to prevent instantiation of this class. - - - - - - The thread context properties instance - - - - - The thread context stacks instance - - - - - The thread properties map - - - The thread properties map - - - - The ThreadContext properties override any - properties with the same name. - - - - - - The thread stacks - - - stack map - - - - The thread local stacks. - - - - - - Delegate used to handle logger repository creation event notifications - - The which created the repository. - The event args - that holds the instance that has been created. - - - Delegate used to handle logger repository creation event notifications. - - - - - - Delegate used to handle creation of new wrappers. - - The logger to wrap in a wrapper. - - - Delegate used to handle creation of new wrappers. This delegate - is called from the - method to construct the wrapper for the specified logger. - - - The delegate to use is supplied to the - constructor. - - - - - - Delegate used to handle logger creation event notifications. - - The in which the has been created. - The event args that hold the instance that has been created. - - - Delegate used to handle logger creation event notifications. - - - - - - Delegate used to handle logger repository shutdown event notifications - - The that is shutting down. - Empty event args - - - Delegate used to handle logger repository shutdown event notifications. - - - - - - Delegate used to handle logger repository configuration reset event notifications - - The that has had its configuration reset. - Empty event args - - - Delegate used to handle logger repository configuration reset event notifications. - - - - - - Delegate used to handle event notifications for logger repository configuration changes. - - The that has had its configuration changed. - Empty event arguments. - - - Delegate used to handle event notifications for logger repository configuration changes. - - - - - - - - - - - - - diff --git a/WebGoat/lib/mysql.data.cf.dll b/WebGoat/lib/mysql.data.cf.dll deleted file mode 100644 index 4cc65f47b..000000000 Binary files a/WebGoat/lib/mysql.data.cf.dll and /dev/null differ diff --git a/WebGoat/lib/mysql.data.dll b/WebGoat/lib/mysql.data.dll deleted file mode 100644 index 3b5cadde4..000000000 Binary files a/WebGoat/lib/mysql.data.dll and /dev/null differ diff --git a/WebGoat/lib/mysql.data.entity.dll b/WebGoat/lib/mysql.data.entity.dll deleted file mode 100644 index 2590d30ee..000000000 Binary files a/WebGoat/lib/mysql.data.entity.dll and /dev/null differ diff --git a/WebGoat/lib/mysql.visualstudio.dll b/WebGoat/lib/mysql.visualstudio.dll deleted file mode 100644 index c5554cd6a..000000000 Binary files a/WebGoat/lib/mysql.visualstudio.dll and /dev/null differ diff --git a/WebGoat/lib/mysql.web.dll b/WebGoat/lib/mysql.web.dll deleted file mode 100644 index 74c65caf3..000000000 Binary files a/WebGoat/lib/mysql.web.dll and /dev/null differ diff --git a/WebGoat/libsqlite3.0.dylib b/WebGoat/libsqlite3.0.dylib deleted file mode 100755 index eb3d1f19e..000000000 Binary files a/WebGoat/libsqlite3.0.dylib and /dev/null differ diff --git a/WebGoat/moreinfo.png b/WebGoat/moreinfo.png deleted file mode 100644 index 07dfc59b4..000000000 Binary files a/WebGoat/moreinfo.png and /dev/null differ diff --git a/WebGoat/moreinfo1.png b/WebGoat/moreinfo1.png deleted file mode 100644 index 045331277..000000000 Binary files a/WebGoat/moreinfo1.png and /dev/null differ diff --git a/WebGoat/web.sitemap.backup b/WebGoat/web.sitemap.backup deleted file mode 100644 index 4b2676a54..000000000 --- a/WebGoat/web.sitemap.backup +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..8ddb106f1 --- /dev/null +++ b/index.html @@ -0,0 +1,83 @@ + + + + + + jerryhoff/WebGoat.NET @ GitHub + + + + + + Fork me on GitHub + +
    + +
    + + + + +
    + +

    WebGoat.NET + by jerryhoff

    + +
    + OWASP WebGoat.NET +
    + +

    WebGoat.NET is a purposefully broken ASP.NET web application. It contains many common vulnerabilities, and is intended for use in classroom environments.

    Dependencies

    +

    Mono.Data.Sqlite

    +

    Install

    +

    I have only tested WebGoat.NET in MonoDevelop - but in MonoDevelop you should be able to simply open the solution file and it should just work. You *may* need to right click on the references folder and add in Mono.Data.Sqlite and System.Configuration manually.

    +

    License

    +

    GPL

    +

    Authors

    +

    Jerry Hoff (jerry@owasp.org)

    +

    Contact

    +

    jerry@owasp.org

    + + +

    Download

    +

    + You can download this project in either + zip or + tar formats. +

    +

    You can also clone the project with Git + by running: +

    $ git clone git://github.com/jerryhoff/WebGoat.NET
    +

    + + + +
    + + + +