text:
import { FocusOrigin } from '@angular/cdk/a11y';
import { coerceArray } from '@angular/cdk/coercion';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, OnDestroy, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';
import { BehaviorSubject, combineLatest, Subject } from 'rxjs';
import { distinctUntilChanged, takeUntil } from 'rxjs/operators';
import { InfiniteScrollDirective, InfiniteScrollLoadedEvent, InfiniteScrollLoadFunction } from '../../directives/infinite-scroll/index';
import { PopoverOrientation, PopoverOrientationListener, PopoverOrientationService } from '../../services/popover-orientation/popover-orientation.service';
import { TypeaheadOptionEvent } from './typeahead-event';
import { TypeaheadOptionApi } from './typeahead-option-api';
import { TypeaheadOptionContext } from './typeahead-option-context';
import { TypeaheadVisibleOption } from './typeahead-visible-option';
import { TypeaheadService } from './typeahead.service';

let uniqueId = 0;

@Component({
    selector: 'ux-typeahead',
    templateUrl: 'typeahead.component.html',
    providers: [TypeaheadService, PopoverOrientationService],
    changeDetection: ChangeDetectionStrategy.OnPush,
    host: {
        '[class.open]': 'open',
        '[style.maxHeight]': 'maxHeight'
    }
})
export class TypeaheadComponent<T = any> implements OnChanges, OnDestroy {

    @ViewChild(InfiniteScrollDirective) infiniteScroll: InfiniteScrollDirective;

    /** Define a unique id for the typeahead */
    @Input() @HostBinding('attr.id') id: string = `ux-typeahead-${++uniqueId}`;

    /** Define the options or infinite load function */
    @Input() options: T[] | InfiniteScrollLoadFunction;

    /** Define the filter text */
    @Input() filter: string;

    /** Specify if the typeahead is open */
    @Input()
    get open() {
        return this._service.open$.getValue();
    }
    set open(value: boolean) {
        this._service.open$.next(value);
    }

    /** Extract the test to display from an option */
    @Input() display: ((option: T) => string) | string;

    /** Extract the key from an option */
    @Input() key: ((option: T) => string) | string;

    /** Specify which options are disabled */
    @Input() set disabledOptions(options: T | T[]) {
        this._disabledOptions = coerceArray(options);
    }

    get disabledOptions(): T | T[] {
        return this._disabledOptions;
    }

    _disabledOptions: T[] = [];

    /** Specify the drop direction */
    @Input() dropDirection: 'auto' | 'up' | 'down' = 'down';

    /** Specify the max height of the dropdown */
    @Input()
    get maxHeight(): string {
        return this._maxHeight;
    }

    set maxHeight(maxHeight: string) {
        this._maxHeight = maxHeight;
        if (this.maxHeight.endsWith('px')) {
            this._popoverOrientationListener.maxHeight = Number(this.maxHeight.slice(0, -2));
        }
    }

    /** Specify the aria multi selectable attribute value */
    @Input()
    multiselectable: boolean = false;

    /** Specify the aria label for the listbox */
    @Input()
    ariaLabel: string;

    /** Specify if the dropdown should appear when the filter appears */
    @Input() openOnFilterChange: boolean = true;

    /** Specify the page size */
    @Input() pageSize: number = 20;

    /** Specify if we should select the first item by default */
    @Input() selectFirst: boolean = true;

    /** Specify if we should select an item on enter key press */
    @Input() selectOnEnter: boolean = false;

    /** Specify the loading state */
    @Input() loading = false;

    /** Specify a custom loading template */
    @Input() loadingTemplate: TemplateRef<void>;

    /** Specify a custom option template */
    @Input() optionTemplate: TemplateRef<TypeaheadOptionContext<T>>;

    /** Specify a custom template to display when there are no options */
    @Input() noOptionsTemplate: TemplateRef<void>;

    /** Specify the currently active item */
    @Input() set active(item: T) {
        this.activeKey = this.getKey(item);
    }

    /**
     * An initial list of recently selected options, to be presented above the full list of options.
     * Bind an empty array to `recentOptions` to enable this feature without providing an initial set.
     */
    @Input() recentOptions: ReadonlyArray<T>;

    /** Maximum number of displayed recently selected options. */
    @Input() recentOptionsMaxCount: number = 5;

    @Input() recentOptionsHeadingTemplate: TemplateRef<void>;

    @Input() optionsHeadingTemplate: TemplateRef<void>;

    /** Emit when the open state changes */
    @Output() openChange = new EventEmitter<boolean>();

    /** Emit when an option is selected */
    @Output() optionSelected = new EventEmitter<TypeaheadOptionEvent<T>>();

    /** Emit whenever a highlighted item changes */
    @Output() highlightedChange = new EventEmitter<T>();

    /** Emit the highlighted element when it changes */
    @Output() highlightedElementChange = new EventEmitter<HTMLElement>();

    /** Emits when recently selected options change.*/
    @Output() recentOptionsChange = new EventEmitter<ReadonlyArray<T>>();

    activeKey: string = null;
    clicking = false;
    hasBeenOpened = false;
    highlighted$ = new BehaviorSubject<TypeaheadVisibleOption<T>>(null);
    loadOptionsCallback: InfiniteScrollLoadFunction;
    visibleOptions$ = new BehaviorSubject<TypeaheadVisibleOption<T>[]>([]);
    visibleRecentOptions$ = new BehaviorSubject<TypeaheadVisibleOption<T>[]>([]);
    allVisibleOptions: TypeaheadVisibleOption<T>[] = [];

    get highlighted(): T {
        const value = this.highlighted$.getValue();
        return value ? value.value : null;
    }

    /** Store the list of recent items */
    private _recentOptions: T[];

    private _onDestroy = new Subject<void>();

    private _popoverOrientationListener: PopoverOrientationListener;

    private _maxHeight = '250px';

    @HostBinding('class.drop-up')
    dropUp: boolean;

    optionApi: TypeaheadOptionApi<T> = {
        getKey: this.getKey.bind(this),
        getDisplay: this.getDisplay.bind(this),
        getDisplayHtml: this.getDisplayHtml.bind(this),
        getDisabled: this.isDisabled.bind(this)
    };

    constructor(
        public typeaheadElement: ElementRef,
        private _changeDetector: ChangeDetectorRef,
        popoverOrientation: PopoverOrientationService,
        private _service: TypeaheadService
    ) {
        this.loadOptionsCallback = (pageNum: number, pageSize: number, filter: any) => {
            if (typeof this.options === 'function') {
                // Invoke the callback which may return an array or a promise.
                const arrayOrPromise = this.options(pageNum, pageSize, filter);

                // Map the results to an array of TypeaheadVisibleOption.
                return Promise.resolve(arrayOrPromise).then(newOptions => {
                    if (!Array.isArray(newOptions)) {
                        return newOptions;
                    }

                    return this.getVisibleOptions(newOptions, '');
                });
            }
            return null;
        };

        this._service.open$
            .pipe(distinctUntilChanged(), takeUntil(this._onDestroy))
            .subscribe(isOpen => {
                this.openChange.emit(isOpen);

                if (isOpen) {
                    this.hasBeenOpened = true;
                    this.initOptions();
                }
            });

        this._popoverOrientationListener = popoverOrientation.createPopoverOrientationListener(this.typeaheadElement.nativeElement, this.typeaheadElement.nativeElement.parentElement);

        this._popoverOrientationListener.orientation$.pipe(takeUntil(this._onDestroy))
            .subscribe(direction => {
                if (this.dropDirection === 'auto') {
                    this.dropUp = direction === PopoverOrientation.Up;
                }
            });

        this.highlighted$.pipe(takeUntil(this._onDestroy)).subscribe(next => {
            this.highlightedChange.emit(next ? next.value : null);
        });

        combineLatest([this.visibleOptions$, this.visibleRecentOptions$])
            .pipe(takeUntil(this._onDestroy))
            .subscribe(([visibleOptions, visibleRecentOptions]) => {
                this.allVisibleOptions = [...visibleRecentOptions, ...visibleOptions];
            });

        combineLatest([
            this._service.open$,
            this._service.highlightedElement$,
            this.visibleOptions$
        ])
            .pipe(takeUntil(this._onDestroy))
            .subscribe(([open, highlightedElement, visibleOptions]) => {
                this.highlightedElementChange.emit(
                    open && visibleOptions.length > 0 ? highlightedElement : null
                );
            });
    }

    ngOnChanges(changes: SimpleChanges): void {
        // Open the dropdown if the filter value updates
        if (changes.filter) {
            if (this.openOnFilterChange && changes.filter.currentValue && changes.filter.currentValue.length > 0) {
                // if the dropdown item was just selected, and we set the filter value to match the
                // selected value then open will have also just been set to `false`, in which case we do
                // not want to set open to `true`
                if (
                    changes.open &&
                    changes.open.previousValue === true &&
                    changes.open.currentValue === false
                ) {
                    return;
                }

                // show the dropdown
                this.open = true;
            }
        }

        // Cut off recentOptions at recentOptionsMaxCount
        if (changes.recentOptions || changes.recentOptionsMaxCount) {
            this._recentOptions = this.recentOptions
                ? this.recentOptions.slice(0, this.recentOptionsMaxCount)
                : undefined;

            if (changes.recentOptionsMaxCount) {
                // Avoid ExpressionChangedAfterChecked error
                setTimeout(() => {
                    this.recentOptionsChange.emit(this._recentOptions);
                });
            }
        }

        if (changes.dropDirection) {
            if (changes.dropDirection.currentValue === 'auto') {
                this.dropUp = this._popoverOrientationListener.orientation$.getValue() === PopoverOrientation.Up;
            } else {
                this.dropUp = changes.dropDirection.currentValue === 'up';
            }
        }

        if (changes.options && changes.options.firstChange === false) {
            this.infiniteScroll.reset(false);
            this.infiniteScroll.reload();
        }

        // Re-filter visibleOptions
        this.updateOptions();
    }

    ngOnDestroy(): void {
        this._onDestroy.next();
        this._onDestroy.complete();
        this._popoverOrientationListener.destroy();
    }

    @HostListener('mousedown', ['$event', '$event.target'])
    mousedownHandler(event: MouseEvent, target: HTMLElement): void {
        this.clicking = true;

        /**
         * Chrome Bug Workaround: (https://bugs.chromium.org/p/chromium/issues/detail?id=6759)
         * In Chrome, if the typeahead is within a tabbable element, e.g. it has a parent with
         * `tabindex="0"` like our side panel has, then clicking on a scrollbar will remove
         * focus from the input element.
         *
         * To avoid this we can determine if the mousedown event occurred within the scrollbar
         * region of the typeahead and if so preventDefault which will stop the input
         * from losing focus
         */
        if (event.clientX >= target.clientWidth || event.clientY >= target.clientHeight) {
            event.preventDefault();
        }
    }

    @HostListener('mouseup')
    mouseupHandler(): void {
        this.clicking = false;
    }

    optionMousedownHandler(event: MouseEvent): void {
        // Workaround to prevent focus changing when an option is clicked
        event.preventDefault();
    }

    optionClickHandler(_event: MouseEvent, option: TypeaheadVisibleOption<T>): void {
        this.select(option, 'mouse');
    }

    /**
     * Returns the unique key value of the given option.
     */
    getKey(option: T): string {
        if (typeof this.key === 'function') {
            return this.key(option);
        }
        if (typeof this.key === 'string' && option && option.hasOwnProperty(this.key)) {
            return option[this.key];
        }
        return this.getDisplay(option);
    }

    /**
     * Returns the display value of the given option.
     */
    getDisplay(option: T): string | undefined {
        if (typeof this.display === 'function') {
            return this.display(option);
        }

        if (typeof this.display === 'string' && option && option.hasOwnProperty(this.display)) {
            return option[this.display];
        }

        if (typeof option === 'string') {
            return option;
        }
    }

    /**
     * Returns the display value of the given option with HTML markup added to highlight the part which matches the current filter value.
     * @param option
     */
    getDisplayHtml(option: T): string {
        const displayText = this.getDisplay(option);

        // getDisplay may return undefined in certain cases
        if (!displayText) {
            return '';
        }

        let displayHtml = displayText
            .replace(/&/g, '&')
            .replace(/</g, '<')
            .replace(/>/g, '>');

        if (this.filter) {
            const length = this.filter.length;
            const matchIndex = displayText
                .toLowerCase()
                .indexOf(this.filter.toLowerCase());
            if (matchIndex >= 0) {
                const highlight = `<span class="ux-filter-match">${ displayText.substr(matchIndex, length) }</span>`;
                displayHtml =
                    displayText.substr(0, matchIndex) +
                    highlight +
                    displayText.substr(matchIndex + length);
            }
        }
        return displayHtml;
    }

    /**
     * Returns true if the infinite scroll component should load
     */
    isInfiniteScroll(): boolean {
        return typeof this.options === 'function';
    }

    /**
     * Selects the given option, emitting the optionSelected event and closing the dropdown.
     */
    select(option: TypeaheadVisibleOption<T>, origin?: FocusOrigin): void {
        if (!this.isDisabled(option.value)) {
            this.optionSelected.emit(
                new TypeaheadOptionEvent(option.value, origin)
            );
            this.highlighted$.next(null);
            this.open = false;
            this.addToRecentOptions(option.value);
        }
    }

    addToRecentOptions(value: T) {
        if (this._recentOptions) {
            this._recentOptions = [
                value,
                ...this._recentOptions.filter(
                    recentOption => recentOption !== value
                )
            ].slice(0, this.recentOptionsMaxCount);

            this.recentOptionsChange.emit(this._recentOptions);
        }
    }

    /**
     * Returns true if the given option is part of the disabledOptions array.
     */
    isDisabled(option: T): boolean {
        return Array.isArray(this.disabledOptions) ?
            this.disabledOptions.some(selectedOption => this.getKey(selectedOption) === this.getKey(option)) : false;
    }

    /**
     * Set the given option as the current highlighted option, available in the highlightedOption parameter.
     */
    highlight(option: TypeaheadVisibleOption<T>): void {
        if (!this.isDisabled(option.value)) {
            this.highlighted$.next(option);
            this._changeDetector.detectChanges();
        }
    }

    /**
     * Increment or decrement the highlighted option in the list. Disabled options are skipped.
     * @param d Value to be added to the index of the highlighted option, i.e. -1 to move backwards, +1 to move forwards.
     */
    moveHighlight(d: -1 | 1): T {
        const highlightIndex = this.indexOfVisibleOption(this.highlighted$.getValue());
        let newIndex = highlightIndex;
        let disabled = true;
        let inBounds = true;
        do {
            newIndex = newIndex + d;
            inBounds = newIndex >= 0 && newIndex < this.allVisibleOptions.length;
            disabled = inBounds && this.isDisabled(this.allVisibleOptions[newIndex].value);
        } while (inBounds && disabled);

        if (!disabled && inBounds) {
            this.highlight(this.allVisibleOptions[newIndex]);
        }

        return this.highlighted;
    }

    selectHighlighted(): void {
        if (this.highlighted$.getValue()) {
            this.select(this.highlighted$.getValue(), 'keyboard');
        }
    }

    /**
     * Set up the options before the dropdown is displayed.
     */
    initOptions(): void {
        // Clear previous highlight
        this.highlighted$.next(null);
        if (this.selectFirst) {
            // This will highlight the first non-disabled option.
            this.moveHighlight(1);
        }
    }

    /**
     * Display the first item as highlighted when there are several pages
     */
    onLoadedHighlight(event: InfiniteScrollLoadedEvent): void {
        if (this.selectFirst && this.options && event.pageNumber === 0) {
            // This will highlight the first non-disabled option.
            this.moveHighlight(1);
        }
    }

    /**
     * Update the visibleOptions and visibleRecentOptions arrays with the current filter.
     */
    updateOptions(): void {
        const normalisedInput = (this.filter || '').toLowerCase();

        // Create new visibleOptions only if `options` is not a function
        if (typeof this.options === 'object') {
            this.visibleOptions$.next(this.getVisibleOptions(this.options, normalisedInput));
        }

        this.visibleRecentOptions$.next(this.getVisibleOptions(this._recentOptions, normalisedInput, true));

        this.initOptions();

        this._changeDetector.detectChanges();
    }

    /**
     * Convert a set of raw options into a filtered list of `TypeaheadVisibleOption` objects.
     * @param options Set of raw options
     * @param filter The filter expression
     * @param isRecentOptions Whether `options` is a set of recent options
     */
    private getVisibleOptions(options: T[], filter: string = '', isRecentOptions: boolean = false): TypeaheadVisibleOption<T>[] {
        if (options) {
            return options
                .filter(option => this.getDisplay(option).toLowerCase().indexOf(filter) >= 0)
                .map(value => ({
                    value,
                    key: this.getKey(value),
                    isRecentOption: isRecentOptions
                }));
        }

        return [];
    }

    /**
     * Return the index of the given option in the allVisibleOptions array.
     * Returns -1 if the option is not currently visible.
     */
    private indexOfVisibleOption(option: TypeaheadVisibleOption<T>): number {
        if (option) {
            return this.allVisibleOptions.findIndex(el => {
                return (
                    el.key === option.key &&
                    el.isRecentOption === option.isRecentOption
                );
            });
        }

        return -1;
    }
}


text:
L-3 Communications Mission Integration Division Contract Details
Defense contract under the Air Force awarded to L-3 Communications Mission Integration Division on 8/27/2015.
Contractor: L-3 Communications Mission Integration Division
L-3 Communications Mission Integration Division, Greenville, Texas, has been awarded a $8,207,261 cost-plus-fixed-fee contract for enhanced electronic intelligence exploitation processor software, hardware, and reports; Nyquist folding receiver software and reports; and Timberline II software, hardware and reports. Contractor will research, develop, and demonstrate enabling technologies and algorithms for real-time and near-real time automatic detection and measurement, processing, and exploitation of radio frequency emissions in support of electronic intelligence. Work will be performed at Greenville, Texas, and is expected to be complete by Aug. 27, 2020. This award is the result of a competitive acquisition and six offers were received. Fiscal 2015 research, development, test and evaluation funds in the amount of $213,256 are being obligated at the time of award. Air Force Research Laboratory, Rome, New York, is the contracting activity (FA8750-15-C-0064).
View all contracts that include "L-3 Communications Mission Integration Division" in the MiC database.

redpajama_set_name: RedPajamaCommonCrawl


The Forty & Eight has 35,000 member Voyageurs worldwide. Voiture Locales meet at Legion Posts or at their own Chateau (club house). Membership is invitation only to honorably discharged veterans and active duty personnel.
One (1) $750.00 scholarship will be awarded annually ($250.00 per semester for 3 semesters) to a student pursuing a degree in Nursing at Glen Oaks Community College.
Student must be accepted into the Level I or Level II Nursing program at Glen Oaks Community College.
Student must be enrolled full-time (12 credit hours or more) or the enrollment level pursuant to meeting the Level I or Level II course requirements each semester.
Financial circumstances, academic ability, and career goals will be taken into consideration.
Student must maintain a 3.0 or higher cumulative gpa each semester while receiving the scholarship.
Student must be enrolled full-time (per the eligibility criteria above) each semester receiving the scholarship.


Study Biblical and ancient history together as a family!
This handbook walks you through the accounts of Adam to Moses, including a study of Ancient Egypt so students will get a picture of the world Joseph and Moses lived in. It details Scripture passages, living books, Book of Centuries entries, narration ideas, geography ideas, additional assignments for older students, and optional hands-on activities to help you save time and foster learning for all your students.
Please Note: This edition uses the Oxford First Ancient History book in several of its lessons. That book has gone out of print. We have available a revised third edition of lesson plans for those who cannot get or do not want to use the Oxford book. The new edition incorporates Ancient Egypt and Her Neighbors, features new geography lessons, and includes other suggestions from our readers. We will continue to make this older second edition available as an electronic download, so you will be able to use whichever set of lesson plans works best for your family.
If you would like to use this older second edition of lesson plans but substitute Ancient Egypt and Her Neighbors in place of the Oxford book, here are some suggestions for that possibility.


The ea-Geier is a multi-user-multi-client system. Which means, the system can handle the accounting of multiple companies (clients) with access for multiple users at the same time. e.g. an entrepreneur might want to do separated accounting for his or her company and and for his or her personal accounting, thus he or she needs two "clients"; or an accountant uses the system for multiple customers and adds a client for each customer.
First you need access to be able to work with the ea-Geier.
In the navigation bar (left) of the main screen of the ea-Geier click on New Account. If this link is not available it could be that you are already logged in. In that case you might want to log out first.
Please enter your name, your email address and a password.
The email address will be your user name. Should you forget your password, the system will create a new password and send it to this email address. Therefore, please use a valid email address.
As soon as you have an account, you can create a (or multiple) client(s), or you can ask the owner of an existing client to grant access to you.
Please log in. In the navigation bar (left) click first on Configuration and then on Client. If you have no account yet, please create one first.
Just enter the name of the client and click on Send.
If you need access to an already existing client, please ask the owner on this client to grant access to you.
In the navigation bar (left) click first on Configuration, then on Client, and choose the required client.
Enter the email address of the user, you want to grant access to your client. If this email address is not registered already, you might to create the account yourself and provide the login data to the user.
Of course, you can remove users from your access lists any time.
Choose the email address of the user which you want to remove from your access list. Click on Remove. Now this user does not have access to your client any more.
Log in with your administration account and choose in the navigation bar (left) Configuration and System.
Enter the data of your mail server under Mail-Server and Mail-Server Port. Mail Sender is used as sender address when the system posts emails.
If you want to store the client data in a separate database, you can define the location and access data to that database under Client Database using the format driver://user:password@server/database. If you want to use the original database this field has to be empty. Attention: This setting is used only for future not already existing clients.
In the navigation bar (left) choose Configuration and User.
Attention: Please enter a valid email address. Should you forget your password, the system will send a new password to this email address.
Lines per page defines, how many lines are displayed in tables.
The language defines the vocabulary used in the ea-Geier.
Choose the data format you want to use to enter the dates of your records. There are two formats available: DD.MM.YYYY (e.g. 30.04.2007) and YYYY-MM-DD (e.g. 2007-04-30).
With accounts, income and expenditure categories you can define the categories for payment type, income and expenditure distributors. Use a comma (,) as delimiter. Attention: If you delete a category with assigned records, the system will continue to use this category till all those records have been reassigned.
With VAT rates you can defined the tax rates used in the system. Numerical values are used to automatically calculate net and tax values from gross values and vice versa. Use a comma (,) as delimiter. For non-integer rates please use a dot (.) e.g. for Switzerland 7.6,3.6,2.4,0,x. Attention: Assigned rates stay valid till all records have been reassigned.
The number format used in the system is defined by decimal places and decimal point. Attention: If you change the number of decimal places after you started entering records, there could be rounding errors. e.g. if you have entered originally 100.00 gross and 8.33 net and you change the system to three decimal places, the new values will be 100.000 gross and 8.330 net. However, the correct values for 20 % VAT would be either 100.000 gross and 8.333 net or 9.996 gross and 8.330 net.
The mileage rate is the default value to calculate the mileage allowance for the traveling expenses. This value can be changed individually for each single travel. Attention: Please enter the value using a dot as decimal point.


text:
Q: Tyescript: How to define typings for Strongly typed Array of Array There is already a similar question, only difference is that I want to declare the typings in a d.ts file instead of declaring every time.
I have been writing typings like
interface SomeType {
 key1: string[];
 key2: number;
}

which are Objects with named properties type.

Now I need an Array with two sub-Arrays type,
i.e (something like):
 TheType : [string[], string[]]

So that I can write
let myVar: TheType;

instead of
let myVar: [string[], string[]];

I've Tried to play with namespace, module, declare var with no luck, I can explain the problems with them if required, but I just feel that either I'm missing something very obvious or it's just not possible ?!
Note: workarounds !needed, thanks!

A: I would mix an interface extending Array with a generic to create a NestedArray type, which you can use with any type. Having a nested array type will make your inline types more readable:
interface NestedArray<T> extends Array<Array<T>> {}

var x: NestedArray<string> = [['a', 'b'], ['c', 'd'], ['e', 'f']];

var y = x[0]; // y is Array<string>
var z = x[0][1]; // z is string

Use with other types:
var x: NestadArray<Customer> = [];

redpajama_set_name: RedPajamaStackExchange


Champ Bailey and Chris Harris Jr. are reversing roles down the stretch.
Bailey is playing in the slot. Harris is playing outside. And the protege is giving tips to his mentor.
Bailey has missed 11 games this season with a nagging sprained left foot. When he returned to action Sunday at Houston for the first time in five weeks, defensive coordinator Jack Del Rio kept Harris at left cornerback and used Bailey in the specialty packages as the nickel and dime cornerback.
Although Bailey has lined up in the slot at times throughout his illustrious career when shadowing a top-flight receiver, playing it full-time is a new experience for the perennial Pro Bowl cornerback who's in his 15th NFL season.
So, Bailey found himself seeking advice from Harris, an undrafted third-year pro he's taken under his wing.
Harris certainly isn't shy about sharing tips.
"Oh, yeah, I mean, I know the position so well and I consider myself the best at it, so I definitely can give him some of my little tips at it," Harris said.
Even to a man many consider the pre-eminent cornerback in the game's history.
With Dominique Rodgers-Cromartie on the right side and Harris on the left, the slot seems the perfect role to ease Bailey back into action. He played 35 of 67 snaps against the Texans, last week, enough to give him some confidence in his foot but not enough wear him down.
"I didn't play as many snaps as I have in the past, so it felt pretty good to get my feet wet a little bit," said Bailey, who has played just 12 quarters this season.
The Broncos aren't saying whether they'll switch Bailey and Harris for the playoffs, but this certainly is giving them the flexibility to do so based on matchups they'll see in January.
Bailey might get even fewer snaps Sunday when the Broncos (12-3) try to wrap up the top seed in the AFC playoffs with a win at Oakland (4-11) because rookie cornerback Kayvon Webster figures to play in the dime packages even though he'll have a cast on his right thumb following surgery on Dec. 13 in which six screws, five pins and nine stitches were needed in an operation to repair two fractures.
Harris has started 10 games at left cornerback for Bailey this season and another on the right side when Dominique Rodgers-Cromartie was out with a shoulder injury, and he's taken a liking for playing outside.
Except when he's giving advice to his mentor on the inside.
Notes: Harris was named the seventh annual winner of the Darrent Williams Good Guy Award. … As expected, WR Wes Welker was ruled out for Sunday's game. He hasn't played since suffering his second concussion in four weeks on Dec. 8. … DE Derek Wolfe returned to practice after missing a day with the flu. He hasn't played since a seizure-like episode last month and will also miss the Oakland game.


text:
What our partners say
Proud partner logo
Welcome to NewcastleGateshead training
NewcastleGateshead visitor welcome checklist
Your Network story upload
Digital Rate Card
Clash diary
Tourism stats reporting
About NewcastleGateshead
NGI Solutions
Comics at Seven Stories
Brand new comic exhibition launches at Seven Stories
Comics: Explore and Create Comic Art at Seven Stories
Seven Stories, The National Centre for Children's Books, Newcastle, NE1 2PQ
21 July 2017 – June 2018
On 21 July, Seven Stories, The National Centre for Children's Books in Newcastle – launch their brand-new exhibition celebrating the creativity of comic book art. Gathering together an eclectic mix of original iconic comic art, alongside work by current children's comic makers, this colourful family-friendly exhibition will run for a year before embarking on a countrywide tour.
The interactive exhibition will immerse young people and comic book fans of all ages in the stimulating and imaginative world of children's comics before providing them with an opportunity to create their very own settings, characters and stories using playful props and costumes.
Visitors will also have the rare opportunity to see influential British comic icons such as Desperate Dan and Dennis the Menace as they were drawn in the 1940s and 50s, along with old friends Oor Wullie, Minnie the Minx and Roy of the Rovers.
Other famous characters being featured include Captain America, Wonder Woman, Superman and Hulk as drawn by Ian Churchill, the British artist and producer of comics for America's two largest comic corporations – Marvel and DC comics.
Current British comic creators including Kate Brown, Jamie Smart and Laura Ellen Anderson will provide a unique insight into the creative process behind comic book making, featuring storyboards, sketches and 3D models.
Gill Rennie, Senior Curator from Seven Stories, said:
"Getting into comics is a great way to unleash your inner creativity. You can see from the amazingly diverse artwork on display in the exhibition that there are no limits – your story can go anywhere!
"It is thrilling to have been able to bring together artwork for such stars as Dennis the Menace and Superman. The skill and dedication of British comic artists through the years is truly inspirational."
Just some of the fun, hands-on activities around the gallery include a random word generator, character creator, a giant roulette spinner to select comic settings, and a host of props, objects and special devices to inspire and create comic ideas. Visitors are also welcome to pull up a chair to read and share comics from Seven Stories' very own comic book newsagent.
Throughout the opening weekend (22-23 July), families are invited to take part in fancy dress competitions, with the chance to win copies of top comics including The Beano and The Phoenix.
Exhibition supported by Wood Group and the Garfield Weston Foundation
Newcastle (a city on the north bank of the River Tyne) and Gateshead (a town on the south bank of the River Tyne) have been transformed into a single cultural and cosmopolitan visitor destination: NewcastleGateshead.
NewcastleGateshead Initiative markets NewcastleGateshead on a national and international stage; its mission is to inspire people to visit, and to live, learn, work and invest here.
GX Project
Visit NewcastleGateshead
Invest Newcastle
NewcastleGateshead Convention Bureau
Northern Voice research community
Newcastle Ambassador Programme
© Copyright NewcastleGateshead Initiative. All Rights Reserved.	| Site Map
This website uses cookies. By continuing, you agree to their use. Find out more, including how to control cookies.


48 finely detailed, perfectly scaled parts, assemble into a superb 12 inch high model of a fully developed human skeleton. This has freedom of movement in jawbone and most joints.
1999 - With Glow in the dark paint was introduced.


Fill in the form below with your information and the item(s) you are looking to create. We will match you with manufacturers in our database and the ones who are interested in your project will contact you within 24 hours.
What Best Describes the Person Filling in this Form?


text:
2015 Sondheim Finalists announced!
The 2015 Sondheim Award Finalists have been announced! Congratulations to the following artists:
Mequitta Ahuja makes large, figurative paintings and works on paper that employ Indian painting traditions and reference her African-American and East Indian background. Ahuja has an extensive exhibition history that includes shows at The Studio Museum in Harlem (New York, NY, 2010, 2011, 2012), the Smithsonian National Portrait Gallery (Washington, DC, 2009, 2012), The Museum of Fine Arts Houston (Houston, TX, 2008), The Brooklyn Museum (Brooklyn, NY, 2007), and the Museum of Contemporary Art Chicago (Chicago, IL, 2005). Additionally, she has an upcoming exhibit of seven works at the Saatchi Gallery (London, UK, 2015). Her artwork is in the collections of the Minneapolis Institute of Arts (Minneapolis, MN), the Philadelphia Museum of Art (Philadelphia, PA), and the Urlich Museum (Wichita, KS), among others. An artists' residency at the Maryland Institute College of Art brought her to Baltimore in 2011. Here she received a Maryland State Arts Council Individual Artist Award in 2013, and is also a recipient of both a Louis Comfort Tiffany Award (2011) and a Joan Mitchell Award (2009). Ahuja received her Masters of Fine Art from the University of Illinois in 2003, and her Bachelors of Art from Hampshire College in 1998.
Zoe Charlton creates detailed drawings that explore the ironies of contemporary social and cultural stereotypes. She received her Masters of Fine Art from the University of Texas at Austin and participated in residencies at the Skowhegan School of Painting (Skowhegan, ME, 2001), Creative Alliance (Baltimore, MD, 2003), and ART342 (Fort Collins, CO, 2010). Her solo exhibitions include CONNERSMITH. (Washington, DC, 2013), the Delaware Center for the Contemporary Arts (Wilmington, DE, 2009), and Wendy Cooper Gallery (Chicago, IL, 2006). Her work has been included in national and international exhibitions including those at the Harvey B. Gantt Center for African-American Arts + Culture (Charlotte, NC, 2015), Crystal Bridges Museum of American Art (Bentonville, AR, 2014), Studio Museum Harlem (NYC, NY, 2012), Contemporary Arts Museum Houston (Houston, TX, 2000), the Zacheta National Gallery of Art (Warsaw, Poland 2006), and Haas & Fischer gallery (Zurich, Switzerland, 2006). She is a recipient of a Pollock-Krasner grant (2012) and a Rubys grant (2014). Charlton is an Associate Professor of Art at American University in Washington, DC, and is represented by CONNERSMITH., also located in Washington D.C.
Ben Kelley is a 2010 Masters of Fine Art graduate of the Rinehart School of Sculpture at the Maryland Institute College of Art. With motives driven by the smell of oak, high heels on glass, and the elegance of precision, Kelley re-contextualizes found objects with altered and fabricated structures. His works have been exhibited locally and nationally. These include solo exhibitions at CONNERSMITH. (Washington, DC, 2013); Open Space (Baltimore, MD, 2011); Patty and Rusty Rueff Gallery at Purdue University (West Lafayette, IN, 2009), among others. Group exhibitions include those at the Contemporary Museum (Baltimore, MD, 2012), Maryland Art Place (Baltimore, MD, 2011, 2010), Gallery Four (Baltimore, MD, 2010), Creative Alliance, (Baltimore, MD, 2009). Kelley has been awarded the Toby Devon Lewis Fellowship (2010) and the GoGo Emerging Artist Projects of CONNERSMITH., Washington, D.C. (2010-2013). His work has also been featured in such publications as the Washington Post, Washington City Paper, and the Baltimore City Paper.
Magnolia Laurie creates detailed paintings and installations that reference the sustained need to try and to build, with sometimes precarious results. She received her Bachelors of Art in Critical Social Thought from Mount Holyoke College and her Masters of Fine Art from the Mount Royal School of Art at the Maryland Institute College of Art. She is a former Hamiltonian Fellow (2009-2011) and was a Platform Artist in Washington, DC's (e)merge Art Fair (2012, 2013). She has been awarded fellowships and residencies from the Virginia Center for the Creative Arts (2013), the Jentel Foundation in Wyoming (2013), the Creative Alliance in Baltimore (2007-2010), and the Vermont Studio Center (2007). Magnolia has also been a recipient of a Mid-Atlantic Creative Fellowship in 2015, a Maryland State Arts Council Grant in 2011, and an Individual Artist Grant from the Creative Baltimore Fund in 2009. Her recent solo exhibitions include LANDMARK at frosch&portmann, what could hold us together also at frosch&portmann (2012), and with a tug and a hold at VisArts (Rockville, MD, 2012). Her work has also been featured in exhibitions at the Marianne Boesky Gallery (New York, NY 2014), Jordan Faye Contemporary (Baltimore, MD 2014, 2013), School 33 Art Center (Baltimore, MD, 2013, 2010) and the Kemper Museum of Contemporary Art (Kansas City, MO, 2011). Laurie is also a faculty member at the Maryland Institute College of Art and American University.
Jim Leach received a Bachelors of Fine Art from Kent State University in 2011, and a Masters of Fine Art from the Rinehart School of Sculpture at the Maryland Institute College of Art in 2014, where he was the recipient of the 2012-2014 Rinehart Fellowship. His sculpture has been in various solo and group exhibitions, including shows at the Creative Alliance (Baltimore, MD, 2014); Vox Populi (Philadelphia, PA 2014); Maryland Art Place (Baltimore, MD, 2014); The Gowanus Loft (Brooklyn, NY, 2013); and Legation, A Gallery (Cleveland, OH, 2012). He also has an upcoming solo exhibition scheduled at The Sculpture Center (Cleveland, OH). Leach has been reviewed in several periodicals including Cleveland's Scene Magazine, Washington DC's City Paper, and Baltimore's BmoreArt. In 2013, Leach was selected by Maryland Art Place for the 30: Thirty Creative Minds Under 30 lecture series and in 2014 to speak in Sculpture X: The Social Political Object.
Ryan Syrell is a painter whose work focuses on the interrelationship between cartooning, abstraction, perception, and the recollection of visual data. He received his Bachelors of Fine Art from the State University of New York at Purchase and has extensively exhibited and performed nationally. Syrell's work has recently been included in Baltimore Contemporary Cross-Section at the Silvermine Arts Center (New Canaan, CT, 2014) and the Washington Project for The Arts' Select 2014 at Artisphere (Arlington, VA) and the Marianne Boesky Gallery (New York, NY), as well as a solo exhibition entitled Roughed In at the John Fonda Gallery (Baltimore, MD, 2014). He has additionally been featured in exhibitions at Art Basel (Miami, FL, 2013), the Corcoran Gallery of Art (Washington, DC, 2013), Current Space (Baltimore, MD, 2013), the Everything Is Festival (Los Angeles, CA, 2012, 2010) and the Museum of Contemporary Art Detroit (2008), among several others. Catalogs featuring Ryan's essays are in the collections of the Los Angeles County Museum of Art library, the International Center for Photography library and the Indie Photobook Library. In 2014, Ryan also received an Individual Artist Award from the Maryland State Art Council for his work in sculpture.
Wickerham/Lomax is the collaborative name of artists Malcolm Lomax and Daniel Wickerham. Formerly known as DUOX, the two have been collaborating since 2009. Working across diverse media (sculpture, installation, websites, prints, video, performance), curatorial platforms, and institutional contexts, they have created a body of work at once context specific and also broadly engaged digitally. Their work is currently focused on the deviation from the digital space to the physical space. Wickerham & Lomax have exhibited widely in both Baltimore and New York, including solo exhibitions at Springsteen gallery (Baltimore, MD, 2015), AC Institute Art Gallery (New York, NY, 2015 – forthcoming), the New Museum (New York, NY, 2014), Artists Space (New York, NY, 2012) and Open Space (Baltimore, MD, 2009), as well as a solo exhibition at Link Art Center (Brescia, Italy, 2014). They have also been included in several group exhibitions, including Baltimore, Contemporary Cross Section at the Silvermine Arts Center (New Canaan, CT, 2014) and Baltimore Liste at The Contemporary Baltimore, MD, 2012). Wickerham and Lomax both received their Bachelors of Fine Art from the Maryland Institute College of Art in 2009.
Posted in: Sondheim Prize
Artist Resources / Calls for Artists
ArtPlace Baltimore
Baltimore Arts and Protest
Baltimore Mural Program
COVID-19 and the Arts
Free Fall Baltimore
Light City Baltimore
Love Letter to Baltimore
Open Studio Tour
PNC Transformative Art Prize
School 33 Art Center
Sondheim Prize
BOPA Links
Baltimore Book Festival
Baltimore Office of Promotion & The Arts
Bromo Seltzer Arts Tower
Vacants to Value – Baltimore City Homeownership Programs
© Copyright 2023 - BALTIMORE ARTS


text:
Why Christian Pulisic could extend Chelsea contract despite departure claims amid Graham Potter impact
Christian Pulisic of Chelsea and the United States national team has lauded the influence of new manager Graham Potter on the club, stating that the players have gotten off to a "fantastic start."
Since the introduction of the new head coach, the forward has had a greater impact on the squad and has performed better in games he has started.
The 24-year-old has previously failed to break into the team, displaying mobility without securing a specific position. Under Potter, he has played as a wide attacker and wingback, posing a significant threat on the sides and while driving towards the center.
His greatest influence to date was against Wolves, when a second-half goal propelled the team to a 3-0 victory. When asked about the paucity of playing time for the US men's international to that point, Potter stated, "He wants to play, he wants to help. But it's just basic maths isn't it? You can only pick 11, and there's 24 of them.
"So unless somebody gives me a solution it's just trying to work with the players, work with the group, understand that we need everybody, that's clear for me. Then it's about how do you get the players on the pitch in roles that suit them. And that role for Christian today [vs Wolves] was a good one, high wide left, he can attack the backline and he managed to score."
Chelsea defender Thiago Silva wanted by former club in a surprise move, confirms club president
Chelsea in turmoil as rumors of Jose Mourinho returning for a third stint at the club surface
Moises Caicedo to Arsenal transfer could hand Chelsea their £70 million man
Pulisic appeared to be on the verge of leaving the team in the summer, but under the new manager, his time could be prolonged.
Due to the fact that, according to 90Min, the Blues will be faced with a number of contract decisions in the future years, and the forward's contract could be extended as negotiations are planned.
This change in fortune may be attributable to Potter, on whom Pulisic heaped praise in an interview with the Guardian.
"He's been good. He's come in and the way he's worked with the players and communicated with the players has impressed me the most. We had a great start with him," said Pulisic.
"We've had some difficulties in recent weeks but I think he's working through it and I think the guys have received him quite well. We're excited. There's going to be good things going forward."
It remains to be seen whether he will continue at the club for a lengthy period of time. However, this shift in opinion may be attributable to Potter's impact thus far and in the near future.


Listed below are homes for sale in Heritage Manor, a neighborhood located in Crestwood, KY. Listings are updated multiple times a day from the GLAR MLS.
For more information about any of these Heritage Manor homes for sale, just click the "Request More Information" button when viewing the details of a property. We can provide you with disclosures, past sales history, dates and prices of homes recently sold nearby in Crestwood, and more.