block by micahstubbs 6abab1f0915ccab28d4ad7ba6cb30084

Chatty Map II

Full Screen

Click on a country.


an iteration on the delightful Chatty Map from @martgnz

this is the world map I always wanted when I was a kid studying for the Geography Bee

the script tag that includes babel on the page is from the bl.ock ES2015 Sequences Sunburst

localized country names are sourced from the i18n-iso-countries project by @hellomichibye. want to add your language? just translate this list of country names and send michaelwittig a pull request!

the map itself is drawn with spam.js, a small library for to declaratively creating modern Canvas maps with D3. spam.js makes it easy to create static or zoomable maps with automatic projection and retina resolution.

oh and the voices? the voices you ask? they’re from http://responsivevoice.org/ API docs source code

index.html

<!DOCTYPE html>
<meta charset='utf-8' /> 
<style>
body {
  max-width: 960px;
}
canvas {
  cursor: crosshair
}
select {
  display: table;
  margin: 0 auto;
}
</style>
<body>
<script src='https://d3js.org/d3.v3.min.js' charset='utf-8'></script>
<script src='https://npmcdn.com/babel-core@5.8.34/browser.min.js'></script>
<script src='topojson.min.js'></script>
<script src='rbush.min.js'></script>
<script src='d3.geo.projection.min.js'></script>
<script src='console.js'></script>
<script src='spam.min.js'></script>
<script src='https://code.responsivevoice.org/responsivevoice.js'></script>
<script src='ar.js'></script>
<script src='de.js'></script>
<script src='es.js'></script>
<script src='et.js'></script>
<script src='fi.js'></script>
<script src='fr.js'></script>
<script src='nl.js'></script>
<script src='pt.js'></script>
<script src='sv.js'></script>
<script src='countriesAlpha2.js'></script>

<script lang='babel' type='text/babel'>
let hover = null
const width = 960
const height = 500
let graticule = d3.geo.graticule()

// Get the list of the voices
const voiceList = responsiveVoice.getVoices()
const voiceListArray = voiceList.map(d => d.name);
console.log('available voices from the ResponseVoice API', voiceListArray)

// Define the list of voices that we want to display
// each voice in this list has a list of country names
// in their native language
// this way the word spoken fits the accent
const displayVoiceList = [
  'Arabic Male',
  'Brazilian Portuguese Female',
  'Portuguese Female',
  'Deutsch Female',
  'Dutch Female',
  'Finnish Female',
  'Finnish Male',
  'French Female',
  'Spanish Female',
  'Spanish Latin American Female',
  'Swedish Female',
  'Swedish Male',
  'Australian Female',
  'US English Female',
  'UK English Female',
  'UK English Male',
  // 'US English Male', // strangely the same as the UK English Male
  // 'Fallback UK Female',
  // 'Armenian Male',
  // 'Chinese Female',
  // 'Czech Female',
  // 'Danish Female',
  // 'Greek Female',
  // 'Hatian Creole Female',
  // 'Hindi Female',
  // 'Hungarian Female',
  // 'Indonesian Female',
  // 'Italian Female',
  // 'Japanese Female',
  // 'Korean Female',
  // 'Latin Female',
  // 'Norwegian Female',
  // 'Polish Female',
  // 'Romanian Male',
  // 'Russian Female',
  // 'Slovak Female',
  // 'Tamil Male',
  // 'Thai Female',
  // 'Turkish Female',
  // 'Afrikaans Male',
  // 'Albanian Male',
  // 'Bosnian Male',
  // 'Catalan Male',
  // 'Croatian Male',
  // 'Czech Male',
  // 'Danish Male',
  // 'Esperanto Male',
  // 'Greek Male',
  // 'Hungarian Male',
  // 'Icelandic Male',
  // 'Latin Male',
  // 'Latvian Male',
  // 'Macedonian Male',
  // 'Moldavian Male',
  // 'Montenegrin Male',
  // 'Norwegian Male',
  // 'Serbian Male',
  // 'Serbo-Croatian Male',
  // 'Slovak Male',
  // 'Swahili Male',
  // 'Vietnamese Male',
  // 'Welsh Male'
]
console.log('voices whose languages we have country names for', displayVoiceList);

// hard code the relationship between voices and languages
const languageCodeHash = {
  'Arabic Male': 'ar',
  'Brazilian Portuguese Female': 'pt',
  'Portuguese Female': 'pt',
  'Deutsch Female': 'de',
  'Dutch Female': 'nl',
  'Finnish Female': 'fi',
  'Finnish Male': 'fi',
  'French Female': 'fr',
  'Spanish Female': 'es',
  'Spanish Latin American Female': 'es',
  'Swedish Female': 'sv',
  'Swedish Male': 'sv',
  'Australian Female': 'en',
  'US English Female': 'en',
  'US English Male': 'en',
  'UK English Female': 'en',
  'UK English Male': 'en',
  'Fallback UK Female': 'en',
};

let displayVoiceArrayOfObjects = [];
displayVoiceList.forEach((d, i) => displayVoiceArrayOfObjects.push({ 'name': d }));

// Create the selector
d3.select('body').append('select')
  .selectAll('option')
  .data(displayVoiceArrayOfObjects)
  .enter()
  .append('option')
  .text(d => d.name)
  .attr('value', d => d.name)

// store the current voice
const defaultVoice = 'Spanish Female';
let currentVoice = defaultVoice;
const index = 8; // 'Spanish Female'

// set the default voice
d3.select('select').property('selectedIndex', index);
responsiveVoice.setDefaultVoice(currentVoice)

// Fire the lang function according to the selector
d3.select('select').on('change', lang);

function lang() {
  let selectedValue = d3.event.target.value;
  currentVoice = selectedValue;
  // Set the voice
  return responsiveVoice.setDefaultVoice(selectedValue);
}

// create an object that allows us to use an English country name
// to lookup the ISO-3166-1 alpha-2 country code
var alpha2Lookup = {};
countriesAlpha2.forEach(d => {
  alpha2Lookup[d.Name] = d.Code;
})

// draw the map
d3.json('world.json', (error, d) => {
  topojson.presimplify(d)
  
  let map = new StaticCanvasMap({
    element: 'body',
    width: width,
    projection: d3.geo.robinson(),
    data: [{
      features: topojson.feature(d, d.objects['countries']),
      static: {
        prepaint: parameters => {
          parameters.context.beginPath()
          parameters.path(graticule())
          parameters.context.lineWidth = 0.5
          parameters.context.strokeStyle = 'rgb(200,200,200)'
          parameters.context.stroke()

          parameters.context.beginPath()
          parameters.path({type: 'Sphere'})
          parameters.context.lineWidth = 1
          parameters.context.strokeStyle = 'rgb(30,30,30)'
          parameters.context.stroke()
        },
        paintfeature: (parameters, d) => {
          parameters.context.lineWidth = 0.5
          parameters.context.strokeStyle = '#fff' // rgb(30,30,30)
          parameters.context.stroke()

          parameters.context.fillStyle = '#bbb'; // rgb(188, 223, 255)
          parameters.context.fill()
        }
      },
      dynamic: {
        postpaint: parameters => {
          if (!hover)
            return

          parameters.context.beginPath()
          parameters.context.lineWidth = 1 / parameters.scale
          parameters.path(hover)
          parameters.context.stroke()
        }
      },
      events: {
        click: (parameters, d) => {
          console.log('d from click event', d);

          // speak silently to find out the language of the currentVoice
          let language2 = languageCodeHash[currentVoice];
          let countryName = d.id;
          let countryCode;

          switch(language2) {
            case 'ar':
              countryCode = alpha2Lookup[d.id];
              countryName = ARi18n[countryCode];
              break;
            case 'de':
              countryCode = alpha2Lookup[d.id];
              countryName = DEi18n[countryCode];            
              break;
            case 'es':
              countryCode = alpha2Lookup[d.id];
              countryName = ESi18n[countryCode];
              break;
            case 'et':
              countryCode = alpha2Lookup[d.id];
              countryName = ETi18n[countryCode];
              break;
            case 'fi':
              countryCode = alpha2Lookup[d.id];
              countryName = FIi18n[countryCode];              
              break;
            case 'fr':
              countryCode = alpha2Lookup[d.id];
              countryName = FRi18n[countryCode];              
              break;
            case 'nl':
              countryCode = alpha2Lookup[d.id];
              countryName = NLi18n[countryCode];              
              break;
            case 'pt':
              countryCode = alpha2Lookup[d.id];
              countryName = PTi18n[countryCode];              
              break;
            case 'sv':
              countryCode = alpha2Lookup[d.id];
              countryName = SVi18n[countryCode];              
              break;
            case 'en':
              break;      
            default:
              break;
          }
          
          console.log('countryName', countryName, 'countryCode', countryCode);

          // When clicking on a feature, say the name of that country
          d && responsiveVoice.speak(countryName)
        },
        hover: (parameters, d) => {
          hover = d

          parameters.map.paint()
        }
      }
    }]
  })
  map.init()
})
</script>

ar.js

var ARi18n = {
    "AF": " أفغانستان",
    "AL": " ألبانيا",
    "DZ": " الجزائر",
    "AS": " ساموا الأمريكية",
    "AD": " أندورا",
    "AO": " أنغولا",
    "AI": " أنغويلا",
    "AQ": " القارة القطبية الجنوبية",
    "AG": " أنتيغوا وباربودا",
    "AR": " الأرجنتين",
    "AM": " أرمينيا",
    "AW": " أروبا",
    "AU": " أستراليا",
    "AT": " النمسا",
    "AZ": " أذربيجان",
    "BS": " باهاماس",
    "BH": " البحرين",
    "BD": " بنغلاديش",
    "BB": " باربادوس",
    "BY": " روسيا البيضاء",
    "BE": " بلجيكا",
    "BZ": " بليز",
    "BJ": " بنين",
    "BM": " برمودا",
    "BT": " بوتان",
    "BO": " بوليفيا",
    "BA": " البوسنة والهرسك",
    "BW": " بوتسوانا",
    "BV": " جزيرة بوفيه",
    "BR": " البرازيل",
    "IO": " إقليم المحيط الهندي البريطاني",
    "BN": " بروناي",
    "BG": " بلغاريا",
    "BF": " بوركينا فاسو",
    "BI": " بوروندي",
    "KH": " كمبوديا",
    "CM": " الكاميرون",
    "CA": " كندا",
    "CV": " الرأس الأخضر",
    "KY": " جزر كايمان",
    "CF": " جمهورية أفريقيا الوسطى",
    "TD": " تشاد",
    "CL": " تشيلي",
    "CN": " الصين",
    "CX": " جزيرة عيد الميلاد",
    "CC": " جزر كوكوس",
    "CO": " كولومبيا",
    "KM": " جزر القمر",
    "CG": " جمهورية الكونغو",
    "CD": " جمهورية الكونغو الديمقراطية",
    "CK": " جزر كوك",
    "CR": " كوستاريكا",
    "CI": " ساحل العاج",
    "HR": " كرواتيا",
    "CU": " كوبا",
    "CY": " قبرص",
    "CYN": "شمال قبرص",
    "CZ": " جمهورية التشيك",
    "DK": " الدنمارك",
    "DJ": " جيبوتي",
    "DM": " دومينيكا",
    "DO": " جمهورية الدومينيكان",
    "EC": " الإكوادور",
    "EG": " مصر",
    "SV": " السلفادور",
    "GQ": " غينيا الاستوائية",
    "ER": " إريتريا",
    "EE": " إستونيا",
    "ET": " إثيوبيا",
    "FK": " جزر فوكلاند",
    "FO": " جزر فارو",
    "FJ": " فيجي",
    "FI": " فنلندا",
    "FR": " فرنسا",
    "GF": " غويانا الفرنسية",
    "PF": " بولينزيا الفرنسية",
    "TF": " أراض فرنسية جنوبية وأنتارتيكية",
    "GA": " الغابون",
    "GM": " غامبيا",
    "GE": " جورجيا",
    "DE": " ألمانيا",
    "GH": " غانا",
    "GI": " جبل طارق",
    "GR": " اليونان",
    "GL": " جرينلاند",
    "GD": " غرينادا",
    "GP": " غوادلوب",
    "GU": " غوام",
    "GT": " غواتيمالا",
    "GN": " غينيا",
    "GW": " غينيا بيساو",
    "GY": " غيانا",
    "HT": " هايتي",
    "HM": " جزيرة هيرد وجزر ماكدونالد",
    "VA": "  الفاتيكان",
    "HN": " هندوراس",
    "HK": " هونغ كونغ",
    "HU": " المجر",
    "IS": " آيسلندا",
    "IN": " الهند",
    "ID": " إندونيسيا",
    "IR": " إيران",
    "IQ": " العراق",
    "IE": " أيرلندا",
    "IL": " إسرائيل",
    "IT": " إيطاليا",
    "JM": " جامايكا",
    "JP": " اليابان",
    "JO": " الأردن",
    "KZ": " كازاخستان",
    "KE": " كينيا",
    "KI": " كيريباتي",
    "KP": " كوريا الشمالية",
    "KR": " كوريا الجنوبية",
    "XK": "كوسوفو",
    "KW": " الكويت",
    "KG": " قيرغيزستان",
    "LA": " لاوس",
    "LV": " لاتفيا",
    "LB": " لبنان",
    "LS": " ليسوتو",
    "LR": " ليبيريا",
    "LY": " ليبيا",
    "LI": " ليختنشتاين",
    "LT": " ليتوانيا",
    "LU": " لوكسمبورغ",
    "MO": " ماكاو",
    "MK": " مقدونيا",
    "MG": " مدغشقر",
    "MW": " مالاوي",
    "MY": " ماليزيا",
    "MV": " جزر المالديف",
    "ML": " مالي",
    "MT": " مالطا",
    "MH": " جزر مارشال",
    "MQ": " مارتينيك",
    "MR": " موريتانيا",
    "MU": " موريشيوس",
    "YT": " مايوت",
    "MX": " المكسيك",
    "FM": " ولايات ميكرونيسيا المتحدة",
    "MD": " مولدوفا",
    "MC": " موناكو",
    "MN": " منغوليا",
    "MS": " مونتسرات",
    "MA": " المغرب",
    "MZ": " موزمبيق",
    "MM": " بورما",
    "NA": " ناميبيا",
    "NR": " ناورو",
    "NP": " نيبال",
    "NL": " هولندا",
    "NC": " كاليدونيا الجديدة",
    "NZ": " نيوزيلندا",
    "NI": " نيكاراغوا",
    "NE": " النيجر",
    "NG": " نيجيريا",
    "NU": " نييوي",
    "NF": " جزيرة نورفولك",
    "MP": " جزر ماريانا الشمالية",
    "NO": " النرويج",
    "OM": " عمان",
    "PK": " باكستان",
    "PW": " بالاو",
    "PS": " فلسطين",
    "PA": " بنما",
    "PG": " بابوا غينيا الجديدة",
    "PY": " باراغواي",
    "PE": " بيرو",
    "PH": " الفلبين",
    "PN": " جزر بيتكيرن",
    "PL": " بولندا",
    "PT": " البرتغال",
    "PR": " بورتوريكو",
    "QA": " قطر",
    "RE": " لا ريونيون",
    "RO": " رومانيا",
    "RU": " روسيا",
    "RW": " رواندا",
    "SH": " سانت هيلينا وأسينشين وتريستان دا كونا",
    "KN": " سانت كيتس ونيفيس",
    "LC": " سانت لوسيا",
    "PM": " سان بيير وميكلون",
    "VC": " سانت فينسنت والغرينادين",
    "WS": " ساموا",
    "SM": " سان مارينو",
    "ST": " ساو تومي وبرينسيب",
    "SA": " السعودية",
    "SN": " السنغال",
    "SC": " سيشل",
    "SL": " سيراليون",
    "SG": " سنغافورة",
    "SK": " سلوفاكيا",
    "SI": " سلوفينيا",
    "SB": " جزر سليمان",
    "SO": " الصومال",
    "SOL": "أرض الصومال",
    "ZA": " جنوب أفريقيا",
    "GS": " جورجيا الجنوبية وجزر ساندويتش الجنوبية",
    "ES": " إسبانيا",
    "LK": " سريلانكا",
    "SD": " السودان",
    "SR": " سورينام",
    "SJ": " سفالبارد ويان ماين",
    "SZ": " سوازيلاند",
    "SE": " السويد",
    "CH": " سويسرا",
    "SY": " سوريا",
    "TW": " تايوان",
    "TJ": " طاجيكستان",
    "TZ": " تانزانيا",
    "TH": " تايلاند",
    "TL": " تيمور الشرقية",
    "TG": " توغو",
    "TK": " توكيلاو",
    "TO": " تونغا",
    "TT": "ترينيداد وتوباغو",
    "TN": " تونس",
    "TR": " تركيا",
    "TM": " تركمانستان",
    "TC": " جزر توركس وكايكوس",
    "TV": " توفالو",
    "UG": " أوغندا",
    "UA": " أوكرانيا",
    "AE": " الإمارات العربية المتحدة",
    "GB": " المملكة المتحدة",
    "US": " الولايات المتحدة",
    "UM": " جزر الولايات المتحدة",
    "UY": " الأوروغواي",
    "UZ": " أوزبكستان",
    "VU": " فانواتو",
    "VE": " فنزويلا",
    "VN": " فيتنام",
    "VG": " جزر العذراء البريطانية",
    "VI": " جزر العذراء الأمريكية",
    "WF": " والس وفوتونا",
    "EH": " الصحراء الغربية",
    "YE": " اليمن",
    "ZM": " زامبيا",
    "ZW": " زيمبابوي",
    "AX": " جزر أولاند",
    "BQ": " الجزر الكاريبية الهولندية",
    "CW": " كوراساو",
    "GG": " غيرنزي",
    "IM": " جزيرة مان",
    "JE": " جيرزي",
    "ME": " الجبل الأسود",
    "BL": " سان بارتيلمي",
    "MF": " سانت مارتن (الجزء الفرنسي)",
    "RS": " صربيا",
    "SX": " سانت مارتن (الجزء الهولندي)",
    "SS": " جنوب السودان"
};

console.js

// http://stackoverflow.com/questions/8000009/is-there-a-way-in-javascript-to-listen-console-events
var logOfConsole = [];

var _log = console.log,
    _warn = console.warn,
    _error = console.error;

console.log = function() {
    logOfConsole.push({method: 'log', arguments: arguments});
    return _log.apply(console, arguments);
};

console.warn = function() {
    logOfConsole.push({method: 'warn', arguments: arguments});
    return _warn.apply(console, arguments);
};

console.error = function() {
    logOfConsole.push({method: 'error', arguments: arguments});
    return _error.apply(console, arguments);
};

countries-iso-3155-1-alpha-2.js

var countriesAlpha2 = [{"Name":"Afghanistan","Code":"AF"},{"Name":"Åland Islands","Code":"AX"},{"Name":"Albania","Code":"AL"},{"Name":"Algeria","Code":"DZ"},{"Name":"American Samoa","Code":"AS"},{"Name":"Andorra","Code":"AD"},{"Name":"Angola","Code":"AO"},{"Name":"Anguilla","Code":"AI"},{"Name":"Antarctica","Code":"AQ"},{"Name":"Antigua and Barbuda","Code":"AG"},{"Name":"Argentina","Code":"AR"},{"Name":"Armenia","Code":"AM"},{"Name":"Aruba","Code":"AW"},{"Name":"Australia","Code":"AU"},{"Name":"Austria","Code":"AT"},{"Name":"Azerbaijan","Code":"AZ"},{"Name":"Bahamas","Code":"BS"},{"Name":"Bahrain","Code":"BH"},{"Name":"Bangladesh","Code":"BD"},{"Name":"Barbados","Code":"BB"},{"Name":"Belarus","Code":"BY"},{"Name":"Belgium","Code":"BE"},{"Name":"Belize","Code":"BZ"},{"Name":"Benin","Code":"BJ"},{"Name":"Bermuda","Code":"BM"},{"Name":"Bhutan","Code":"BT"},{"Name":"Bolivia, Plurinational State of","Code":"BO"},{"Name":"Bonaire, Sint Eustatius and Saba","Code":"BQ"},{"Name":"Bosnia and Herzegovina","Code":"BA"},{"Name":"Botswana","Code":"BW"},{"Name":"Bouvet Island","Code":"BV"},{"Name":"Brazil","Code":"BR"},{"Name":"British Indian Ocean Territory","Code":"IO"},{"Name":"Brunei Darussalam","Code":"BN"},{"Name":"Bulgaria","Code":"BG"},{"Name":"Burkina Faso","Code":"BF"},{"Name":"Burundi","Code":"BI"},{"Name":"Cambodia","Code":"KH"},{"Name":"Cameroon","Code":"CM"},{"Name":"Canada","Code":"CA"},{"Name":"Cape Verde","Code":"CV"},{"Name":"Cayman Islands","Code":"KY"},{"Name":"Central African Republic","Code":"CF"},{"Name":"Chad","Code":"TD"},{"Name":"Chile","Code":"CL"},{"Name":"China","Code":"CN"},{"Name":"Christmas Island","Code":"CX"},{"Name":"Cocos (Keeling) Islands","Code":"CC"},{"Name":"Colombia","Code":"CO"},{"Name":"Comoros","Code":"KM"},{"Name":"Congo","Code":"CG"},{"Name":"Congo, the Democratic Republic of the","Code":"CD"},{"Name":"Cook Islands","Code":"CK"},{"Name":"Costa Rica","Code":"CR"},{"Name":"Côte d'Ivoire","Code":"CI"},{"Name":"Croatia","Code":"HR"},{"Name":"Cuba","Code":"CU"},{"Name":"Curaçao","Code":"CW"},{"Name":"Cyprus","Code":"CY"},{"Name":"Czech Republic","Code":"CZ"},{"Name":"Denmark","Code":"DK"},{"Name":"Djibouti","Code":"DJ"},{"Name":"Dominica","Code":"DM"},{"Name":"Dominican Republic","Code":"DO"},{"Name":"Ecuador","Code":"EC"},{"Name":"Egypt","Code":"EG"},{"Name":"El Salvador","Code":"SV"},{"Name":"Equatorial Guinea","Code":"GQ"},{"Name":"Eritrea","Code":"ER"},{"Name":"Estonia","Code":"EE"},{"Name":"Ethiopia","Code":"ET"},{"Name":"Falkland Islands (Malvinas)","Code":"FK"},{"Name":"Faroe Islands","Code":"FO"},{"Name":"Fiji","Code":"FJ"},{"Name":"Finland","Code":"FI"},{"Name":"France","Code":"FR"},{"Name":"French Guiana","Code":"GF"},{"Name":"French Polynesia","Code":"PF"},{"Name":"French Southern Territories","Code":"TF"},{"Name":"Gabon","Code":"GA"},{"Name":"Gambia","Code":"GM"},{"Name":"Georgia","Code":"GE"},{"Name":"Germany","Code":"DE"},{"Name":"Ghana","Code":"GH"},{"Name":"Gibraltar","Code":"GI"},{"Name":"Greece","Code":"GR"},{"Name":"Greenland","Code":"GL"},{"Name":"Grenada","Code":"GD"},{"Name":"Guadeloupe","Code":"GP"},{"Name":"Guam","Code":"GU"},{"Name":"Guatemala","Code":"GT"},{"Name":"Guernsey","Code":"GG"},{"Name":"Guinea","Code":"GN"},{"Name":"Guinea-Bissau","Code":"GW"},{"Name":"Guyana","Code":"GY"},{"Name":"Haiti","Code":"HT"},{"Name":"Heard Island and McDonald Islands","Code":"HM"},{"Name":"Holy See (Vatican City State)","Code":"VA"},{"Name":"Honduras","Code":"HN"},{"Name":"Hong Kong","Code":"HK"},{"Name":"Hungary","Code":"HU"},{"Name":"Iceland","Code":"IS"},{"Name":"India","Code":"IN"},{"Name":"Indonesia","Code":"ID"},{"Name":"Iran, Islamic Republic of","Code":"IR"},{"Name":"Iraq","Code":"IQ"},{"Name":"Ireland","Code":"IE"},{"Name":"Isle of Man","Code":"IM"},{"Name":"Israel","Code":"IL"},{"Name":"Italy","Code":"IT"},{"Name":"Jamaica","Code":"JM"},{"Name":"Japan","Code":"JP"},{"Name":"Jersey","Code":"JE"},{"Name":"Jordan","Code":"JO"},{"Name":"Kazakhstan","Code":"KZ"},{"Name":"Kenya","Code":"KE"},{"Name":"Kiribati","Code":"KI"},{"Name":"Korea, Democratic People's Republic of","Code":"KP"},{"Name":"Korea, Republic of","Code":"KR"},{"Name":"Kuwait","Code":"KW"},{"Name":"Kyrgyzstan","Code":"KG"},{"Name":"Lao People's Democratic Republic","Code":"LA"},{"Name":"Latvia","Code":"LV"},{"Name":"Lebanon","Code":"LB"},{"Name":"Lesotho","Code":"LS"},{"Name":"Liberia","Code":"LR"},{"Name":"Libya","Code":"LY"},{"Name":"Liechtenstein","Code":"LI"},{"Name":"Lithuania","Code":"LT"},{"Name":"Luxembourg","Code":"LU"},{"Name":"Macao","Code":"MO"},{"Name":"Macedonia, the Former Yugoslav Republic of","Code":"MK"},{"Name":"Madagascar","Code":"MG"},{"Name":"Malawi","Code":"MW"},{"Name":"Malaysia","Code":"MY"},{"Name":"Maldives","Code":"MV"},{"Name":"Mali","Code":"ML"},{"Name":"Malta","Code":"MT"},{"Name":"Marshall Islands","Code":"MH"},{"Name":"Martinique","Code":"MQ"},{"Name":"Mauritania","Code":"MR"},{"Name":"Mauritius","Code":"MU"},{"Name":"Mayotte","Code":"YT"},{"Name":"Mexico","Code":"MX"},{"Name":"Micronesia, Federated States of","Code":"FM"},{"Name":"Moldova, Republic of","Code":"MD"},{"Name":"Monaco","Code":"MC"},{"Name":"Mongolia","Code":"MN"},{"Name":"Montenegro","Code":"ME"},{"Name":"Montserrat","Code":"MS"},{"Name":"Morocco","Code":"MA"},{"Name":"Mozambique","Code":"MZ"},{"Name":"Myanmar","Code":"MM"},{"Name":"Namibia","Code":"NA"},{"Name":"Nauru","Code":"NR"},{"Name":"Nepal","Code":"NP"},{"Name":"Netherlands","Code":"NL"},{"Name":"New Caledonia","Code":"NC"},{"Name":"New Zealand","Code":"NZ"},{"Name":"Nicaragua","Code":"NI"},{"Name":"Niger","Code":"NE"},{"Name":"Nigeria","Code":"NG"},{"Name":"Niue","Code":"NU"},{"Name":"Norfolk Island","Code":"NF"},{"Name":"Northern Mariana Islands","Code":"MP"},{"Name":"Norway","Code":"NO"},{"Name":"Oman","Code":"OM"},{"Name":"Pakistan","Code":"PK"},{"Name":"Palau","Code":"PW"},{"Name":"Palestine, State of","Code":"PS"},{"Name":"Panama","Code":"PA"},{"Name":"Papua New Guinea","Code":"PG"},{"Name":"Paraguay","Code":"PY"},{"Name":"Peru","Code":"PE"},{"Name":"Philippines","Code":"PH"},{"Name":"Pitcairn","Code":"PN"},{"Name":"Poland","Code":"PL"},{"Name":"Portugal","Code":"PT"},{"Name":"Puerto Rico","Code":"PR"},{"Name":"Qatar","Code":"QA"},{"Name":"Réunion","Code":"RE"},{"Name":"Romania","Code":"RO"},{"Name":"Russia","Code":"RU"},{"Name":"Rwanda","Code":"RW"},{"Name":"Saint Barthélemy","Code":"BL"},{"Name":"Saint Helena, Ascension and Tristan da Cunha","Code":"SH"},{"Name":"Saint Kitts and Nevis","Code":"KN"},{"Name":"Saint Lucia","Code":"LC"},{"Name":"Saint Martin (French part)","Code":"MF"},{"Name":"Saint Pierre and Miquelon","Code":"PM"},{"Name":"Saint Vincent and the Grenadines","Code":"VC"},{"Name":"Samoa","Code":"WS"},{"Name":"San Marino","Code":"SM"},{"Name":"Sao Tome and Principe","Code":"ST"},{"Name":"Saudi Arabia","Code":"SA"},{"Name":"Senegal","Code":"SN"},{"Name":"Serbia","Code":"RS"},{"Name":"Seychelles","Code":"SC"},{"Name":"Sierra Leone","Code":"SL"},{"Name":"Singapore","Code":"SG"},{"Name":"Sint Maarten (Dutch part)","Code":"SX"},{"Name":"Slovakia","Code":"SK"},{"Name":"Slovenia","Code":"SI"},{"Name":"Solomon Islands","Code":"SB"},{"Name":"Somalia","Code":"SO"},{"Name":"South Africa","Code":"ZA"},{"Name":"South Georgia and the South Sandwich Islands","Code":"GS"},{"Name":"South Sudan","Code":"SS"},{"Name":"Spain","Code":"ES"},{"Name":"Sri Lanka","Code":"LK"},{"Name":"Sudan","Code":"SD"},{"Name":"Suriname","Code":"SR"},{"Name":"Svalbard and Jan Mayen","Code":"SJ"},{"Name":"Swaziland","Code":"SZ"},{"Name":"Sweden","Code":"SE"},{"Name":"Switzerland","Code":"CH"},{"Name":"Syrian Arab Republic","Code":"SY"},{"Name":"Taiwan, Province of China","Code":"TW"},{"Name":"Tajikistan","Code":"TJ"},{"Name":"Tanzania, United Republic of","Code":"TZ"},{"Name":"Thailand","Code":"TH"},{"Name":"Timor-Leste","Code":"TL"},{"Name":"Togo","Code":"TG"},{"Name":"Tokelau","Code":"TK"},{"Name":"Tonga","Code":"TO"},{"Name":"Trinidad and Tobago","Code":"TT"},{"Name":"Tunisia","Code":"TN"},{"Name":"Turkey","Code":"TR"},{"Name":"Turkmenistan","Code":"TM"},{"Name":"Turks and Caicos Islands","Code":"TC"},{"Name":"Tuvalu","Code":"TV"},{"Name":"Uganda","Code":"UG"},{"Name":"Ukraine","Code":"UA"},{"Name":"United Arab Emirates","Code":"AE"},{"Name":"United Kingdom","Code":"GB"},{"Name":"United States","Code":"US"},{"Name":"United States Minor Outlying Islands","Code":"UM"},{"Name":"Uruguay","Code":"UY"},{"Name":"Uzbekistan","Code":"UZ"},{"Name":"Vanuatu","Code":"VU"},{"Name":"Venezuela, Bolivarian Republic of","Code":"VE"},{"Name":"Viet Nam","Code":"VN"},{"Name":"Virgin Islands, British","Code":"VG"},{"Name":"Virgin Islands, U.S.","Code":"VI"},{"Name":"Wallis and Futuna","Code":"WF"},{"Name":"Western Sahara","Code":"EH"},{"Name":"Yemen","Code":"YE"},{"Name":"Zambia","Code":"ZM"},{"Name":"Zimbabwe","Code":"ZW"}]

countriesAlpha2.js

var countriesAlpha2 = [  
   {  
      "Name":"Afghanistan",
      "Code":"AF"
   },
   {  
      "Name":"Åland Islands",
      "Code":"AX"
   },
   {  
      "Name":"Albania",
      "Code":"AL"
   },
   {  
      "Name":"Algeria",
      "Code":"DZ"
   },
   {  
      "Name":"American Samoa",
      "Code":"AS"
   },
   {  
      "Name":"Andorra",
      "Code":"AD"
   },
   {  
      "Name":"Angola",
      "Code":"AO"
   },
   {  
      "Name":"Anguilla",
      "Code":"AI"
   },
   {  
      "Name":"Antarctica",
      "Code":"AQ"
   },
   {  
      "Name":"Antigua and Barbuda",
      "Code":"AG"
   },
   {  
      "Name":"Argentina",
      "Code":"AR"
   },
   {  
      "Name":"Armenia",
      "Code":"AM"
   },
   {  
      "Name":"Aruba",
      "Code":"AW"
   },
   {  
      "Name":"Australia",
      "Code":"AU"
   },
   {  
      "Name":"Austria",
      "Code":"AT"
   },
   {  
      "Name":"Azerbaijan",
      "Code":"AZ"
   },
   {  
      "Name":"The Bahamas",
      "Code":"BS"
   },
   {  
      "Name":"Bahrain",
      "Code":"BH"
   },
   {  
      "Name":"Bangladesh",
      "Code":"BD"
   },
   {  
      "Name":"Barbados",
      "Code":"BB"
   },
   {  
      "Name":"Belarus",
      "Code":"BY"
   },
   {  
      "Name":"Belgium",
      "Code":"BE"
   },
   {  
      "Name":"Belize",
      "Code":"BZ"
   },
   {  
      "Name":"Benin",
      "Code":"BJ"
   },
   {  
      "Name":"Bermuda",
      "Code":"BM"
   },
   {  
      "Name":"Bhutan",
      "Code":"BT"
   },
   {  
      "Name":"Bolivia",
      "Code":"BO"
   },
   {  
      "Name":"Bonaire, Sint Eustatius and Saba",
      "Code":"BQ"
   },
   {  
      "Name":"Bosnia and Herzegovina",
      "Code":"BA"
   },
   {  
      "Name":"Botswana",
      "Code":"BW"
   },
   {  
      "Name":"Bouvet Island",
      "Code":"BV"
   },
   {  
      "Name":"Brazil",
      "Code":"BR"
   },
   {  
      "Name":"British Indian Ocean Territory",
      "Code":"IO"
   },
   {  
      "Name":"Brunei",
      "Code":"BN"
   },
   {  
      "Name":"Bulgaria",
      "Code":"BG"
   },
   {  
      "Name":"Burkina Faso",
      "Code":"BF"
   },
   {  
      "Name":"Burundi",
      "Code":"BI"
   },
   {  
      "Name":"Cambodia",
      "Code":"KH"
   },
   {  
      "Name":"Cameroon",
      "Code":"CM"
   },
   {  
      "Name":"Canada",
      "Code":"CA"
   },
   {  
      "Name":"Cape Verde",
      "Code":"CV"
   },
   {  
      "Name":"Cayman Islands",
      "Code":"KY"
   },
   {  
      "Name":"Central African Republic",
      "Code":"CF"
   },
   {  
      "Name":"Chad",
      "Code":"TD"
   },
   {  
      "Name":"Chile",
      "Code":"CL"
   },
   {  
      "Name":"China",
      "Code":"CN"
   },
   {  
      "Name":"Christmas Island",
      "Code":"CX"
   },
   {  
      "Name":"Cocos (Keeling) Islands",
      "Code":"CC"
   },
   {  
      "Name":"Colombia",
      "Code":"CO"
   },
   {  
      "Name":"Comoros",
      "Code":"KM"
   },
   {  
      "Name":"Republic of Congo",
      "Code":"CG"
   },
   {  
      "Name":"Democratic Republic of the Congo",
      "Code":"CD"
   },
   {  
      "Name":"Cook Islands",
      "Code":"CK"
   },
   {  
      "Name":"Costa Rica",
      "Code":"CR"
   },
   {  
      "Name":"Ivory Coast",
      "Code":"CI"
   },
   {  
      "Name":"Croatia",
      "Code":"HR"
   },
   {  
      "Name":"Cuba",
      "Code":"CU"
   },
   {  
      "Name":"Curaçao",
      "Code":"CW"
   },
   {  
      "Name":"Cyprus",
      "Code":"CY"
   },
   {
      "Name":"Northern Cyprus",
      "Code":"CYN"
   },
   {  
      "Name":"Czech Republic",
      "Code":"CZ"
   },
   {  
      "Name":"Denmark",
      "Code":"DK"
   },
   {  
      "Name":"Djibouti",
      "Code":"DJ"
   },
   {  
      "Name":"Dominica",
      "Code":"DM"
   },
   {  
      "Name":"Dominican Republic",
      "Code":"DO"
   },
   {  
      "Name":"Ecuador",
      "Code":"EC"
   },
   {  
      "Name":"Egypt",
      "Code":"EG"
   },
   {  
      "Name":"El Salvador",
      "Code":"SV"
   },
   {  
      "Name":"Equatorial Guinea",
      "Code":"GQ"
   },
   {  
      "Name":"Eritrea",
      "Code":"ER"
   },
   {  
      "Name":"Estonia",
      "Code":"EE"
   },
   {  
      "Name":"Ethiopia",
      "Code":"ET"
   },
   {  
      "Name":"Falkland Islands (Malvinas)",
      "Code":"FK"
   },
   {  
      "Name":"Faroe Islands",
      "Code":"FO"
   },
   {  
      "Name":"Fiji",
      "Code":"FJ"
   },
   {  
      "Name":"Finland",
      "Code":"FI"
   },
   {  
      "Name":"France",
      "Code":"FR"
   },
   {  
      "Name":"French Guiana",
      "Code":"GF"
   },
   {  
      "Name":"French Polynesia",
      "Code":"PF"
   },
   {  
      "Name":"French Southern Territories",
      "Code":"TF"
   },
   {  
      "Name":"Gabon",
      "Code":"GA"
   },
   {  
      "Name":"Gambia",
      "Code":"GM"
   },
   {  
      "Name":"Georgia",
      "Code":"GE"
   },
   {  
      "Name":"Germany",
      "Code":"DE"
   },
   {  
      "Name":"Ghana",
      "Code":"GH"
   },
   {  
      "Name":"Gibraltar",
      "Code":"GI"
   },
   {  
      "Name":"Greece",
      "Code":"GR"
   },
   {  
      "Name":"Greenland",
      "Code":"GL"
   },
   {  
      "Name":"Grenada",
      "Code":"GD"
   },
   {  
      "Name":"Guadeloupe",
      "Code":"GP"
   },
   {  
      "Name":"Guam",
      "Code":"GU"
   },
   {  
      "Name":"Guatemala",
      "Code":"GT"
   },
   {  
      "Name":"Guernsey",
      "Code":"GG"
   },
   {  
      "Name":"Guinea",
      "Code":"GN"
   },
   {  
      "Name":"Guinea Bissau",
      "Code":"GW"
   },
   {  
      "Name":"Guyana",
      "Code":"GY"
   },
   {  
      "Name":"Haiti",
      "Code":"HT"
   },
   {  
      "Name":"Heard Island and McDonald Islands",
      "Code":"HM"
   },
   {  
      "Name":"Holy See (Vatican City State)",
      "Code":"VA"
   },
   {  
      "Name":"Honduras",
      "Code":"HN"
   },
   {  
      "Name":"Hong Kong",
      "Code":"HK"
   },
   {  
      "Name":"Hungary",
      "Code":"HU"
   },
   {  
      "Name":"Iceland",
      "Code":"IS"
   },
   {  
      "Name":"India",
      "Code":"IN"
   },
   {  
      "Name":"Indonesia",
      "Code":"ID"
   },
   {  
      "Name":"Iran",
      "Code":"IR"
   },
   {  
      "Name":"Iraq",
      "Code":"IQ"
   },
   {  
      "Name":"Ireland",
      "Code":"IE"
   },
   {  
      "Name":"Isle of Man",
      "Code":"IM"
   },
   {  
      "Name":"Israel",
      "Code":"IL"
   },
   {  
      "Name":"Italy",
      "Code":"IT"
   },
   {  
      "Name":"Jamaica",
      "Code":"JM"
   },
   {  
      "Name":"Japan",
      "Code":"JP"
   },
   {  
      "Name":"Jersey",
      "Code":"JE"
   },
   {  
      "Name":"Jordan",
      "Code":"JO"
   },
   {  
      "Name":"Kazakhstan",
      "Code":"KZ"
   },
   {  
      "Name":"Kenya",
      "Code":"KE"
   },
   {  
      "Name":"Kiribati",
      "Code":"KI"
   },
   {  
      "Name":"North Korea",
      "Code":"KP"
   },
   {  
      "Name":"South Korea",
      "Code":"KR"
   },
   {  
      "Name":"Kosovo",
      "Code":"XK"
   },
   {  
      "Name":"Kuwait",
      "Code":"KW"
   },
   {  
      "Name":"Kyrgyzstan",
      "Code":"KG"
   },
   {  
      "Name":"Laos",
      "Code":"LA"
   },
   {  
      "Name":"Latvia",
      "Code":"LV"
   },
   {  
      "Name":"Lebanon",
      "Code":"LB"
   },
   {  
      "Name":"Lesotho",
      "Code":"LS"
   },
   {  
      "Name":"Liberia",
      "Code":"LR"
   },
   {  
      "Name":"Libya",
      "Code":"LY"
   },
   {  
      "Name":"Liechtenstein",
      "Code":"LI"
   },
   {  
      "Name":"Lithuania",
      "Code":"LT"
   },
   {  
      "Name":"Luxembourg",
      "Code":"LU"
   },
   {  
      "Name":"Macao",
      "Code":"MO"
   },
   {  
      "Name":"Macedonia",
      "Code":"MK"
   },
   {  
      "Name":"Madagascar",
      "Code":"MG"
   },
   {  
      "Name":"Malawi",
      "Code":"MW"
   },
   {  
      "Name":"Malaysia",
      "Code":"MY"
   },
   {  
      "Name":"Maldives",
      "Code":"MV"
   },
   {  
      "Name":"Mali",
      "Code":"ML"
   },
   {  
      "Name":"Malta",
      "Code":"MT"
   },
   {  
      "Name":"Marshall Islands",
      "Code":"MH"
   },
   {  
      "Name":"Martinique",
      "Code":"MQ"
   },
   {  
      "Name":"Mauritania",
      "Code":"MR"
   },
   {  
      "Name":"Mauritius",
      "Code":"MU"
   },
   {  
      "Name":"Mayotte",
      "Code":"YT"
   },
   {  
      "Name":"Mexico",
      "Code":"MX"
   },
   {  
      "Name":"Micronesia, Federated States of",
      "Code":"FM"
   },
   {  
      "Name":"Moldova",
      "Code":"MD"
   },
   {  
      "Name":"Monaco",
      "Code":"MC"
   },
   {  
      "Name":"Mongolia",
      "Code":"MN"
   },
   {  
      "Name":"Montenegro",
      "Code":"ME"
   },
   {  
      "Name":"Montserrat",
      "Code":"MS"
   },
   {  
      "Name":"Morocco",
      "Code":"MA"
   },
   {  
      "Name":"Mozambique",
      "Code":"MZ"
   },
   {  
      "Name":"Myanmar",
      "Code":"MM"
   },
   {  
      "Name":"Namibia",
      "Code":"NA"
   },
   {  
      "Name":"Nauru",
      "Code":"NR"
   },
   {  
      "Name":"Nepal",
      "Code":"NP"
   },
   {  
      "Name":"Netherlands",
      "Code":"NL"
   },
   {  
      "Name":"New Caledonia",
      "Code":"NC"
   },
   {  
      "Name":"New Zealand",
      "Code":"NZ"
   },
   {  
      "Name":"Nicaragua",
      "Code":"NI"
   },
   {  
      "Name":"Niger",
      "Code":"NE"
   },
   {  
      "Name":"Nigeria",
      "Code":"NG"
   },
   {  
      "Name":"Niue",
      "Code":"NU"
   },
   {  
      "Name":"Norfolk Island",
      "Code":"NF"
   },
   {  
      "Name":"Northern Mariana Islands",
      "Code":"MP"
   },
   {  
      "Name":"Norway",
      "Code":"NO"
   },
   {  
      "Name":"Oman",
      "Code":"OM"
   },
   {  
      "Name":"Pakistan",
      "Code":"PK"
   },
   {  
      "Name":"Palau",
      "Code":"PW"
   },
   {  
      "Name":"Palestine, State of",
      "Code":"PS"
   },
   {  
      "Name":"Panama",
      "Code":"PA"
   },
   {  
      "Name":"Papua New Guinea",
      "Code":"PG"
   },
   {  
      "Name":"Paraguay",
      "Code":"PY"
   },
   {  
      "Name":"Peru",
      "Code":"PE"
   },
   {  
      "Name":"Philippines",
      "Code":"PH"
   },
   {  
      "Name":"Pitcairn",
      "Code":"PN"
   },
   {  
      "Name":"Poland",
      "Code":"PL"
   },
   {  
      "Name":"Portugal",
      "Code":"PT"
   },
   {  
      "Name":"Puerto Rico",
      "Code":"PR"
   },
   {  
      "Name":"Qatar",
      "Code":"QA"
   },
   {  
      "Name":"Réunion",
      "Code":"RE"
   },
   {  
      "Name":"Romania",
      "Code":"RO"
   },
   {  
      "Name":"Russia",
      "Code":"RU"
   },
   {  
      "Name":"Rwanda",
      "Code":"RW"
   },
   {  
      "Name":"Saint Barthélemy",
      "Code":"BL"
   },
   {  
      "Name":"Saint Helena, Ascension and Tristan da Cunha",
      "Code":"SH"
   },
   {  
      "Name":"Saint Kitts and Nevis",
      "Code":"KN"
   },
   {  
      "Name":"Saint Lucia",
      "Code":"LC"
   },
   {  
      "Name":"Saint Martin (French part)",
      "Code":"MF"
   },
   {  
      "Name":"Saint Pierre and Miquelon",
      "Code":"PM"
   },
   {  
      "Name":"Saint Vincent and the Grenadines",
      "Code":"VC"
   },
   {  
      "Name":"Samoa",
      "Code":"WS"
   },
   {  
      "Name":"San Marino",
      "Code":"SM"
   },
   {  
      "Name":"Sao Tome and Principe",
      "Code":"ST"
   },
   {  
      "Name":"Saudi Arabia",
      "Code":"SA"
   },
   {  
      "Name":"Senegal",
      "Code":"SN"
   },
   {  
      "Name":"Republic of Serbia",
      "Code":"RS"
   },
   {  
      "Name":"Seychelles",
      "Code":"SC"
   },
   {  
      "Name":"Sierra Leone",
      "Code":"SL"
   },
   {  
      "Name":"Singapore",
      "Code":"SG"
   },
   {  
      "Name":"Sint Maarten (Dutch part)",
      "Code":"SX"
   },
   {  
      "Name":"Slovakia",
      "Code":"SK"
   },
   {  
      "Name":"Slovenia",
      "Code":"SI"
   },
   {  
      "Name":"Solomon Islands",
      "Code":"SB"
   },
   {  
      "Name":"Somalia",
      "Code":"SO"
   },
   {  
      "Name":"Somaliland",
      "Code":"SOL"
   },
   {  
      "Name":"South Africa",
      "Code":"ZA"
   },
   {  
      "Name":"South Georgia and the South Sandwich Islands",
      "Code":"GS"
   },
   {  
      "Name":"South Sudan",
      "Code":"SS"
   },
   {  
      "Name":"Spain",
      "Code":"ES"
   },
   {  
      "Name":"Sri Lanka",
      "Code":"LK"
   },
   {  
      "Name":"Sudan",
      "Code":"SD"
   },
   {  
      "Name":"Suriname",
      "Code":"SR"
   },
   {  
      "Name":"Svalbard and Jan Mayen",
      "Code":"SJ"
   },
   {  
      "Name":"Swaziland",
      "Code":"SZ"
   },
   {  
      "Name":"Sweden",
      "Code":"SE"
   },
   {  
      "Name":"Switzerland",
      "Code":"CH"
   },
   {  
      "Name":"Syria",
      "Code":"SY"
   },
   {  
      "Name":"Taiwan",
      "Code":"TW"
   },
   {  
      "Name":"Tajikistan",
      "Code":"TJ"
   },
   {  
      "Name":"United Republic of Tanzania",
      "Code":"TZ"
   },
   {  
      "Name":"Thailand",
      "Code":"TH"
   },
   {  
      "Name":"East Timor",
      "Code":"TL"
   },
   {  
      "Name":"Togo",
      "Code":"TG"
   },
   {  
      "Name":"Tokelau",
      "Code":"TK"
   },
   {  
      "Name":"Tonga",
      "Code":"TO"
   },
   {  
      "Name":"Trinidad and Tobago",
      "Code":"TT"
   },
   {  
      "Name":"Tunisia",
      "Code":"TN"
   },
   {  
      "Name":"Turkey",
      "Code":"TR"
   },
   {  
      "Name":"Turkmenistan",
      "Code":"TM"
   },
   {  
      "Name":"Turks and Caicos Islands",
      "Code":"TC"
   },
   {  
      "Name":"Tuvalu",
      "Code":"TV"
   },
   {  
      "Name":"Uganda",
      "Code":"UG"
   },
   {  
      "Name":"Ukraine",
      "Code":"UA"
   },
   {  
      "Name":"United Arab Emirates",
      "Code":"AE"
   },
   {  
      "Name":"United Kingdom",
      "Code":"GB"
   },
   {  
      "Name":"United States of America",
      "Code":"US"
   },
   {  
      "Name":"United States Minor Outlying Islands",
      "Code":"UM"
   },
   {  
      "Name":"Uruguay",
      "Code":"UY"
   },
   {  
      "Name":"Uzbekistan",
      "Code":"UZ"
   },
   {  
      "Name":"Vanuatu",
      "Code":"VU"
   },
   {  
      "Name":"Venezuela",
      "Code":"VE"
   },
   {  
      "Name":"Vietnam",
      "Code":"VN"
   },
   {  
      "Name":"Virgin Islands, British",
      "Code":"VG"
   },
   {  
      "Name":"Virgin Islands, U.S.",
      "Code":"VI"
   },
   {  
      "Name":"Wallis and Futuna",
      "Code":"WF"
   },
   {  
      "Name":"Western Sahara",
      "Code":"EH"
   },
   {  
      "Name":"Yemen",
      "Code":"YE"
   },
   {  
      "Name":"Zambia",
      "Code":"ZM"
   },
   {  
      "Name":"Zimbabwe",
      "Code":"ZW"
   }
]

de.js

var DEi18n = {
  "AF": "Afghanistan",
  "EG": "Ägypten",
  "AX": "Åland",
  "AL": "Albanien",
  "DZ": "Algerien",
  "AS": "Amerikanisch-Samoa",
  "VI": "Amerikanische Jungferninseln",
  "AD": "Andorra",
  "AO": "Angola",
  "AI": "Anguilla",
  "AQ": "Antarktika",
  "AG": "Antigua und Barbuda",
  "GQ": "Äquatorialguinea",
  "AR": "Argentinien",
  "AM": "Armenien",
  "AW": "Aruba",
  "AZ": "Aserbaidschan",
  "ET": "Äthiopien",
  "AU": "Australien",
  "BS": "Bahamas",
  "BH": "Bahrain",
  "BD": "Bangladesch",
  "BB": "Barbados",
  "BY": "Weißrussland",
  "BE": "Belgien",
  "BZ": "Belize",
  "BJ": "Benin",
  "BM": "Bermuda",
  "BT": "Bhutan",
  "BO": "Bolivien",
  "BQ": "Bonaire",
  "BA": "Bosnien und Herzegowina",
  "BW": "Botswana",
  "BV": "Bouvetinsel",
  "BR": "Brasilien",
  "VG": "Britische Jungferninseln",
  "IO": "Britisches Territorium im Indischen Ozean",
  "BN": "Brunei Darussalam",
  "BG": "Bulgarien",
  "BF": "Burkina Faso",
  "BI": "Burundi",
  "CL": "Chile",
  "CN": "China",
  "CK": "Cookinseln",
  "CR": "Costa Rica",
  "CI": "Elfenbeinküste",
  "CW": "Curaçao",
  "DK": "Dänemark",
  "DE": "Deutschland",
  "DM": "Dominica",
  "DO": "Dominikanische Republik",
  "DJ": "Dschibuti",
  "EC": "Ecuador",
  "SV": "El Salvador",
  "ER": "Eritrea",
  "EE": "Estland",
  "FK": "Falklandinseln",
  "FO": "Färöer",
  "FJ": "Fidschi",
  "FI": "Finnland",
  "FR": "Frankreich",
  "GF": "Französisch-Guayana",
  "PF": "Französisch-Polynesien",
  "TF": "Französische Süd- und Antarktisgebiete",
  "GA": "Gabun",
  "GM": "Gambia",
  "GE": "Georgien",
  "GH": "Ghana",
  "GI": "Gibraltar",
  "GD": "Grenada",
  "GR": "Griechenland",
  "GL": "Grönland",
  "GP": "Guadeloupe",
  "GU": "Guam",
  "GT": "Guatemala",
  "GG": "Guernsey",
  "GN": "Guinea",
  "GW": "Guinea-Bissau",
  "GY": "Guyana",
  "HT": "Haiti",
  "HM": "Heard und McDonaldinseln",
  "HN": "Honduras",
  "HK": "Hongkong",
  "IN": "Indien",
  "ID": "Indonesien",
  "IM": "Insel Man",
  "IQ": "Irak",
  "IR": "Iran",
  "IE": "Irland",
  "IS": "Island",
  "IL": "Israel",
  "IT": "Italien",
  "JM": "Jamaika",
  "JP": "Japan",
  "YE": "Jemen",
  "JE": "Jersey",
  "JO": "Jordanien",
  "KY": "Kaimaninseln",
  "KH": "Kambodscha",
  "CM": "Kamerun",
  "CA": "Kanada",
  "CV": "Kap Verde",
  "KZ": "Kasachstan",
  "QA": "Katar",
  "KE": "Kenia",
  "KG": "Kirgisistan",
  "KI": "Kiribati",
  "CC": "Kokosinseln",
  "CO": "Kolumbien",
  "KM": "Komoren",
  "CD": "Kongo",
  "KP": "Nordkorea",
  "KR": "Südkorea",
  "XK": "Kosovo",
  "HR": "Kroatien",
  "CU": "Kuba",
  "KW": "Kuwait",
  "LA": "Laos",
  "LS": "Lesotho",
  "LV": "Lettland",
  "LB": "Libanon",
  "LR": "Liberia",
  "LY": "Libyen",
  "LI": "Liechtenstein",
  "LT": "Litauen",
  "LU": "Luxemburg",
  "MO": "Macao",
  "MG": "Madagaskar",
  "MW": "Malawi",
  "MY": "Malaysia",
  "MV": "Malediven",
  "ML": "Mali",
  "MT": "Malta",
  "MA": "Marokko",
  "MH": "Marshallinseln",
  "MQ": "Martinique",
  "MR": "Mauretanien",
  "MU": "Mauritius",
  "YT": "Mayotte",
  "MK": "Mazedonien",
  "MX": "Mexiko",
  "FM": "Mikronesien",
  "MD": "Moldawien",
  "MC": "Monaco",
  "MN": "Mongolei",
  "ME": "Montenegro",
  "MS": "Montserrat",
  "MZ": "Mosambik",
  "MM": "Myanmar",
  "NA": "Namibia",
  "NR": "Nauru",
  "NP": "Nepal",
  "NC": "Neukaledonien",
  "NZ": "Neuseeland",
  "NI": "Nicaragua",
  "NL": "Niederlande",
  "NE": "Niger",
  "NG": "Nigeria",
  "NU": "Niue",
  "MP": "Nördliche Marianen",
  "NF": "Norfolkinsel",
  "NO": "Norwegen",
  "OM": "Oman",
  "AT": "Österreich",
  "TL": "Osttimor",
  "PK": "Pakistan",
  "PS": "Staat Palästina",
  "PW": "Palau",
  "PA": "Panama",
  "PG": "Papua-Neuguinea",
  "PY": "Paraguay",
  "PE": "Peru",
  "PH": "Philippinen",
  "PN": "Pitcairninseln",
  "PL": "Polen",
  "PT": "Portugal",
  "PR": "Puerto Rico",
  "TW": "Taiwan",
  "CG": "Republik Kongo",
  "RE": "Réunion",
  "RW": "Ruanda",
  "RO": "Rumänien",
  "RU": "Russische Föderation",
  "BL": "Saint-Barthélemy",
  "MF": "Saint-Martin",
  "SB": "Salomonen",
  "ZM": "Sambia",
  "WS": "Samoa",
  "SM": "San Marino",
  "ST": "São Tomé und Príncipe",
  "SA": "Saudi-Arabien",
  "SE": "Schweden",
  "CH": "Schweiz",
  "SN": "Senegal",
  "RS": "Serbien",
  "SC": "Seychellen",
  "SL": "Sierra Leone",
  "ZW": "Simbabwe",
  "SG": "Singapur",
  "SX": "Sint Maarten",
  "SK": "Slowakei",
  "SI": "Slowenien",
  "SO": "Somalia",
  "SOL": "Somali",
  "ES": "Spanien",
  "LK": "Sri Lanka",
  "SH": "St. Helena",
  "KN": "St. Kitts und Nevis",
  "LC": "St. Lucia",
  "PM": "Saint-Pierre und Miquelon",
  "VC": "St. Vincent und die Grenadinen",
  "ZA": "Südafrika",
  "SD": "Sudan",
  "GS": "Südgeorgien und die Südlichen Sandwichinseln",
  "SS": "Südsudan",
  "SR": "Suriname",
  "SJ": "Svalbard und Jan Mayen",
  "SZ": "Swasiland",
  "SY": "Syrien, Arabische Republik",
  "TJ": "Tadschikistan",
  "TZ": "Tansania, Vereinigte Republik",
  "TH": "Thailand",
  "TG": "Togo",
  "TK": "Tokelau",
  "TO": "Tonga",
  "TT": "Trinidad und Tobago",
  "TD": "Tschad",
  "CZ": "Tschechische Republik",
  "TN": "Tunesien",
  "TR": "Türkei",
  "TM": "Turkmenistan",
  "TC": "Turks- und Caicosinseln",
  "TV": "Tuvalu",
  "UG": "Uganda",
  "UA": "Ukraine",
  "HU": "Ungarn",
  "UM": "United States Minor Outlying Islands",
  "UY": "Uruguay",
  "UZ": "Usbekistan",
  "VU": "Vanuatu",
  "VA": "Vatikanstadt",
  "VE": "Venezuela",
  "AE": "Vereinigte Arabische Emirate",
  "US": "Vereinigte Staaten von Amerika",
  "GB": "Vereinigtes Königreich Großbritannien und Nordirland",
  "VN": "Vietnam",
  "WF": "Wallis und Futuna",
  "CX": "Weihnachtsinsel",
  "EH": "Westsahara",
  "CF": "Zentralafrikanische Republik",
  "CY": "Zypern",
  "CYN": "Nord-Zypern"
};

es.js

var ESi18n = {
	"AF": "Afganistán",
	"AL": "Albania",
	"DZ": "Argelia",
	"AS": "Samoa Americana",
	"AD": "Andorra",
	"AO": "Angola",
	"AI": "Anguila",
	"AQ": "Antártida",
	"AG": "Antigua y Barbuda",
	"AR": "Argentina",
	"AM": "Armenia",
	"AW": "Aruba",
	"AU": "Australia",
	"AT": "Austria",
	"AZ": "Azerbaiyán",
	"BS": "Bahamas",
	"BH": "Bahrein",
	"BD": "Bangladesh",
	"BB": "Barbados",
	"BY": "Belarús",
	"BE": "Bélgica",
	"BZ": "Belice",
	"BJ": "Benin",
	"BM": "Bermudas",
	"BT": "Bhután",
	"BO": "Bolivia (Estado Plurinacional de)",
	"BA": "Bosnia y Herzegovina",
	"BW": "Botswana",
	"BV": "Isla Bouvet",
	"BR": "Brasil",
	"IO": "Territorio Británico del Océano Índico",
	"BN": "Brunei Darussalam",
	"BG": "Bulgaria",
	"BF": "Burkina Faso",
	"BI": "Burundi",
	"KH": "Camboya",
	"CM": "Camerún",
	"CA": "Canadá",
	"CV": "Cabo Verde",
	"KY": "Islas Caimán",
	"CF": "República Centroafricana",
	"TD": "Chad",
	"CL": "Chile",
	"CN": "China",
	"CX": "Isla de Navidad",
	"CC": "Islas Cocos (Keeling)",
	"CO": "Colombia",
	"KM": "Comoras",
	"CG": "Congo",
	"CD": "Congo (República Democrática del)",
	"CK": "Islas Cook",
	"CR": "Costa Rica",
	"CI": "Côte d'Ivoire",
	"HR": "Croacia",
	"CU": "Cuba",
	"CY": "Chipre",
	"CYN": "Chipre del Norte",
	"CZ": "República Checa",
	"DK": "Dinamarca",
	"DJ": "Djibouti",
	"DM": "Dominica",
	"DO": "República Dominicana",
	"EC": "Ecuador",
	"EG": "Egipto",
	"SV": "El Salvador",
	"GQ": "Guinea Ecuatorial",
	"ER": "Eritrea",
	"EE": "Estonia",
	"ET": "Etiopía",
	"FK": "Islas Malvinas",
	"FO": "Islas Feroe",
	"FJ": "Fiji",
	"FI": "Finlandia",
	"FR": "Francia",
	"GF": "Guayana Francesa",
	"PF": "Polinesia Francesa",
	"TF": "Tierras Australes Francesas",
	"GA": "Gabón",
	"GM": "Gambia",
	"GE": "Georgia",
	"DE": "Alemania",
	"GH": "Ghana",
	"GI": "Gibraltar",
	"GR": "Grecia",
	"GL": "Groenlandia",
	"GD": "Granada",
	"GP": "Guadeloupe",
	"GU": "Guam",
	"GT": "Guatemala",
	"GN": "Guinea",
	"GW": "Guinea Bissau",
	"GY": "Guyana",
	"HT": "Haití",
	"HM": "Heard e Islas McDonald",
	"VA": "Santa Sede",
	"HN": "Honduras",
	"HK": "Hong Kong",
	"HU": "Hungría",
	"IS": "Islandia",
	"IN": "India",
	"ID": "Indonesia",
	"IR": "Irán (República Islámica de)",
	"IQ": "Iraq",
	"IE": "Irlanda",
	"IL": "Israel",
	"IT": "Italia",
	"JM": "Jamaica",
	"JP": "Japón",
	"JO": "Jordania",
	"KZ": "Kazajstán",
	"KE": "Kenya",
	"KI": "Kiribati",
	"KP": "Corea, La República Popular Democrática de",
	"KR": "Corea, La República de",
	"XK": "Kosovo",
	"KW": "Kuwait",
	"KG": "Kirguistán",
	"LA": "Lao, República Democrática Popular",
	"LV": "Letonia",
	"LB": "Líbano",
	"LS": "Lesotho",
	"LR": "Liberia",
	"LY": "Libia",
	"LI": "Liechtenstein",
	"LT": "Lituania",
	"LU": "Luxemburgo",
	"MO": "Macao",
	"MK": "Macedonia (Ex República Yugoslava de)",
	"MG": "Madagascar",
	"MW": "Malawi",
	"MY": "Malasia",
	"MV": "Maldivas",
	"ML": "Malí",
	"MT": "Malta",
	"MH": "Islas Marshall",
	"MQ": "Martinique",
	"MR": "Mauritania",
	"MU": "Mauricio",
	"YT": "Mayotte",
	"MX": "México",
	"FM": "Micronesia (Estados Federados de)",
	"MD": "Moldova (República de)",
	"MC": "Mónaco",
	"MN": "Mongolia",
	"MS": "Montserrat",
	"MA": "Marruecos",
	"MZ": "Mozambique",
	"MM": "Myanmar",
	"NA": "Namibia",
	"NR": "Nauru",
	"NP": "Nepal",
	"NL": "Países Bajos",
	"NC": "Nueva Caledonia",
	"NZ": "Nueva Zelandia",
	"NI": "Nicaragua",
	"NE": "Níger",
	"NG": "Nigeria",
	"NU": "Niue",
	"NF": "Isla Norfolk",
	"MP": "Isla Marianas del Norte",
	"NO": "Noruega",
	"OM": "Omán",
	"PK": "Pakistán",
	"PW": "Palau",
	"PS": "Estado de Palestina",
	"PA": "Panamá",
	"PG": "Papua Nueva Guinea",
	"PY": "Paraguay",
	"PE": "Perú",
	"PH": "Filipinas",
	"PN": "Pitcairn",
	"PL": "Polonia",
	"PT": "Portugal",
	"PR": "Puerto Rico",
	"QA": "Qatar",
	"RE": "Reunión",
	"RO": "Rumania",
	"RU": "Federación de Rusia",
	"RW": "Rwanda",
	"SH": "Santa Helena, Ascensión y Tristán de Acuña",
	"KN": "Saint Kitts y Nevis",
	"LC": "Santa Lucía",
	"PM": "San Pedro y Miquelón",
	"VC": "San Vicente y las Granadinas",
	"WS": "Samoa",
	"SM": "San Marino",
	"ST": "Santo Tomé y Príncipe",
	"SA": "Arabia Saudita",
	"SN": "Senegal",
	"SC": "Seychelles",
	"SL": "Sierra Leona",
	"SG": "Singapur",
	"SK": "Eslovaquia",
	"SI": "Eslovenia",
	"SB": "Islas Salomón",
	"SO": "Somalia",
	"SOL": "Somalilandia",
	"ZA": "Sudáfrica",
	"GS": "Georgia del Sur y las Islas Sandwich del Sur",
	"ES": "España",
	"LK": "Sri Lanka",
	"SD": "Sudan",
	"SR": "Suriname",
	"SJ": "Svalbard y Jan Mayen",
	"SZ": "Swazilandia",
	"SE": "Suecia",
	"CH": "Suiza",
	"SY": "República Árabe Siria",
	"TW": "Taiwán",
	"TJ": "Tayikistán",
	"TZ": "Tanzania, República Unida de",
	"TH": "Tailandia",
	"TL": "Timor-Leste",
	"TG": "Togo",
	"TK": "Tokelau",
	"TO": "Tonga",
	"TT": "Trinidad y Tobago",
	"TN": "Túnez",
	"TR": "Turquía",
	"TM": "Turkmenistán",
	"TC": "Islas Turcas y Caicos",
	"TV": "Tuvalu",
	"UG": "Uganda",
	"UA": "Ucrania",
	"AE": "Emiratos Árabes Unido",
	"GB": "Reino Unido de Gran Bretaña e Irlanda del Norte",
	"US": "Estados Unidos de América ",
	"UM": "Islas Ultramarinas Menores de los Estados Unidos",
	"UY": "Uruguay",
	"UZ": "Uzbekistán",
	"VU": "Vanuatu",
	"VE": "Venezuela (República Bolivariana de)",
	"VN": "Viet Nam",
	"VG": "Islas Vírgenes británicas",
	"VI": "Islas Vírgenes de los Estados Unidos",
	"WF": "Wallis y Futuna",
	"EH": "Sahara Occidental",
	"YE": "Yemen",
	"ZM": "Zambia",
	"ZW": "Zimbabwe",
	"AX": "Islas Åland",
	"BQ": "Bonaire, San Eustaquio y Saba",
	"CW": "Curaçao",
	"GG": "Guernsey",
	"IM": "Isla de Man",
	"JE": "Jersey",
	"ME": "Montenegro",
	"BL": "Saint Barthélemy",
	"MF": "Saint Martin (parte francesa)",
	"RS": "Serbia",
	"SX": "Sint Maarten (parte neerlandesa)",
	"SS": "Sudán del Sur",
};

et.js

var ETi18n = {
	"AF": "Afganistan",
  "AX": "Ahvenamaa",
  "AL": "Albaania",
  "DZ": "Alžeeria",
  "AS": "Ameerika Samoa",
  "US": "Ameerika Ühendriigid",
  "AD": "Andorra",
  "AO": "Angola",
  "AI": "Anguilla",
  "AQ": "Antarktis",
  "AG": "Antigua ja Barbuda",
  "MO": "Aomen - Hiina erihalduspiirkond",
  "AE": "Araabia Ühendemiraadid",
  "AR": "Argentina",
  "AM": "Armeenia",
  "AW": "Aruba",
  "AC": "Ascensioni saar",
  "AZ": "Aserbaidžaan",
  "AU": "Austraalia",
  "AT": "Austria",
  "BS": "Bahama",
  "BH": "Bahrein",
  "BD": "Bangladesh",
  "BB": "Barbados",
  "PW": "Belau",
  "BE": "Belgia",
  "BZ": "Belize",
  "BJ": "Benin",
  "BM": "Bermuda",
  "BT": "Bhutan",
  "BO": "Boliivia",
  "BA": "Bosnia ja Hertsegoviina",
  "BW": "Botswana",
  "BV": "Bouvet’i saar",
  "BR": "Brasiilia",
  "BQ": "Bonaire, Sint Eustatius ja Saba",
  "IO": "Briti India ookeani ala",
  "VG": "Briti Neitsisaared",
  "BN": "Brunei",
  "BG": "Bulgaaria",
  "BF": "Burkina Faso",
  "BI": "Burundi",
  "EA": "Ceuta ja Melilla",
  "CP": "Clippertoni saar",
  "CO": "Colombia",
  "CK": "Cooki saared",
  "CR": "Costa Rica",
  "CI": "Côte d'Ivoire",
  "CW": "Curaçao",
  "DG": "Diego Garcia",
  "DJ": "Djibouti",
  "DM": "Dominica",
  "DO": "Dominikaani Vabariik",
  "EC": "Ecuador",
  "EE": "Eesti",
  "EG": "Egiptus",
  "GQ": "Ekvatoriaal-Guinea",
  "SV": "El Salvador",
  "ER": "Eritrea",
  "ET": "Etioopia",
  "EU": "Euroopa Liit",
  "FK": "Falklandi saared",
  "FJ": "Fidži",
  "PH": "Filipiinid",
  "FO": "Fääri saared",
  "GA": "Gabon",
  "GM": "Gambia",
  "GH": "Ghana",
  "GI": "Gibraltar",
  "GD": "Grenada",
  "GE": "Gruusia",
  "GL": "Gröönimaa",
  "GP": "Guadeloupe",
  "GU": "Guam",
  "GT": "Guatemala",
  "GG": "Guernsey",
  "GN": "Guinea",
  "GW": "Guinea-Bissau",
  "GY": "Guyana",
  "HT": "Haiti",
  "HM": "Heard ja McDonald saared",
  "CN": "Hiina",
  "ES": "Hispaania",
  "NL": "Holland",
  "AN": "Hollandi Antillid",
  "HN": "Honduras",
  "HK": "Hongkong - Hiina erihalduspiirkond",
  "HR": "Horvaatia",
  "TL": "Ida-Timor",
  "IE": "Iirimaa",
  "IL": "Iisrael",
  "IN": "India",
  "ID": "Indoneesia",
  "IQ": "Iraak",
  "IR": "Iraan",
  "IS": "Island",
  "IT": "Itaalia",
  "JP": "Jaapan",
  "JM": "Jamaica",
  "YE": "Jeemen",
  "JE": "Jersey",
  "JO": "Jordaania",
  "CX": "Jõulusaar",
  "KY": "Kaimanisaared",
  "KH": "Kambodža",
  "CM": "Kamerun",
  "IC": "Kanaari saared",
  "CA": "Kanada",
  "KZ": "Kasahstan",
  "QA": "Katar",
  "KE": "Kenya",
  "CF": "Kesk-Aafrika Vabariik",
  "KI": "Kiribati",
  "KM": "Komoorid",
  "CD": "Kongo DV",
  "CG": "Kongo-Brazzaville",
  "CC": "Kookossaared",
  "GR": "Kreeka",
  "CU": "Kuuba",
  "KW": "Kuveit",
  "KG": "Kõrgõzstan",
  "CY": "Küpros",
  "CYN": "Põhja-Küpros",
  "LA": "Laos",
  "LT": "Leedu",
  "LS": "Lesotho",
  "LR": "Libeeria",
  "LI": "Liechtenstein",
  "LB": "Liibanon",
  "LY": "Liibüa",
  "LU": "Luksemburg",
  "ZA": "Lõuna-Aafrika Vabariik",
  "GS": "Lõuna-Georgia ja Lõuna-Sandwichi saared",
  "KR": "Lõuna-Korea",
  "XK": "Kosovo",
  "LV": "Läti",
  "EH": "Lääne-Sahara",
  "MG": "Madagaskar",
  "MK": "Makedoonia",
  "MY": "Malaisia",
  "MW": "Malawi",
  "MV": "Maldiivid",
  "ML": "Mali",
  "MT": "Malta",
  "IM": "Mani saar",
  "MA": "Maroko",
  "MH": "Marshalli saared",
  "MQ": "Martinique",
  "MR": "Mauritaania",
  "MU": "Mauritius",
  "YT": "Mayotte",
  "MX": "Mehhiko",
  "FM": "Mikroneesia Liiduriigid",
  "MD": "Moldova",
  "MC": "Monaco",
  "MN": "Mongoolia",
  "ME": "Montenegro",
  "MS": "Montserrat",
  "MZ": "Mosambiik",
  "MM": "Myanmar",
  "NA": "Namiibia",
  "NR": "Nauru",
  "NP": "Nepal",
  "NI": "Nicaragua",
  "NG": "Nigeeria",
  "NE": "Niger",
  "NU": "Niue",
  "NF": "Norfolk",
  "NO": "Norra",
  "QO": "Okeaania hajasaared",
  "OM": "Omaan",
  "PG": "Paapua Uus-Guinea",
  "PK": "Pakistan",
  "PS": "Palestiina ala",
  "PA": "Panama",
  "PY": "Paraguay",
  "PE": "Peruu",
  "PN": "Pitcairn",
  "PL": "Poola",
  "PT": "Portugal",
  "GF": "Prantsuse Guajaana",
  "TF": "Prantsuse Lõunaalad",
  "PF": "Prantsuse Polüneesia",
  "FR": "Prantsusmaa",
  "PR": "Puerto Rico",
  "KP": "Põhja-Korea",
  "MP": "Põhja-Mariaanid",
  "RE": "Réunion",
  "CV": "Roheneemesaared",
  "SE": "Rootsi",
  "SX": "Sint Maarten",
  "RO": "Rumeenia",
  "RW": "Rwanda",
  "SB": "Saalomoni Saared",
  "BL": "Saint Barthélemy",
  "SH": "Saint Helena",
  "KN": "Saint Kitts ja Nevis",
  "LC": "Saint Lucia",
  "MF": "Saint Martin",
  "PM": "Saint Pierre ja Miquelon",
  "VC": "Saint Vincent ja Grenadiinid",
  "DE": "Saksamaa",
  "ZM": "Sambia",
  "WS": "Samoa",
  "SM": "San Marino",
  "ST": "São Tomé ja Príncipe",
  "SA": "Saudi Araabia",
  "SC": "Seišellid",
  "SN": "Senegal",
  "RS": "Serbia",
  "CS": "Serbia ja Montenegro",
  "SL": "Sierra Leone",
  "SG": "Singapur",
  "SK": "Slovakkia",
  "SI": "Sloveenia",
  "SO": "Somaalia",
  "SOL": "Somaalimaa",
  "FI": "Soome",
  "LK": "Sri Lanka",
  "SD": "Sudaan",
  "SS": "Lõuna-Sudaan",
  "SR": "Suriname",
  "GB": "Suurbritannia",
  "SZ": "Svaasimaa",
  "SJ": "Svalbard ja Jan Mayen",
  "SY": "Süüria",
  "CH": "Šveits",
  "ZW": "Zimbabwe",
  "DK": "Taani",
  "TJ": "Tadžikistan",
  "TH": "Tai",
  "TW": "Taiwan",
  "TZ": "Tansaania",
  "TG": "Togo",
  "TK": "Tokelau",
  "TO": "Tonga",
  "TT": "Trinidad ja Tobago",
  "TA": "Tristan da Cunha",
  "TD": "Tšaad",
  "CZ": "Tšehhi",
  "CL": "Tšiili",
  "TN": "Tuneesia",
  "TC": "Turks ja Caicos",
  "TV": "Tuvalu",
  "TR": "Türgi",
  "TM": "Türkmenistan",
  "UG": "Uganda",
  "UA": "Ukraina",
  "HU": "Ungari",
  "UY": "Uruguay",
  "VI": "USA Neitsisaared",
  "UZ": "Usbekistan",
  "NC": "Uus-Kaledoonia",
  "NZ": "Uus-Meremaa",
  "BY": "Valgevene",
  "WF": "Wallis ja Futuna",
  "VU": "Vanuatu",
  "VA": "Vatikan",
  "RU": "Venemaa",
  "VE": "Venezuela",
  "VN": "Vietnam",
  "UM": "Ühendriikide hajasaared"
};

extendedCountryCodes.js

 [
  "CYN": "", // "Northern Cyprus"
  "XK": "",            // Kosovo
  "SOL": "",     // Somaliland
 ] 

fi.js

var FIi18n = {
	"AF": "Afganistan",
	"AX": "Ahvenanmaa",
	"NL": "Alankomaat",
	"AN": "Alankomaiden Antillit",
	"AL": "Albania",
	"DZ": "Algeria",
	"AS": "Amerikan Samoa",
	"AD": "Andorra",
	"AO": "Angola",
	"AI": "Anguilla",
	"AQ": "Antarktis",
	"AG": "Antigua ja Barbuda",
	"AE": "Arabiemiirikunnat",
	"AR": "Argentiina",
	"AM": "Armenia",
	"AW": "Aruba",
	"AC": "Ascension Island",
	"AU": "Australia",
	"AZ": "Azerbaidžan",
	"BS": "Bahama",
	"BH": "Bahrain",
	"BD": "Bangladesh",
	"BB": "Barbados",
	"BE": "Belgia",
	"BZ": "Belize",
	"BJ": "Benin",
	"BM": "Bermuda",
	"BT": "Bhutan",
	"BO": "Bolivia",
	"BQ": "Bonaire, Sint Eustatius ja Saba",
	"BA": "Bosnia ja Hertsegovina",
	"BW": "Botswana",
	"BV": "Bouvet’nsaari",
	"BR": "Brasilia",
	"IO": "Brittiläinen Intian valtameren alue",
	"VG": "Brittiläiset Neitsytsaaret",
	"BN": "Brunei",
	"BG": "Bulgaria",
	"BF": "Burkina Faso",
	"BI": "Burundi",
	"KY": "Caymansaaret",
	"EA": "Ceuta, Melilla",
	"CL": "Chile",
	"CP": "Clippertoninsaari",
	"CK": "Cookinsaaret",
	"CR": "Costa Rica",
	"CW": "Curaçao",
	"DG": "Diego Garcia",
	"DJ": "Djibouti",
	"DM": "Dominica",
	"DO": "Dominikaaninen tasavalta",
	"EC": "Ecuador",
	"EG": "Egypti",
	"SV": "El Salvador",
	"ER": "Eritrea",
	"ES": "Espanja",
	"ET": "Etiopia",
	"ZA": "Etelä-Afrikka",
	"GS": "Etelä-Georgia ja Eteläiset Sandwichsaaret",
	"SS": "Etelä-Sudan",
	"EU": "Euroopan unioni",
	"FK": "Falklandinsaaret",
	"FO": "Färsaaret",
	"FJ": "Fidži",
	"PH": "Filippiinit",
	"GA": "Gabon",
	"GM": "Gambia",
	"GE": "Georgia",
	"GH": "Ghana",
	"GI": "Gibraltar",
	"GD": "Grenada",
	"GL": "Grönlanti",
	"GP": "Guadeloupe",
	"GU": "Guam",
	"GT": "Guatemala",
	"GG": "Guernsey",
	"GN": "Guinea",
	"GW": "Guinea-Bissau",
	"GY": "Guyana",
	"HT": "Haiti",
	"HM": "Heard ja McDonaldinsaaret",
	"HN": "Honduras",
	"HK": "Hongkong",
	"ID": "Indonesia",
	"IN": "Intia",
	"IQ": "Irak",
	"IR": "Iran",
	"IE": "Irlanti",
	"IS": "Islanti",
	"IL": "Israel",
	"IT": "Italia",
	"TL": "Itä-Timor",
	"AT": "Itävalta",
	"JM": "Jamaika",
	"JP": "Japani",
	"YE": "Jemen",
	"JE": "Jersey",
	"JO": "Jordania",
	"CX": "Joulusaari",
	"KH": "Kambodža",
	"CM": "Kamerun",
	"CA": "Kanada",
	"IC": "Kanariansaaret",
	"CV": "Kap Verde",
	"KZ": "Kazakstan",
	"KE": "Kenia",
	"CF": "Keski-Afrikan tasavalta",
	"CN": "Kiina",
	"KG": "Kirgisia",
	"KI": "Kiribati",
	"CO": "Kolumbia",
	"KM": "Komorit",
	"CD": "Kongon demokraattinen tasavalta",
	"CG": "Kongon tasavalta",
	"CC": "Kookossaaret",
	"KP": "Korean demokraattinen kansantasavalta",
	"KR": "Korean tasavalta",
	"XK": "Kosovo",
	"GR": "Kreikka",
	"HR": "Kroatia",
	"CU": "Kuuba",
	"KW": "Kuwait",
	"CY": "Kypros",
	"CYN": "Pohjois-Kypros",
	"LA": "Laos",
	"LV": "Latvia",
	"LS": "Lesotho",
	"LB": "Libanon",
	"LR": "Liberia",
	"LY": "Libya",
	"LI": "Liechtenstein",
	"LT": "Liettua",
	"LU": "Luxemburg",
	"EH": "Länsi-Sahara",
	"MO": "Macao",
	"MG": "Madagaskar",
	"MK": "Makedonia",
	"MW": "Malawi",
	"MV": "Malediivit",
	"MY": "Malesia",
	"ML": "Mali",
	"MT": "Malta",
	"IM": "Mansaari",
	"MA": "Marokko",
	"MH": "Marshallinsaaret",
	"MQ": "Martinique",
	"MR": "Mauritania",
	"MU": "Mauritius",
	"YT": "Mayotte",
	"MX": "Meksiko",
	"FM": "Mikronesian liittovaltio",
	"MD": "Moldova",
	"MC": "Monaco",
	"MN": "Mongolia",
	"ME": "Montenegro",
	"MS": "Montserrat",
	"MZ": "Mosambik",
	"MM": "Myanmar",
	"NA": "Namibia",
	"NR": "Nauru",
	"NP": "Nepal",
	"NI": "Nicaragua",
	"NE": "Niger",
	"NG": "Nigeria",
	"NU": "Niue",
	"NF": "Norfolkinsaari",
	"NO": "Norja",
	"CI": "Norsunluurannikko",
	"OM": "Oman",
	"PK": "Pakistan",
	"PW": "Palau",
	"PS": "Palestiina",
	"PA": "Panama",
	"PG": "Papua-Uusi-Guinea",
	"PY": "Paraguay",
	"PE": "Peru",
	"MP": "Pohjois-Mariaanit",
	"PN": "Pitcairn",
	"PT": "Portugali",
	"PR": "Puerto Rico",
	"PL": "Puola",
	"GQ": "Päiväntasaajan Guinea",
	"QA": "Qatar",
	"FR": "Ranska",
	"FX": "Ranska (Eurooppaan kuuluvat osat)",
	"TF": "Ranskan eteläiset alueet",
	"GF": "Ranskan Guayana",
	"PF": "Ranskan Polynesia",
	"RE": "Réunion",
	"RO": "Romania",
	"RW": "Ruanda",
	"SE": "Ruotsi",
	"BL": "Saint-Barthélemy",
	"SH": "Saint Helena",
	"KN": "Saint Kitts ja Nevis",
	"LC": "Saint Lucia",
	"MF": "Saint-Martin",
	"PM": "Saint-Pierre ja Miquelon",
	"VC": "Saint Vincent ja Grenadiinit",
	"DE": "Saksa",
	"SB": "Salomonsaaret",
	"ZM": "Sambia",
	"WS": "Samoa",
	"SM": "San Marino",
	"ST": "São Tomé ja Príncipe",
	"SA": "Saudi-Arabia",
	"SN": "Senegal",
	"RS": "Serbia",
	"SC": "Seychellit",
	"SL": "Sierra Leone",
	"SG": "Singapore",
	"SX": "Sint Maarten",
	"SK": "Slovakia",
	"SI": "Slovenia",
	"SO": "Somalia",
	"SOL": "Somalimaa",
	"LK": "Sri Lanka",
	"SD": "Sudan",
	"FI": "Suomi",
	"SR": "Suriname",
	"SJ": "Svalbard ja Jan Mayen",
	"SZ": "Swazimaa",
	"CH": "Sveitsi",
	"SY": "Syyria",
	"TJ": "Tadžikistan",
	"TW": "Taiwan",
	"TZ": "Tansania",
	"DK": "Tanska",
	"TH": "Thaimaa",
	"TG": "Togo",
	"TK": "Tokelau",
	"TO": "Tonga",
	"TT": "Trinidad ja Tobago",
	"TA": "Tristan da Cunha",
	"TD": "Tšad",
	"CZ": "Tšekki",
	"TN": "Tunisia",
	"TR": "Turkki",
	"TM": "Turkmenistan",
	"TC": "Turks- ja Caicossaaret",
	"TV": "Tuvalu",
	"UG": "Uganda",
	"UA": "Ukraina",
	"HU": "Unkari",
	"UY": "Uruguay",
	"NC": "Uusi-Kaledonia",
	"NZ": "Uusi-Seelanti",
	"UZ": "Uzbekistan",
	"BY": "Valko-Venäjä",
	"VU": "Vanuatu",
	"VA": "Vatikaanivaltio",
	"VE": "Venezuela",
	"RU": "Venäjä",
	"VN": "Vietnam",
	"EE": "Viro",
	"WF": "Wallis ja Futunasaaret",
	"GB": "Yhdistynyt kuningaskunta",
	"UK": "Yhdistynyt kuningaskunta",
	"US": "Yhdysvallat",
	"VI": "Yhdysvaltain Neitsytsaaret",
	"UM": "Yhdysvaltain pienet erillissaaret",
	"ZW": "Zimbabwe"
};

fr.js

var FRi18n = {
  "AF": "Afghanistan",
  "AL": "Albanie",
  "DZ": "Algérie",
  "AS": "Samoa américaine",
  "AD": "Andorre",
  "AO": "Angola",
  "AI": "Anguilla",
  "AQ": "Antarctique",
  "AG": "Antigua et Barbuda",
  "AR": "Argentine",
  "AM": "Arménie",
  "AW": "Aruba",
  "AU": "Australie",
  "AT": "Autriche",
  "AZ": "Azerbaidjan",
  "BS": "Bahamas",
  "BH": "Bahrein",
  "BD": "Bangladesh",
  "BB": "Barbade",
  "BY": "Bielorussie",
  "BE": "Belgique",
  "BZ": "Belize",
  "BJ": "Bénin",
  "BM": "Bermudes",
  "BT": "Bhoutan",
  "BO": "Bolivie",
  "BA": "Bosnie-Herzégovine",
  "BW": "Botswana",
  "BV": "Île Bouvet",
  "BR": "Brésil",
  "IO": "Océan Indien Britannique",
  "BN": "Brunei Darussalam",
  "BG": "Bulgarie",
  "BF": "Burkina Faso",
  "BI": "Burundi",
  "KH": "Cambodge",
  "CM": "Cameroun",
  "CA": "Canada",
  "CV": "Cap-Vert",
  "KY": "Caïmanes",
  "CF": "Centrafricaine, République",
  "TD": "Tchad",
  "CL": "Chili",
  "CN": "Chine",
  "CX": "Île Christmas",
  "CC": "Cocos",
  "CO": "Colombie",
  "KM": "Comores",
  "CG": "Congo, République populaire",
  "CD": "Congo, République démocratique",
  "CK": "Îles Cook",
  "CR": "Costa Rica",
  "CI": "Côte-d'Ivoire",
  "HR": "Croatie",
  "CU": "Cuba",
  "CY": "Chypre",
  "CYN": "Chypre du Nord",
  "CZ": "Tchéquie",
  "DK": "Danemark",
  "DJ": "Djibouti",
  "DM": "Dominique",
  "DO": "République Dominicaine",
  "EC": "Équateur",
  "EG": "Égypte",
  "SV": "El Salvador",
  "GQ": "Guinée équatoriale",
  "ER": "Érythrée",
  "EE": "Estonie",
  "ET": "Éthiopie",
  "FK": "Îles Malouines",
  "FO": "Îles Féroé",
  "FJ": "Fidji",
  "FI": "Finlande",
  "FR": "France",
  "GF": "Guyane française",
  "PF": "Polynésie française",
  "TF": "Terres australes françaises",
  "GA": "Gabon",
  "GM": "Gambie",
  "GE": "Géorgie",
  "DE": "Allemagne",
  "GH": "Ghana",
  "GI": "Gibraltar",
  "GR": "Grèce",
  "GL": "Groenland",
  "GD": "Grenada",
  "GP": "Guadeloupe",
  "GU": "Guam",
  "GT": "Guatemala",
  "GN": "Guinée",
  "GW": "Guinée-Bissau",
  "GY": "Guyana",
  "HT": "Haïti",
  "HM": "Îles Heard-et-MacDonald",
  "VA": "Saint-Siège",
  "HN": "Honduras",
  "HK": "Hong Kong",
  "HU": "Hongrie",
  "IS": "Islande",
  "IN": "Inde",
  "ID": "Indonésie",
  "IR": "Iran",
  "IQ": "Irak",
  "IE": "Irlande",
  "IL": "Israël",
  "IT": "Italie",
  "JM": "Jamaïque",
  "JP": "Japon",
  "JO": "Jordanie",
  "KZ": "Kazakhstan",
  "KE": "Kenya",
  "KI": "Kiribati",
  "KP": "Corée du Nord, République populaire démocratique",
  "KR": "Corée du Sud, République",
  "XK": "Kosovo",
  "KW": "Koweit",
  "KG": "Kirghistan",
  "LA": "Laos",
  "LV": "Lettonie",
  "LB": "Liban",
  "LS": "Lesotho",
  "LR": "Libéria",
  "LY": "Libye",
  "LI": "Liechtenstein",
  "LT": "Lituanie",
  "LU": "Luxembourg, Grand-Duché",
  "MO": "Macao",
  "MK": "Macédoine, Ex-République yougoslave",
  "MG": "Madagascar",
  "MW": "Malawi",
  "MY": "Malaisie",
  "MV": "Maldives",
  "ML": "Mali",
  "MT": "Malte",
  "MH": "Îles Marshall",
  "MQ": "Martinique",
  "MR": "Mauritanie",
  "MU": "Maurice",
  "YT": "Mayotte",
  "MX": "Mexique",
  "FM": "Micronésie",
  "MD": "Moldavie",
  "MC": "Monaco",
  "MN": "Mongolie",
  "MS": "Montserrat",
  "MA": "Maroc",
  "MZ": "Mozambique",
  "MM": "Myanmar",
  "NA": "Namibie",
  "NR": "Nauru",
  "NP": "Népal",
  "NL": "Pays-Bas",
  "NC": "Nouvelle-Calédonie",
  "NZ": "Nouvelle-Zélande",
  "NI": "Nicaragua",
  "NE": "Niger",
  "NG": "Nigéria",
  "NU": "Niué",
  "NF": "Île Norfolk",
  "MP": "Mariannes du Nord",
  "NO": "Norvège",
  "OM": "Oman",
  "PK": "Pakistan",
  "PW": "Palau",
  "PS": "Palestine",
  "PA": "Panama",
  "PG": "Papouasie-Nouvelle-Guinée",
  "PY": "Paraguay",
  "PE": "Pérou",
  "PH": "Philippines",
  "PN": "Pitcairn",
  "PL": "Pologne",
  "PT": "Portugal",
  "PR": "Porto Rico",
  "QA": "Qatar",
  "RE": "Réunion",
  "RO": "Roumanie",
  "RU": "Russie",
  "RW": "Rwanda",
  "SH": "Sainte-Hélène",
  "KN": "Saint-Christophe-et-Niévès",
  "LC": "Sainte-Lucie",
  "PM": "Saint Pierre and Miquelon",
  "VC": "Saint-Vincent et les Grenadines",
  "WS": "Samoa",
  "SM": "Saint-Marin",
  "ST": "São Tomé et Principe",
  "SA": "Arabie Saoudite",
  "SN": "Sénégal",
  "SC": "Seychelles",
  "SL": "Sierra Leone",
  "SG": "Singapour",
  "SK": "Slovaquie",
  "SI": "Slovénie",
  "SB": "Salomon",
  "SO": "Somalie",
  "SOL": "Somaliland",
  "ZA": "Afrique du Sud",
  "GS": "Géorgie du Sud-et-les Îles Sandwich du Sud",
  "ES": "Espagne",
  "LK": "Sri Lanka",
  "SD": "Soudan",
  "SR": "Suriname",
  "SJ": "Svalbard et Île Jan Mayen",
  "SZ": "Ngwane, Royaume du Swaziland",
  "SE": "Suède",
  "CH": "Suisse",
  "SY": "Syrie",
  "TW": "Taïwan",
  "TJ": "Tadjikistan",
  "TZ": "Tanzanie, République unie",
  "TH": "Thaïlande",
  "TL": "Timor Leste",
  "TG": "Togo",
  "TK": "Tokelau",
  "TO": "Tonga",
  "TT": "Trinidad et Tobago",
  "TN": "Tunisie",
  "TR": "Turquie",
  "TM": "Turkménistan",
  "TC": "Îles Turques-et-Caïques",
  "TV": "Tuvalu",
  "UG": "Ouganda",
  "UA": "Ukraine",
  "AE": "Émirats arabes unis",
  "GB": "Royaume-Uni",
  "US": "États-Unis",
  "UM": "États-Unis d'Amérique",
  "UY": "Uruguay",
  "UZ": "Ouzbékistan",
  "VU": "Vanuatu",
  "VE": "Venezuela",
  "VN": "Vietnam",
  "VG": "Îles vierges britanniques",
  "VI": "Îles vierges américaines",
  "WF": "Wallis et Futuna",
  "EH": "Sahara occidental",
  "YE": "Yémen",
  "ZM": "Zambie",
  "ZW": "Zimbabwe",
  "AX": "Åland",
  "BQ": "Bonaire, Saint-Eustache et Saba",
  "CW": "Curaçao",
  "GG": "Guernesey",
  "IM": "Île de Man",
  "JE": "Jersey",
  "ME": "Monténégro",
  "BL": "Saint-Barthélemy",
  "MF": "Saint-Martin (partie française)",
  "RS": "Serbie",
  "SX": "Saint-Martin (partie néerlandaise)",
  "SS": "Sud-Soudan"
};

nl.js

var NLi18n = {
  "AF": "Afghanistan",
  "AL": "Albanië",
  "DZ": "Algerije",
  "AS": "Amerikaans-Samoa",
  "AD": "Andorra",
  "AO": "Angola",
  "AI": "Anguilla",
  "AQ": "Antarctica",
  "AG": "Antigua en Barbuda",
  "AR": "Argentinië",
  "AM": "Armenië",
  "AW": "Aruba",
  "AU": "Australië",
  "AT": "Oostenrijk",
  "AZ": "Azerbeidzjan",
  "BS": "Bahama's",
  "BH": "Bahrein",
  "BD": "Bangladesh",
  "BB": "Barbados",
  "BY": "Wit-Rusland",
  "BE": "België",
  "BZ": "Belize",
  "BJ": "Benin",
  "BM": "Bermuda",
  "BT": "Bhutan",
  "BO": "Bolivië",
  "BA": "Bosnië-Herzegovina",
  "BW": "Botswana",
  "BV": "Bouvet Eiland",
  "BR": "Brazilië",
  "IO": "Brits Indische oceaan",
  "BN": "Brunei Darussalam",
  "BG": "Bulgarije",
  "BF": "Burkina Faso",
  "BI": "Burundi",
  "KH": "Cambodja",
  "CM": "Kameroen",
  "CA": "Canada",
  "CV": "Kaapverdië",
  "KY": "Kaaimaneilanden",
  "CF": "Centraal-Afrikaanse Republiek",
  "TD": "Tsjaad",
  "CL": "Chili",
  "CN": "China",
  "CX": "Christmaseiland",
  "CC": "Cocoseilanden",
  "CO": "Colombia",
  "KM": "Comoren",
  "CG": "Congo, Volksrepubliek",
  "CD": "Congo, Democratische Republiek",
  "CK": "Cookeilanden",
  "CR": "Costa Rica",
  "CI": "Ivoorkust",
  "HR": "Kroatië",
  "CU": "Cuba",
  "CY": "Cyprus",
  "CYN": "Noord-Cyprus",
  "CZ": "Tsjechië",
  "DK": "Denemarken",
  "DJ": "Djibouti",
  "DM": "Dominica",
  "DO": "Dominicaanse Republiek",
  "EC": "Ecuador",
  "EG": "Egypte",
  "SV": "El Salvador",
  "GQ": "Equatoriaal-Guinea",
  "ER": "Eritrea",
  "EE": "Estland",
  "ET": "Ethiopië",
  "FK": "Falklandeilanden",
  "FO": "Faeröer",
  "FJ": "Fiji",
  "FI": "Finland",
  "FR": "Frankrijk",
  "GF": "Frans-Guyana",
  "PF": "Frans-Polynesië",
  "TF": "Franse Zuidelijke Gebieden",
  "GA": "Gabon",
  "GM": "Gambia",
  "GE": "Georgië",
  "DE": "Duitsland",
  "GH": "Ghana",
  "GI": "Gibraltar",
  "GR": "Griekenland",
  "GL": "Groenland",
  "GD": "Grenada",
  "GP": "Guadeloupe",
  "GU": "Guam",
  "GT": "Guatemala",
  "GN": "Guinea",
  "GW": "Guinee-Bissau",
  "GY": "Guyana",
  "HT": "Haïti",
  "HM": "Heard en McDonaldeilanden",
  "VA": "Heilige Stoel",
  "HN": "Honduras",
  "HK": "Hong Kong",
  "HU": "Hongarije",
  "IS": "IJsland",
  "IN": "India",
  "ID": "Indonesia",
  "IR": "Iran",
  "IQ": "Irak",
  "IE": "Ierland",
  "IL": "Israël",
  "IT": "Italië",
  "JM": "Jamaica",
  "JP": "Japan",
  "JO": "Jordanië",
  "KZ": "Kazachstan",
  "KE": "Kenia",
  "KI": "Kiribati",
  "KP": "Noord-Korea, Democratische Volksrepubliek",
  "KR": "Zuid-Korea",
  "XK": "Kosovo",
  "KW": "Koeweit",
  "KG": "Kirgizstan",
  "LA": "Laos",
  "LV": "Letland",
  "LB": "Libanon",
  "LS": "Lesotho",
  "LR": "Liberia",
  "LY": "Libië",
  "LI": "Liechtenstein",
  "LT": "Litouwen",
  "LU": "Luxemburg, Groot-Hertogdom",
  "MO": "Macao",
  "MK": "Macedonië, Ex-Joegoslavische Republiek",
  "MG": "Madagaskar",
  "MW": "Malawi",
  "MY": "Maleisië",
  "MV": "Maldiven",
  "ML": "Mali",
  "MT": "Malta",
  "MH": "Marshalleilanden",
  "MQ": "Martinique",
  "MR": "Mauritanië",
  "MU": "Mauritius",
  "YT": "Mayotte",
  "MX": "Mexico",
  "FM": "Micronesië, Federale Staten",
  "MD": "Moldavië",
  "MC": "Monaco",
  "MN": "Mongolië",
  "MS": "Montserrat",
  "MA": "Marokko",
  "MZ": "Mozambique",
  "MM": "Myanmar",
  "NA": "Namibië",
  "NR": "Nauru",
  "NP": "Nepal",
  "NL": "Nederland",
  "NC": "Nieuw-Caledonië",
  "NZ": "Nieuw-Zeeland",
  "NI": "Nicaragua",
  "NE": "Niger",
  "NG": "Nigeria",
  "NU": "Niue",
  "NF": "Norfolk",
  "MP": "Noordelijke Marianen",
  "NO": "Noorwegen",
  "OM": "Oman",
  "PK": "Pakistan",
  "PW": "Palau",
  "PS": "Palestina",
  "PA": "Panama",
  "PG": "Papoea-Nieuw-Guinea",
  "PY": "Paraguay",
  "PE": "Peru",
  "PH": "Filipijnen",
  "PN": "Pitcairn",
  "PL": "Polen",
  "PT": "Portugal",
  "PR": "Puerto Rico",
  "QA": "Qatar",
  "RE": "Réunion",
  "RO": "Roemenië",
  "RU": "Rusland",
  "RW": "Rwanda",
  "SH": "Sint-Helena",
  "KN": "Saint Kitts en Nevis",
  "LC": "Saint Lucia",
  "PM": "Saint-Pierre en Miquelon",
  "VC": "Saint Vincent en de Grenadines",
  "WS": "Samoa",
  "SM": "San Marino",
  "ST": "São Tomé en Principe",
  "SA": "Saudi-Arabië",
  "SN": "Senegal",
  "SC": "Seychellen",
  "SL": "Sierra Leone",
  "SG": "Singapore",
  "SK": "Slowakije",
  "SI": "Slovenië",
  "SB": "Salomonseilanden",
  "SO": "Somalië",
  "SOL": "Somaliland",
  "ZA": "Zuid-Afrika",
  "GS": "Zuid-Georgia en de Zuidelijke Sandwicheilanden",
  "ES": "Spanje",
  "LK": "Sri Lanka",
  "SD": "Soedan",
  "SR": "Suriname",
  "SJ": "Spitsbergen en Jan Mayen",
  "SZ": "Ngwane, Koninkrijk Swaziland",
  "SE": "Zweden",
  "CH": "Zwitserland",
  "SY": "Syrië",
  "TW": "Taiwan",
  "TJ": "Tadzjikistan",
  "TZ": "Tanzania, Verenigde Republiek",
  "TH": "Thailand",
  "TL": "Timor Leste",
  "TG": "Togo",
  "TK": "Tokelau",
  "TO": "Tonga",
  "TT": "Trinidad en Tobago",
  "TN": "Tunesië",
  "TR": "Turkije",
  "TM": "Turkmenistan",
  "TC": "Turks- en Caicoseilanden",
  "TV": "Tuvalu",
  "UG": "Oeganda",
  "UA": "Oekraïne",
  "AE": "Verenigde Arabische Emiraten",
  "GB": "Verenigd Koninkrijk",
  "US": "Verenigde Staten van Amerika",
  "UM": "Ver afgelegen eilandjes van de Verenigde Staten",
  "UY": "Uruguay",
  "UZ": "Oezbekistan",
  "VU": "Vanuatu",
  "VE": "Venezuela",
  "VN": "Vietnam",
  "VG": "Maagdeneilanden, Britse",
  "VI": "Maagdeneilanden, Amerikaanse",
  "WF": "Wallis en Futuna",
  "EH": "Westelijke Sahara",
  "YE": "Jemen",
  "ZM": "Zambia",
  "ZW": "Zimbabwe",
  "AX": "Åland",
  "BQ": "Bonaire, Sint Eustatius en Saba",
  "CW": "Curaçao",
  "GG": "Guernsey",
  "IM": "Eiland Man",
  "JE": "Jersey",
  "ME": "Montenegro",
  "BL": "Saint Barthélemy",
  "MF": "Sint-Maarten (Frans deel)",
  "RS": "Servië",
  "SX": "Sint Maarten (Nederlands deel)",
  "SS": "Zuid-Soedan"
};

pt.js

var PTi18n = {
  "AF": "Afeganistão",
  "ZA": "África do Sul",
  "AL": "Albânia",
  "DE": "Alemanha",
  "AD": "Andorra",
  "AO": "Angola",
  "AI": "Anguilla",
  "AQ": "Antártida",
  "AG": "Antígua e Barbuda",
  "SA": "Arábia Saudita",
  "DZ": "Argélia",
  "AR": "Argentina",
  "AM": "Armênia",
  "AW": "Aruba",
  "AU": "Austrália",
  "AT": "Áustria",
  "AZ": "Azerbaijão",
  "BS": "Bahamas",
  "BH": "Bahrein",
  "BD": "Bangladesh",
  "BB": "Barbados",
  "BE": "Bélgica",
  "BZ": "Belize",
  "BJ": "Benin",
  "BM": "Bermudas",
  "BY": "Bielorrússia",
  "BO": "Bolívia",
  "BA": "Bósnia e Herzegovina",
  "BW": "Botsuana",
  "BR": "Brasil",
  "BN": "Brunei",
  "BG": "Bulgária",
  "BF": "Burquina Faso",
  "BI": "Burundi",
  "BT": "Butão",
  "CV": "Cabo Verde",
  "KH": "Camboja",
  "CA": "Canadá",
  "QA": "Catar",
  "KZ": "Cazaquistão",
  "EA": "Ceuta e Melilha",
  "TD": "Chade",
  "CL": "Chile",
  "CN": "China",
  "CY": "Chipre",
  "CYN": "Chipre do Norte",
  "VA": "Cidade do Vaticano",
  "SG": "Cingapura",
  "CO": "Colômbia",
  "KM": "Comores",
  "CG": "Congo - Brazzaville",
  "CD": "Congo - Kinshasa",
  "KP": "Coreia do Norte",
  "KR": "Coreia do Sul",
  "XK": "Kosovo",
  "CI": "Costa do Marfim",
  "CR": "Costa Rica",
  "HR": "Croácia",
  "CU": "Cuba",
  "CW": "Curaçao",
  "DG": "Diego Garcia",
  "DK": "Dinamarca",
  "DJ": "Djibuti",
  "DM": "Dominica",
  "EG": "Egito",
  "SV": "El Salvador",
  "AE": "Emirados Árabes Unidos",
  "EC": "Equador",
  "ER": "Eritreia",
  "SK": "Eslováquia",
  "SI": "Eslovênia",
  "ES": "Espanha",
  "US": "Estados Unidos",
  "EE": "Estônia",
  "ET": "Etiópia",
  "FJ": "Fiji",
  "PH": "Filipinas",
  "FI": "Finlândia",
  "FR": "França",
  "GA": "Gabão",
  "GM": "Gâmbia",
  "GH": "Gana",
  "GE": "Geórgia",
  "GS": "Geórgia do Sul e Ilhas Sandwich do Sul",
  "GI": "Gibraltar",
  "GD": "Granada",
  "GR": "Grécia",
  "GL": "Groenlândia",
  "GP": "Guadalupe",
  "GU": "Guam",
  "GT": "Guatemala",
  "GG": "Guernsey",
  "GY": "Guiana",
  "GF": "Guiana Francesa",
  "GN": "Guiné",
  "GW": "Guiné Bissau",
  "GQ": "Guiné Equatorial",
  "HT": "Haiti",
  "NL": "Holanda",
  "HN": "Honduras",
  "HK": "Hong Kong, RAE da China",
  "HU": "Hungria",
  "YE": "Iêmen",
  "BV": "Ilhas Bouvet",
  "CX": "Ilha Christmas",
  "AC": "Ilha de Ascensão",
  "IM": "Ilha de Man",
  "NF": "Ilha Norfolk",
  "AX": "Ilhas Åland",
  "KY": "Ilhas Caiman",
  "IC": "Ilhas Canárias",
  "CC": "Ilhas Cocos (Keeling)",
  "CK": "Ilhas Cook",
  "UM": "Ilhas Distantes dos EUA",
  "HM": "Ilha Heard e Ilha McDonald",
  "FO": "Ilhas Faroe",
  "FK": "Ilhas Malvinas",
  "MP": "Ilhas Marianas do Norte",
  "MH": "Ilhas Marshall",
  "PN": "Ilhas Pitcairn",
  "SB": "Ilhas Salomão",
  "TC": "Ilhas Turks e Caicos",
  "VG": "Ilhas Virgens Britânicas",
  "VI": "Ilhas Virgens dos EUA",
  "IN": "Índia",
  "ID": "Indonésia",
  "IR": "Irã",
  "IQ": "Iraque",
  "IE": "Irlanda",
  "IS": "Islândia",
  "IL": "Israel",
  "IT": "Itália",
  "JM": "Jamaica",
  "JP": "Japão",
  "JE": "Jersey",
  "JO": "Jordânia",
  "XK": "Kosovo",
  "KW": "Kuwait",
  "LA": "Laos",
  "LS": "Lesoto",
  "LV": "Letônia",
  "LB": "Líbano",
  "LR": "Libéria",
  "LY": "Líbia",
  "LI": "Liechtenstein",
  "LT": "Lituânia",
  "LU": "Luxemburgo",
  "MO": "Macau, RAE da China",
  "MK": "Macedônia",
  "MG": "Madagascar",
  "MY": "Malásia",
  "MW": "Malawi",
  "MV": "Maldivas",
  "ML": "Mali",
  "MT": "Malta",
  "MA": "Marrocos",
  "MQ": "Martinica",
  "MU": "Maurício",
  "MR": "Mauritânia",
  "YT": "Mayotte",
  "MX": "México",
  "MM": "Mianmar (Birmânia)",
  "FM": "Micronésia",
  "MZ": "Moçambique",
  "MD": "Moldávia",
  "MC": "Mônaco",
  "MN": "Mongólia",
  "ME": "Montenegro",
  "MS": "Montserrat",
  "NA": "Namíbia",
  "NR": "Nauru",
  "NP": "Nepal",
  "NI": "Nicarágua",
  "NE": "Níger",
  "NG": "Nigéria",
  "NU": "Niue",
  "NO": "Noruega",
  "NC": "Nova Caledônia",
  "NZ": "Nova Zelândia",
  "OM": "Omã",
  "BQ": "Países Baixos Caribenhos",
  "PW": "Palau",
  "PA": "Panamá",
  "PG": "Papua-Nova Guiné",
  "PK": "Paquistão",
  "PY": "Paraguai",
  "PE": "Peru",
  "PF": "Polinésia Francesa",
  "PL": "Polônia",
  "PR": "Porto Rico",
  "PT": "Portugal",
  "KE": "Quênia",
  "KG": "Quirguistão",
  "KI": "Quiribati",
  "GB": "Reino Unido",
  "CF": "República Centro-Africana",
  "DO": "República Dominicana",
  "CM": "República dos Camarões",
  "CZ": "República Tcheca",
  "RE": "Reunião",
  "RO": "Romênia",
  "RW": "Ruanda",
  "RU": "Rússia",
  "EH": "Saara Ocidental",
  "PM": "Saint Pierre e Miquelon",
  "WS": "Samoa",
  "AS": "Samoa Americana",
  "SM": "San Marino",
  "SH": "Santa Helena",
  "LC": "Santa Lúcia",
  "BL": "São Bartolomeu",
  "KN": "São Cristóvão e Nevis",
  "MF": "São Martinho",
  "ST": "São Tomé e Príncipe",
  "VC": "São Vicente e Granadinas",
  "SN": "Senegal",
  "SL": "Serra Leoa",
  "RS": "Sérvia",
  "SC": "Seychelles",
  "SX": "Sint Maarten",
  "SY": "Síria",
  "SO": "Somália",
  "SOL": "Somaliland",
  "LK": "Sri Lanka",
  "SZ": "Suazilândia",
  "SD": "Sudão",
  "SS": "Sudão do Sul",
  "SE": "Suécia",
  "CH": "Suíça",
  "SR": "Suriname",
  "SJ": "Svalbard e Jan Mayen",
  "TH": "Tailândia",
  "TW": "Taiwan",
  "TJ": "Tajiquistão",
  "TZ": "Tanzânia",
  "IO": "Território Britânico do Oceano Índico",
  "TF": "Territórios Franceses do Sul",
  "PS": "Territórios palestinos",
  "TL": "Timor-Leste",
  "TG": "Togo",
  "TK": "Tokelau",
  "TO": "Tonga",
  "TT": "Trinidad e Tobago",
  "TA": "Tristão da Cunha",
  "TN": "Tunísia",
  "TM": "Turcomenistão",
  "TR": "Turquia",
  "TV": "Tuvalu",
  "UA": "Ucrânia",
  "UG": "Uganda",
  "UY": "Uruguai",
  "UZ": "Uzbequistão",
  "VU": "Vanuatu",
  "VE": "Venezuela",
  "VN": "Vietnã",
  "WF": "Wallis e Futuna",
  "ZM": "Zâmbia",
  "ZW": "Zimbábue"
};

rbush.min.js

(function(){"use strict";function rbush(maxEntries,format){if(!(this instanceof rbush))return new rbush(maxEntries,format);this._maxEntries=Math.max(4,maxEntries||9);this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4));if(format){this._initFormat(format)}this.clear()}rbush.prototype={all:function(){return this._all(this.data,[])},search:function(bbox){var node=this.data,result=[],toBBox=this.toBBox;if(!intersects(bbox,node.bbox))return result;var nodesToSearch=[],i,len,child,childBBox;while(node){for(i=0,len=node.children.length;i<len;i++){child=node.children[i];childBBox=node.leaf?toBBox(child):child.bbox;if(intersects(bbox,childBBox)){if(node.leaf)result.push(child);else if(contains(bbox,childBBox))this._all(child,result);else nodesToSearch.push(child)}}node=nodesToSearch.pop()}return result},collides:function(bbox){var node=this.data,toBBox=this.toBBox;if(!intersects(bbox,node.bbox))return false;var nodesToSearch=[],i,len,child,childBBox;while(node){for(i=0,len=node.children.length;i<len;i++){child=node.children[i];childBBox=node.leaf?toBBox(child):child.bbox;if(intersects(bbox,childBBox)){if(node.leaf||contains(bbox,childBBox))return true;nodesToSearch.push(child)}}node=nodesToSearch.pop()}return false},load:function(data){if(!(data&&data.length))return this;if(data.length<this._minEntries){for(var i=0,len=data.length;i<len;i++){this.insert(data[i])}return this}var node=this._build(data.slice(),0,data.length-1,0);if(!this.data.children.length){this.data=node}else if(this.data.height===node.height){this._splitRoot(this.data,node)}else{if(this.data.height<node.height){var tmpNode=this.data;this.data=node;node=tmpNode}this._insert(node,this.data.height-node.height-1,true)}return this},insert:function(item){if(item)this._insert(item,this.data.height-1);return this},clear:function(){this.data={children:[],height:1,bbox:empty(),leaf:true};return this},remove:function(item){if(!item)return this;var node=this.data,bbox=this.toBBox(item),path=[],indexes=[],i,parent,index,goingUp;while(node||path.length){if(!node){node=path.pop();parent=path[path.length-1];i=indexes.pop();goingUp=true}if(node.leaf){index=node.children.indexOf(item);if(index!==-1){node.children.splice(index,1);path.push(node);this._condense(path);return this}}if(!goingUp&&!node.leaf&&contains(node.bbox,bbox)){path.push(node);indexes.push(i);i=0;parent=node;node=node.children[0]}else if(parent){i++;node=parent.children[i];goingUp=false}else node=null}return this},toBBox:function(item){return item},compareMinX:function(a,b){return a[0]-b[0]},compareMinY:function(a,b){return a[1]-b[1]},toJSON:function(){return this.data},fromJSON:function(data){this.data=data;return this},_all:function(node,result){var nodesToSearch=[];while(node){if(node.leaf)result.push.apply(result,node.children);else nodesToSearch.push.apply(nodesToSearch,node.children);node=nodesToSearch.pop()}return result},_build:function(items,left,right,height){var N=right-left+1,M=this._maxEntries,node;if(N<=M){node={children:items.slice(left,right+1),height:1,bbox:null,leaf:true};calcBBox(node,this.toBBox);return node}if(!height){height=Math.ceil(Math.log(N)/Math.log(M));M=Math.ceil(N/Math.pow(M,height-1))}node={children:[],height:height,bbox:null,leaf:false};var N2=Math.ceil(N/M),N1=N2*Math.ceil(Math.sqrt(M)),i,j,right2,right3;multiSelect(items,left,right,N1,this.compareMinX);for(i=left;i<=right;i+=N1){right2=Math.min(i+N1-1,right);multiSelect(items,i,right2,N2,this.compareMinY);for(j=i;j<=right2;j+=N2){right3=Math.min(j+N2-1,right2);node.children.push(this._build(items,j,right3,height-1))}}calcBBox(node,this.toBBox);return node},_chooseSubtree:function(bbox,node,level,path){var i,len,child,targetNode,area,enlargement,minArea,minEnlargement;while(true){path.push(node);if(node.leaf||path.length-1===level)break;minArea=minEnlargement=Infinity;for(i=0,len=node.children.length;i<len;i++){child=node.children[i];area=bboxArea(child.bbox);enlargement=enlargedArea(bbox,child.bbox)-area;if(enlargement<minEnlargement){minEnlargement=enlargement;minArea=area<minArea?area:minArea;targetNode=child}else if(enlargement===minEnlargement){if(area<minArea){minArea=area;targetNode=child}}}node=targetNode}return node},_insert:function(item,level,isNode){var toBBox=this.toBBox,bbox=isNode?item.bbox:toBBox(item),insertPath=[];var node=this._chooseSubtree(bbox,this.data,level,insertPath);node.children.push(item);extend(node.bbox,bbox);while(level>=0){if(insertPath[level].children.length>this._maxEntries){this._split(insertPath,level);level--}else break}this._adjustParentBBoxes(bbox,insertPath,level)},_split:function(insertPath,level){var node=insertPath[level],M=node.children.length,m=this._minEntries;this._chooseSplitAxis(node,m,M);var splitIndex=this._chooseSplitIndex(node,m,M);var newNode={children:node.children.splice(splitIndex,node.children.length-splitIndex),height:node.height,bbox:null,leaf:false};if(node.leaf)newNode.leaf=true;calcBBox(node,this.toBBox);calcBBox(newNode,this.toBBox);if(level)insertPath[level-1].children.push(newNode);else this._splitRoot(node,newNode)},_splitRoot:function(node,newNode){this.data={children:[node,newNode],height:node.height+1,bbox:null,leaf:false};calcBBox(this.data,this.toBBox)},_chooseSplitIndex:function(node,m,M){var i,bbox1,bbox2,overlap,area,minOverlap,minArea,index;minOverlap=minArea=Infinity;for(i=m;i<=M-m;i++){bbox1=distBBox(node,0,i,this.toBBox);bbox2=distBBox(node,i,M,this.toBBox);overlap=intersectionArea(bbox1,bbox2);area=bboxArea(bbox1)+bboxArea(bbox2);if(overlap<minOverlap){minOverlap=overlap;index=i;minArea=area<minArea?area:minArea}else if(overlap===minOverlap){if(area<minArea){minArea=area;index=i}}}return index},_chooseSplitAxis:function(node,m,M){var compareMinX=node.leaf?this.compareMinX:compareNodeMinX,compareMinY=node.leaf?this.compareMinY:compareNodeMinY,xMargin=this._allDistMargin(node,m,M,compareMinX),yMargin=this._allDistMargin(node,m,M,compareMinY);if(xMargin<yMargin)node.children.sort(compareMinX)},_allDistMargin:function(node,m,M,compare){node.children.sort(compare);var toBBox=this.toBBox,leftBBox=distBBox(node,0,m,toBBox),rightBBox=distBBox(node,M-m,M,toBBox),margin=bboxMargin(leftBBox)+bboxMargin(rightBBox),i,child;for(i=m;i<M-m;i++){child=node.children[i];extend(leftBBox,node.leaf?toBBox(child):child.bbox);margin+=bboxMargin(leftBBox)}for(i=M-m-1;i>=m;i--){child=node.children[i];extend(rightBBox,node.leaf?toBBox(child):child.bbox);margin+=bboxMargin(rightBBox)}return margin},_adjustParentBBoxes:function(bbox,path,level){for(var i=level;i>=0;i--){extend(path[i].bbox,bbox)}},_condense:function(path){for(var i=path.length-1,siblings;i>=0;i--){if(path[i].children.length===0){if(i>0){siblings=path[i-1].children;siblings.splice(siblings.indexOf(path[i]),1)}else this.clear()}else calcBBox(path[i],this.toBBox)}},_initFormat:function(format){var compareArr=["return a"," - b",";"];this.compareMinX=new Function("a","b",compareArr.join(format[0]));this.compareMinY=new Function("a","b",compareArr.join(format[1]));this.toBBox=new Function("a","return [a"+format.join(", a")+"];")}};function calcBBox(node,toBBox){node.bbox=distBBox(node,0,node.children.length,toBBox)}function distBBox(node,k,p,toBBox){var bbox=empty();for(var i=k,child;i<p;i++){child=node.children[i];extend(bbox,node.leaf?toBBox(child):child.bbox)}return bbox}function empty(){return[Infinity,Infinity,-Infinity,-Infinity]}function extend(a,b){a[0]=Math.min(a[0],b[0]);a[1]=Math.min(a[1],b[1]);a[2]=Math.max(a[2],b[2]);a[3]=Math.max(a[3],b[3]);return a}function compareNodeMinX(a,b){return a.bbox[0]-b.bbox[0]}function compareNodeMinY(a,b){return a.bbox[1]-b.bbox[1]}function bboxArea(a){return(a[2]-a[0])*(a[3]-a[1])}function bboxMargin(a){return a[2]-a[0]+(a[3]-a[1])}function enlargedArea(a,b){return(Math.max(b[2],a[2])-Math.min(b[0],a[0]))*(Math.max(b[3],a[3])-Math.min(b[1],a[1]))}function intersectionArea(a,b){var minX=Math.max(a[0],b[0]),minY=Math.max(a[1],b[1]),maxX=Math.min(a[2],b[2]),maxY=Math.min(a[3],b[3]);return Math.max(0,maxX-minX)*Math.max(0,maxY-minY)}function contains(a,b){return a[0]<=b[0]&&a[1]<=b[1]&&b[2]<=a[2]&&b[3]<=a[3]}function intersects(a,b){return b[0]<=a[2]&&b[1]<=a[3]&&b[2]>=a[0]&&b[3]>=a[1]}function multiSelect(arr,left,right,n,compare){var stack=[left,right],mid;while(stack.length){right=stack.pop();left=stack.pop();if(right-left<=n)continue;mid=left+Math.ceil((right-left)/n/2)*n;select(arr,left,right,mid,compare);stack.push(left,mid,mid,right)}}function select(arr,left,right,k,compare){var n,i,z,s,sd,newLeft,newRight,t,j;while(right>left){if(right-left>600){n=right-left+1;i=k-left+1;z=Math.log(n);s=.5*Math.exp(2*z/3);sd=.5*Math.sqrt(z*s*(n-s)/n)*(i-n/2<0?-1:1);newLeft=Math.max(left,Math.floor(k-i*s/n+sd));newRight=Math.min(right,Math.floor(k+(n-i)*s/n+sd));select(arr,newLeft,newRight,k,compare)}t=arr[k];i=left;j=right;swap(arr,left,k);if(compare(arr[right],t)>0)swap(arr,left,right);while(i<j){swap(arr,i,j);i++;j--;while(compare(arr[i],t)<0)i++;while(compare(arr[j],t)>0)j--}if(compare(arr[left],t)===0)swap(arr,left,j);else{j++;swap(arr,j,right)}if(j<=k)left=j+1;if(k<=j)right=j-1}}function swap(arr,i,j){var tmp=arr[i];arr[i]=arr[j];arr[j]=tmp}if(typeof define==="function"&&define.amd)define("rbush",function(){return rbush});else if(typeof module!=="undefined")module.exports=rbush;else if(typeof self!=="undefined")self.rbush=rbush;else window.rbush=rbush})();

spam.min.js

var StaticCanvasMap;var ZoomableCanvasMap;!function(){"use strict";function inside(pt,polygon){var polys=polygon.geometry.coordinates;if(polygon.geometry.type==="Polygon")polys=[polys];var insidePoly=false;var i=0;while(i<polys.length&&!insidePoly){if(inRing(pt,polys[i][0])){var inHole=false;var k=1;while(k<polys[i].length&&!inHole){if(inRing(pt,polys[i][k])){inHole=true}k++}if(!inHole)insidePoly=true}i++}return insidePoly}function inRing(pt,ring){var isInside=false;for(var i=0,j=ring.length-1;i<ring.length;j=i++){var xi=ring[i][0],yi=ring[i][1];var xj=ring[j][0],yj=ring[j][1];var intersect=yi>pt[1]!==yj>pt[1]&&pt[0]<(xj-xi)*(pt[1]-yi)/(yj-yi)+xi;if(intersect)isInside=!isInside}return isInside}function maxBounds(one,two){var bounds=two;if(one[0][0]<two[0][0])bounds[0][0]=one[0][0];if(one[0][1]<two[0][1])bounds[0][1]=one[0][1];if(one[1][0]>two[1][0])bounds[1][0]=one[1][0];if(one[1][1]>two[1][1])bounds[1][1]=one[1][1];return bounds}function createRTree(element,dataPath){element.lookupTree=rbush(4);var elements=[];for(var j in element.features.features){var bounds=dataPath.bounds(element.features.features[j]);elements.push([bounds[0][0].toFixed(0),bounds[0][1].toFixed(0),Math.ceil(bounds[1][0]),Math.ceil(bounds[1][1]),element.features.features[j]])}element.lookupTree.load(elements)}function paintFeature(element,feature,parameters){parameters.context.beginPath();parameters.path(feature);element.static.paintfeature(parameters,feature)}function paintBackgroundElement(element,parameters){if(!element.static)return;if(element.static.prepaint)element.static.prepaint(parameters);if(element.static.paintfeature){var lookup=element.lookupTree.search([parameters.translate[0],parameters.translate[1],parameters.width/parameters.scale-parameters.translate[0],parameters.height/parameters.scale-parameters.translate[1]]);for(var j in lookup){paintFeature(element,lookup[j][4],parameters)}}if(element.static.postpaint)element.static.postpaint(parameters)}function PartialPainter(data,parameters){var index=0,j=0,element=null,currentLookup=[];this.hasNext=function(){return index<=data.length&&j<currentLookup.length};this.renderNext=function(){if(index>=data.length&&j>=currentLookup.length)return;var start=performance.now();if(!element||j>=currentLookup.length){while(index<data.length&&!data[index].static){index++}if(index>=data.length)return;element=data[index];if(element.static.prepaint)element.static.prepaint(parameters);currentLookup=element.lookupTree.search([-parameters.translate[0],-parameters.translate[1],parameters.width/parameters.scale-parameters.translate[0],parameters.height/parameters.scale-parameters.translate[1]]);j=0;++index}if(element.static.paintfeature){for(;j!=currentLookup.length;++j){var feature=currentLookup[j][4];paintFeature(element,feature,parameters);if(performance.now()-start>10)break}}else{j=currentLookup.length}if(j==currentLookup.length&&element.static.postpaint){element.static.postpaint(parameters)}};this.finish=function(){if(index>=data.length&&j>=currentLookup.length)return;if(j<currentLookup.length)index--;for(;index!=data.length;++index){if(j>=currentLookup.length){while(!data[index].static&&index<data.length){index++}if(index>=data.length)return;element=data[index];if(element.static.prepaint)element.static.prepaint(parameters);currentLookup=element.lookupTree.search([-parameters.translate[0],-parameters.translate[1],parameters.width/parameters.scale-parameters.translate[0],parameters.height/parameters.scale-parameters.translate[1]]);j=0}if(element.static.paintfeature){for(;j!=currentLookup.length;++j){var feature=currentLookup[j][4];paintFeature(element,feature,parameters)}}if(element.static.postpaint)element.static.postpaint(parameters)}}}function translatePoint(point,scale,translate){return[point[0]/scale-translate[0],point[1]/scale-translate[1]]}function extend(extension,obj){var newObj={};for(var elem in obj){newObj[elem]=obj[elem]}for(var elem in extension){if(!newObj.hasOwnProperty(elem))newObj[elem]=extension[elem]}return newObj}function CanvasMap(parameters){var settings=extend({width:d3.select(parameters.element).node().getBoundingClientRect().width,ratio:1,area:0,scale:1,translate:[0,0],background:null,backgroundScale:1,backgroundTranslate:[0,0],map:this},parameters),simplify=d3.geo.transform({point:function(x,y,z){if(!z||z>=settings.area){this.stream.point(x,y)}}}),canvas=null,context=null;if(!parameters.projection){var b=[[Infinity,Infinity],[-Infinity,-Infinity]];for(var i in settings.data){b=maxBounds(b,d3.geo.bounds(settings.data[i].features))}settings.projection=d3.geo.mercator().scale(1).center([(b[1][0]+b[0][0])/2,(b[1][1]+b[0][1])/2])}var dataPath=d3.geo.path().projection({stream:function(s){return simplify.stream(settings.projection.stream(s))}});var b=[[Infinity,Infinity],[-Infinity,-Infinity]];for(var i in settings.data){b=maxBounds(b,dataPath.bounds(settings.data[i].features))}var dx=b[1][0]-b[0][0],dy=b[1][1]-b[0][1];if(!parameters.projection){settings.height=settings.height||Math.ceil(dy*settings.width/dx);settings.projection.scale(.9*(settings.width/dx)).translate([settings.width/2,settings.height/2])}else if(!settings.height){settings.height=Math.ceil(dy*1/.9)}d3.select(settings.parameters).attr("height",settings.height);function init(){canvas=d3.select(settings.element).append("canvas");context=canvas.node().getContext("2d");var devicePixelRatio=window.devicePixelRatio||1,backingStoreRatio=context.webkitBackingStorePixelRatio||context.mozBackingStorePixelRatio||context.msBackingStorePixelRatio||context.oBackingStorePixelRatio||context.backingStorePixelRatio||1;settings.ratio=devicePixelRatio/backingStoreRatio;settings.area=1/settings.projection.scale()/settings.ratio/20;canvas.attr("width",settings.width*settings.ratio);canvas.attr("height",settings.height*settings.ratio);canvas.style("width",settings.width+"px");canvas.style("height",settings.height+"px");context.lineJoin="round";context.lineCap="round";dataPath.context(context);context.clearRect(0,0,settings.width*settings.ratio,settings.height*settings.ratio);context.save();context.scale(settings.ratio,settings.ratio);for(var i in settings.data){createRTree(settings.data[i],dataPath)}settings.background=new Image;settings.backgroundScale=settings.scale;settings.backgroundTranslate=settings.translate;var parameters={path:dataPath,context:context,scale:settings.scale,translate:settings.translate,width:settings.width,height:settings.height,map:settings.map};var callback=function(){var hasHover=false,hasClick=false;for(var i in settings.data){var element=settings.data[i];hasHover=hasHover||element.events&&element.events.hover;hasClick=hasClick||element.events&&element.events.click;if(element.dynamic&&element.dynamic.postpaint)element.dynamic.postpaint(parameters,null)}context.restore();hasClick&&canvas.on("click",click);hasHover&&canvas.on("mousemove",hover).on("mouseleave",hoverLeave)};for(var i in settings.data){var element=settings.data[i];if(element.dynamic&&element.dynamic.prepaint)element.dynamic.prepaint(parameters,element.hoverElement)}for(var i in settings.data){var element=settings.data[i];paintBackgroundElement(element,parameters)}settings.background.onload=callback;settings.background.src=canvas.node().toDataURL();this.init=function(){}}function paint(){context.save();context.scale(settings.scale*settings.ratio,settings.scale*settings.ratio);context.translate(settings.translate[0],settings.translate[1]);context.clearRect(-settings.translate[0],-settings.translate[1],settings.width*settings.ratio,settings.height*settings.ratio);context.rect(-settings.translate[0],-settings.translate[1],settings.width/settings.scale,settings.height/settings.scale);context.clip();var parameters={path:dataPath,context:dataPath.context(),scale:settings.scale,translate:settings.translate,width:settings.width,height:settings.height,map:settings.map};settings.area=1/settings.projection.scale()/settings.scale/settings.ratio/20;for(var i in settings.data){var element=settings.data[i];if(element.dynamic&&element.dynamic.prepaint)element.dynamic.prepaint(parameters,element.hoverElement)}context.drawImage(settings.background,0,0,settings.width*settings.ratio,settings.height*settings.ratio,-settings.backgroundTranslate[0],-settings.backgroundTranslate[1],settings.width/settings.backgroundScale,settings.height/settings.backgroundScale);for(var i in settings.data){var element=settings.data[i];if(element.dynamic&&element.dynamic.postpaint)element.dynamic.postpaint(parameters,element.hoverElement)}context.restore()}function click(){var point=translatePoint(d3.mouse(this),settings.scale,settings.translate);var parameters={path:dataPath,context:context,scale:settings.scale,translate:settings.translate,width:settings.width,height:settings.height,map:settings.map};for(var i in settings.data){var element=settings.data[i];if(!element.events||!element.events.click)continue;var lookup=element.lookupTree.search([point[0],point[1],point[0],point[1]]);var isInside=false;for(var j in lookup){var feature=lookup[j][4];if(inside(settings.projection.invert(point),feature)){element.events.click(parameters,feature);isInside=true}}isInside||element.events.click(parameters,null)}}function hoverLeave(){var parameters={path:dataPath,context:context,scale:settings.scale,translate:settings.translate,width:settings.width,height:settings.height,map:settings.map};for(var i in settings.data){var element=settings.data[i];if(!element.events||!element.events.hover)continue;element.hoverElement=false;element.events.hover(parameters,null)}}function hover(){var point=translatePoint(d3.mouse(this),settings.scale,settings.translate),parameters={path:dataPath,context:context,scale:settings.scale,translate:settings.translate,width:settings.width,height:settings.height,map:settings.map};for(var i in settings.data){var element=settings.data[i];if(!element.events||!element.events.hover||element.hoverElement&&inside(settings.projection.invert(point),element.hoverElement)){continue}element.hoverElement=false;var lookup=element.lookupTree.search([point[0],point[1],point[0],point[1]]);for(var j in lookup){var feature=lookup[j][4];if(inside(settings.projection.invert(point),feature)){element.hoverElement=feature;break}}element.events.hover(parameters,element.hoverElement)}}this.init=init;this.paint=paint;this.settings=function(){return settings}}StaticCanvasMap=function(parameters){var map=new CanvasMap(parameters);this.init=function(){map.init()};this.paint=function(){map.paint()}};var epsilon=.5;function nearEqual(a,b){return Math.abs(a-b)<epsilon}function ImageCache(parameters){var cache=[],settings=parameters;this.addImage=function(parameters){cache.push(parameters)};this.getImage=function(parameters){for(var i in cache){var element=cache[i];if(nearEqual(element.scale,parameters.scale)&&nearEqual(element.translate[0],parameters.translate[0])&&nearEqual(element.translate[1],parameters.translate[1]))return element}return null};this.getFittingImage=function(bbox){var currentImage=cache.length>0?cache[0]:null;for(var i in cache){var image=cache[i];var imageBB=[-image.translate[0],-image.translate[1],settings.width/image.scale-image.translate[0],settings.height/image.scale-image.translate[1]];if(imageBB[0]<=bbox[0]&&imageBB[1]<=bbox[1]&&imageBB[2]>=bbox[2]&&imageBB[3]>=bbox[3]&&(!currentImage||currentImage.scale<image.scale)){currentImage=image}}return currentImage}}ZoomableCanvasMap=function(parameters){var map=new CanvasMap(parameters),simplify=d3.geo.transform({point:function(x,y,z){if(z>=area)this.stream.point(x,y)}}),area=0,canvas=null,context=null,settings=map.settings(),dataPath=d3.geo.path().projection({stream:function(s){return simplify.stream(settings.projection.stream(s))}}),imageCache=new ImageCache({width:settings.width,height:settings.height});settings.map=this;settings.zoomScale=settings.zoomScale||.5;this.init=function(){map.init();canvas=d3.select(settings.element).append("canvas");context=canvas.node().getContext("2d");area=1/settings.projection.scale()/settings.ratio/20;canvas.attr("width",settings.width*settings.ratio);canvas.attr("height",settings.height*settings.ratio);canvas.style("width",settings.width+"px");canvas.style("height",settings.height+"px");canvas.style("display","none");context.lineJoin="round";context.lineCap="round";dataPath.context(context);imageCache.addImage({image:settings.background,scale:settings.scale,translate:settings.translate})};this.paint=function(){map.paint()};function scaleZoom(scale,translate){if(nearEqual(scale,settings.scale)&&nearEqual(translate[0],settings.translate[0])&&nearEqual(translate[1],settings.translate[1])){scale=1;translate=[0,0]}if(scale==1&&settings.scale==1&&!translate[0]&&!translate[1]&&!settings.translate[0]&&!settings.translate[1]){return}area=1/settings.projection.scale()/scale/settings.ratio/20;context.save();context.scale(scale*settings.ratio,scale*settings.ratio);context.translate(translate[0],translate[1]);context.clearRect(-translate[0],-translate[1],settings.width*settings.ratio,settings.height*settings.ratio);var parameters={path:dataPath,context:context,scale:scale,translate:translate,width:settings.width,height:settings.height,map:settings.map};var image=imageCache.getImage({scale:scale,translate:translate});if(!image){var background=new Image,partialPainter=new PartialPainter(settings.data,parameters)}var translatedOne=translatePoint([settings.width,settings.height],scale,translate),translatedTwo=translatePoint([settings.width,settings.height],settings.scale,settings.translate);var bbox=[Math.min(-translate[0],-settings.translate[0]),Math.min(-translate[1],-settings.translate[1]),Math.max(translatedOne[0],translatedTwo[0]),Math.max(translatedOne[1],translatedTwo[1])];var zoomImage=imageCache.getFittingImage(bbox);if(zoomImage){settings.background=zoomImage.image;settings.backgroundScale=zoomImage.scale;settings.backgroundTranslate=zoomImage.translate}d3.transition().duration(300).ease("linear").tween("zoom",function(){var i=d3.interpolateNumber(settings.scale,scale),oldTranslate=settings.translate,oldScale=settings.scale;return function(t){settings.scale=i(t);var newTranslate=[oldTranslate[0]+(translate[0]-oldTranslate[0])/(scale-oldScale)*(i(t)-oldScale)*scale/i(t),oldTranslate[1]+(translate[1]-oldTranslate[1])/(scale-oldScale)*(i(t)-oldScale)*scale/i(t)];settings.translate=newTranslate;map.paint();!image&&partialPainter.renderNext()}}).each("end",function(){settings.scale=scale;settings.translate=translate;if(image){context.restore();settings.background=image.image;settings.backgroundScale=image.scale;settings.backgroundTranslate=image.translate;map.paint()}else{map.paint();partialPainter.finish();background.onload=function(){context.restore();imageCache.addImage({image:background,scale:scale,translate:translate});settings.background=background;settings.backgroundScale=scale;settings.backgroundTranslate=translate;map.paint()};background.src=canvas.node().toDataURL()}})}this.zoom=function(d){if(!d){scaleZoom.call(this,1,[0,0]);return}var bounds=dataPath.bounds(d),dx=bounds[1][0]-bounds[0][0],dy=bounds[1][1]-bounds[0][1],bx=(bounds[0][0]+bounds[1][0])/2,by=(bounds[0][1]+bounds[1][1])/2,scale=settings.zoomScale*Math.min(settings.width/dx,settings.height/dy),translate=[-bx+settings.width/scale/2,-by+settings.height/scale/2];scaleZoom.call(this,scale,translate)}}}();

sv.js

var SVi18n = {
  "AD": "Andorra",
  "AE": "Förenade Arabemiraten",
  "AF": "Afghanistan",
  "AG": "Antigua och Barbuda",
  "AI": "Anguilla",
  "AL": "Albanien",
  "AM": "Armenien",
  "AN": "Nederländska Antillerna",
  "AO": "Angola",
  "AQ": "Antarktis",
  "AR": "Argentina",
  "AS": "Amerikanska Samoa",
  "AT": "Österrike",
  "AU": "Australien",
  "AW": "Aruba",
  "AX": "Åland",
  "AZ": "Azerbajdzjan",
  "BA": "Bosnien och Hercegovina",
  "BB": "Barbados",
  "BD": "Bangladesh",
  "BE": "Belgien",
  "BF": "Burkina Faso",
  "BG": "Bulgarien",
  "BH": "Bahrain",
  "BI": "Burundi",
  "BJ": "Benin",
  "BL": "Saint-Barthélemy",
  "BM": "Bermuda",
  "BN": "Brunei",
  "BO": "Bolivia",
  "BQ": "Bonaire, Saint Eustatius och Saba",
  "BR": "Brasilien",
  "BS": "Bahamas",
  "BT": "Bhutan",
  "BV": "Bouvetön",
  "BW": "Botswana",
  "BY": "Vitryssland",
  "BZ": "Belize",
  "CA": "Kanada",
  "CC": "Kokosöarna",
  "CD": "Demokratiska republiken Kongo",
  "CF": "Centralafrikanska republiken",
  "CG": "Kongo-Brazzaville",
  "CH": "Schweiz",
  "CI": "Elfenbenskusten",
  "CK": "Cooköarna",
  "CL": "Chile",
  "CM": "Kamerun",
  "CN": "Kina",
  "CO": "Colombia",
  "CR": "Costa Rica",
  "CU": "Kuba",
  "CV": "Kap Verde",
  "CW": "Curacao",
  "CX": "Julön",
  "CY": "Cypern",
  "CYN": "norra Cypern",
  "CZ": "Tjeckien",
  "DE": "Tyskland",
  "DJ": "Djibouti",
  "DK": "Danmark",
  "DM": "Dominica",
  "DO": "Dominikanska republiken",
  "DZ": "Algeriet",
  "EC": "Ecuador",
  "EE": "Estland",
  "EG": "Egypten",
  "EH": "Västsahara",
  "ER": "Eritrea",
  "ES": "Spanien",
  "ET": "Etiopien",
  "FI": "Finland",
  "FJ": "Fiji",
  "FK": "Falklandsöarna",
  "FM": "Mikronesiska federationen",
  "FO": "Färöarna",
  "FR": "Frankrike",
  "FX": "France métropolitaine (Frankrike, europeiska delen)",
  "GA": "Gabon",
  "GB": "Storbritannien",
  "GD": "Grenada",
  "GE": "Georgien",
  "GF": "Franska Guyana",
  "GG": "Guernsey",
  "GH": "Ghana",
  "GI": "Gibraltar",
  "GL": "Grönland",
  "GM": "Gambia",
  "GN": "Guinea",
  "GP": "Guadeloupe",
  "GQ": "Ekvatorialguinea",
  "GR": "Grekland",
  "GS": "Sydgeorgien och Sydsandwichöarna",
  "GT": "Guatemala",
  "GU": "Guam",
  "GW": "Guinea Bissau",
  "GY": "Guyana",
  "HK": "Hongkong",
  "HM": "Heard- och McDonaldsöarna",
  "HN": "Honduras",
  "HR": "Kroatien",
  "HT": "Haiti",
  "HU": "Ungern",
  "ID": "Indonesien",
  "IE": "Irland",
  "IL": "Israel",
  "IM": "Isle of Man",
  "IN": "Indien",
  "IO": "Brittiska territoriet i Indiska Oceanen",
  "IQ": "Irak",
  "IR": "Iran",
  "IS": "Island",
  "IT": "Italien",
  "JE": "Jersey",
  "JM": "Jamaica",
  "JO": "Jordanien",
  "JP": "Japan",
  "KE": "Kenya",
  "KG": "Kirgizistan",
  "KH": "Kambodja",
  "KI": "Kiribati",
  "KM": "Komorerna",
  "KN": "Saint Kitts och Nevis",
  "KP": "Nordkorea",
  "KR": "Sydkorea",
  "XK": "kosovo",
  "KW": "Kuwait",
  "KY": "Caymanöarna",
  "KZ": "Kazakstan",
  "LA": "Laos",
  "LB": "Libanon",
  "LC": "Saint Lucia",
  "LI": "Liechtenstein",
  "LK": "Sri Lanka",
  "LR": "Liberia",
  "LS": "Lesotho",
  "LT": "Litauen",
  "LU": "Luxemburg",
  "LV": "Lettland",
  "LY": "Libyen",
  "MA": "Marocko",
  "MC": "Monaco",
  "MD": "Moldavien",
  "ME": "Montenegro",
  "MF": "Saint Martin (franska delen)",
  "MG": "Madagaskar",
  "MH": "Marshallöarna",
  "MK": "Makedonien",
  "ML": "Mali",
  "MM": "Burma",
  "MN": "Mongoliet",
  "MO": "Macau",
  "MP": "Nordmarianerna",
  "MQ": "Martinique",
  "MR": "Mauretanien",
  "MS": "Montserrat",
  "MT": "Malta",
  "MU": "Mauritius",
  "MV": "Maldiverna",
  "MW": "Malawi",
  "MX": "Mexiko",
  "MY": "Malaysia",
  "MZ": "Moçambique",
  "NA": "Namibia",
  "NC": "Nya Kaledonien",
  "NE": "Niger",
  "NF": "Norfolkön",
  "NG": "Nigeria",
  "NI": "Nicaragua",
  "NL": "Nederländerna",
  "NO": "Norge",
  "NP": "Nepal",
  "NR": "Nauru",
  "NU": "Niue",
  "NZ": "Nya Zeeland",
  "OM": "Oman",
  "PA": "Panama",
  "PE": "Peru",
  "PF": "Franska Polynesien",
  "PG": "Papua Nya Guinea",
  "PH": "Filippinerna",
  "PK": "Pakistan",
  "PL": "Polen",
  "PM": "Saint-Pierre och Miquelon",
  "PN": "Pitcairnöarna",
  "PR": "Puerto Rico",
  "PS": "Palestinska territoriet, ockuperade",
  "PT": "Portugal",
  "PW": "Palau",
  "PY": "Paraguay",
  "QA": "Qatar",
  "RE": "Réunion",
  "RO": "Rumänien",
  "RS": "Serbien",
  "RU": "Ryssland",
  "RW": "Rwanda",
  "SA": "Saudiarabien",
  "SB": "Salomonöarna",
  "SC": "Seychellerna",
  "SD": "Sudan",
  "SE": "Sverige",
  "SG": "Singapore",
  "SH": "Sankta Helena",
  "SI": "Slovenien",
  "SJ": "Svalbard och Jan Mayen",
  "SK": "Slovakien",
  "SL": "Sierra Leone",
  "SM": "San Marino",
  "SN": "Senegal",
  "SO": "Somalia",
  "SOL": "Somaliland",
  "SR": "Surinam",
  "SS": "Sydsudan",
  "ST": "São Tomé och Príncipe",
  "SV": "El Salvador",
  "SX": "Sint Maarten (nederländska delen)",
  "SY": "Syrien",
  "SZ": "Swaziland",
  "TC": "Turks- och Caicosöarna",
  "TD": "Tchad",
  "TF": "Franska södra territorierna",
  "TG": "Togo",
  "TH": "Thailand",
  "TJ": "Tadzjikistan",
  "TK": "Tokelauöarna",
  "TL": "Östtimor",
  "TM": "Turkmenistan",
  "TN": "Tunisien",
  "TO": "Tonga",
  "TP": "Östtimor",
  "TR": "Turkiet",
  "TT": "Trinidad och Tobago",
  "TV": "Tuvalu",
  "TW": "Taiwan",
  "TZ": "Tanzania",
  "UA": "Ukraina",
  "UG": "Uganda",
  "UM": "USA:s yttre öar",
  "US": "USA",
  "UY": "Uruguay",
  "UZ": "Uzbekistan",
  "VA": "Vatikanstaten",
  "VC": "Saint Vincent och Grenadinerna",
  "VE": "Venezuela",
  "VG": "Brittiska Jungfruöarna",
  "VI": "Amerikanska Jungfruöarna",
  "VN": "Vietnam",
  "VU": "Vanuatu",
  "WF": "Wallis- och Futunaöarna",
  "WS": "Samoa",
  "YE": "Jemen",
  "YT": "Mayotte",
  "ZA": "Sydafrika",
  "ZM": "Zambia",
  "ZW": "Zimbabwe"
};

topojson.min.js

!function(){var topojson={version:"1.6.19",mesh:function(topology){return object(topology,meshArcs.apply(this,arguments))},meshArcs:meshArcs,merge:function(topology){return object(topology,mergeArcs.apply(this,arguments))},mergeArcs:mergeArcs,feature:featureOrCollection,neighbors:neighbors,presimplify:presimplify};function stitchArcs(topology,arcs){var stitchedArcs={},fragmentByStart={},fragmentByEnd={},fragments=[],emptyIndex=-1;arcs.forEach(function(i,j){var arc=topology.arcs[i<0?~i:i],t;if(arc.length<3&&!arc[1][0]&&!arc[1][1]){t=arcs[++emptyIndex],arcs[emptyIndex]=i,arcs[j]=t}});arcs.forEach(function(i){var e=ends(i),start=e[0],end=e[1],f,g;if(f=fragmentByEnd[start]){delete fragmentByEnd[f.end];f.push(i);f.end=end;if(g=fragmentByStart[end]){delete fragmentByStart[g.start];var fg=g===f?f:f.concat(g);fragmentByStart[fg.start=f.start]=fragmentByEnd[fg.end=g.end]=fg}else{fragmentByStart[f.start]=fragmentByEnd[f.end]=f}}else if(f=fragmentByStart[end]){delete fragmentByStart[f.start];f.unshift(i);f.start=start;if(g=fragmentByEnd[start]){delete fragmentByEnd[g.end];var gf=g===f?f:g.concat(f);fragmentByStart[gf.start=g.start]=fragmentByEnd[gf.end=f.end]=gf}else{fragmentByStart[f.start]=fragmentByEnd[f.end]=f}}else{f=[i];fragmentByStart[f.start=start]=fragmentByEnd[f.end=end]=f}});function ends(i){var arc=topology.arcs[i<0?~i:i],p0=arc[0],p1;if(topology.transform)p1=[0,0],arc.forEach(function(dp){p1[0]+=dp[0],p1[1]+=dp[1]});else p1=arc[arc.length-1];return i<0?[p1,p0]:[p0,p1]}function flush(fragmentByEnd,fragmentByStart){for(var k in fragmentByEnd){var f=fragmentByEnd[k];delete fragmentByStart[f.start];delete f.start;delete f.end;f.forEach(function(i){stitchedArcs[i<0?~i:i]=1});fragments.push(f)}}flush(fragmentByEnd,fragmentByStart);flush(fragmentByStart,fragmentByEnd);arcs.forEach(function(i){if(!stitchedArcs[i<0?~i:i])fragments.push([i])});return fragments}function meshArcs(topology,o,filter){var arcs=[];if(arguments.length>1){var geomsByArc=[],geom;function arc(i){var j=i<0?~i:i;(geomsByArc[j]||(geomsByArc[j]=[])).push({i:i,g:geom})}function line(arcs){arcs.forEach(arc)}function polygon(arcs){arcs.forEach(line)}function geometry(o){if(o.type==="GeometryCollection")o.geometries.forEach(geometry);else if(o.type in geometryType)geom=o,geometryType[o.type](o.arcs)}var geometryType={LineString:line,MultiLineString:polygon,Polygon:polygon,MultiPolygon:function(arcs){arcs.forEach(polygon)}};geometry(o);geomsByArc.forEach(arguments.length<3?function(geoms){arcs.push(geoms[0].i)}:function(geoms){if(filter(geoms[0].g,geoms[geoms.length-1].g))arcs.push(geoms[0].i)})}else{for(var i=0,n=topology.arcs.length;i<n;++i)arcs.push(i)}return{type:"MultiLineString",arcs:stitchArcs(topology,arcs)}}function mergeArcs(topology,objects){var polygonsByArc={},polygons=[],components=[];objects.forEach(function(o){if(o.type==="Polygon")register(o.arcs);else if(o.type==="MultiPolygon")o.arcs.forEach(register)});function register(polygon){polygon.forEach(function(ring){ring.forEach(function(arc){(polygonsByArc[arc=arc<0?~arc:arc]||(polygonsByArc[arc]=[])).push(polygon)})});polygons.push(polygon)}function exterior(ring){return cartesianRingArea(object(topology,{type:"Polygon",arcs:[ring]}).coordinates[0])>0}polygons.forEach(function(polygon){if(!polygon._){var component=[],neighbors=[polygon];polygon._=1;components.push(component);while(polygon=neighbors.pop()){component.push(polygon);polygon.forEach(function(ring){ring.forEach(function(arc){polygonsByArc[arc<0?~arc:arc].forEach(function(polygon){if(!polygon._){polygon._=1;neighbors.push(polygon)}})})})}}});polygons.forEach(function(polygon){delete polygon._});return{type:"MultiPolygon",arcs:components.map(function(polygons){var arcs=[];polygons.forEach(function(polygon){polygon.forEach(function(ring){ring.forEach(function(arc){if(polygonsByArc[arc<0?~arc:arc].length<2){arcs.push(arc)}})})});arcs=stitchArcs(topology,arcs);if((n=arcs.length)>1){var sgn=exterior(polygons[0][0]);for(var i=0,t;i<n;++i){if(sgn===exterior(arcs[i])){t=arcs[0],arcs[0]=arcs[i],arcs[i]=t;break}}}return arcs})}}function featureOrCollection(topology,o){return o.type==="GeometryCollection"?{type:"FeatureCollection",features:o.geometries.map(function(o){return feature(topology,o)})}:feature(topology,o)}function feature(topology,o){var f={type:"Feature",id:o.id,properties:o.properties||{},geometry:object(topology,o)};if(o.id==null)delete f.id;return f}function object(topology,o){var absolute=transformAbsolute(topology.transform),arcs=topology.arcs;function arc(i,points){if(points.length)points.pop();for(var a=arcs[i<0?~i:i],k=0,n=a.length,p;k<n;++k){points.push(p=a[k].slice());absolute(p,k)}if(i<0)reverse(points,n)}function point(p){p=p.slice();absolute(p,0);return p}function line(arcs){var points=[];for(var i=0,n=arcs.length;i<n;++i)arc(arcs[i],points);if(points.length<2)points.push(points[0].slice());return points}function ring(arcs){var points=line(arcs);while(points.length<4)points.push(points[0].slice());return points}function polygon(arcs){return arcs.map(ring)}function geometry(o){var t=o.type;return t==="GeometryCollection"?{type:t,geometries:o.geometries.map(geometry)}:t in geometryType?{type:t,coordinates:geometryType[t](o)}:null}var geometryType={Point:function(o){return point(o.coordinates)},MultiPoint:function(o){return o.coordinates.map(point)},LineString:function(o){return line(o.arcs)},MultiLineString:function(o){return o.arcs.map(line)},Polygon:function(o){return polygon(o.arcs)},MultiPolygon:function(o){return o.arcs.map(polygon)}};return geometry(o)}function reverse(array,n){var t,j=array.length,i=j-n;while(i<--j)t=array[i],array[i++]=array[j],array[j]=t}function bisect(a,x){var lo=0,hi=a.length;while(lo<hi){var mid=lo+hi>>>1;if(a[mid]<x)lo=mid+1;else hi=mid}return lo}function neighbors(objects){var indexesByArc={},neighbors=objects.map(function(){return[]});function line(arcs,i){arcs.forEach(function(a){if(a<0)a=~a;var o=indexesByArc[a];if(o)o.push(i);else indexesByArc[a]=[i]})}function polygon(arcs,i){arcs.forEach(function(arc){line(arc,i)})}function geometry(o,i){if(o.type==="GeometryCollection")o.geometries.forEach(function(o){geometry(o,i)});else if(o.type in geometryType)geometryType[o.type](o.arcs,i)}var geometryType={LineString:line,MultiLineString:polygon,Polygon:polygon,MultiPolygon:function(arcs,i){arcs.forEach(function(arc){polygon(arc,i)})}};objects.forEach(geometry);for(var i in indexesByArc){for(var indexes=indexesByArc[i],m=indexes.length,j=0;j<m;++j){for(var k=j+1;k<m;++k){var ij=indexes[j],ik=indexes[k],n;if((n=neighbors[ij])[i=bisect(n,ik)]!==ik)n.splice(i,0,ik);if((n=neighbors[ik])[i=bisect(n,ij)]!==ij)n.splice(i,0,ij)}}}return neighbors}function presimplify(topology,triangleArea){var absolute=transformAbsolute(topology.transform),relative=transformRelative(topology.transform),heap=minAreaHeap();if(!triangleArea)triangleArea=cartesianTriangleArea;topology.arcs.forEach(function(arc){var triangles=[],maxArea=0,triangle;for(var i=0,n=arc.length,p;i<n;++i){p=arc[i];arc[i]=[p[0],p[1],Infinity,p[0],p[1]];absolute(arc[i],i)}for(var i=1,n=arc.length-1;i<n;++i){triangle=arc.slice(i-1,i+2);triangle[1][2]=triangleArea(triangle);triangles.push(triangle);heap.push(triangle)}for(var i=0,n=triangles.length;i<n;++i){triangle=triangles[i];triangle.previous=triangles[i-1];triangle.next=triangles[i+1]}while(triangle=heap.pop()){var previous=triangle.previous,next=triangle.next;if(triangle[1][2]<maxArea)triangle[1][2]=maxArea;else maxArea=triangle[1][2];if(previous){previous.next=next;previous[2]=triangle[2];update(previous)}if(next){next.previous=previous;next[0]=triangle[0];update(next)}}for(var i=0,n=arc.length,p;i<n;++i){p=arc[i];arc[i]=[p[3],p[4],p[2]]}});function update(triangle){heap.remove(triangle);triangle[1][2]=triangleArea(triangle);heap.push(triangle)}return topology}function cartesianRingArea(ring){var i=-1,n=ring.length,a,b=ring[n-1],area=0;while(++i<n){a=b;b=ring[i];area+=a[0]*b[1]-a[1]*b[0]}return area*.5}function cartesianTriangleArea(triangle){var a=triangle[0],b=triangle[1],c=triangle[2];return Math.abs((a[0]-c[0])*(b[1]-a[1])-(a[0]-b[0])*(c[1]-a[1]))}function compareArea(a,b){return a[1][2]-b[1][2]}function minAreaHeap(){var heap={},array=[],size=0;heap.push=function(object){up(array[object._=size]=object,size++);return size};heap.pop=function(){if(size<=0)return;var removed=array[0],object;if(--size>0)object=array[size],down(array[object._=0]=object,0);return removed};heap.remove=function(removed){var i=removed._,object;if(array[i]!==removed)return;if(i!==--size)object=array[size],(compareArea(object,removed)<0?up:down)(array[object._=i]=object,i);return i};function up(object,i){while(i>0){var j=(i+1>>1)-1,parent=array[j];if(compareArea(object,parent)>=0)break;array[parent._=i]=parent;array[object._=i=j]=object}}function down(object,i){while(true){var r=i+1<<1,l=r-1,j=i,child=array[j];if(l<size&&compareArea(array[l],child)<0)child=array[j=l];if(r<size&&compareArea(array[r],child)<0)child=array[j=r];if(j===i)break;array[child._=i]=child;array[object._=i=j]=object}}return heap}function transformAbsolute(transform){if(!transform)return noop;var x0,y0,kx=transform.scale[0],ky=transform.scale[1],dx=transform.translate[0],dy=transform.translate[1];return function(point,i){if(!i)x0=y0=0;point[0]=(x0+=point[0])*kx+dx;point[1]=(y0+=point[1])*ky+dy}}function transformRelative(transform){if(!transform)return noop;var x0,y0,kx=transform.scale[0],ky=transform.scale[1],dx=transform.translate[0],dy=transform.translate[1];return function(point,i){if(!i)x0=y0=0;var x1=(point[0]-dx)/kx|0,y1=(point[1]-dy)/ky|0;point[0]=x1-x0;point[1]=y1-y0;x0=x1;y0=y1}}function noop(){}if(typeof define==="function"&&define.amd)define(topojson);else if(typeof module==="object"&&module.exports)module.exports=topojson;else this.topojson=topojson}();