#!/usr/bin/env python
# Copyright 2016 The Fuchsia Authors
#
# Licensed 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.

US_CITIES = [
'San Francisco',
'Los Angeles',
'New York',
'Seattle',
'Boston',
'Chicago',
'Houston',
'Philadelphia',
'Phoenix',
'Austin',
'Washington',
'Aberdeen',
'Abilene',
'Akron',
'Albany',
'Albuquerque',
'Alexandria',
'Allentown',
'Amarillo',
'Anaheim',
'Anchorage',
'Ann Arbor',
'Antioch',
'Apple Valley',
'Appleton',
'Arlington',
'Arvada',
'Asheville',
'Athens',
'Atlanta',
'Atlantic City',
'Augusta',
'Aurora',
'Bakersfield',
'Baltimore',
'Barnstable',
'Baton Rouge',
'Beaumont',
'Bel Air',
'Bellevue',
'Berkeley',
'Bethlehem',
'Billings',
'Birmingham',
'Bloomington',
'Boise',
'Boise City',
'Bonita Springs',
'Boulder',
'Bradenton',
'Bremerton',
'Bridgeport',
'Brighton',
'Brownsville',
'Bryan',
'Buffalo',
'Burbank',
'Burlington',
'Cambridge',
'Canton',
'Cape Coral',
'Carrollton',
'Cary',
'Cathedral City',
'Cedar Rapids',
'Champaign',
'Chandler',
'Charleston',
'Charlotte',
'Chattanooga',
'Chesapeake',
'Chula Vista',
'Cincinnati',
'Clarke County',
'Clarksville',
'Clearwater',
'Cleveland',
'College Station',
'Colorado Springs',
'Columbia',
'Columbus',
'Concord',
'Coral Springs',
'Corona',
'Corpus Christi',
'Costa Mesa',
'Dallas',
'Daly City',
'Danbury',
'Davenport',
'Davidson County',
'Dayton',
'Daytona Beach',
'Deltona',
'Denton',
'Denver',
'Des Moines',
'Detroit',
'Downey',
'Duluth',
'Durham',
'El Monte',
'El Paso',
'Elizabeth',
'Elk Grove',
'Elkhart',
'Erie',
'Escondido',
'Eugene',
'Evansville',
'Fairfield',
'Fargo',
'Fayetteville',
'Fitchburg',
'Flint',
'Fontana',
'Fort Collins',
'Fort Lauderdale',
'Fort Smith',
'Fort Walton Beach',
'Fort Wayne',
'Fort Worth',
'Frederick',
'Fremont',
'Fresno',
'Fullerton',
'Gainesville',
'Garden Grove',
'Garland',
'Gastonia',
'Gilbert',
'Glendale',
'Grand Prairie',
'Grand Rapids',
'Grayslake',
'Green Bay',
'GreenBay',
'Greensboro',
'Greenville',
'Gulfport-Biloxi',
'Hagerstown',
'Hampton',
'Harlingen',
'Harrisburg',
'Hartford',
'Havre de Grace',
'Hayward',
'Hemet',
'Henderson',
'Hesperia',
'Hialeah',
'Hickory',
'High Point',
'Hollywood',
'Honolulu',
'Houma',
'Howell',
'Huntington',
'Huntington Beach',
'Huntsville',
'Independence',
'Indianapolis',
'Inglewood',
'Irvine',
'Irving',
'Jackson',
'Jacksonville',
'Jefferson',
'Jersey City',
'Johnson City',
'Joliet',
'Kailua',
'Kalamazoo',
'Kaneohe',
'Kansas City',
'Kennewick',
'Kenosha',
'Killeen',
'Kissimmee',
'Knoxville',
'Lacey',
'Lafayette',
'Lake Charles',
'Lakeland',
'Lakewood',
'Lancaster',
'Lansing',
'Laredo',
'Las Cruces',
'Las Vegas',
'Layton',
'Leominster',
'Lewisville',
'Lexington',
'Lincoln',
'Little Rock',
'Long Beach',
'Lorain',
'Louisville',
'Lowell',
'Lubbock',
'Macon',
'Madison',
'Manchester',
'Marina',
'Marysville',
'McAllen',
'McHenry',
'Medford',
'Melbourne',
'Memphis',
'Merced',
'Mesa',
'Mesquite',
'Miami',
'Milwaukee',
'Minneapolis',
'Miramar',
'Mission Viejo',
'Mobile',
'Modesto',
'Monroe',
'Monterey',
'Montgomery',
'Moreno Valley',
'Murfreesboro',
'Murrieta',
'Muskegon',
'Myrtle Beach',
'Naperville',
'Naples',
'Nashua',
'Nashville',
'New Bedford',
'New Haven',
'New London',
'New Orleans',
'Newark',
'Newburgh',
'Newport News',
'Norfolk',
'Normal',
'Norman',
'North Charleston',
'North Las Vegas',
'North Port',
'Norwalk',
'Norwich',
'Oakland',
'Ocala',
'Oceanside',
'Odessa',
'Ogden',
'Oklahoma City',
'Olathe',
'Olympia',
'Omaha',
'Ontario',
'Orange',
'Orem',
'Orlando',
'Overland Park',
'Oxnard',
'Palm Bay',
'Palm Springs',
'Palmdale',
'Panama City',
'Pasadena',
'Paterson',
'Pembroke Pines',
'Pensacola',
'Peoria',
'Pittsburgh',
'Plano',
'Pomona',
'Pompano Beach',
'Port Arthur',
'Port Orange',
'Port Saint Lucie',
'Port St. Lucie',
'Portland',
'Portsmouth',
'Poughkeepsie',
'Providence',
'Provo',
'Pueblo',
'Punta Gorda',
'Racine',
'Raleigh',
'Rancho Cucamonga',
'Reading',
'Redding',
'Reno',
'Richland',
'Richmond',
'Richmond County',
'Riverside',
'Roanoke',
'Rochester',
'Rockford',
'Roseville',
'Round Lake Beach',
'Sacramento',
'Saginaw',
'Saint Louis',
'Saint Paul',
'Saint Petersburg',
'Salem',
'Salinas',
'Salt Lake City',
'San Antonio',
'San Bernardino',
'San Buenaventura',
'San Diego',
'San Jose',
'Santa Ana',
'Santa Barbara',
'Santa Clara',
'Santa Clarita',
'Santa Cruz',
'Santa Maria',
'Santa Rosa',
'Sarasota',
'Savannah',
'Scottsdale',
'Scranton',
'Seaside',
'Sebastian',
'Shreveport',
'Simi Valley',
'Sioux City',
'Sioux Falls',
'South Bend',
'South Lyon',
'Spartanburg',
'Spokane',
'Springdale',
'Springfield',
'St. Louis',
'St. Paul',
'St. Petersburg',
'Stamford',
'Sterling Heights',
'Stockton',
'Sunnyvale',
'Syracuse',
'Tacoma',
'Tallahassee',
'Tampa',
'Temecula',
'Tempe',
'Thornton',
'Thousand Oaks',
'Toledo',
'Topeka',
'Torrance',
'Trenton',
'Tucson',
'Tulsa',
'Tuscaloosa',
'Tyler',
'Utica',
'Vallejo',
'Vancouver',
'Vero Beach',
'Victorville',
'Virginia Beach',
'Visalia',
'Waco',
'Warren',
'Waterbury',
'Waterloo',
'West Covina',
'West Valley City',
'Westminster',
'Wichita',
'Wilmington',
'Winston',
'Winter Haven',
'Worcester',
'Yakima',
'Yonkers',
'York',
'Youngstown'
]
