text:
// <copyright file="RemoteWebElement.cs" company="WebDriver Committers">
// Licensed to the Software Freedom Conservancy (SFC) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The SFC licenses this file
// to you under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// </copyright>

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.IO.Compression;
using OpenQA.Selenium.Interactions.Internal;
using OpenQA.Selenium.Internal;

namespace OpenQA.Selenium.Remote
{
    /// <summary>
    /// RemoteWebElement allows you to have access to specific items that are found on the page
    /// </summary>
    /// <seealso cref="IWebElement"/>
    /// <seealso cref="ILocatable"/>
    public class RemoteWebElement : IWebElement, IFindsByLinkText, IFindsById, IFindsByName, IFindsByTagName, IFindsByClassName, IFindsByXPath, IFindsByPartialLinkText, IFindsByCssSelector, IWrapsDriver, ILocatable, ITakesScreenshot
    {
        private RemoteWebDriver driver;
        private string elementId;

        /// <summary>
        /// Initializes a new instance of the <see cref="RemoteWebElement"/> class.
        /// </summary>
        /// <param name="parentDriver">The <see cref="RemoteWebDriver"/> instance hosting this element.</param>
        /// <param name="id">The ID assigned to the element.</param>
        public RemoteWebElement(RemoteWebDriver parentDriver, string id)
        {
            this.driver = parentDriver;
            this.elementId = id;
        }

        /// <summary>
        /// Gets the <see cref="IWebDriver"/> used to find this element.
        /// </summary>
        public IWebDriver WrappedDriver
        {
            get { return this.driver; }
        }

        /// <summary>
        /// Gets the tag name of this element.
        /// </summary>
        /// <remarks>
        /// The <see cref="TagName"/> property returns the tag name of the
        /// element, not the value of the name attribute. For example, it will return
        /// "input" for an element specified by the HTML markup <input name="foo" />.
        /// </remarks>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public string TagName
        {
            get
            {
                Dictionary<string, object> parameters = new Dictionary<string, object>();
                parameters.Add("id", this.elementId);
                Response commandResponse = this.Execute(DriverCommand.GetElementTagName, parameters);
                return commandResponse.Value.ToString();
            }
        }

        /// <summary>
        /// Gets the innerText of this element, without any leading or trailing whitespace,
        /// and with other whitespace collapsed.
        /// </summary>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public string Text
        {
            get
            {
                Dictionary<string, object> parameters = new Dictionary<string, object>();
                parameters.Add("id", this.elementId);
                Response commandResponse = this.Execute(DriverCommand.GetElementText, parameters);
                return commandResponse.Value.ToString();
            }
        }

        /// <summary>
        /// Gets a value indicating whether or not this element is enabled.
        /// </summary>
        /// <remarks>The <see cref="Enabled"/> property will generally
        /// return <see langword="true"/> for everything except explicitly disabled input elements.</remarks>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public bool Enabled
        {
            get
            {
                Dictionary<string, object> parameters = new Dictionary<string, object>();
                parameters.Add("id", this.elementId);
                Response commandResponse = this.Execute(DriverCommand.IsElementEnabled, parameters);
                return (bool)commandResponse.Value;
            }
        }

        /// <summary>
        /// Gets a value indicating whether or not this element is selected.
        /// </summary>
        /// <remarks>This operation only applies to input elements such as checkboxes,
        /// options in a select element and radio buttons.</remarks>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public bool Selected
        {
            get
            {
                Dictionary<string, object> parameters = new Dictionary<string, object>();
                parameters.Add("id", this.elementId);
                Response commandResponse = this.Execute(DriverCommand.IsElementSelected, parameters);
                return (bool)commandResponse.Value;
            }
        }

        /// <summary>
        /// Gets a <see cref="Point"/> object containing the coordinates of the upper-left corner
        /// of this element relative to the upper-left corner of the page.
        /// </summary>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public Point Location
        {
            get
            {
                string getLocationCommand = DriverCommand.GetElementLocation;
                if (this.driver.IsSpecificationCompliant)
                {
                    getLocationCommand = DriverCommand.GetElementRect;
                }

                Dictionary<string, object> parameters = new Dictionary<string, object>();
                parameters.Add("id", this.Id);
                Response commandResponse = this.Execute(getLocationCommand, parameters);
                Dictionary<string, object> rawPoint = (Dictionary<string, object>)commandResponse.Value;
                int x = Convert.ToInt32(rawPoint["x"], CultureInfo.InvariantCulture);
                int y = Convert.ToInt32(rawPoint["y"], CultureInfo.InvariantCulture);
                return new Point(x, y);
            }
        }

        /// <summary>
        /// Gets a <see cref="Size"/> object containing the height and width of this element.
        /// </summary>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public Size Size
        {
            get
            {
                string getSizeCommand = DriverCommand.GetElementSize;
                if (this.driver.IsSpecificationCompliant)
                {
                    getSizeCommand = DriverCommand.GetElementRect;
                }

                Dictionary<string, object> parameters = new Dictionary<string, object>();
                parameters.Add("id", this.Id);
                Response commandResponse = this.Execute(getSizeCommand, parameters);
                Dictionary<string, object> rawSize = (Dictionary<string, object>)commandResponse.Value;
                int width = Convert.ToInt32(rawSize["width"], CultureInfo.InvariantCulture);
                int height = Convert.ToInt32(rawSize["height"], CultureInfo.InvariantCulture);
                return new Size(width, height);
            }
        }

        /// <summary>
        /// Gets a value indicating whether or not this element is displayed.
        /// </summary>
        /// <remarks>The <see cref="Displayed"/> property avoids the problem
        /// of having to parse an element's "style" attribute to determine
        /// visibility of an element.</remarks>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public bool Displayed
        {
            get
            {
                Dictionary<string, object> parameters = new Dictionary<string, object>();
                parameters.Add("id", this.Id);
                Response commandResponse = this.Execute(DriverCommand.IsElementDisplayed, parameters);
                return (bool)commandResponse.Value;
            }
        }

        /// <summary>
        /// Gets the point where the element would be when scrolled into view.
        /// </summary>
        public Point LocationOnScreenOnceScrolledIntoView
        {
            get
            {
                Response commandResponse;
                Dictionary<string, object> rawLocation;
                if (this.driver.IsSpecificationCompliant)
                {
                    rawLocation = this.driver.ExecuteScript("return arguments[0].getBoundingClientRect();", this) as Dictionary<string, object>;
                }
                else
                {
                    Dictionary<string, object> parameters = new Dictionary<string, object>();
                    parameters.Add("id", this.Id);
                    commandResponse = this.Execute(DriverCommand.GetElementLocationOnceScrolledIntoView, parameters);
                    rawLocation = (Dictionary<string, object>)commandResponse.Value;
                }

                int x = Convert.ToInt32(rawLocation["x"], CultureInfo.InvariantCulture);
                int y = Convert.ToInt32(rawLocation["y"], CultureInfo.InvariantCulture);
                return new Point(x, y);
            }
        }

        /// <summary>
        /// Gets the coordinates identifying the location of this element using
        /// various frames of reference.
        /// </summary>
        public ICoordinates Coordinates
        {
            get { return new RemoteCoordinates(this); }
        }

        /// <summary>
        /// Gets the ID of the element.
        /// </summary>
        /// <remarks>This property is internal to the WebDriver instance, and is
        /// not intended to be used in your code. The element's ID has no meaning
        /// outside of internal WebDriver usage, so it would be improper to scope
        /// it as public. However, both subclasses of <see cref="RemoteWebElement"/>
        /// and the parent driver hosting the element have a need to access the
        /// internal element ID. Therefore, we have two properties returning the
        /// same value, one scoped as internal, the other as protected.</remarks>
        internal string InternalElementId
        {
            get { return this.elementId; }
        }

        /// <summary>
        /// Gets the ID of the element
        /// </summary>
        /// <remarks>This property is internal to the WebDriver instance, and is
        /// not intended to be used in your code. The element's ID has no meaning
        /// outside of internal WebDriver usage, so it would be improper to scope
        /// it as public. However, both subclasses of <see cref="RemoteWebElement"/>
        /// and the parent driver hosting the element have a need to access the
        /// internal element ID. Therefore, we have two properties returning the
        /// same value, one scoped as internal, the other as protected.</remarks>
        protected string Id
        {
            get { return this.elementId; }
        }

        /// <summary>
        /// Clears the content of this element.
        /// </summary>
        /// <remarks>If this element is a text entry element, the <see cref="Clear"/>
        /// method will clear the value. It has no effect on other elements. Text entry elements
        /// are defined as elements with INPUT or TEXTAREA tags.</remarks>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public void Clear()
        {
            Dictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("id", this.elementId);
            this.Execute(DriverCommand.ClearElement, parameters);
        }

        /// <summary>
        /// Simulates typing text into the element.
        /// </summary>
        /// <param name="text">The text to type into the element.</param>
        /// <remarks>The text to be typed may include special characters like arrow keys,
        /// backspaces, function keys, and so on. Valid special keys are defined in
        /// <see cref="Keys"/>.</remarks>
        /// <seealso cref="Keys"/>
        /// <exception cref="InvalidElementStateException">Thrown when the target element is not enabled.</exception>
        /// <exception cref="ElementNotVisibleException">Thrown when the target element is not visible.</exception>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public void SendKeys(string text)
        {
            if (text == null)
            {
                throw new ArgumentNullException("text", "text cannot be null");
            }

            if (this.driver.FileDetector.IsFile(text))
            {
                text = this.UploadFile(text);
            }

            // N.B. The Java remote server expects a CharSequence as the value input to
            // SendKeys. In JSON, these are serialized as an array of strings, with a
            // single character to each element of the array. Thus, we must use ToCharArray()
            // to get the same effect.
            // TODO: Remove either "keysToSend" or "value" property, whichever is not the
            // appropriate one for spec compliance.
            Dictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("id", this.elementId);
            if (this.driver.IsSpecificationCompliant)
            {
                parameters.Add("value", text.ToCharArray());
            }
            else
            {
                parameters.Add("value", new object[] { text });
            }

            this.Execute(DriverCommand.SendKeysToElement, parameters);
        }

        /// <summary>
        /// Submits this element to the web server.
        /// </summary>
        /// <remarks>If this current element is a form, or an element within a form,
        /// then this will be submitted to the web server. If this causes the current
        /// page to change, then this method will attempt to block until the new page
        /// is loaded.</remarks>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public void Submit()
        {
            if (this.driver.IsSpecificationCompliant)
            {
                IWebElement form = this.FindElement(By.XPath("./ancestor-or-self::form"));
                this.driver.ExecuteScript(
                    "var e = arguments[0].ownerDocument.createEvent('Event');" +
                    "e.initEvent('submit', true, true);" +
                    "if (arguments[0].dispatchEvent(e)) { arguments[0].submit(); }", form);
            }
            else
            {
                Dictionary<string, object> parameters = new Dictionary<string, object>();
                parameters.Add("id", this.elementId);
                this.Execute(DriverCommand.SubmitElement, parameters);
            }
        }

        /// <summary>
        /// Clicks this element.
        /// </summary>
        /// <remarks>
        /// Click this element. If the click causes a new page to load, the <see cref="Click"/>
        /// method will attempt to block until the page has loaded. After calling the
        /// <see cref="Click"/> method, you should discard all references to this
        /// element unless you know that the element and the page will still be present.
        /// Otherwise, any further operations performed on this element will have an undefined
        /// behavior.
        /// </remarks>
        /// <exception cref="InvalidElementStateException">Thrown when the target element is not enabled.</exception>
        /// <exception cref="ElementNotVisibleException">Thrown when the target element is not visible.</exception>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public void Click()
        {
            Dictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("id", this.elementId);
            this.Execute(DriverCommand.ClickElement, parameters);
        }

        /// <summary>
        /// Gets the value of the specified attribute for this element.
        /// </summary>
        /// <param name="attributeName">The name of the attribute.</param>
        /// <returns>The attribute's current value. Returns a <see langword="null"/> if the
        /// value is not set.</returns>
        /// <remarks>The <see cref="GetAttribute"/> method will return the current value
        /// of the attribute, even if the value has been modified after the page has been
        /// loaded. Note that the value of the following attributes will be returned even if
        /// there is no explicit attribute on the element:
        /// <list type="table">
        /// <listheader>
        /// <term>Attribute name</term>
        /// <term>Value returned if not explicitly specified</term>
        /// <term>Valid element types</term>
        /// </listheader>
        /// <item>
        /// <description>checked</description>
        /// <description>checked</description>
        /// <description>Check Box</description>
        /// </item>
        /// <item>
        /// <description>selected</description>
        /// <description>selected</description>
        /// <description>Options in Select elements</description>
        /// </item>
        /// <item>
        /// <description>disabled</description>
        /// <description>disabled</description>
        /// <description>Input and other UI elements</description>
        /// </item>
        /// </list>
        /// </remarks>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public string GetAttribute(string attributeName)
        {
            Dictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("id", this.elementId);
            parameters.Add("name", attributeName);
            Response commandResponse = this.Execute(DriverCommand.GetElementAttribute, parameters);
            string attributeValue = string.Empty;
            if (commandResponse.Value == null)
            {
                attributeValue = null;
            }
            else
            {
                attributeValue = commandResponse.Value.ToString();

                // Normalize string values of boolean results as lowercase.
                if (commandResponse.Value is bool)
                {
                    attributeValue = attributeValue.ToLowerInvariant();
                }
            }

            return attributeValue;
        }

        /// <summary>
        /// Gets the value of a CSS property of this element.
        /// </summary>
        /// <param name="propertyName">The name of the CSS property to get the value of.</param>
        /// <returns>The value of the specified CSS property.</returns>
        /// <remarks>The value returned by the <see cref="GetCssValue"/>
        /// method is likely to be unpredictable in a cross-browser environment.
        /// Color values should be returned as hex strings. For example, a
        /// "background-color" property set as "green" in the HTML source, will
        /// return "#008000" for its value.</remarks>
        /// <exception cref="StaleElementReferenceException">Thrown when the target element is no longer valid in the document DOM.</exception>
        public string GetCssValue(string propertyName)
        {
            Dictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("id", this.Id);
            if (this.driver.IsSpecificationCompliant)
            {
                parameters.Add("name", propertyName);
            }
            else
            {
                parameters.Add("propertyName", propertyName);
            }

            Response commandResponse = this.Execute(DriverCommand.GetElementValueOfCssProperty, parameters);
            return commandResponse.Value.ToString();
        }

        /// <summary>
        /// Finds all <see cref="IWebElement">IWebElements</see> within the current context
        /// using the given mechanism.
        /// </summary>
        /// <param name="by">The locating mechanism to use.</param>
        /// <returns>A <see cref="ReadOnlyCollection{T}"/> of all <see cref="IWebElement">WebElements</see>
        /// matching the current criteria, or an empty list if nothing matches.</returns>
        public ReadOnlyCollection<IWebElement> FindElements(By by)
        {
            if (by == null)
            {
                throw new ArgumentNullException("by", "by cannot be null");
            }

            return by.FindElements(this);
        }

        /// <summary>
        /// Finds the first <see cref="IWebElement"/> using the given method.
        /// </summary>
        /// <param name="by">The locating mechanism to use.</param>
        /// <returns>The first matching <see cref="IWebElement"/> on the current context.</returns>
        /// <exception cref="NoSuchElementException">If no element matches the criteria.</exception>
        public IWebElement FindElement(By by)
        {
            if (by == null)
            {
                throw new ArgumentNullException("by", "by cannot be null");
            }

            return by.FindElement(this);
        }

        /// <summary>
        /// Finds the first of elements that match the link text supplied
        /// </summary>
        /// <param name="linkText">Link text of element </param>
        /// <returns>IWebElement object so that you can interact that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// IWebElement elem = driver.FindElementByLinkText("linktext")
        /// </code>
        /// </example>
        public IWebElement FindElementByLinkText(string linkText)
        {
            return this.FindElement("link text", linkText);
        }

        /// <summary>
        /// Finds the first of elements that match the link text supplied
        /// </summary>
        /// <param name="linkText">Link text of element </param>
        /// <returns>IWebElement object so that you can interact that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// ReadOnlyCollection<![CDATA[<IWebElement>]]> elem = driver.FindElementsByLinkText("linktext")
        /// </code>
        /// </example>
        public ReadOnlyCollection<IWebElement> FindElementsByLinkText(string linkText)
        {
            return this.FindElements("link text", linkText);
        }

        /// <summary>
        /// Finds the first element in the page that matches the ID supplied
        /// </summary>
        /// <param name="id">ID of the element</param>
        /// <returns>IWebElement object so that you can interact with that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// IWebElement elem = driver.FindElementById("id")
        /// </code>
        /// </example>
        public IWebElement FindElementById(string id)
        {
            if (this.driver.IsSpecificationCompliant)
            {
                return this.FindElement("css selector", "#" + RemoteWebDriver.EscapeCssSelector(id));
            }

            return this.FindElement("id", id);
        }

        /// <summary>
        /// Finds the first element in the page that matches the ID supplied
        /// </summary>
        /// <param name="id">ID of the Element</param>
        /// <returns>ReadOnlyCollection of Elements that match the object so that you can interact that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// ReadOnlyCollection<![CDATA[<IWebElement>]]> elem = driver.FindElementsById("id")
        /// </code>
        /// </example>
        public ReadOnlyCollection<IWebElement> FindElementsById(string id)
        {
            if (this.driver.IsSpecificationCompliant)
            {
                return this.FindElements("css selector", "#" + RemoteWebDriver.EscapeCssSelector(id));
            }

            return this.FindElements("id", id);
        }

        /// <summary>
        /// Finds the first of elements that match the name supplied
        /// </summary>
        /// <param name="name">Name of the element</param>
        /// <returns>IWebElement object so that you can interact that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// elem = driver.FindElementsByName("name")
        /// </code>
        /// </example>
        public IWebElement FindElementByName(string name)
        {
            // Element finding mechanism is not allowed by the W3C WebDriver
            // specification, but rather should be implemented as a function
            // of other finder mechanisms as documented in the spec.
            // Implementation after spec reaches recommendation should be as
            // follows:
            // return this.FindElement("css selector", "*[name=\"" + name + "\"]");
            if (this.driver.IsSpecificationCompliant)
            {
                return this.FindElement("css selector", "*[name=\"" + name + "\"]");
            }

            return this.FindElement("name", name);
        }

        /// <summary>
        /// Finds a list of elements that match the name supplied
        /// </summary>
        /// <param name="name">Name of element</param>
        /// <returns>ReadOnlyCollect of IWebElement objects so that you can interact that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// ReadOnlyCollection<![CDATA[<IWebElement>]]> elem = driver.FindElementsByName("name")
        /// </code>
        /// </example>
        public ReadOnlyCollection<IWebElement> FindElementsByName(string name)
        {
            // Element finding mechanism is not allowed by the W3C WebDriver
            // specification, but rather should be implemented as a function
            // of other finder mechanisms as documented in the spec.
            // Implementation after spec reaches recommendation should be as
            // follows:
            // return this.FindElements("css selector", "*[name=\"" + name + "\"]");
            if (this.driver.IsSpecificationCompliant)
            {
                return this.FindElements("css selector", "*[name=\"" + name + "\"]");
            }

            return this.FindElements("name", name);
        }

        /// <summary>
        /// Finds the first of elements that match the DOM Tag supplied
        /// </summary>
        /// <param name="tagName">tag name of the element</param>
        /// <returns>IWebElement object so that you can interact that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// IWebElement elem = driver.FindElementsByTagName("tag")
        /// </code>
        /// </example>
        public IWebElement FindElementByTagName(string tagName)
        {
            // Element finding mechanism is not allowed by the W3C WebDriver
            // specification, but rather should be implemented as a function
            // of other finder mechanisms as documented in the spec.
            // Implementation after spec reaches recommendation should be as
            // follows:
            // return this.FindElement("css selector", tagName);
            if (this.driver.IsSpecificationCompliant)
            {
                return this.FindElement("css selector", tagName);
            }

            return this.FindElement("tag name", tagName);
        }

        /// <summary>
        /// Finds a list of elements that match the DOM Tag supplied
        /// </summary>
        /// <param name="tagName">DOM Tag of the element on the page</param>
        /// <returns>IWebElement object so that you can interact that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// ReadOnlyCollection<![CDATA[<IWebElement>]]> elem = driver.FindElementsByTagName("tag")
        /// </code>
        /// </example>
        public ReadOnlyCollection<IWebElement> FindElementsByTagName(string tagName)
        {
            // Element finding mechanism is not allowed by the W3C WebDriver
            // specification, but rather should be implemented as a function
            // of other finder mechanisms as documented in the spec.
            // Implementation after spec reaches recommendation should be as
            // follows:
            // return this.FindElements("css selector", tagName);
            if (this.driver.IsSpecificationCompliant)
            {
                return this.FindElements("css selector", tagName);
            }

            return this.FindElements("tag name", tagName);
        }

        /// <summary>
        /// Finds the first element in the page that matches the CSS Class supplied
        /// </summary>
        /// <param name="className">CSS class name of the element on the page</param>
        /// <returns>IWebElement object so that you can interact that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// IWebElement elem = driver.FindElementByClassName("classname")
        /// </code>
        /// </example>
        public IWebElement FindElementByClassName(string className)
        {
            // Element finding mechanism is not allowed by the W3C WebDriver
            // specification, but rather should be implemented as a function
            // of other finder mechanisms as documented in the spec.
            // Implementation after spec reaches recommendation should be as
            // follows:
            // return this.FindElement("css selector", "." + className);
            if (this.driver.IsSpecificationCompliant)
            {
                return this.FindElement("css selector", "." + RemoteWebDriver.EscapeCssSelector(className));
            }

            return this.FindElement("class name", className);
        }

        /// <summary>
        /// Finds a list of elements that match the class name supplied
        /// </summary>
        /// <param name="className">CSS class name of the elements on the page</param>
        /// <returns>ReadOnlyCollection of IWebElement object so that you can interact with those objects</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// ReadOnlyCollection<![CDATA[<IWebElement>]]> elem = driver.FindElementsByClassName("classname")
        /// </code>
        /// </example>
        public ReadOnlyCollection<IWebElement> FindElementsByClassName(string className)
        {
            // Element finding mechanism is not allowed by the W3C WebDriver
            // specification, but rather should be implemented as a function
            // of other finder mechanisms as documented in the spec.
            // Implementation after spec reaches recommendation should be as
            // follows:
            // return this.FindElements("css selector", "." + className);
            if (this.driver.IsSpecificationCompliant)
            {
                return this.FindElements("css selector", "." + RemoteWebDriver.EscapeCssSelector(className));
            }

            return this.FindElements("class name", className);
        }

        /// <summary>
        /// Finds the first of elements that match the XPath supplied
        /// </summary>
        /// <param name="xpath">xpath to the element</param>
        /// <returns>IWebElement object so that you can interact that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// IWebElement elem = driver.FindElementsByXPath("//table/tbody/tr/td/a");
        /// </code>
        /// </example>
        public IWebElement FindElementByXPath(string xpath)
        {
            return this.FindElement("xpath", xpath);
        }

        /// <summary>
        /// Finds a list of elements that match the XPath supplied
        /// </summary>
        /// <param name="xpath">xpath to element on the page</param>
        /// <returns>ReadOnlyCollection of IWebElement objects so that you can interact that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// ReadOnlyCollection<![CDATA[<IWebElement>]]> elem = driver.FindElementsByXpath("//tr/td/a")
        /// </code>
        /// </example>
        public ReadOnlyCollection<IWebElement> FindElementsByXPath(string xpath)
        {
            return this.FindElements("xpath", xpath);
        }

        /// <summary>
        /// Finds the first of elements that match the part of the link text supplied
        /// </summary>
        /// <param name="partialLinkText">part of the link text</param>
        /// <returns>IWebElement object so that you can interact that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// IWebElement elem = driver.FindElementsByPartialLinkText("partOfLink")
        /// </code>
        /// </example>
        public IWebElement FindElementByPartialLinkText(string partialLinkText)
        {
            return this.FindElement("partial link text", partialLinkText);
        }

        /// <summary>
        /// Finds a list of elements that match the link text supplied
        /// </summary>
        /// <param name="partialLinkText">part of the link text</param>
        /// <returns>ReadOnlyCollection<![CDATA[<IWebElement>]]> objects so that you can interact that object</returns>
        /// <example>
        /// <code>
        /// IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.Firefox());
        /// ReadOnlyCollection<![CDATA[<IWebElement>]]> elem = driver.FindElementsByPartialLinkText("partOfTheLink")
        /// </code>
        /// </example>
        public ReadOnlyCollection<IWebElement> FindElementsByPartialLinkText(string partialLinkText)
        {
            return this.FindElements("partial link text", partialLinkText);
        }

        /// <summary>
        /// Finds the first element matching the specified CSS selector.
        /// </summary>
        /// <param name="cssSelector">The id to match.</param>
        /// <returns>The first <see cref="IWebElement"/> matching the criteria.</returns>
        public IWebElement FindElementByCssSelector(string cssSelector)
        {
            return this.FindElement("css selector", cssSelector);
        }

        /// <summary>
        /// Finds all elements matching the specified CSS selector.
        /// </summary>
        /// <param name="cssSelector">The CSS selector to match.</param>
        /// <returns>A <see cref="ReadOnlyCollection{T}"/> containing all
        /// <see cref="IWebElement">IWebElements</see> matching the criteria.</returns>
        public ReadOnlyCollection<IWebElement> FindElementsByCssSelector(string cssSelector)
        {
            return this.FindElements("css selector", cssSelector);
        }

        /// <summary>
        /// Gets a <see cref="Screenshot"/> object representing the image of this element on the screen.
        /// </summary>
        /// <returns>A <see cref="Screenshot"/> object containing the image.</returns>
        public Screenshot GetScreenshot()
        {
            Dictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("id", this.elementId);

            // Get the screenshot as base64.
            Response screenshotResponse = this.Execute(DriverCommand.ElementScreenshot, parameters);
            string base64 = screenshotResponse.Value.ToString();

            // ... and convert it.
            return new Screenshot(base64);
        }

        /// <summary>
        /// Method to get the hash code of the element
        /// </summary>
        /// <returns>Integer of the hash code for the element</returns>
        public override int GetHashCode()
        {
            return this.elementId.GetHashCode();
        }

        /// <summary>
        /// Compares if two elements are equal
        /// </summary>
        /// <param name="obj">Object to compare against</param>
        /// <returns>A boolean if it is equal or not</returns>
        public override bool Equals(object obj)
        {
            IWebElement other = obj as IWebElement;
            if (other == null)
            {
                return false;
            }

            IWrapsElement objAsWrapsElement = obj as IWrapsElement;
            if (objAsWrapsElement != null)
            {
                other = objAsWrapsElement.WrappedElement;
            }

            RemoteWebElement otherAsElement = other as RemoteWebElement;
            if (otherAsElement == null)
            {
                return false;
            }

            if (this.elementId == otherAsElement.Id)
            {
                // For drivers that implement ID equality, we can check for equal IDs
                // here, and expect them to be equal. There is a potential danger here
                // where two different elements are assigned the same ID.
                return true;
            }

            Dictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("id", this.elementId);
            parameters.Add("other", otherAsElement.Id);

            Response response = this.Execute(DriverCommand.ElementEquals, parameters);
            object value = response.Value;
            return value != null && value is bool && (bool)value;
        }

        /// <summary>
        /// Finds a child element matching the given mechanism and value.
        /// </summary>
        /// <param name="mechanism">The mechanism by which to find the element.</param>
        /// <param name="value">The value to use to search for the element.</param>
        /// <returns>The first <see cref="IWebElement"/> matching the given criteria.</returns>
        protected IWebElement FindElement(string mechanism, string value)
        {
            Dictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("id", this.elementId);
            parameters.Add("using", mechanism);
            parameters.Add("value", value);
            Response commandResponse = this.Execute(DriverCommand.FindChildElement, parameters);
            return this.driver.GetElementFromResponse(commandResponse);
        }

        /// <summary>
        /// Finds all child elements matching the given mechanism and value.
        /// </summary>
        /// <param name="mechanism">The mechanism by which to find the elements.</param>
        /// <param name="value">The value to use to search for the elements.</param>
        /// <returns>A collection of all of the <see cref="IWebElement">IWebElements</see> matching the given criteria.</returns>
        protected ReadOnlyCollection<IWebElement> FindElements(string mechanism, string value)
        {
            Dictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("id", this.elementId);
            parameters.Add("using", mechanism);
            parameters.Add("value", value);
            Response commandResponse = this.Execute(DriverCommand.FindChildElements, parameters);
            return this.driver.GetElementsFromResponse(commandResponse);
        }

        /// <summary>
        /// Executes a command on this element using the specified parameters.
        /// </summary>
        /// <param name="commandToExecute">The <see cref="DriverCommand"/> to execute against this element.</param>
        /// <param name="parameters">A <see cref="Dictionary{K, V}"/> containing names and values of the parameters for the command.</param>
        /// <returns>The <see cref="Response"/> object containing the result of the command execution.</returns>
        protected Response Execute(string commandToExecute, Dictionary<string, object> parameters)
        {
            return this.driver.InternalExecute(commandToExecute, parameters);
        }

        private string UploadFile(string localFile)
        {
            string base64zip = string.Empty;
            try
            {
                using (MemoryStream fileUploadMemoryStream = new MemoryStream())
                {
                    using (ZipStorer zipArchive = ZipStorer.Create(fileUploadMemoryStream, string.Empty))
                    {
                        string fileName = Path.GetFileName(localFile);
                        zipArchive.AddFile(ZipStorer.CompressionMethod.Deflate, localFile, fileName, string.Empty);
                        base64zip = Convert.ToBase64String(fileUploadMemoryStream.ToArray());
                    }
                }

                Dictionary<string, object> parameters = new Dictionary<string, object>();
                parameters.Add("file", base64zip);
                Response response = this.Execute(DriverCommand.UploadFile, parameters);
                return response.Value.ToString();
            }
            catch (IOException e)
            {
                throw new WebDriverException("Cannot upload " + localFile, e);
            }
        }
    }
}

redpajama_set_name: RedPajamaGithub


You do have some faith in the prophecies of Nostradamus. Is that correct?
I don't have any faith in him. The fact is that the man was crazy, and what he has written can be interpreted in any way you want. I found this rational analysis and managed to look into Nostradamus, and found similarities, which was very easy. There are many books of that kind in the world.
In India there is an ancient scripture thought to be written by Vyasa himself, five thousand years ago. Everything about you is written in it. You just have to go to the priest, you have to give your name, your birth time, your birth chart, and he will figure it out and find the right page where Vyasa has described you. And it is possible because in the Sanskrit language, each word has at least one dozen meanings. So looking at you, watching you, talking with you, the scholar will figure it out, and he will start reading from the scripture. And he will be very much correct.
Copies of the scripture exist all over India; so you have it done in Delhi but if you are not satisfied - who knows if it is right or wrong? - you can go to Madras or Calcutta, and they will find the same page again. And because in the process of finding the page the clue is given by you, you can just change your name.... Go to Delhi, tell one name, one date of birth; in Madras, tell another name, another time of birth and you will know what is going on. He will not be able to find the same page. He will find some other page. But ordinarily, the type of people who go will not do this. They are immensely impressed.
Nostradamus can be interpreted in any way you want. The sentences are not clear, the grammar is not correct. The words are such that you can fit them into any context you want.


Some regard caffeine and sugar as if the respective containers were marked with skull and crossbones, with reason. Those addictive substances upset the physical and nervous system. Like Macbeth, they murder sleep.
I don't think these three wonderful musicians had ever worked together as a trio. Their floating sounds delight me, and I imagine a trio of Duke, Ivie, and Blanton brought to life in 2019.
Go ahead, pour yourself another. Good to the last note.
Some of the most memorable sessions — improvising without arrangements — are marked by a delightful ensemble tension coming out of competitiveness. Think of almost any date Roy Eldridge played on, for an example close to hand. Others are marked by an equally pleasing calm friendliness: we're all here for the same purpose, and let's have a good time. A collective hug rather than head-cutting.
What better way to say "Thank you" to Gil and all of us than with this heartfelt rendition of SOMEONE TO WATCH OVER ME?
Even if your idea of paradise is King Oliver 1923, I hope you can hear the sweet floating beauties on display here. And let's not forget Jack Saint Clair's melancholy-uplifting solo feature, posted earlier.
It was a wonderful afternoon at the 1867 Sanctuary — where art flourishes — and Danny, Jack, Silas, and Sam gave us great gifts.
Sixty memorable minutes. Never mind the odd composer credits.
At the Jazz Bash by the Bay this last March, Dawn Lambeth and her Rascals (the name I've given to this delightful little group of swinging friends) demonstrated Einstein's discovery in the nicest ways: with performances whose text is the nature of time and how it is perceived, and declarations of love in its many forms.
The Rascals are Riley Baker, drums (catch his wonderful accents behind his father's trumpet solo on ALWAYS: "Good deal!"); Jacob Zimmerman, alto saxophone; Clint Baker, trumpet; Jerry Krahn, guitar; Ike Harris, string bass; Jeff Hamilton, piano.
A small surprise from eBay, where surprises flourish: here's the link. The seller's price is $175 and $12 shipping, The latter substantially more than the original postage.
Ruby Braff, at home on Cape Cod, c. 1995. Photograph by George Borgman.
It's a letter from Ruby Braff, who left us in 2003, to Jack Bradley, his friend and sometime manager, and of course close friend of Louis Armstrong.
I'm looking forward & backward to our gig. As we draw closer I'll get the name of everything—oh, by the way, you've got plenty time now to get cash for me that nite, if possible.
You know I'm down in Zinno's every nite, all our cats are so happy I'm there that it's like 1941. Everybody's in to see me. Buck Clayton, Morey, everybody. Packed!!!
Bad news—I'm depressed we lost Buddy Rich tonite. I played anyway. What a drag!
Every nite is Cafe Society for me! Unbelievable. Wild!!
Anyway ding ding you 2.
Written in pencil on Braff's letterhead. Folding creases, some light smudging, overall fine with original envelope. 8.5 x 11 inches (21.5 x 28 cm).
A few annotations. Buddy Rich died on April 2, 1987. "Ding ding!" was Vic Dickenson's all-purpose salutation, celebration, toast. Buck Clayton should need no annotation. "Morey" cannot be drummer Morey Feld, who died in 1971.
As to "Fuckey," one interprets as one wishes.
Here, because I can — life is not all about objects for sale — is what remains of the Braff-Steinman correspondence, two 1971 letters from Ruby to me. Although Ruby was subject to unpredictable outbursts of rage (I witnessed one) his letters are gentle, touching, kind, and I did nothing special to evoke this kindness.
We were lucky — and beyond — to have Ruby with us for fifty years. And his music has no expiration date.
Should you want to know more — more than you ever thought you could know — about Ruby and his times, this book is a delightful and wise mountain of information and stories, Thomas Hustad's BORN TO PLAY.
Posted in "Thanks A Million", Bliss!, Generosities, Irreplaceable, It's All True, Jazz Titans, Jazz Worth Reading, Mmmmmmmmmmmmm!, Pay Attention!, Swing You Cats!, That Was Fun!, The Real Thing, The Things We Love, Wow!
I knew something of young Philadelphia reedman Jack Saint Clair before I heard him — on a Danny Tobias gig last Saturday — by implication, because Danny has excellent taste. And Jack has been part of the Marty Grosz Repertory Company that appears at the Mermaid Inn in Chestnut Hill, Pennsylvania. Later, I saw Jack get the coveted Larry McKenna Seal of Approval . . . if there is a higher honor I don't know it. But I was delighted and moved by his playing at that concert (with Silas Irvine, piano, and Sam Harris, string bass) so I think you should meet him too, doing what he does beautifully: making melody come alive, airborne, quietly compelling.
The song is SPRING CAN REALLY HANG YOU UP THE MOST, lyrics by Fran Landesman, music by Tommy Wolf — their 1955 variation on Eliot's "April is the cruelest month." Or close enough. Only 33 years separate Eliot and Landesman, proof of how quickly language moves and changes.
Anyone who has sung or played an instrument will know just how difficult it is to make melody come that alive. For those of you, and you know who you are, who leap to Compare, whisper the comparisons to your coffee and don't send them here . . . . Jack sounds exactly like himself, and we are glad of it.


text:
For intermediaries only:Our processing team has a high volume of documents to process this week so we may be busier than usual. Please bear with us for a few days.
Fixed Saver
It's all you, you, you.
Most banks put themselves first. We're not most banks. In fact, we're the UK's first app only bank. But we don't just do it differently, we do it better. Our service is fast, fair and all about you.
We've launched with savings, mortgages and business loans
All of our products are built around you. We design them to be as simple, straightforward and hassle-free as possible. And because we don't have to fork out for branches, we can offer you better rates. What's not to love?
Fixed Savings up to 1.90%AER means annual equivalent rate. It tells you how much interest you'd earn if you put your money in an account and left it there for a full year.
Join thousands of customers saving over £1.5 billion with us, all with FSCS protection up to £85,000.
Fast, straightforward mortgages
Competitive rates, independent advice, and a process you can track every step of the way - all in app.
Business loans that work for you
No fuss business lending- spend less time faffing with paperwork and more time running your business.
Live, unfiltered feedback from our customers
All on your mobile
With our app, you take your savings and mortgages with you, wherever you go, 24/7. We've done away with fiddly keypads and long passwords. Instead, we use your face and voice as your password. Simple. After all, we are all about you.
Need Help? Just Holla
We don't leave our customers hanging. Our UK-based Customer Support Team are available 24/7, 365. Chat to us through the app, on the phone, by email, or on social.
Get the latest updates and news with our newsletter
We're constantly looking to improve the way we do things.
Head over to our FAQs, or use our 'Contact us' page for help.
General Banking
Policy for Employees
© Atom bank 2019
"Atom bank", "Atom" and "Digital Mortgages by Atom bank" are trading names of Atom bank plc, a company registered in England and Wales with company number 08632552. Registered office: The Rivergreen Centre, Aykley Heads, Durham DH1 5TS. Atom bank plc is authorised by the Prudential Regulation Authority (PRA) and regulated by the Financial Conduct Authority and the PRA. Our Financial Services Register number is 661960.

redpajama_set_name: RedPajamaCommonCrawl


text:
Home Media Rights Monitor MRA's Programme Director Urges Journalists to Use FOI Act to Deepen Their Reporting
MRA's Programme Director Urges Journalists to Use FOI Act to Deepen Their Reporting
Mr. Ayode Longe
Director of Programmes
Media Rights Agenda's (MRA) Programme Director, Mr. Ayode Longe, has called on journalists to make optimum use of the Freedom of Information (FOI) Act to to deepen their reporting
Delivering a paper titled "Freedom of Information (FOI) Act as a Potent Tool for Journalism Practice" on November 26, 2019, at the Press Week of the Nigerian Union of Journalists/Radio Nigeria, Lagos Chapel, Mr. Longe noted that the FOI Act absolutely exempts journalists' confidential sources from the regime of records and information that members of the public can request for.
In his opening remarks, the Director, Lagos Operations of the FRCN, Prince Adeyinka Amosu commended the NUJ/FRCN Chapel for the choice of the lecture theme and urged participants to listen attentively as they will benefit immensely from it.
The Chairman of the NUJ/FRCN Chapel, Mr. Fabian Anawo, in a welcome address, said that the choice of the topic was to educate members on how they can make use of the Act.
He said that the leadership of the chapel was committed to ensuring that the rights of members would at all times be protected and urged members to be dedicated to their duty.
Mr. Longe, who was guest speaker at the occasion, gave a broad overview of the history of FOI Act, what it is, why it is important and key features of the Act.
He elaborated on why Journalists needed the FOI Act, saying journalists being purveyors of news need accurate records and information that would give credence to their reportage. He said further that the FOI Act gives journalists a legal right and is a tool to make requests for government-held information and records for which they can go to court if denied access to such information.
He pointed out that Section 22 of the 1999 Constitution places a duty on the press, radio, television and other agencies of the mass media to hold government accountable to the citizenry pointing out that the Section is not justiciable but that the FOI Act is a complementary and empowering tool to that Section of the Constitution.
The MRA Director added that the FOI Act can be used to break news when used diligently, consistently and conscientiously by a reporter, either working alone or in cohort with others saying that a number of journalists who have broken vital news had become popular and won awards using the FOI Act.
Mr. Longe said the FOI Act supersedes the provisions of all other Acts, Laws or Regulations, except the Constitution and Laws with constitutional flavour. He said it supersedes the Official Secrets Act, the Evidence Act, the Criminal Code, the Penal Code, the Federal Public Service Rules, explaining that these instruments cannot be used to limit the scope or application of the FOI Act.
Mr. Longe carried out an on-the-spot survey to determine how media professionals interface with the Act. He asked participants how many of them have a copy of the FOI Act; how many had read it? Surprisingly, of the about forty participants less than five persons have a copy of the FOI Act or have read it or have used the Act.
Speaking further, he disclosed that in the course of writing his presentation, he stumbled on a 2014 Research Paper titled The Nigerian journalists' knowledge, perception, and use of the Freedom of Information (FOI) law in journalism practices written by Ifeoma Dunu and Gregory Obinna Ugbo, saying findings by the research were not encouraging.
Among others, he said, the researchers administered questionnaires to select members of the NUJ in four South-eastern states of Nigeria: Enugu, Anambra, Imo and Ebonyi States. He said a review of some of the questions and the final outcomes show a low level of understanding and use of the FOI Act by journalists.
On their awareness and knowledge of the FOI Act, 78% of the respondents said they were aware to a large extent while the remaining 22% were aware to a low extent. 15% of the respondents said that they use the FOI Act while a whopping 85% said they don't.
Mr. Longe said that the result of the on the spot survey and other findings showed that journalists are not taking advantage of the Act to discharge their duties.
To address the challenge, he recommended that the NUJ, the National Association of Women Journalists (NAWOJ), and the Guild of Editors (NGE) should join hands with press freedom groups like Media Rights Agenda (MRA), International Press Centre (IPC), among others to empower reporters to understand and make adequate use the FOI Act.
Discussants of the lecture, Mr. Olise Egbunike, Chris Okechukwu Nderibe, and Abdulwarees Solanke all said that the distress in the media industry was making it difficult for journalists to embark on investigative reportage. They said that a situation where employers do not pay salaries for up to one year and above, the reporter cannot do much.
They also observed that media owners' interest also affects the much that a reporter could do as a journalist who has done a beautiful investigative report may not have it published because of the proprietor's political, economic or other interest.
Mr. Longe presented 50 copies of the Freedom of Information Act, 2011 to the Chapel.
Previous articleMRA Inducts NDLEA into 'Enhanced FOI Hall of Shame', for Non-Compliance with FOI Act
Next articleEntries Open for Joan Shorenstein Center Fellowship at Harvard


My friends tell me that I am a fun person to be with : I enjoy the company of others. I also enjoy quiet times too, listening to the radio or to music, and just relaxing.
I am a kind and thoughtful person, very committed to my three grown up children and my family in general. Over the years I have managed to accumulate some wonderfully good friends, and I value them greatly.
I am always a busy person, involved in local charities, keeping fit, visiting interesting places - both abroad and at home. I am very curious about life. I love the cinema, theatre, going to art galleries and museums, and I also love to watch sport, especially cricket. I enjoy reading and poetry, and I am a great animal lover. I love the wide open spaces, long walks, just being outside, gorgeous beaches, forests and rivers.
I am a respectful and genuine person, with a good sense of humour. My latest challenge is to slow my life down a bit, learn to "stand and stare" and enjoy the moment !!
I manage to make some money from investments in the stock market, which is challenging, and I enjoy following the news and keeping up to date with what is going on.
I like to feel very much part of the world around me and I like to plan trips abroad .. currently just returned from Norway, where I crossed into the Arctic Circle and was pulled along by huskies: recently had a lovely holiday with my daughter in Mauritius, where we enjoyed horse riding and snorkelling. it would be good to have a male companion and soul mate for some of these adventures!!
Although I am committed to a many things in my life, I am fully prepared to be flexible and become involved in your life, and be involved in your hobbies and activities.
LiveLaughLove253 hasn't asked any friends to write a recommendation yet.


text:
Q: With dual boot where install the GRUB on Debian I will ask when to install Debian asked me where to install the GRUB, with only an operating system, it installs on the first hard disk,

/dev/sda

but with two operating systems, where install it, on
/dev/sda

or
/dev/sd1

I ask only for information, i will not do it, i will only learn.
The question with an example, I have Mint Linux on a hard disk and also wants to install Debian , the GRUB from Linux Mint is installed on /dev/sda, if installed Debian will ask me where to install the grub, what am I answers? and why?

A: Option 1:
You can install grub to /dev/sda overwriting your Linux Mint's bootloader. The Debian installer's grub should detect your existing Mint installation and add a boot entry for it.
Option 2:
You skip the grub installation in the Debian installer and boot into Linux Mint when your installation is complete. Open a terminal and update grub with sudo update-grub manually. Grub should find your Debian installation and add a boot entry to your /boot/grub/grub.cfg.
Then reboot and check if dual boot works as expected.

redpajama_set_name: RedPajamaStackExchange


• Set within a small group of four prestigious town homes, this immaculate residence includes fully maintained gardens and in-ground pool.
• The gorgeous gourmet galley kitchen is cleverly designed and full of modern conveniences including stainless steel European appliances, a large pantry, stone benchtops and stylish timber and glass cabinetry.
• Other features include high ceilings, ducted air-conditioning, split-system heating/cooling, sophisticated downlights, new wool carpets and quality Crimsafe security screens.
• Close to Petrie Terrace State School, Kelvin Grove, Milton and Red Hill Primary, UQ and QUT, Suncorp Stadium and just a few kilometres to the CBD.
• No pets are permitted.
WOULD YOU LIKE TO VIEW THIS PROPERTY? Please click the button "EMAIL AGENT or REQUEST AN INSPECTION TIME" enter your details and we will instantly respond. You can apply for this property online via 1Form, click the "Apply Online" button.


The turkey production survey is conducted during the months of June, July and August. Learn more about the production survey.
The turkey hunting population survey is conducted during the spring turkey hunting season. Learn more about the population survey.
Hunters often inquire about changes to hunting seasons and "When will Georgia initiate a fall hunting season?" is a common question.


You can still enroll, and start classes this fall. Be inspired by a Christian college education. Prepare for your bachelor's degree with our two year program. Learn one-on-one with Christian professors who care about your personal, academic and professional development. Transfer to a leading four year Christian college. Learn more, be more and do more.
Contact admissions, David Zamora, dazamora@cccollege.edu.
Posted on August 6, 2014 by Eric Blum.


text:
The 45th Infantry Regiment was a unit of the Philippine Scouts in the Philippine Division.

History
The 45th along with the 57th Infantry Regiment were the first two infantry regiments of the Philippine Scouts which were formed after World War I. They were most well known for their participation in the Battle of the Philippines (1941-42) during World War II and their eventual surrender to Japanese forces on 10 April 1942.

Distinctive unit insignia
 Description
A Gold color metal and enamel device  in height consisting of a shield blazoned: Azure in sinister chief an abaca tree (Manila hemp plant) Proper in base a mullet of the field fimbriated Argent, on a canton of the last the Roman numeral X of the first behind which paleways a Roman sword in sheath Gules (for the 10th Infantry). Attached above the shield from a wreath Argent and Azure a demi-lion Or grasping in his dexter paw a burning torch Argent, fire Proper.
 Symbolism
The Regiment was organized in 1917 at Fort Benjamin Harrison, Indiana, by transfer of personnel from the 10th Infantry. The shield is blue for the Infantry and the parentage of the Regiment is shown by the canton. The early station of the Regiment was the Philippines; this is indicated by the abaca tree which is a source of great wealth in the Islands and which grows native in no other place. The star in the base of the shield is the blue star of the old First Philippine Infantry. The crest of the Harrison family, General and President William Henry and General and President Benjamin Harrison, is a lion. This is also the upper body of the crest of the Philippines, a sea lion. The device of the State of Indiana is a torch. These are combined to form the crest of the Regiment.
 Background
The distinctive unit insignia was approved on 12 September 1923. It was rescinded on 19 August 1975.

Coat of arms
Blazon
 Shield- Azure in sinister chief an abaca tree (Manila hemp plant) Proper in base a mullet of the field fimbriated Argent, on a canton of the last the Roman numeral X of the first behind which paleways a Roman sword in sheath Gules (for the 10th Infantry).
Crest- From a wreath Argent and Azure a demi-lion Or grasping in his dexter paw a burning torch Argent, fire Proper.
Motto STRONG TO ENDURE.
 Symbolism
 Shield- The Regiment was organized in 1917 at Fort Benjamin Harrison, Indiana, by transfer of personnel from the 10th Infantry. The shield is blue for the Infantry and the parentage of the Regiment is shown by the canton. The early station of the Regiment was the Philippines; this is indicated by the abaca tree which is a source of great wealth in the Islands and which grows native in no other place. The star in the base of the shield is the blue star of the old First Philippine Infantry.
 Crest- The crest of the Harrison family, General and President William Henry and General and President Benjamin Harrison, is a lion. This is also the upper body of the crest of the Philippines, a sea lion. The device of the State of Indiana is a torch. These are combined to form the crest of the Regiment.
 Background- The coat of arms was approved on 10 April 1922. It was rescinded on 19 August 1975.

See also
Military History of the Philippines

References

External links
Philippine Scouts Heritage Society

045
Military history of the Philippines
American military personnel of Filipino descent

redpajama_set_name: RedPajamaWikipedia


text:
GET - REVIEWS
GET Fred Herzog's Modern Color
A flaneur with an eye for the essential, Fred Herzog is considered a pioneer of color photography. Long before the genre was recognized as documentary or artistic style, he used it to observe everyday life in Vancouver, paving the way for the New Color movement. An extensive monograph, Modern Color takes the reader through the photographic oeuvre of this German-born Canadian immigrant, telling the story of the streets as he observed them between the 1950s and late 1980s.
Immigrating to Canada from Stuttgart in 1952, Herzog worked as a medical photographer by day, using his spare time in the evenings and on weekends to stroll the streets with his camera observing, discovering and feeling his way under the skin of the city he described as "engagingly seedy and colorful." He worked exclusively with Kodachrome film⎯at the time considered an amateur product for home slide shows⎯captivated by its ability to reproduce details of color, texture and atmosphere. Though he has been working prolifically since the 1950s, Herzog's work was relatively unknown until 2007 when digital inkjets enabled him to print and exhibit his early photographs.
Street photography was not a thing at the time, but Herzog did it with passion and variety. Awash with vibrant color, complex, mysterious, exuberant and full of life, his images captured the grain of the city as it lived, worked, played and changed. His eye dwelled on the raw urban underbelly of the city on streets, alleyways, empty lots, backyards, storefronts, neon signs, billboards, cafes, crowds of people and their daily interactions with each other and the city around them. He preferred working-class neighborhoods, which he described as "unpredictable and full of chance." He once recalled, "I wanted to show the world the way it is." Characterized by a synesthetic quality and outsider's sensitivity, these images paint a rich and elegiac portrait of a lost era.
The most comprehensive publication on this important photographer to date, Modern Color brings together more than 230 images, many never before reproduced, and features essays by acclaimed authors David Campany, Hans-Michael Koetzle and artist Jeff Wall.
Fred Herzog's Modern Color can be purchased from Hatje Cantz for €38.00 in hardcover.
All photos by Fred Herzog. Images featured here are as follows: Jackpot, 1961 © Fred Herzog and Equinox Gallery; Boat Scrapers 1, 1964 © Fred Herzog and Equinox Gallery; and Ferry Barber Shop, 1959 © Fred Herzog and Equinox Gallery.


Guide to the Jeffrey S. Lehman Papers,2003-2005.
Jeffrey S. Lehman papers, 2003-2005.
Miscellaneous papers from the President's Office, including speeches. Also, "Reflections on the Call to Engagement," October 2004.
President of Cornell University, 2003-2005.
Restricted to permission of office of origin. Consult the University Archivist.
Jeffrey S. Lehman papers, #3-14-3395. Division of Rare and Manuscript Collections, Cornell University Library.
Foremost Benefactor Ceremony In Honor of Roy R. Payne, Jr.
Johnson School Hall of Honor Introduction for Roy H. Park Jr.
DVD of three speeches, Inauguration, October 16, 2003; Commencement, May 30, 2004; and the State of the University address, 10-29-2004.


text:
Under the leadership of Sheriff Ken Stolle, the 500+ appointees of the Virginia Beach Sheriff's Office work for the public safety and betterment of Virginia Beach by operating the Correctional Center, providing Courthouse security, serving civil paperwork and volunteering in the community. We accomplish our mission through our core values: commitment, integrity, compassion and professionalism.
The Virginia Beach Sheriff's Office is a constitutional office that operates under Virginia §15.2-1609. The Sheriff is elected by the voters to four-year terms.
Services of the Sheriff's Office
The services provided by the Sheriff's Office are divided into two primary divisions:
Correctional Operations - Responsible for the operation of the Correctional Center, including providing for the safety, security, care and custody of persons admitted to the facility. Commands the Emergency Response Team. Court Support/Civil Process/Transportation - Provides security and order in the various Virginia each courts and processes and serves civil documents received from the courts. Transports juvenile and adult offenders to and from court as well as local and state correctional facilities. Commands the Crisis Negotiations Team.
Correctional Administration - Provides for the feeding, recreation and medical care of inmates in addition to overseeing Sheriff's Office contracts.
Training - Provides staff training to include initial and ongoing in-service training.
Correctional Support - Processes arrestees for all law enforcement agencies utilizing the VBCC. This involves fingerprinting and photographing each arrestee. This is a contract between the City and the Sheriff's Office and is 100% locally funded. Keeps inmate records, handles laundry, property and mail for the jail, and runs the Reentry and Alternative Sentencing programs.
Community Outreach - Coordinates community outreach and volunteer initiatives and commands the Honor Guard, Recruitment Team and Auxiliary Deputy Program.
Criminal Intelligence Unit/Classification - Investigates and prosecutes any criminal misconduct or rule violation committed by those persons incarcerated within the VBCC. Also assists with other law enforcement investigations. Is responsible for all inmate housing assignments as well as screening inmates for work and life programs, such as the GED and Substance Abuse programs. Commands the K9 Unit. Maintains compliance with Prison Rape Elimination Act (PREA) standards.
Maintenance/Workforce - Is responsible for all maintenance functions of the Correctional Center and Law Enforcement Training Academy. Takes low-risk offenders out into the community to provide landscaping and maintenance services for the City. In charge of projects, procurement and Information Technology.
Food Service - Operates the Canteen and the Inmate and Staff kitchens.
Administration - Provides human resources and financial administration for the office. Includes the Public Information Office, which responds to requests from the public and the media, communicates with the office and manages its social media accounts.
Emergency Planning/Accreditation - Oversees Sheriff's Office emergency operations, maintains compliance with state accreditation standards, develops and implements office policies and procedures, and conducts grant research.
Professional Standards - Investigates complaints and incidents involving appointees of the Sheriff's Office and ensures compliance with polices and procedures, safety standards and the Americans with Disabilities Act. Administers the Naloxone program.


MILTON, N.Y. – Led by overall individual champion Mark McClenahan, SUNY College of Environmental Science and Forestry posted a perfect score to capture the 2017 Hudson Valley Intercollegiate Athletic Conference Men's Cross Country Championship on Sunday afternoon at the Hudson Valley Sportsdome.
The Mighty Oaks had eight harriers in the top 10 and 12 earned medalist honors to win the team title for the third straight season.
Despite a steady rain throughout the race, freshman McClenahan covered the 8-kilometer course in 28:22 to win the individual title and was later named Runner of the Year in post-race ceremonies. Following McClenahan were Tom Keenan (28:36) and Anders Proft (28:50) and juniors Ethan Appelgren (28:57) and Peter Rawinski (29:36) to complete the perfect score of 15 as just 1:14 separated the Mighty Oaks first and fifth runners.
Albany College of Pharmacy and Health Sciences sophomore Colin Sirard (29:59, 7th) and freshman Kevin Le (30:47, 10th) earned top 10 finishes to lead the Panthers (84 points) to runner-up honors for the fifth straight year. Pratt Institute (96 points) came in third place, followed by The King's College (115 points), Vaughn College (129 points), Berkeley College (131 points), The Culinary Institute of America (146 points) and The College of New Rochelle (216 points) in the team competition.


text:
Q: Sci-fi movie about a girl whose classmates lock her in a room, because they were jealous that she was the only one of them who ever saw the Sun What sci-fi movie has a girl who saw the Sun, but her classmates lock her in a room? From what I recall, she was the only one of them who ever saw the Sun, so they were jealous. During the short period when everyone is able to see the Sun, they lock her away.
It was sci-fi. I think they might have been on a space station, though I can't recall exactly. It was English language. I saw it in the 1990s, but it might have been considerably older. It had a very sad ending: she didn't get to see the Sun for another... year? Seven years? Something like that.

A: It was called All Summer in a Day.

A: Ray Bradbury's All Summer in a Day has been adapted for television on several occasions. It sounds like you're referring here to the 1982 short film of the same name, directed by Ed Kaplan.

This version is from 2014, directed by Kody Cunningham.

The story is a popular choice for budding high-school filmmakers because all you need is a classroom full of kids, a watering can, a spotlight and a closet.