diff --git a/dist/assets/charts-overview.js_v_1.87.711ec26c.js b/dist/assets/charts-overview.js_v_1.87.711ec26c.js new file mode 100644 index 00000000..63c9a8c5 --- /dev/null +++ b/dist/assets/charts-overview.js_v_1.87.711ec26c.js @@ -0,0 +1,100 @@ +import{r as u,b as c,t as lt,c as pt,i as mt,d as at,e as H,f as T}from"./index.73bf34f9.js";const K={states:{label:"State",getCellsData:()=>pack.cells.state,getName:G("states"),getColors:W("states"),landOnly:!0},cultures:{label:"Culture",getCellsData:()=>pack.cells.culture,getName:G("cultures"),getColors:W("cultures"),landOnly:!0},religions:{label:"Religion",getCellsData:()=>pack.cells.religion,getName:G("religions"),getColors:W("religions"),landOnly:!0},provinces:{label:"Province",getCellsData:()=>pack.cells.province,getName:G("provinces"),getColors:W("provinces"),landOnly:!0},biomes:{label:"Biome",getCellsData:()=>pack.cells.biome,getName:xt,getColors:St,landOnly:!1}},Q={total_population:{label:"Total population",quantize:t=>ot(t)+rt(t),aggregate:t=>u(d3.sum(t)),formatTicks:t=>H(t),stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0},urban_population:{label:"Urban population",quantize:ot,aggregate:t=>u(d3.sum(t)),formatTicks:t=>H(t),stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0},rural_population:{label:"Rural population",quantize:rt,aggregate:t=>u(d3.sum(t)),formatTicks:t=>H(t),stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0},area:{label:"Land area",quantize:t=>getArea(pack.cells.area[t]),aggregate:t=>u(d3.sum(t)),formatTicks:t=>`${H(t)} ${getAreaUnit()}`,stringify:t=>`${t.toLocaleString()} ${getAreaUnit()}`,stackable:!0,landOnly:!0},cells:{label:"Number of cells",quantize:()=>1,aggregate:t=>d3.sum(t),formatTicks:t=>t,stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0},burgs_number:{label:"Number of burgs",quantize:t=>pack.cells.burg[t]?1:0,aggregate:t=>d3.sum(t),formatTicks:t=>t,stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0},average_elevation:{label:"Average elevation",quantize:t=>pack.cells.h[t],aggregate:t=>d3.mean(t),formatTicks:t=>getHeight(t),stringify:t=>getHeight(t),stackable:!1,landOnly:!1},max_elevation:{label:"Maximum mean elevation",quantize:t=>pack.cells.h[t],aggregate:t=>d3.max(t),formatTicks:t=>getHeight(t),stringify:t=>getHeight(t),stackable:!1,landOnly:!1},min_elevation:{label:"Minimum mean elevation",quantize:t=>pack.cells.h[t],aggregate:t=>d3.min(t),formatTicks:t=>getHeight(t),stringify:t=>getHeight(t),stackable:!1,landOnly:!1},average_temperature:{label:"Annual mean temperature",quantize:t=>grid.cells.temp[pack.cells.g[t]],aggregate:t=>d3.mean(t),formatTicks:t=>T(t),stringify:t=>T(t),stackable:!1,landOnly:!1},max_temperature:{label:"Mean annual maximum temperature",quantize:t=>grid.cells.temp[pack.cells.g[t]],aggregate:t=>d3.max(t),formatTicks:t=>T(t),stringify:t=>T(t),stackable:!1,landOnly:!1},min_temperature:{label:"Mean annual minimum temperature",quantize:t=>grid.cells.temp[pack.cells.g[t]],aggregate:t=>d3.min(t),formatTicks:t=>T(t),stringify:t=>T(t),stackable:!1,landOnly:!1},average_precipitation:{label:"Annual mean precipitation",quantize:t=>grid.cells.prec[pack.cells.g[t]],aggregate:t=>u(d3.mean(t)),formatTicks:t=>getPrecipitation(u(t)),stringify:t=>getPrecipitation(u(t)),stackable:!1,landOnly:!0},max_precipitation:{label:"Mean annual maximum precipitation",quantize:t=>grid.cells.prec[pack.cells.g[t]],aggregate:t=>u(d3.max(t)),formatTicks:t=>getPrecipitation(u(t)),stringify:t=>getPrecipitation(u(t)),stackable:!1,landOnly:!0},min_precipitation:{label:"Mean annual minimum precipitation",quantize:t=>grid.cells.prec[pack.cells.g[t]],aggregate:t=>u(d3.min(t)),formatTicks:t=>getPrecipitation(u(t)),stringify:t=>getPrecipitation(u(t)),stackable:!1,landOnly:!0},coastal_cells:{label:"Number of coastal cells",quantize:t=>pack.cells.t[t]===1?1:0,aggregate:t=>d3.sum(t),formatTicks:t=>t,stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0},river_cells:{label:"Number of river cells",quantize:t=>pack.cells.r[t]?1:0,aggregate:t=>d3.sum(t),formatTicks:t=>t,stringify:t=>t.toLocaleString(),stackable:!0,landOnly:!0}},dt={stackedBar:{offset:d3.stackOffsetDiverging},normalizedStackedBar:{offset:d3.stackOffsetExpand,formatX:t=>u(t*100)+"%"}};let L=[],nt=mapId;ft();vt();ht();ct();function Lt(){closeDialogs("#chartsOverview, .stable"),nt!==mapId&&(L=[],nt=mapId),L.length?L.forEach(t=>st(t)):it(),$("#chartsOverview").dialog({title:"Data Charts",position:{my:"center",at:"center",of:"svg"},close:kt})}function ft(){const t=document.createElement("style");t.textContent=` + #chartsOverview { + max-width: 90vw !important; + max-height: 90vh !important; + overflow: hidden; + display: grid; + grid-template-rows: auto 1fr; + } + + #chartsOverview__form { + font-size: 1.1em; + margin: 0.3em 0; + display: grid; + grid-template-columns: auto auto; + grid-gap: 0.3em; + align-items: start; + justify-items: end; + } + + @media (max-width: 600px) { + #chartsOverview__form { + font-size: 1em; + grid-template-columns: 1fr; + justify-items: normal; + } + } + + #chartsOverview__charts { + overflow: auto; + scroll-behavior: smooth; + display: grid; + } + + #chartsOverview__charts figure { + margin: 0; + } + + #chartsOverview__charts figcaption { + font-size: 1.2em; + margin: 0 1% 0 4%; + display: grid; + grid-template-columns: 1fr auto; + } + `,document.head.appendChild(t)}function vt(){const t=Object.entries(K).map(([r,{label:i}])=>[r,i]),a=Object.entries(Q).map(([r,{label:i}])=>[r,i]),n=([r,i])=>``,o=r=>r.map(n).join(""),l=`
e.t[s]===m).forEach(s=>i[s]=1);const p=t.v[u],B=!e.t[g[0]]||e.t[g[0]]===m-1,k=!e.t[g[1]]||e.t[g[1]]===m-1,d=!e.t[g[2]]||e.t[g[2]]===m-1;if(p[0]!==void 0&&p[0]!==C&&B!==k?u=p[0]:p[1]!==void 0&&p[1]!==C&&k!==d?u=p[1]:p[2]!==void 0&&p[2]!==C&&B!==d&&(u=p[2]),u===b[b.length-1]){ERROR&&console.error("Next vertex is not found");break}}return b.push(b[0]),b}return r}();window.Rivers=function(){const e=function(S=!0){Q&&console.time("generateRivers"),Math.random=aleaPRNG(seed);const{cells:h,features:v}=pack,E={},P={},T=function(U,F){E[F]?E[F].push(U):E[F]=[U]};h.fl=new Uint16Array(h.i.length),h.r=new Uint16Array(h.i.length),h.conf=new Uint8Array(h.i.length);let R=1;const L=t();Lakes.prepareLakeData(L),n(L),M(),H(),D(),Lakes.cleanupLakeData(),S&&(h.h=Uint8Array.from(L),G()),Q&&console.timeEnd("generateRivers");function M(){const F=(pointsInput.dataset.cells/1e4)**.25,j=grid.cells.prec;pack.cells.area;const Z=h.i.filter(q=>L[q]>=20).sort((q,X)=>L[X]-L[q]),te=Lakes.setClimateData(L);Z.forEach(function(q){var Y;h.fl[q]+=j[h.g[q]]/F;const X=te[q]?v.filter(W=>q===W.outCell&&W.flux>W.evaporation):[];for(const W of X){const de=h.c[q].find(me=>L[me]<20&&h.f[me]===W.i);h.fl[de]+=Math.max(W.flux-W.evaporation,0),h.r[de]!==W.river&&(h.c[de].some(pe=>h.r[pe]===W.river)?(h.r[de]=W.river,T(de,W.river)):(h.r[de]=R,T(de,R),R++)),W.outlet=h.r[de],I(q,h.fl[de],W.outlet)}const ee=(Y=X[0])==null?void 0:Y.outlet;for(const W of X)if(!!Array.isArray(W.inlets))for(const de of W.inlets)P[de]=ee;if(h.b[q]&&h.r[q])return T(-1,h.r[q]);let le=null;if(te[q]?le=h.c[q].filter(de=>!X.map(me=>me.i).includes(h.f[de])).sort((de,me)=>L[de]-L[me])[0]:h.haven[q]?le=h.haven[q]:le=h.c[q].sort((W,de)=>L[W]-L[de])[0],!(L[q]<=L[le])){if(h.fl[q]<30){L[le]>=20&&(h.fl[le]+=h.fl[q]);return}h.r[q]||(h.r[q]=R,T(q,R),R++),I(le,h.fl[q],h.r[q])}})}function I(U,F,j){const Z=h.fl[U]-h.conf[U],te=h.r[U];if(te?F>Z?(h.conf[U]+=h.fl[U],L[U]>=20&&(P[te]=j),h.r[U]=j):(h.conf[U]+=F,L[U]>=20&&(P[j]=te)):h.r[U]=j,L[U]<20){const q=v[h.f[U]];q.type==="lake"&&((!q.river||F>q.enteringFlux)&&(q.river=j,q.enteringFlux=F),q.flux=q.flux+F,q.inlets?q.inlets.push(j):q.inlets=[j])}else h.fl[U]+=F;T(U,j)}function H(){h.r=new Uint16Array(h.i.length),h.conf=new Uint16Array(h.i.length),pack.rivers=[];const U=O(1/(pointsInput.dataset.cells/1e4)**.25,2),F=U*1.2;for(const j in E){const Z=E[j];if(Z.length<3)continue;const te=+j;for(const pe of Z)pe<0||h.h[pe]<20||(h.r[pe]?h.conf[pe]=1:h.r[pe]=te);const q=Z[0],X=Z[Z.length-2],ee=P[j]||0,le=!ee||ee===te?F:U,Y=i(Z),W=h.fl[X],de=o(Y),me=l(C(W,Y.length,le,0));pack.rivers.push({i:te,source:q,mouth:X,discharge:W,length:de,width:me,widthFactor:le,sourceWidth:0,parent:ee,cells:Z})}}function G(){for(const F of pack.cells.i){if(h.h[F]<35||!h.fl[F])continue;const j=h.c[F].filter(q=>h.h[q]>h.h[F]),Z=j.reduce((q,X)=>q+h.fl[X],0)/j.length;if(!Z)continue;const te=Math.floor(h.fl[F]/Z);te&&(h.h[F]-=Math.min(te,5))}}function D(){for(const U of h.i){if(!h.conf[U])continue;const F=h.c[U].filter(j=>h.r[j]&&L[j]>L[U]).map(j=>h.fl[j]).sort((j,Z)=>Z-j);h.conf[U]=F.reduce((j,Z,te)=>te?j+Z:j,0)}}},t=()=>{const{h:S,c:h,t:v}=pack.cells;return Array.from(S).map((E,P)=>E<20||v[P]<1?E:E+v[P]/100+d3.mean(h[P].map(T=>v[T]))/1e4)},n=function(S){const{cells:h,features:v}=pack,E=+document.getElementById("resolveDepressionsStepsOutput").value,P=E*.85,T=E*.75,R=D=>v[h.f[D]].height||S[D],L=v.filter(D=>D.type==="lake"),M=h.i.filter(D=>S[D]>=20&&!h.b[D]);M.sort((D,U)=>S[D]-S[U]);const I=[];let H=1/0,G=null;for(let D=0;H&&D S[j]));if(!(F>=100||U.height>F)){if(D>T){U.shoreline.forEach(j=>S[j]=h.h[j]),U.height=d3.min(U.shoreline.map(j=>S[j]))-1,U.closed=!0;continue}H++,U.height=F+.2}}for(const U of M){const F=d3.min(h.c[U].map(j=>R(j)));F>=100||S[U]>F||(H++,S[U]=F+.1)}G!==null&&I.push(H-G),G=H}H&&WARN&&console.warn(`Unresolved depressions: ${H}. Edit heightmap to fix`)},i=function(S,h=null,v=.5){const{fl:E,conf:P,h:T}=pack.cells,R=[],L=S.length-1,M=r(S,h);let I=T[S[0]]<20?1:10,H=0;const G=(D,U)=>D===L?H:U;for(let D=0;D<=L;D++,I++){const U=S[D],F=D===L,[j,Z]=M[D],te=G(D,E[U]);if(H=te,R.push([j,Z,te]),F)break;const q=S[D+1],[X,ee]=M[D+1];if(q===-1){R.push([X,ee,H]);break}const le=(X-j)**2+(ee-Z)**2;if(le<=25&&S.length>=6)continue;const Y=G(D+1,E[q]),W=P[q]||te===Y,de=v+1/I+Math.max(v-I/100,0),me=Math.atan2(ee-Z,X-j),pe=Math.sin(me)*de,we=Math.cos(me)*de;if(I<10&&(le>64||le>36&&S.length<5)){const ke=(j*2+X)/3+-pe,He=(Z*2+ee)/3+we,Be=(j+X*2)/3+pe/2,Fe=(Z+ee*2)/3-we/2,[_,oe]=W?[te,te]:[(te*2+Y)/3,(te+Y*2)/3];R.push([ke,He,_],[Be,Fe,oe])}else if(le>25||S.length<6){const ke=(j+X)/2+-pe,He=(Z+ee)/2+we,Be=W?te:(te+Y)/2;R.push([ke,He,Be])}}return R},r=(S,h)=>{if(h)return h;const{p:v}=pack.cells;return S.map((E,P)=>E===-1?c(S[P-1]):v[E])},c=S=>{const[h,v]=pack.cells.p[S],E=Math.min(v,graphHeight-v,h,graphWidth-h);return E===v?[h,0]:E===graphHeight-v?[h,graphHeight]:E===h?[0,v]:[graphWidth,v]},A=[1,1,2,3,5,8,13,21,34].map(S=>S/200),u=De(A),C=(S,h,v,E=0)=>{const P=Math.min(S**.9/500,2),T=h*.005+(A[h]||u);return v*(T+P)+E},g=function(S,h,v=0){const E=[],P=[];for(let L=0;L B){l.length S.length<2)&&(w=w.split(" ").map((S,h)=>h?S.toLowerCase():S).join("")),w.length<2&&(ERROR&&console.error("Name is too short! Random name will be selected"),w=ie(nameBases[g].b.split(","))),w},c=function(g,p,B,k){if(g===void 0)return ERROR&&console.error("Please define a culture");const d=pack.cultures[g].base;return r(d,p,B,k)},f=function(g){return g===void 0?ERROR&&console.error("Please define a culture"):z(pack.cultures[g].base)},z=function(g){nameBases[g]===void 0&&(se(`Namebase ${g} does not exist. Please upload custom namebases of change the base in Cultures Editor`,!1,"error"),g=1);const p=nameBases[g].min-1,B=Math.max(nameBases[g].max-2,p);return r(g,p,B,"")},m=function(g,p,B){if(g===void 0)return ERROR&&console.error("Please define a base name");if(p===void 0&&B===void 0)return ERROR&&console.error("Please define a culture");if(B===void 0&&(B=pack.cultures[p].base),g.includes(" ")&&(g=ba(g.replace(/ /g,"").toLowerCase())),g.length>6&&g.slice(-4)==="berg"&&(g=g.slice(0,-4)),g.length>5&&g.slice(-3)==="ton"&&(g=g.slice(0,-3)),B===5&&["sk","ev","ov"].includes(g.slice(-2)))g=g.slice(0,-2);else{if(B===12)return Ze(g.slice(-1))?g:g+"u";B===18&&V(.4)&&(g=Ze(g.slice(0,1).toLowerCase())?"Al"+g.toLowerCase():"Al "+g)}if(B>32&&B<42)return g;if(g.length>3&&Ze(g.slice(-1)))if(Ze(g.slice(-2,-1))&&V(.85))g=g.slice(0,-2);else if(V(.7))g=g.slice(0,-1);else return g;else if(V(.4))return g;let k="ia";const d=Math.random(),s=g.length;return B===3&&d<.03&&s<7||B===4&&d<.03&&s<7||B===13&&d<.03&&s<7?k="terra":B===2&&d<.03&&s<7?k="terre":B===0&&d<.5&&s<7||B===1&&d<.4&&s<7||B===6&&d<.3&&s<7||B===32&&d<.1&&s<7?k="land":B===7&&d<.1?k="eia":B===9&&d<.35?k="maa":B===15&&d<.4&&s<6?k="orszag":B===16?k=d<.6?"stan":"ya":B===10?k="guk":B===11?k=" Guo":B===14?k=d<.5&&s<6?"tlan":"co":(B===17&&d<.8||B===18&&d<.8)&&(k="a"),b(g,k)};function b(g,p){if(g.slice(-1*p.length)===p)return g;const B=p.charAt(0);return g.slice(-1)===B&&(g=g.slice(0,-1)),Ze(B)===Ze(g.slice(-1))&&Ze(B)===Ze(g.slice(-2,-1))&&(g=g.slice(0,-1)),g.slice(-1)===B&&(g=g.slice(0,-1)),g+p}const A=function(g){if(!g&&Ne("mapName"))return;g&&Ne("mapName")&&unlock("mapName");const p=V(.7)?2:V(.5)?be(0,6):be(0,31);if(!nameBases[p])return se("Namebase is not found",!1,"error"),"";const B=nameBases[p].min-1,k=Math.max(nameBases[p].max-3,B),d=r(p,B,k,""),s=V(.7)?u(d):d;mapName.value=s};function u(g){const p=V(.8)?"ia":"land";return p==="ia"&&g.length>6?g=g.slice(0,-(g.length-3)):p==="land"&&g.length>6&&(g=g.slice(0,-(g.length-5))),b(g,p)}return{getBase:r,getCulture:c,getCultureShort:f,getBaseShort:z,getState:m,updateChain:n,clearChains:i,getNameBases:function(){return[{name:"German",i:0,min:5,max:12,d:"lt",m:0,b:"Achern,Aichhalden,Aitern,Albbruck,Alpirsbach,Altensteig,Althengstett,Appenweier,Auggen,Wildbad,Badenen,Badenweiler,Baiersbronn,Ballrechten,Bellingen,Berghaupten,Bernau,Biberach,Biederbach,Binzen,Birkendorf,Birkenfeld,Bischweier,Blumberg,Bollen,Bollschweil,Bonndorf,Bosingen,Braunlingen,Breisach,Breisgau,Breitnau,Brigachtal,Buchenbach,Buggingen,Buhl,Buhlertal,Calw,Dachsberg,Dobel,Donaueschingen,Dornhan,Dornstetten,Dottingen,Dunningen,Durbach,Durrheim,Ebhausen,Ebringen,Efringen,Egenhausen,Ehrenkirchen,Ehrsberg,Eimeldingen,Eisenbach,Elzach,Elztal,Emmendingen,Endingen,Engelsbrand,Enz,Enzklosterle,Eschbronn,Ettenheim,Ettlingen,Feldberg,Fischerbach,Fischingen,Fluorn,Forbach,Freiamt,Freiburg,Freudenstadt,Friedenweiler,Friesenheim,Frohnd,Furtwangen,Gaggenau,Geisingen,Gengenbach,Gernsbach,Glatt,Glatten,Glottertal,Gorwihl,Gottenheim,Grafenhausen,Grenzach,Griesbach,Gutach,Gutenbach,Hag,Haiterbach,Hardt,Harmersbach,Hasel,Haslach,Hausach,Hausen,Hausern,Heitersheim,Herbolzheim,Herrenalb,Herrischried,Hinterzarten,Hochenschwand,Hofen,Hofstetten,Hohberg,Horb,Horben,Hornberg,Hufingen,Ibach,Ihringen,Inzlingen,Kandern,Kappel,Kappelrodeck,Karlsbad,Karlsruhe,Kehl,Keltern,Kippenheim,Kirchzarten,Konigsfeld,Krozingen,Kuppenheim,Kussaberg,Lahr,Lauchringen,Lauf,Laufenburg,Lautenbach,Lauterbach,Lenzkirch,Liebenzell,Loffenau,Loffingen,Lorrach,Lossburg,Mahlberg,Malsburg,Malsch,March,Marxzell,Marzell,Maulburg,Monchweiler,Muhlenbach,Mullheim,Munstertal,Murg,Nagold,Neubulach,Neuenburg,Neuhausen,Neuried,Neuweiler,Niedereschach,Nordrach,Oberharmersbach,Oberkirch,Oberndorf,Oberbach,Oberried,Oberwolfach,Offenburg,Ohlsbach,Oppenau,Ortenberg,otigheim,Ottenhofen,Ottersweier,Peterstal,Pfaffenweiler,Pfalzgrafenweiler,Pforzheim,Rastatt,Renchen,Rheinau,Rheinfelden,Rheinmunster,Rickenbach,Rippoldsau,Rohrdorf,Rottweil,Rummingen,Rust,Sackingen,Sasbach,Sasbachwalden,Schallbach,Schallstadt,Schapbach,Schenkenzell,Schiltach,Schliengen,Schluchsee,Schomberg,Schonach,Schonau,Schonenberg,Schonwald,Schopfheim,Schopfloch,Schramberg,Schuttertal,Schwenningen,Schworstadt,Seebach,Seelbach,Seewald,Sexau,Simmersfeld,Simonswald,Sinzheim,Solden,Staufen,Stegen,Steinach,Steinen,Steinmauern,Straubenhardt,Stuhlingen,Sulz,Sulzburg,Teinach,Tiefenbronn,Tiengen,Titisee,Todtmoos,Todtnau,Todtnauberg,Triberg,Tunau,Tuningen,uhlingen,Unterkirnach,Reichenbach,Utzenfeld,Villingen,Villingendorf,Vogtsburg,Vohrenbach,Waldachtal,Waldbronn,Waldkirch,Waldshut,Wehr,Weil,Weilheim,Weisenbach,Wembach,Wieden,Wiesental,Wildberg,Winzeln,Wittlingen,Wittnau,Wolfach,Wutach,Wutoschingen,Wyhlen,Zavelstein"},{name:"English",i:1,min:6,max:11,d:"",m:.1,b:"Abingdon,Albrighton,Alcester,Almondbury,Altrincham,Amersham,Andover,Appleby,Ashboume,Atherstone,Aveton,Axbridge,Aylesbury,Baldock,Bamburgh,Barton,Basingstoke,Berden,Bere,Berkeley,Berwick,Betley,Bideford,Bingley,Birmingham,Blandford,Blechingley,Bodmin,Bolton,Bootham,Boroughbridge,Boscastle,Bossinney,Bramber,Brampton,Brasted,Bretford,Bridgetown,Bridlington,Bromyard,Bruton,Buckingham,Bungay,Burton,Calne,Cambridge,Canterbury,Carlisle,Castleton,Caus,Charmouth,Chawleigh,Chichester,Chillington,Chinnor,Chipping,Chisbury,Cleobury,Clifford,Clifton,Clitheroe,Cockermouth,Coleshill,Combe,Congleton,Crafthole,Crediton,Cuddenbeck,Dalton,Darlington,Dodbrooke,Drax,Dudley,Dunstable,Dunster,Dunwich,Durham,Dymock,Exeter,Exning,Faringdon,Felton,Fenny,Finedon,Flookburgh,Fowey,Frampton,Gateshead,Gatton,Godmanchester,Grampound,Grantham,Guildford,Halesowen,Halton,Harbottle,Harlow,Hatfield,Hatherleigh,Haydon,Helston,Henley,Hertford,Heytesbury,Hinckley,Hitchin,Holme,Hornby,Horsham,Kendal,Kenilworth,Kilkhampton,Kineton,Kington,Kinver,Kirby,Knaresborough,Knutsford,Launceston,Leighton,Lewes,Linton,Louth,Luton,Lyme,Lympstone,Macclesfield,Madeley,Malborough,Maldon,Manchester,Manningtree,Marazion,Marlborough,Marshfield,Mere,Merryfield,Middlewich,Midhurst,Milborne,Mitford,Modbury,Montacute,Mousehole,Newbiggin,Newborough,Newbury,Newenden,Newent,Norham,Northleach,Noss,Oakham,Olney,Orford,Ormskirk,Oswestry,Padstow,Paignton,Penkneth,Penrith,Penzance,Pershore,Petersfield,Pevensey,Pickering,Pilton,Pontefract,Portsmouth,Preston,Quatford,Reading,Redcliff,Retford,Rockingham,Romney,Rothbury,Rothwell,Salisbury,Saltash,Seaford,Seasalter,Sherston,Shifnal,Shoreham,Sidmouth,Skipsea,Skipton,Solihull,Somerton,Southam,Southwark,Standon,Stansted,Stapleton,Stottesdon,Sudbury,Swavesey,Tamerton,Tarporley,Tetbury,Thatcham,Thaxted,Thetford,Thornbury,Tintagel,Tiverton,Torksey,Totnes,Towcester,Tregoney,Trematon,Tutbury,Uxbridge,Wallingford,Wareham,Warenmouth,Wargrave,Warton,Watchet,Watford,Wendover,Westbury,Westcheap,Weymouth,Whitford,Wickwar,Wigan,Wigmore,Winchelsea,Winkleigh,Wiscombe,Witham,Witheridge,Wiveliscombe,Woodbury,Yeovil"},{name:"French",i:2,min:5,max:13,d:"nlrs",m:.1,b:"Adon,Aillant,Amilly,Andonville,Ardon,Artenay,Ascheres,Ascoux,Attray,Aubin,Audeville,Aulnay,Autruy,Auvilliers,Auxy,Aveyron,Baccon,Bardon,Barville,Batilly,Baule,Bazoches,Beauchamps,Beaugency,Beaulieu,Beaune,Bellegarde,Boesses,Boigny,Boiscommun,Boismorand,Boisseaux,Bondaroy,Bonnee,Bonny,Bordes,Bou,Bougy,Bouilly,Boulay,Bouzonville,Bouzy,Boynes,Bray,Breteau,Briare,Briarres,Bricy,Bromeilles,Bucy,Cepoy,Cercottes,Cerdon,Cernoy,Cesarville,Chailly,Chaingy,Chalette,Chambon,Champoulet,Chanteau,Chantecoq,Chapell,Charme,Charmont,Charsonville,Chateau,Chateauneuf,Chatel,Chatenoy,Chatillon,Chaussy,Checy,Chevannes,Chevillon,Chevilly,Chevry,Chilleurs,Choux,Chuelles,Clery,Coinces,Coligny,Combleux,Combreux,Conflans,Corbeilles,Corquilleroy,Cortrat,Coudroy,Coullons,Coulmiers,Courcelles,Courcy,Courtemaux,Courtempierre,Courtenay,Cravant,Crottes,Dadonville,Dammarie,Dampierre,Darvoy,Desmonts,Dimancheville,Donnery,Dordives,Dossainville,Douchy,Dry,Echilleuses,Egry,Engenville,Epieds,Erceville,Ervauville,Escrennes,Escrignelles,Estouy,Faverelles,Fay,Feins,Ferolles,Ferrieres,Fleury,Fontenay,Foret,Foucherolles,Freville,Gatinais,Gaubertin,Gemigny,Germigny,Gidy,Gien,Girolles,Givraines,Gondreville,Grangermont,Greneville,Griselles,Guigneville,Guilly,Gyleslonains,Huetre,Huisseau,Ingrannes,Ingre,Intville,Isdes,Jargeau,Jouy,Juranville,Bussiere,Laas,Ladon,Lailly,Langesse,Leouville,Ligny,Lombreuil,Lorcy,Lorris,Loury,Louzouer,Malesherbois,Marcilly,Mardie,Mareau,Marigny,Marsainvilliers,Melleroy,Menestreau,Merinville,Messas,Meung,Mezieres,Migneres,Mignerette,Mirabeau,Montargis,Montbarrois,Montbouy,Montcresson,Montereau,Montigny,Montliard,Mormant,Morville,Moulinet,Moulon,Nancray,Nargis,Nesploy,Neuville,Neuvy,Nevoy,Nibelle,Nogent,Noyers,Ocre,Oison,Olivet,Ondreville,Onzerain,Orleans,Ormes,Orville,Oussoy,Outarville,Ouzouer,Pannecieres,Pannes,Patay,Paucourt,Pers,Pierrefitte,Pithiverais,Pithiviers,Poilly,Potier,Prefontaines,Presnoy,Pressigny,Puiseaux,Quiers,Ramoulu,Rebrechien,Rouvray,Rozieres,Rozoy,Ruan,Sandillon,Santeau,Saran,Sceaux,Seichebrieres,Semoy,Sennely,Sermaises,Sigloy,Solterre,Sougy,Sully,Sury,Tavers,Thignonville,Thimory,Thorailles,Thou,Tigy,Tivernon,Tournoisis,Trainou,Treilles,Trigueres,Trinay,Vannes,Varennes,Vennecy,Vieilles,Vienne,Viglain,Vignes,Villamblain,Villemandeur,Villemoutiers,Villemurlin,Villeneuve,Villereau,Villevoques,Villorceau,Vimory,Vitry,Vrigny,Ivre"},{name:"Italian",i:3,min:5,max:12,d:"cltr",m:.1,b:"Accumoli,Acquafondata,Acquapendente,Acuto,Affile,Agosta,Alatri,Albano,Allumiere,Alvito,Amaseno,Amatrice,Anagni,Anguillara,Anticoli,Antrodoco,Anzio,Aprilia,Aquino,Arce,Arcinazzo,Ardea,Ariccia,Arlena,Arnara,Arpino,Arsoli,Artena,Ascrea,Atina,Ausonia,Bagnoregio,Barbarano,Bassano,Bassiano,Bellegra,Belmonte,Blera,Bolsena,Bomarzo,Borbona,Borgo,Borgorose,Boville,Bracciano,Broccostella,Calcata,Camerata,Campagnano,Campodimele,Campoli,Canale,Canepina,Canino,Cantalice,Cantalupo,Canterano,Capena,Capodimonte,Capranica,Caprarola,Carbognano,Casalattico,Casalvieri,Casape,Casaprota,Casperia,Cassino,Castelforte,Castelliri,Castello,Castelnuovo,Castiglione,Castro,Castrocielo,Cave,Ceccano,Celleno,Cellere,Ceprano,Cerreto,Cervara,Cervaro,Cerveteri,Ciampino,Ciciliano,Cineto,Cisterna,Cittaducale,Cittareale,Civita,Civitavecchia,Civitella,Colfelice,Collalto,Colle,Colleferro,Collegiove,Collepardo,Collevecchio,Colli,Colonna,Concerviano,Configni,Contigliano,Corchiano,Coreno,Cori,Cottanello,Esperia,Fabrica,Faleria,Fara,Farnese,Ferentino,Fiamignano,Fiano,Filacciano,Filettino,Fiuggi,Fiumicino,Fondi,Fontana,Fonte,Fontechiari,Forano,Formello,Formia,Frascati,Frasso,Frosinone,Fumone,Gaeta,Gallese,Gallicano,Gallinaro,Gavignano,Genazzano,Genzano,Gerano,Giuliano,Gorga,Gradoli,Graffignano,Greccio,Grottaferrata,Grotte,Guarcino,Guidonia,Ischia,Isola,Itri,Jenne,Labico,Labro,Ladispoli,Lanuvio,Lariano,Latera,Lenola,Leonessa,Licenza,Longone,Lubriano,Maenza,Magliano,Mandela,Manziana,Marano,Marcellina,Marcetelli,Marino,Marta,Mazzano,Mentana,Micigliano,Minturno,Mompeo,Montalto,Montasola,Monte,Montebuono,Montefiascone,Monteflavio,Montelanico,Monteleone,Montelibretti,Montenero,Monterosi,Monterotondo,Montopoli,Montorio,Moricone,Morlupo,Morolo,Morro,Nazzano,Nemi,Nepi,Nerola,Nespolo,Nettuno,Norma,Olevano,Onano,Oriolo,Orte,Orvinio,Paganico,Palestrina,Paliano,Palombara,Pastena,Patrica,Percile,Pescorocchiano,Pescosolido,Petrella,Piansano,Picinisco,Pico,Piedimonte,Piglio,Pignataro,Pisoniano,Pofi,Poggio,Poli,Pomezia,Pontecorvo,Pontinia,Ponza,Ponzano,Posta,Pozzaglia,Priverno,Proceno,Prossedi,Riano,Rieti,Rignano,Riofreddo,Ripi,Rivodutri,Rocca,Roccagiovine,Roccagorga,Roccantica,Roccasecca,Roiate,Ronciglione,Roviano,Sabaudia,Sacrofano,Salisano,Sambuci,Santa,Santi,Santopadre,Saracinesco,Scandriglia,Segni,Selci,Sermoneta,Serrone,Settefrati,Sezze,Sgurgola,Sonnino,Sora,Soriano,Sperlonga,Spigno,Stimigliano,Strangolagalli,Subiaco,Supino,Sutri,Tarano,Tarquinia,Terelle,Terracina,Tessennano,Tivoli,Toffia,Tolfa,Torre,Torri,Torrice,Torricella,Torrita,Trevi,Trevignano,Trivigliano,Turania,Tuscania,Vacone,Valentano,Vallecorsa,Vallemaio,Vallepietra,Vallerano,Vallerotonda,Vallinfreda,Valmontone,Varco,Vasanello,Vejano,Velletri,Ventotene,Veroli,Vetralla,Vicalvi,Vico,Vicovaro,Vignanello,Viterbo,Viticuso,Vitorchiano,Vivaro,Zagarolo"},{name:"Castillian",i:4,min:5,max:11,d:"lr",m:0,b:"Abanades,Ablanque,Adobes,Ajofrin,Alameda,Alaminos,Alarilla,Albalate,Albares,Albarreal,Albendiego,Alcabon,Alcanizo,Alcaudete,Alcocer,Alcolea,Alcoroches,Aldea,Aldeanueva,Algar,Algora,Alhondiga,Alique,Almadrones,Almendral,Almoguera,Almonacid,Almorox,Alocen,Alovera,Alustante,Angon,Anguita,Anover,Anquela,Arbancon,Arbeteta,Arcicollar,Argecilla,Arges,Armallones,Armuna,Arroyo,Atanzon,Atienza,Aunon,Azuqueca,Azutan,Baides,Banos,Banuelos,Barcience,Bargas,Barriopedro,Belvis,Berninches,Borox,Brihuega,Budia,Buenaventura,Bujalaro,Burguillos,Burujon,Bustares,Cabanas,Cabanillas,Calera,Caleruela,Calzada,Camarena,Campillo,Camunas,Canizar,Canredondo,Cantalojas,Cardiel,Carmena,Carranque,Carriches,Casa,Casarrubios,Casas,Casasbuenas,Caspuenas,Castejon,Castellar,Castilforte,Castillo,Castilnuevo,Cazalegas,Cebolla,Cedillo,Cendejas,Centenera,Cervera,Checa,Chequilla,Chillaron,Chiloeches,Chozas,Chueca,Cifuentes,Cincovillas,Ciruelas,Ciruelos,Cobeja,Cobeta,Cobisa,Cogollor,Cogolludo,Condemios,Congostrina,Consuegra,Copernal,Corduente,Corral,Cuerva,Domingo,Dosbarrios,Driebes,Duron,El,Embid,Erustes,Escalona,Escalonilla,Escamilla,Escariche,Escopete,Espinosa,Espinoso,Esplegares,Esquivias,Estables,Estriegana,Fontanar,Fuembellida,Fuensalida,Fuentelsaz,Gajanejos,Galve,Galvez,Garciotum,Gascuena,Gerindote,Guadamur,Henche,Heras,Herreria,Herreruela,Hijes,Hinojosa,Hita,Hombrados,Hontanar,Hontoba,Horche,Hormigos,Huecas,Huermeces,Huerta,Hueva,Humanes,Illan,Illana,Illescas,Iniestola,Irueste,Jadraque,Jirueque,Lagartera,Las,Layos,Ledanca,Lillo,Lominchar,Loranca,Los,Lucillos,Lupiana,Luzaga,Luzon,Madridejos,Magan,Majaelrayo,Malaga,Malaguilla,Malpica,Mandayona,Mantiel,Manzaneque,Maqueda,Maranchon,Marchamalo,Marjaliza,Marrupe,Mascaraque,Masegoso,Matarrubia,Matillas,Mazarete,Mazuecos,Medranda,Megina,Mejorada,Mentrida,Mesegar,Miedes,Miguel,Millana,Milmarcos,Mirabueno,Miralrio,Mocejon,Mochales,Mohedas,Molina,Monasterio,Mondejar,Montarron,Mora,Moratilla,Morenilla,Muduex,Nambroca,Navalcan,Negredo,Noblejas,Noez,Nombela,Noves,Numancia,Nuno,Ocana,Ocentejo,Olias,Olmeda,Ontigola,Orea,Orgaz,Oropesa,Otero,Palmaces,Palomeque,Pantoja,Pardos,Paredes,Pareja,Parrillas,Pastrana,Pelahustan,Penalen,Penalver,Pepino,Peralejos,Peralveche,Pinilla,Pioz,Piqueras,Polan,Portillo,Poveda,Pozo,Pradena,Prados,Puebla,Puerto,Pulgar,Quer,Quero,Quintanar,Quismondo,Rebollosa,Recas,Renera,Retamoso,Retiendas,Riba,Rielves,Rillo,Riofrio,Robledillo,Robledo,Romanillos,Romanones,Rueda,Sacecorbo,Sacedon,Saelices,Salmeron,San,Santa,Santiuste,Santo,Sartajada,Sauca,Sayaton,Segurilla,Selas,Semillas,Sesena,Setiles,Sevilleja,Sienes,Siguenza,Solanillos,Somolinos,Sonseca,Sotillo,Sotodasos,Talavera,Tamajon,Taragudo,Taravilla,Tartanedo,Tembleque,Tendilla,Terzaga,Tierzo,Tordellego,Tordelrabano,Tordesilos,Torija,Torralba,Torre,Torrecilla,Torrecuadrada,Torrejon,Torremocha,Torrico,Torrijos,Torrubia,Tortola,Tortuera,Tortuero,Totanes,Traid,Trijueque,Trillo,Turleque,Uceda,Ugena,Ujados,Urda,Utande,Valdarachas,Valdesotos,Valhermoso,Valtablado,Valverde,Velada,Viana,Vinuelas,Yebes,Yebra,Yelamos,Yeles,Yepes,Yuncler,Yunclillos,Yuncos,Yunquera,Zaorejas,Zarzuela,Zorita"},{name:"Ruthenian",i:5,min:5,max:10,d:"",m:0,b:"Belgorod,Beloberezhye,Belyi,Belz,Berestiy,Berezhets,Berezovets,Berezutsk,Bobruisk,Bolonets,Borisov,Borovsk,Bozhesk,Bratslav,Bryansk,Brynsk,Buryn,Byhov,Chechersk,Chemesov,Cheremosh,Cherlen,Chern,Chernigov,Chernitsa,Chernobyl,Chernogorod,Chertoryesk,Chetvertnia,Demyansk,Derevesk,Devyagoresk,Dichin,Dmitrov,Dorogobuch,Dorogobuzh,Drestvin,Drokov,Drutsk,Dubechin,Dubichi,Dubki,Dubkov,Dveren,Galich,Glebovo,Glinsk,Goloty,Gomiy,Gorodets,Gorodische,Gorodno,Gorohovets,Goroshin,Gorval,Goryshon,Holm,Horobor,Hoten,Hotin,Hotmyzhsk,Ilovech,Ivan,Izborsk,Izheslavl,Kamenets,Kanev,Karachev,Karna,Kavarna,Klechesk,Klyapech,Kolomyya,Kolyvan,Kopyl,Korec,Kornik,Korochunov,Korshev,Korsun,Koshkin,Kotelno,Kovyla,Kozelsk,Kozelsk,Kremenets,Krichev,Krylatsk,Ksniatin,Kulatsk,Kursk,Kursk,Lebedev,Lida,Logosko,Lomihvost,Loshesk,Loshichi,Lubech,Lubno,Lubutsk,Lutsk,Luchin,Luki,Lukoml,Luzha,Lvov,Mtsensk,Mdin,Medniki,Melecha,Merech,Meretsk,Mescherskoe,Meshkovsk,Metlitsk,Mezetsk,Mglin,Mihailov,Mikitin,Mikulino,Miloslavichi,Mogilev,Mologa,Moreva,Mosalsk,Moschiny,Mozyr,Mstislav,Mstislavets,Muravin,Nemech,Nemiza,Nerinsk,Nichan,Novgorod,Novogorodok,Obolichi,Obolensk,Obolensk,Oleshsk,Olgov,Omelnik,Opoka,Opoki,Oreshek,Orlets,Osechen,Oster,Ostrog,Ostrov,Perelai,Peremil,Peremyshl,Pererov,Peresechen,Perevitsk,Pereyaslav,Pinsk,Ples,Polotsk,Pronsk,Proposhesk,Punia,Putivl,Rechitsa,Rodno,Rogachev,Romanov,Romny,Roslavl,Rostislavl,Rostovets,Rsha,Ruza,Rybchesk,Rylsk,Rzhavesk,Rzhev,Rzhischev,Sambor,Serensk,Serensk,Serpeysk,Shilov,Shuya,Sinech,Sizhka,Skala,Slovensk,Slutsk,Smedin,Sneporod,Snitin,Snovsk,Sochevo,Sokolec,Starica,Starodub,Stepan,Sterzh,Streshin,Sutesk,Svinetsk,Svisloch,Terebovl,Ternov,Teshilov,Teterin,Tiversk,Torchevsk,Toropets,Torzhok,Tripolye,Trubchevsk,Tur,Turov,Usvyaty,Uteshkov,Vasilkov,Velil,Velye,Venev,Venicha,Verderev,Vereya,Veveresk,Viazma,Vidbesk,Vidychev,Voino,Volodimer,Volok,Volyn,Vorobesk,Voronich,Voronok,Vorotynsk,Vrev,Vruchiy,Vselug,Vyatichsk,Vyatka,Vyshegorod,Vyshgorod,Vysokoe,Yagniatin,Yaropolch,Yasenets,Yuryev,Yuryevets,Zaraysk,Zhitomel,Zholvazh,Zizhech,Zubkov,Zudechev,Zvenigorod"},{name:"Nordic",i:6,min:6,max:10,d:"kln",m:.1,b:"Akureyri,Aldra,Alftanes,Andenes,Austbo,Auvog,Bakkafjordur,Ballangen,Bardal,Beisfjord,Bifrost,Bildudalur,Bjerka,Bjerkvik,Bjorkosen,Bliksvaer,Blokken,Blonduos,Bolga,Bolungarvik,Borg,Borgarnes,Bosmoen,Bostad,Bostrand,Botsvika,Brautarholt,Breiddalsvik,Bringsli,Brunahlid,Budardalur,Byggdakjarni,Dalvik,Djupivogur,Donnes,Drageid,Drangsnes,Egilsstadir,Eiteroga,Elvenes,Engavogen,Ertenvog,Eskifjordur,Evenes,Eyrarbakki,Fagernes,Fallmoen,Fellabaer,Fenes,Finnoya,Fjaer,Fjelldal,Flakstad,Flateyri,Flostrand,Fludir,Gardaber,Gardur,Gimstad,Givaer,Gjeroy,Gladstad,Godoya,Godoynes,Granmoen,Gravdal,Grenivik,Grimsey,Grindavik,Grytting,Hafnir,Halsa,Hauganes,Haugland,Hauknes,Hella,Helland,Hellissandur,Hestad,Higrav,Hnifsdalur,Hofn,Hofsos,Holand,Holar,Holen,Holkestad,Holmavik,Hopen,Hovden,Hrafnagil,Hrisey,Husavik,Husvik,Hvammstangi,Hvanneyri,Hveragerdi,Hvolsvollur,Igeroy,Indre,Inndyr,Innhavet,Innes,Isafjordur,Jarklaustur,Jarnsreykir,Junkerdal,Kaldvog,Kanstad,Karlsoy,Kavosen,Keflavik,Kjelde,Kjerstad,Klakk,Kopasker,Kopavogur,Korgen,Kristnes,Krutoga,Krystad,Kvina,Lande,Laugar,Laugaras,Laugarbakki,Laugarvatn,Laupstad,Leines,Leira,Leiren,Leland,Lenvika,Loding,Lodingen,Lonsbakki,Lopsmarka,Lovund,Luroy,Maela,Melahverfi,Meloy,Mevik,Misvaer,Mornes,Mosfellsber,Moskenes,Myken,Naurstad,Nesberg,Nesjahverfi,Nesset,Nevernes,Obygda,Ofoten,Ogskardet,Okervika,Oknes,Olafsfjordur,Oldervika,Olstad,Onstad,Oppeid,Oresvika,Orsnes,Orsvog,Osmyra,Overdal,Prestoya,Raudalaekur,Raufarhofn,Reipo,Reykholar,Reykholt,Reykjahlid,Rif,Rinoya,Rodoy,Rognan,Rosvika,Rovika,Salhus,Sanden,Sandgerdi,Sandoker,Sandset,Sandvika,Saudarkrokur,Selfoss,Selsoya,Sennesvik,Setso,Siglufjordur,Silvalen,Skagastrond,Skjerstad,Skonland,Skorvogen,Skrova,Sleneset,Snubba,Softing,Solheim,Solheimar,Sorarnoy,Sorfugloy,Sorland,Sormela,Sorvaer,Sovika,Stamsund,Stamsvika,Stave,Stokka,Stokkseyri,Storjord,Storo,Storvika,Strand,Straumen,Strendene,Sudavik,Sudureyri,Sundoya,Sydalen,Thingeyri,Thorlakshofn,Thorshofn,Tjarnabyggd,Tjotta,Tosbotn,Traelnes,Trofors,Trones,Tverro,Ulvsvog,Unnstad,Utskor,Valla,Vandved,Varmahlid,Vassos,Vevelstad,Vidrek,Vik,Vikholmen,Vogar,Vogehamn,Vopnafjordur"},{name:"Greek",i:7,min:5,max:11,d:"s",m:.1,b:"Abdera,Abila,Abydos,Acanthus,Acharnae,Actium,Adramyttium,Aegae,Aegina,Aegium,Aenus,Agrinion,Aigosthena,Akragas,Akrai,Akrillai,Akroinon,Akrotiri,Alalia,Alexandreia,Alexandretta,Alexandria,Alinda,Amarynthos,Amaseia,Ambracia,Amida,Amisos,Amnisos,Amphicaea,Amphigeneia,Amphipolis,Amphissa,Ankon,Antigona,Antipatrea,Antioch,Antioch,Antiochia,Andros,Apamea,Aphidnae,Apollonia,Argos,Arsuf,Artanes,Artemita,Argyroupoli,Asine,Asklepios,Aspendos,Assus,Astacus,Athenai,Athmonia,Aytos,Ancient,Baris,Bhrytos,Borysthenes,Berge,Boura,Bouthroton,Brauron,Byblos,Byllis,Byzantium,Bythinion,Callipolis,Cebrene,Chalcedon,Calydon,Carystus,Chamaizi,Chalcis,Chersonesos,Chios,Chytri,Clazomenae,Cleonae,Cnidus,Colosse,Corcyra,Croton,Cyme,Cyrene,Cythera,Decelea,Delos,Delphi,Demetrias,Dicaearchia,Dimale,Didyma,Dion,Dioscurias,Dodona,Dorylaion,Dyme,Edessa,Elateia,Eleusis,Eleutherna,Emporion,Ephesus,Ephyra,Epidamnos,Epidauros,Eresos,Eretria,Erythrae,Eubea,Gangra,Gaza,Gela,Golgi,Gonnos,Gorgippia,Gournia,Gortyn,Gythium,Hagios,Hagia,Halicarnassus,Halieis,Helike,Heliopolis,Hellespontos,Helorus,Hemeroskopeion,Heraclea,Hermione,Hermonassa,Hierapetra,Hierapolis,Himera,Histria,Hubla,Hyele,Ialysos,Iasus,Idalium,Imbros,Iolcus,Itanos,Ithaca,Juktas,Kallipolis,Kamares,Kameiros,Kannia,Kamarina,Kasmenai,Katane,Kerkinitida,Kepoi,Kimmerikon,Kios,Klazomenai,Knidos,Knossos,Korinthos,Kos,Kourion,Kume,Kydonia,Kynos,Kyrenia,Lamia,Lampsacus,Laodicea,Lapithos,Larissa,Lato,Laus,Lebena,Lefkada,Lekhaion,Leibethra,Leontinoi,Lepreum,Lessa,Lilaea,Lindus,Lissus,Epizephyrian,Madytos,Magnesia,Mallia,Mantineia,Marathon,Marmara,Maroneia,Masis,Massalia,Megalopolis,Megara,Mesembria,Messene,Metapontum,Methana,Methone,Methumna,Miletos,Misenum,Mochlos,Monastiraki,Morgantina,Mulai,Mukenai,Mylasa,Myndus,Myonia,Myra,Myrmekion,Mutilene,Myos,Nauplios,Naucratis,Naupactus,Naxos,Neapoli,Neapolis,Nemea,Nicaea,Nicopolis,Nirou,Nymphaion,Nysa,Oenoe,Oenus,Odessos,Olbia,Olous,Olympia,Olynthus,Opus,Orchomenus,Oricos,Orestias,Oreus,Oropus,Onchesmos,Pactye,Pagasae,Palaikastro,Pandosia,Panticapaeum,Paphos,Parium,Paros,Parthenope,Patrae,Pavlopetri,Pegai,Pelion,Peiraies,Pella,Percote,Pergamum,Petsofa,Phaistos,Phaleron,Phanagoria,Pharae,Pharnacia,Pharos,Phaselis,Philippi,Pithekussa,Philippopolis,Platanos,Phlius,Pherae,Phocaea,Pinara,Pisa,Pitane,Pitiunt,Pixous,Plataea,Poseidonia,Potidaea,Priapus,Priene,Prousa,Pseira,Psychro,Pteleum,Pydna,Pylos,Pyrgos,Rhamnus,Rhegion,Rhithymna,Rhodes,Rhypes,Rizinia,Salamis,Same,Samos,Scyllaeum,Selinus,Seleucia,Semasus,Sestos,Scidrus,Sicyon,Side,Sidon,Siteia,Sinope,Siris,Sklavokampos,Smyrna,Soli,Sozopolis,Sparta,Stagirus,Stratos,Stymphalos,Sybaris,Surakousai,Taras,Tanagra,Tanais,Tauromenion,Tegea,Temnos,Tenedos,Tenea,Teos,Thapsos,Thassos,Thebai,Theodosia,Therma,Thespiae,Thronion,Thoricus,Thurii,Thyreum,Thyria,Tiruns,Tithoraea,Tomis,Tragurion,Trapeze,Trapezus,Tripolis,Troizen,Troliton,Troy,Tylissos,Tyras,Tyros,Tyritake,Vasiliki,Vathypetros,Zakynthos,Zakros,Zankle"},{name:"Roman",i:8,min:6,max:11,d:"ln",m:.1,b:"Abila,Adflexum,Adnicrem,Aelia,Aelius,Aeminium,Aequum,Agrippina,Agrippinae,Ala,Albanianis,Ambianum,Andautonia,Apulum,Aquae,Aquaegranni,Aquensis,Aquileia,Aquincum,Arae,Argentoratum,Ariminum,Ascrivium,Atrebatum,Atuatuca,Augusta,Aurelia,Aurelianorum,Batavar,Batavorum,Belum,Biriciana,Blestium,Bonames,Bonna,Bononia,Borbetomagus,Bovium,Bracara,Brigantium,Burgodunum,Caesaraugusta,Caesarea,Caesaromagus,Calleva,Camulodunum,Cannstatt,Cantiacorum,Capitolina,Castellum,Castra,Castrum,Cibalae,Clausentum,Colonia,Concangis,Condate,Confluentes,Conimbriga,Corduba,Coria,Corieltauvorum,Corinium,Coriovallum,Cornoviorum,Danum,Deva,Divodurum,Dobunnorum,Drusi,Dubris,Dumnoniorum,Durnovaria,Durocobrivis,Durocornovium,Duroliponte,Durovernum,Durovigutum,Eboracum,Edetanorum,Emerita,Emona,Euracini,Faventia,Flaviae,Florentia,Forum,Gerulata,Gerunda,Glevensium,Hadriani,Herculanea,Isca,Italica,Iulia,Iuliobrigensium,Iuvavum,Lactodurum,Lagentium,Lauri,Legionis,Lemanis,Lentia,Lepidi,Letocetum,Lindinis,Lindum,Londinium,Lopodunum,Lousonna,Lucus,Lugdunum,Luguvalium,Lutetia,Mancunium,Marsonia,Martius,Massa,Matilo,Mattiacorum,Mediolanum,Mod,Mogontiacum,Moridunum,Mursa,Naissus,Nervia,Nida,Nigrum,Novaesium,Noviomagus,Olicana,Ovilava,Parisiorum,Partiscum,Paterna,Pistoria,Placentia,Pollentia,Pomaria,Pons,Portus,Praetoria,Praetorium,Pullum,Ragusium,Ratae,Raurica,Regina,Regium,Regulbium,Rigomagus,Roma,Romula,Rutupiae,Salassorum,Salernum,Salona,Scalabis,Segovia,Silurum,Sirmium,Siscia,Sorviodurum,Sumelocenna,Tarraco,Taurinorum,Theranda,Traiectum,Treverorum,Tungrorum,Turicum,Ulpia,Valentia,Venetiae,Venta,Verulamium,Vesontio,Vetera,Victoriae,Victrix,Villa,Viminacium,Vindelicorum,Vindobona,Vinovia,Viroconium"},{name:"Finnic",i:9,min:5,max:11,d:"akiut",m:0,b:"Aanekoski,Abjapaluoja,Ahlainen,Aholanvaara,Ahtari,Aijala,Aimala,Akaa,Alajarvi,Alatornio,Alavus,Antsla,Aspo,Bennas,Bjorkoby,Elva,Emasalo,Espoo,Esse,Evitskog,Forssa,Haapajarvi,Haapamaki,Haapavesi,Haapsalu,Haavisto,Hameenlinna,Hameenmaki,Hamina,Hanko,Harjavalta,Hattuvaara,Haukipudas,Hautajarvi,Havumaki,Heinola,Hetta,Hinkabole,Hirmula,Hossa,Huittinen,Husula,Hyryla,Hyvinkaa,Iisalmi,Ikaalinen,Ilmola,Imatra,Inari,Iskmo,Itakoski,Jamsa,Jarvenpaa,Jeppo,Jioesuu,Jiogeva,Joensuu,Jokela,Jokikyla,Jokisuu,Jormua,Juankoski,Jungsund,Jyvaskyla,Kaamasmukka,Kaarina,Kajaani,Kalajoki,Kallaste,Kankaanpaa,Kannus,Kardla,Karesuvanto,Karigasniemi,Karkkila,Karkku,Karksinuia,Karpankyla,Kaskinen,Kasnas,Kauhajoki,Kauhava,Kauniainen,Kauvatsa,Kehra,Keila,Kellokoski,Kelottijarvi,Kemi,Kemijarvi,Kerava,Keuruu,Kiikka,Kiipu,Kilinginiomme,Kiljava,Kilpisjarvi,Kitee,Kiuruvesi,Kivesjarvi,Kiviioli,Kivisuo,Klaukkala,Klovskog,Kohtlajarve,Kokemaki,Kokkola,Kolho,Koria,Koskue,Kotka,Kouva,Kouvola,Kristiina,Kaupunki,Kuhmo,Kunda,Kuopio,Kuressaare,Kurikka,Kusans,Kuusamo,Kylmalankyla,Lahti,Laitila,Lankipohja,Lansikyla,Lappeenranta,Lapua,Laurila,Lautiosaari,Lepsama,Liedakkala,Lieksa,Lihula,Littoinen,Lohja,Loimaa,Loksa,Loviisa,Luohuanylipaa,Lusi,Maardu,Maarianhamina,Malmi,Mantta,Masaby,Masala,Matasvaara,Maula,Miiluranta,Mikkeli,Mioisakula,Munapirtti,Mustvee,Muurahainen,Naantali,Nappa,Narpio,Nickby,Niinimaa,Niinisalo,Nikkila,Nilsia,Nivala,Nokia,Nummela,Nuorgam,Nurmes,Nuvvus,Obbnas,Oitti,Ojakkala,Ollola,onningeby,Orimattila,Orivesi,Otanmaki,Otava,Otepaa,Oulainen,Oulu,Outokumpu,Paavola,Paide,Paimio,Pakankyla,Paldiski,Parainen,Parkano,Parkumaki,Parola,Perttula,Pieksamaki,Pietarsaari,Pioltsamaa,Piolva,Pohjavaara,Porhola,Pori,Porrasa,Porvoo,Pudasjarvi,Purmo,Pussi,Pyhajarvi,Raahe,Raasepori,Raisio,Rajamaki,Rakvere,Rapina,Rapla,Rauma,Rautio,Reposaari,Riihimaki,Rovaniemi,Roykka,Ruonala,Ruottala,Rutalahti,Saarijarvi,Salo,Sastamala,Saue,Savonlinna,Seinajoki,Sillamae,Sindi,Siuntio,Somero,Sompujarvi,Suonenjoki,Suurejaani,Syrjantaka,Tampere,Tamsalu,Tapa,Temmes,Tiorva,Tormasenvaara,Tornio,Tottijarvi,Tulppio,Turenki,Turi,Tuukkala,Tuurala,Tuuri,Tuuski,Ulvila,Unari,Upinniemi,Utti,Uusikaarlepyy,Uusikaupunki,Vaaksy,Vaalimaa,Vaarinmaja,Vaasa,Vainikkala,Valga,Valkeakoski,Vantaa,Varkaus,Vehkapera,Vehmasmaki,Vieki,Vierumaki,Viitasaari,Viljandi,Vilppula,Viohma,Vioru,Virrat,Ylike,Ylivieska,Ylojarvi"},{name:"Korean",i:10,min:5,max:11,d:"",m:0,b:"Aewor,Andong,Angang,Anjung,Anmyeon,Ansan,Anseong,Anyang,Aphae,Apo,Asan,Baebang,Baekseok,Baeksu,Beobwon,Beolgyo,Beomseo,Boeun,Bongdam,Bongdong,Bonghwa,Bongyang,Boryeong,Boseong,Buan,Bubal,Bucheon,Buksam,Busan,Busan,Busan,Buyeo,Changnyeong,Changwon,Cheonan,Cheongdo,Cheongjin,Cheongju,Cheongju,Cheongsong,Cheongyang,Cheorwon,Chirwon,Chowol,Chuncheon,Chuncheon,Chungju,Chungmu,Daecheon,Daedeok,Daegaya,Daegu,Daegu,Daegu,Daejeon,Daejeon,Daejeon,Daejeong,Daesan,Damyang,Dangjin,Danyang,Dasa,Dogye,Dolsan,Dong,Dongducheon,Donggwangyang,Donghae,Dongsong,Doyang,Eonyang,Eumseong,Gaeseong,Galmal,Gampo,Ganam,Ganggyeong,Ganghwa,Gangjin,Gangneung,Ganseong,Gapyeong,Gaun,Gaya,Geochang,Geoje,Geojin,Geoncheon,Geumho,Geumil,Geumsan,Geumseong,Geumwang,Gijang,Gimcheon,Gimhae,Gimhwa,Gimje,Gimpo,Goa,Gochang,Gochon,Goesan,Gohan,Goheung,Gokseong,Gongdo,Gongju,Gonjiam,Goseong,Goyang,Gujwa,Gumi,Gungnae,Gunpo,Gunsan,Gunsan,Gunwi,Guri,Gurye,Guryongpo,Gwacheon,Gwangcheon,Gwangju,Gwangju,Gwangju,Gwangju,Gwangmyeong,Gwangyang,Gwansan,Gyeongju,Gyeongsan,Gyeongseong,Gyeongseong,Gyeryong,Hadong,Haeju,Haenam,Hamchang,Hamheung,Hampyeong,Hamyang,Hamyeol,Hanam,Hanrim,Hapcheon,Hapdeok,Hayang,Heunghae,Heungnam,Hoengseong,Hongcheon,Hongnong,Hongseong,Hwacheon,Hwado,Hwando,Hwaseong,Hwasun,Hwawon,Hyangnam,Icheon,Iksan,Illo,Imsil,Incheon,Incheon,Incheon,Inje,Iri,Iri,Jangan,Janghang,Jangheung,Janghowon,Jangseong,Jangseungpo,Jangsu,Jecheon,Jeju,Jeomchon,Jeongeup,Jeonggwan,Jeongju,Jeongok,Jeongseon,Jeonju,Jeonju,Jeungpyeong,Jido,Jiksan,Jillyang,Jinan,Jincheon,Jindo,Jingeon,Jinhae,Jinjeop,Jinju,Jinju,Jinnampo,Jinyeong,Jocheon,Jochiwon,Jori,Judeok,Jumunjin,Maepo,Mangyeong,Masan,Masan,Migeum,Miryang,Mokcheon,Mokpo,Mokpo,Muan,Muju,Mungyeong,Munmak,Munsan,Munsan,Naeseo,Naesu,Najin,Naju,Namhae,Namji,Nampyeong,Namwon,Namyang,Namyangju,Nohwa,Nongong,Nonsan,Ochang,Ocheon,Oedong,Okcheon,Okgu,Onam,Onsan,Onyang,Opo,Osan,Osong,Paengseong,Paju,Pocheon,Pogok,Pohang,Poseung,Punggi,Pungsan,Pyeongchang,Pyeonghae,Pyeongtaek,Pyeongyang,Sabi,Sabuk,Sacheon,Samcheok,Samcheonpo,Samho,Samhyang,Samnangjin,Samrye,Sancheong,Sangdong,Sangju,Sanyang,Sapgyo,Sariwon,Sejong,Seocheon,Seogwipo,Seokjeok,Seonggeo,Seonghwan,Seongjin,Seongju,Seongnam,Seongsan,Seonsan,Seosan,Seoul,Seungju,Siheung,Sinbuk,Sindong,Sineuiju,Sintaein,Soheul,Sokcho,Songak,Songjeong,Songnim,Songtan,Sunchang,Suncheon,Suwon,Taean,Taebaek,Tongjin,Tongyeong,Uijeongbu,Uiryeong,Uiseong,Uiwang,Ujeong,Uljin,Ulleung,Ulsan,Ulsan,Unbong,Ungcheon,Ungjin,Wabu,Waegwan,Wando,Wanggeomseong,Wiryeseong,Wondeok,Wonju,Wonsan,Yangchon,Yanggu,Yangju,Yangpyeong,Yangsan,Yangyang,Yecheon,Yeocheon,Yeoju,Yeomchi,Yeoncheon,Yeongam,Yeongcheon,Yeongdeok,Yeongdong,Yeonggwang,Yeongju,Yeongwol,Yeongyang,Yeonil,Yeonmu,Yeosu,Yesan,Yongin,Yongjin,Yugu,Wayang"},{name:"Chinese",i:11,min:5,max:10,d:"",m:0,b:"Anding,Anlu,Anqing,Anshun,Baan,Baixing,Banyang,Baoding,Baoqing,Binzhou,Caozhou,Changbai,Changchun,Changde,Changling,Changsha,Changtu,Changzhou,Chaozhou,Cheli,Chengde,Chengdu,Chenzhou,Chizhou,Chongqing,Chuxiong,Chuzhou,Dading,Dali,Daming,Datong,Daxing,Dean,Dengke,Dengzhou,Deqing,Dexing,Dihua,Dingli,Dongan,Dongchang,Dongchuan,Dongping,Duyun,Fengtian,Fengxiang,Fengyang,Fenzhou,Funing,Fuzhou,Ganzhou,Gaoyao,Gaozhou,Gongchang,Guangnan,Guangning,Guangping,Guangxin,Guangzhou,Guide,Guilin,Guiyang,Hailong,Hailun,Hangzhou,Hanyang,Hanzhong,Heihe,Hejian,Henan,Hengzhou,Hezhong,Huaian,Huaide,Huaiqing,Huanglong,Huangzhou,Huining,Huizhou,Hulan,Huzhou,Jiading,Jian,Jianchang,Jiande,Jiangning,Jiankang,Jianning,Jiaxing,Jiayang,Jilin,Jinan,Jingjiang,Jingzhao,Jingzhou,Jinhua,Jinzhou,Jiujiang,Kaifeng,Kaihua,Kangding,Kuizhou,Laizhou,Lanzhou,Leizhou,Liangzhou,Lianzhou,Liaoyang,Lijiang,Linan,Linhuang,Linjiang,Lintao,Liping,Liuzhou,Longan,Longjiang,Longqing,Longxing,Luan,Lubin,Lubin,Luzhou,Mishan,Nanan,Nanchang,Nandian,Nankang,Nanning,Nanyang,Nenjiang,Ningan,Ningbo,Ningguo,Ninguo,Ningwu,Ningxia,Ningyuan,Pingjiang,Pingle,Pingliang,Pingyang,Puer,Puzhou,Qianzhou,Qingyang,Qingyuan,Qingzhou,Qiongzhou,Qujing,Quzhou,Raozhou,Rende,Ruian,Ruizhou,Runing,Shafeng,Shajing,Shaoqing,Shaowu,Shaoxing,Shaozhou,Shinan,Shiqian,Shouchun,Shuangcheng,Shulei,Shunde,Shunqing,Shuntian,Shuoping,Sicheng,Sien,Sinan,Sizhou,Songjiang,Suiding,Suihua,Suining,Suzhou,Taian,Taibei,Tainan,Taiping,Taiwan,Taiyuan,Taizhou,Taonan,Tengchong,Tieli,Tingzhou,Tongchuan,Tongqing,Tongren,Tongzhou,Weihui,Wensu,Wenzhou,Wuchang,Wuding,Wuzhou,Xian,Xianchun,Xianping,Xijin,Xiliang,Xincheng,Xingan,Xingde,Xinghua,Xingjing,Xingqing,Xingyi,Xingyuan,Xingzhong,Xining,Xinmen,Xiping,Xuanhua,Xunzhou,Xuzhou,Yanan,Yangzhou,Yanji,Yanping,Yanqi,Yanzhou,Yazhou,Yichang,Yidu,Yilan,Yili,Yingchang,Yingde,Yingtian,Yingzhou,Yizhou,Yongchang,Yongping,Yongshun,Yongzhou,Yuanzhou,Yuezhou,Yulin,Yunnan,Yunyang,Zezhou,Zhangde,Zhangzhou,Zhaoqing,Zhaotong,Zhenan,Zhending,Zhengding,Zhenhai,Zhenjiang,Zhenxi,Zhenyun,Zhongshan,Zunyi"},{name:"Japanese",i:12,min:4,max:10,d:"",m:0,b:"Abira,Aga,Aikawa,Aizumisato,Ajigasawa,Akkeshi,Amagi,Ami,Anan,Ando,Asakawa,Ashikita,Bandai,Biratori,China,Chonan,Esashi,Fuchu,Fujimi,Funagata,Genkai,Godo,Goka,Gonohe,Gyokuto,Haboro,Hamatonbetsu,Happo,Harima,Hashikami,Hayashima,Heguri,Hidaka,Higashiagatsuma,Higashiura,Hiranai,Hirogawa,Hiroo,Hodatsushimizu,Hoki,Hokuei,Hokuryu,Horokanai,Ibigawa,Ichikai,Ichikawamisato,Ichinohe,Iide,Iijima,Iizuna,Ikawa,Inagawa,Itakura,Iwaizumi,Iwate,Kagamino,Kaisei,Kamifurano,Kamiita,Kamijima,Kamikawa,Kamikawa,Kamikawa,Kaminokawa,Kamishihoro,Kamitonda,Kamiyama,Kanda,Kanna,Kasagi,Kasuya,Katsuura,Kawabe,Kawagoe,Kawajima,Kawamata,Kawamoto,Kawanehon,Kawanishi,Kawara,Kawasaki,Kawasaki,Kawatana,Kawazu,Kihoku,Kikonai,Kin,Kiso,Kitagata,Kitajima,Kiyama,Kiyosato,Kofu,Koge,Kohoku,Kokonoe,Kora,Kosa,Kosaka,Kotohira,Kudoyama,Kumejima,Kumenan,Kumiyama,Kunitomi,Kurate,Kushimoto,Kutchan,Kyonan,Kyotamba,Mashike,Matsumae,Mifune,Mihama,Minabe,Minami,Minamiechizen,Minamioguni,Minamiosumi,Minamitane,Misaki,Misasa,Misato,Miyashiro,Miyoshi,Mori,Moseushi,Mutsuzawa,Nagaizumi,Nagatoro,Nagayo,Nagomi,Nakadomari,Nakanojo,Nakashibetsu,Nakatosa,Namegawa,Namie,Nanbu,Nanporo,Naoshima,Nasu,Niseko,Nishihara,Nishiizu,Nishikatsura,Nishikawa,Nishinoshima,Nishiwaga,Nogi,Noto,Nyuzen,Oarai,Obuse,Odai,Ogawara,Oharu,Oi,Oirase,Oishida,Oiso,Oizumi,Oji,Okagaki,Oketo,Okutama,Omu,Ono,Osaki,Osakikamijima,Otobe,Otsuki,Owani,Reihoku,Rifu,Rikubetsu,Rishiri,Rokunohe,Ryuo,Saka,Sakuho,Samani,Satsuma,Sayo,Saza,Setana,Shakotan,Shibayama,Shikama,Shimamoto,Shimizu,Shimokawa,Shintomi,Shirakawa,Shisui,Shitara,Sobetsu,Sue,Sumita,Suooshima,Suttsu,Tabuse,Tachiarai,Tadami,Tadaoka,Taiji,Taiki,Takachiho,Takahama,Taketoyo,Tako,Taragi,Tateshina,Tatsugo,Tawaramoto,Teshikaga,Tobe,Toin,Tokigawa,Toma,Tomioka,Tonosho,Tosa,Toyo,Toyokoro,Toyotomi,Toyoyama,Tsubata,Tsubetsu,Tsukigata,Tsunan,Tsuno,Tsuwano,Umi,Wakasa,Yamamoto,Yamanobe,Yamatsuri,Yanaizu,Yasuda,Yoichi,Yonaguni,Yoro,Yoshino,Yubetsu,Yugawara,Yuni,Yusuhara,Yuza"},{name:"Portuguese",i:13,min:5,max:11,d:"",m:.1,b:"Abrigada,Afonsoeiro,Agueda,Aguiar,Aguilada,Alagoas,Alagoinhas,Albufeira,Alcacovas,Alcanhoes,Alcobaca,Alcochete,Alcoutim,Aldoar,Alexania,Alfeizerao,Algarve,Alenquer,Almada,Almagreira,Almeirim,Alpalhao,Alpedrinha,Alvalade,Alverca,Alvor,Alvorada,Amadora,Amapa,Amieira,Anapolis,Anhangueira,Ansiaes,Apelacao,Aracaju,Aranhas,Arega,Areira,Araguaina,Araruama,Arganil,Armacao,Arouca,Asfontes,Assenceira,Avelar,Aveiro,Azambuja,Azinheira,Azueira,Bahia,Bairros,Balsas,Barcarena,Barreiras,Barreiro,Barretos,Batalha,Beira,Beja,Benavente,Betim,Boticas,Braga,Braganca,Brasilia,Brejo,Cabecao,Cabeceiras,Cabedelo,Cabofrio,Cachoeiras,Cadafais,Calheta,Calihandriz,Calvao,Camacha,Caminha,Campinas,Canidelo,Canha,Canoas,Capinha,Carmoes,Cartaxo,Carvalhal,Carvoeiro,Cascavel,Castanhal,Castelobranco,Caueira,Caxias,Chapadinha,Chaves,Celheiras,Cocais,Coimbra,Comporta,Coentral,Conde,Copacabana,Coqueirinho,Coruche,Corumba,Couco,Cubatao,Curitiba,Damaia,Doisportos,Douradilho,Dourados,Enxames,Enxara,Erada,Erechim,Ericeira,Ermidasdosado,Ervidel,Escalhao,Escariz,Esmoriz,Estombar,Espinhal,Espinho,Esposende,Esquerdinha,Estela,Estoril,Eunapolis,Evora,Famalicao,Famoes,Fanhoes,Fanzeres,Fatela,Fatima,Faro,Felgueiras,Ferreira,Figueira,Flecheiras,Florianopolis,Fornalhas,Fortaleza,Freiria,Freixeira,Frielas,Fronteira,Funchal,Fundao,Gaeiras,Gafanhadaboahora,Goa,Goiania,Gracas,Gradil,Grainho,Gralheira,Guarulhos,Guetim,Guimaraes,Horta,Iguacu,Igrejanova,Ilhavo,Ilheus,Ipanema,Iraja,Itaboral,Itacuruca,Itaguai,Itanhaem,Itapevi,Juazeiro,Lagos,Lavacolchos,Laies,Lamego,Laranjeiras,Leiria,Limoeiro,Linhares,Lisboa,Lomba,Lorvao,Lourencomarques,Lourical,Lourinha,Luziania,Macao,Macapa,Macedo,Machava,Malveira,Manaus,Mangabeira,Mangaratiba,Marambaia,Maranhao,Maringue,Marinhais,Matacaes,Matosinhos,Maxial,Maxias,Mealhada,Meimoa,Meires,Milharado,Mira,Miranda,Mirandela,Mogadouro,Montalegre,Montesinho,Moura,Mourao,Mozelos,Negroes,Neiva,Nespereira,Nilopolis,Niteroi,Nordeste,Obidos,Odemira,Odivelas,Oeiras,Oleiros,Olhao,Olhalvo,Olhomarinho,Olinda,Olival,Oliveira,Oliveirinha,Oporto,Ourem,Ovar,Palhais,Palheiros,Palmeira,Palmela,Palmital,Pampilhosa,Pantanal,Paradinha,Parelheiros,Paripueira,Paudalho,Pedrosinho,Penafiel,Peniche,Pedrogao,Pegoes,Pinhao,Pinheiro,Pinhel,Pombal,Pontal,Pontinha,Portel,Portimao,Poxim,Quarteira,Queijas,Queluz,Quiaios,Ramalhal,Reboleira,Recife,Redinha,Ribadouro,Ribeira,Ribeirao,Rosais,Roteiro,Sabugal,Sacavem,Sagres,Sandim,Sangalhos,Santarem,Santos,Sarilhos,Sarzedas,Satao,Satuba,Seixal,Seixas,Seixezelo,Seixo,Selmes,Sepetiba,Serta,Setubal,Silvares,Silveira,Sinhaem,Sintra,Sobral,Sobralinho,Sorocaba,Tabuacotavir,Tabuleiro,Taveiro,Teixoso,Telhado,Telheiro,Tomar,Torrao,Torreira,Torresvedras,Tramagal,Trancoso,Troviscal,Vagos,Valpacos,Varzea,Vassouras,Velas,Viana,Vidigal,Vidigueira,Vidual,Viladerei,Vilamar,Vimeiro,Vinhais,Vinhos,Viseu,Vitoria,Vlamao,Vouzela"},{name:"Nahuatl",i:14,min:6,max:13,d:"l",m:0,b:"Acaltepec,Acaltepecatl,Acapulco,Acatlan,Acaxochitlan,Ajuchitlan,Atotonilco,Azcapotzalco,Camotlan,Campeche,Chalco,Chapultepec,Chiapan,Chiapas,Chihuahua,Cihuatlan,Cihuatlancihuatl,Coahuila,Coatepec,Coatlan,Coatzacoalcos,Colima,Colotlan,Coyoacan,Cuauhillan,Cuauhnahuac,Cuauhtemoc,Cuernavaca,Ecatepec,Epatlan,Guanajuato,Huaxacac,Huehuetlan,Hueyapan,Ixtapa,Iztaccihuatl,Iztapalapa,Jalisco,Jocotepec,Jocotepecxocotl,Matixco,Mazatlan,Michhuahcan,Michoacan,Michoacanmichin,Minatitlan,Naucalpan,Nayarit,Nezahualcoyotl,Oaxaca,Ocotepec,Ocotlan,Olinalan,Otompan,Popocatepetl,Queretaro,Sonora,Tabasco,Tamaulipas,Tecolotlan,Tenochtitlan,Teocuitlatlan,Teocuitlatlanteotl,Teotlalco,Teotlalcoteotl,Tepotzotlan,Tepoztlantepoztli,Texcoco,Tlachco,Tlalocan,Tlaxcala,Tlaxcallan,Tollocan,Tolutepetl,Tonanytlan,Tototlan,Tuchtlan,Tuxpan,Uaxacac,Xalapa,Xochimilco,Xolotlan,Yaotlan,Yopico,Yucatan,Yztac,Zacatecas,Zacualco"},{name:"Hungarian",i:15,min:6,max:13,d:"",m:.1,b:"Aba,Abadszalok,Abony,Adony,Ajak,Albertirsa,Alsozsolca,Aszod,Babolna,Bacsalmas,Baktaloranthaza,Balassagyarmat,Balatonalmadi,Balatonboglar,Balatonfured,Balatonfuzfo,Balkany,Balmazujvaros,Barcs,Bataszek,Batonyterenye,Battonya,Bekes,Berettyoujfalu,Berhida,Biatorbagy,Bicske,Biharkeresztes,Bodajk,Boly,Bonyhad,Budakalasz,Budakeszi,Celldomolk,Csakvar,Csenger,Csongrad,Csorna,Csorvas,Csurgo,Dabas,Demecser,Derecske,Devavanya,Devecser,Dombovar,Dombrad,Dorogullo,Dunafoldvar,Dunaharaszti,Dunavarsany,Dunavecse,Edeleny,Elek,Emod,Encs,Enying,Ercsi,Fegyvernek,Fehergyarmat,Felsozsolca,Fertoszentmiklos,Fonyod,Fot,Fuzesabony,Fuzesgyarmat,Gardony,God,Gyal,Gyomaendrod,Gyomro,Hajdudorog,Hajduhadhaz,Hajdunanas,Hajdusamson,Hajduszoboszlo,Halasztelek,Harkany,Hatvan,Heves,Heviz,Ibrany,Isaszeg,Izsak,Janoshalma,Janossomorja,Jaszapati,Jaszarokszallas,Jaszfenyszaru,Jaszkiser,Kaba,Kalocsa,Kapuvar,Karcag,Kecel,Kemecse,Kenderes,Kerekegyhaza,Kerepes,Keszthely,Kisber,Kiskoros,Kiskunmajsa,Kistarcsa,Kistelek,Kisujszallas,Kisvarda,Komadi,Komarom,Komlo,Kormend,Korosladany,Koszeg,Kozarmisleny,Kunhegyes,Kunszentmarton,Kunszentmiklos,Labatlan,Lajosmizse,Lenti,Letavertes,Letenye,Lorinci,Maglod,Mako,Mandok,Marcali,Martfu,Martonvasar,Mateszalka,Melykut,Mezobereny,Mezocsat,Mezohegyes,Mezokeresztes,Mezokovacshaza,Mezokovesd,Mezotur,Mindszent,Mohacs,Monor,Mor,Morahalom,Nadudvar,Nagyatad,Nagyecsed,Nagyhalasz,Nagykallo,Nagykata,Nagykoros,Nagymaros,Nyekladhaza,Nyergesujfalu,Nyiradony,Nyirbator,Nyirmada,Nyirtelek,Ocsa,Orkeny,Oroszlany,Paks,Pannonhalma,Paszto,Pecel,Pecsvarad,Pilis,Pilisvorosvar,Polgar,Polgardi,Pomaz,Puspokladany,Pusztaszabolcs,Putnok,Racalmas,Rackeve,Rakamaz,Rakoczifalva,Sajoszentpeter,Sandorfalva,Sarbogard,Sarkad,Sarospatak,Sarvar,Satoraljaujhely,Siklos,Simontornya,Solt,Soltvadkert,Sumeg,Szabadszallas,Szarvas,Szazhalombatta,Szecseny,Szeghalom,Szendro,Szentgotthard,Szentlorinc,Szerencs,Szigethalom,Szigetvar,Szikszo,Tab,Tamasi,Tapioszele,Tapolca,Tat,Tata,Teglas,Tet,Tiszacsege,Tiszafoldvar,Tiszafured,Tiszakecske,Tiszalok,Tiszaujvaros,Tiszavasvari,Tokaj,Tokol,Tolna,Tompa,Torokbalint,Torokszentmiklos,Totkomlos,Tura,Turkeve,Ujkigyos,ujszasz,Vamospercs,Varpalota,Vasarosnameny,Vasvar,Vecses,Velence,Veresegyhaz,Verpelet,Veszto,Zahony,Zalaszentgrot,Zirc,Zsambek"},{name:"Turkish",i:16,min:4,max:10,d:"",m:0,b:"Adapazari,Adiyaman,Afshin,Afyon,Ari,Akchaabat,Akchakale,Akchakoca,Akdamadeni,Akhisar,Aksaray,Akshehir,Alaca,Alanya,Alapli,Alashehir,Amasya,Anamur,Antakya,Ardeshen,Artvin,Aydin,Ayvalik,Babaeski,Bafra,Balikesir,Bandirma,Bartin,Bashiskele,Batman,Bayburt,Belen,Bergama,Besni,Beypazari,Beyshehir,Biga,Bilecik,Bingul,Birecik,Bismil,Bitlis,Bodrum,Bolu,Bolvadin,Bor,Bostanichi,Boyabat,Bozuyuk,Bucak,Bulancak,Bulanik,Burdur,Burhaniye,Chan,Chanakkale,Chankiri,Charshamba,Chaycuma,Chayeli,Chayirova,Cherkezkuy,Cheshme,Ceyhan,Ceylanpinar,Chine,Chivril,Cizre,Chorlu,Chumra,Dalaman,Darica,Denizli,Derik,Derince,Develi,Devrek,Didim,Dilovasi,Dinar,Diyadin,Diyarbakir,Doubayazit,Durtyol,Duzce,Duzichi,Edirne,Edremit,Elazi,Elbistan,Emirda,Erbaa,Ercish,Erdek,Erdemli,Ereli,Ergani,Erzin,Erzincan,Erzurum,Eskishehir,Fatsa,Fethiye,Gazipasha,Gebze,Gelibolu,Gerede,Geyve,Giresun,Guksun,Gulbashi,Gulcuk,Gurnen,Gumushhane,Guroymak,Hakkari,Harbiye,Havza,Hayrabolu,Hilvan,Idil,Idir,Ilgin,Imamolu,Incirliova,Inegul,Iskenderun,Iskilip,Islahiye,Isparta,Izmit,Iznik,Kadirli,Kahramanmarash,Kahta,Kaman,Kapakli,Karabuk,Karacabey,Karadeniz Ereli,Karakupru,Karaman,Karamursel,Karapinar,Karasu,Kars,Kartepe,Kastamonu,Kemer,Keshan,Kilimli,Kilis,Kirikhan,Kirikkale,Kirklareli,Kirshehir,Kiziltepe,Kurfez,Korkuteli,Kovancilar,Kozan,Kozlu,Kozluk,Kulu,Kumluca,Kurtalan,Kushadasi,Kutahya,Luleburgaz,Malatya,Malazgirt,Malkara,Manavgat,Manisa,Mardin,Marmaris,Mersin,Merzifon,Midyat,Milas,Mula,Muratli,Mush,Mut,Nazilli,Nevshehir,Nide,Niksar,Nizip,Nusaybin,udemish,Oltu,Ordu,Orhangazi,Ortaca,Osmancik,Osmaniye,Patnos,Payas,Pazarcik,Polatli,Reyhanli,Rize,Safranbolu,Salihli,Samanda,Samsun,Sandikli,shanliurfa,Saray,Sarikamish,Sarikaya,sharkishla,shereflikochhisar,Serik,Serinyol,Seydishehir,Siirt,Silifke,Silopi,Silvan,Simav,Sinop,shirnak,Sivas,Siverek,Surke,Soma,Sorgun,Suluova,Sungurlu,Suruch,Susurluk,Tarsus,Tatvan,Tavshanli,Tekirda,Terme,Tire,Tokat,Tosya,Trabzon,Tunceli,Turgutlu,Turhal,Unye,Ushak,Uzunkurpru,Van,Vezirkurpru,Viranshehir,Yahyali,Yalova,Yenishehir,Yerkury,Yozgat,Yuksekova,Zile,Zonguldak"},{name:"Berber",i:17,min:4,max:10,d:"s",m:.2,b:"Abkhouch,Adrar,Agadir,Agelmam,Aghmat,Agrakal,Agulmam,Ahaggar,Almou,Anfa,Annaba,Aousja,Arbat,Argoub,Arif,Asfi,Assamer,Assif,Azaghar,Azmour,Azrou,Beccar,Beja,Bennour,Benslimane,Berkane,Berrechid,Bizerte,Bouskoura,Boutferda,Dar Bouazza,Darallouch,Darchaabane,Dcheira,Denden,Djebel,Djedeida,Drargua,Essaouira,Ezzahra,Fas,Fnideq,Ghezeze,Goubellat,Grisaffen,Guelmim,Guercif,Hammamet,Harrouda,Hoceima,Idurar,Ifendassen,Ifoghas,Imilchil,Inezgane,Izoughar,Jendouba,Kacem,Kelibia,Kenitra,Kerrando,Khalidia,Khemisset,Khenifra,Khouribga,Kidal,Korba,Korbous,Lahraouyine,Larache,Leyun,Lqliaa,Manouba,Martil,Mazagan,Mcherga,Mdiq,Megrine,Mellal,Melloul,Midelt,Mohammedia,Mornag,Mrrakc,Nabeul,Nadhour,Nador,Nawaksut,Nefza,Ouarzazate,Ouazzane,Oued Zem,Oujda,Ouladteima,Qsentina,Rades,Rafraf,Safi,Sefrou,Sejnane,Settat,Sijilmassa,Skhirat,Slimane,Somaa,Sraghna,Susa,Tabarka,Taferka,Tafza,Tagbalut,Tagerdayt,Takelsa,Tanja,Tantan,Taourirt,Taroudant,Tasfelalayt,Tattiwin,Taza,Tazerka,Tazizawt,Tebourba,Teboursouk,Temara,Testour,Tetouan,Tibeskert,Tifelt,Tinariwen,Tinduf,Tinja,Tiznit,Toubkal,Trables,Tubqal,Tunes,Urup,Watlas,Wehran,Wejda,Youssoufia,Zaghouan,Zahret,Zemmour,Zriba"},{name:"Arabic",i:18,min:4,max:9,d:"ae",m:.2,b:"Abadilah,Abayt,Abha,Abud,Aden,Ahwar,Ajman,Alabadilah,Alabar,Alahjer,Alain,Alaraq,Alarish,Alarjam,Alashraf,Alaswaaq,Alawali,Albarar,Albawadi,Albirk,Aldhabiyah,Alduwaid,Alfareeq,Algayed,Alhada,Alhafirah,Alhamar,Alharam,Alharidhah,Alhawtah,Alhazim,Alhrateem,Alhudaydah,Alhujun,Alhuwaya,Aljahra,Aljohar,Aljubail,Alkawd,Alkhalas,Alkhawaneej,Alkhen,Alkhhafah,Alkhobar,Alkhuznah,Alkiranah,Allisafah,Allith,Almadeed,Almardamah,Almarwah,Almasnaah,Almejammah,Almojermah,Almshaykh,Almurjan,Almuwayh,Almuzaylif,Alnaheem,Alnashifah,Alqadeimah,Alqah,Alqahma,Alqalh,Alqouz,Alquaba,Alqunfudhah,Alqurayyat,Alradha,Alraqmiah,Alsadyah,Alsafa,Alshagab,Alshoqiq,Alshuqaiq,Alsilaa,Althafeer,Alwakrah,Alwasqah,Amaq,Amran,Annaseem,Aqbiyah,Arafat,Arar,Ardah,Arrawdah,Asfan,Ashayrah,Ashshahaniyah,Askar,Assaffaniyah,Ayaar,Aziziyah,Baesh,Bahrah,Baish,Balhaf,Banizayd,Baqaa,Baqal,Bidiyah,Bisha,Biyatah,Buqhayq,Burayda,Dafiyat,Damad,Dammam,Dariyah,Daynah,Dhafar,Dhahran,Dhalkut,Dhamar,Dhubab,Dhurma,Dibab,Dirab,Doha,Dukhan,Duwaibah,Enaker,Fadhla,Fahaheel,Fanateer,Farasan,Fardah,Fujairah,Ghalilah,Ghar,Ghizlan,Ghomgyah,Ghran,Hababah,Habil,Hadiyah,Haffah,Hajanbah,Hajrah,Halban,Haqqaq,Haradh,Hasar,Hathah,Hawarwar,Hawaya,Hawiyah,Hebaa,Hefar,Hijal,Husnah,Huwailat,Huwaitah,Irqah,Isharah,Ithrah,Jamalah,Jarab,Jareef,Jarwal,Jash,Jazan,Jeddah,Jiblah,Jihanah,Jilah,Jizan,Joha,Joraibah,Juban,Jubbah,Juddah,Jumeirah,Kamaran,Keyad,Khab,Khabtsaeed,Khaiybar,Khasab,Khathirah,Khawarah,Khulais,Khulays,Klayah,Kumzar,Limah,Linah,Mabar,Madrak,Mahab,Mahalah,Makhtar,Makshosh,Manfuhah,Manifah,Manshabah,Mareah,Masdar,Mashwar,Masirah,Maskar,Masliyah,Mastabah,Maysaan,Mazhar,Mdina,Meeqat,Mirbah,Mirbat,Mokhtara,Muharraq,Muladdah,Musandam,Musaykah,Muscat,Mushayrif,Musrah,Mussafah,Mutrah,Nafhan,Nahdah,Nahwa,Najran,Nakhab,Nizwa,Oman,Qadah,Qalhat,Qamrah,Qasam,Qatabah,Qawah,Qosmah,Qurain,Quraydah,Quriyat,Qurwa,Rabigh,Radaa,Rafha,Rahlah,Rakamah,Rasheedah,Rasmadrakah,Risabah,Rustaq,Ryadh,Saabah,Saabar,Sabtaljarah,Sabya,Sadad,Sadah,Safinah,Saham,Sahlat,Saihat,Salalah,Salmalzwaher,Salmiya,Sanaa,Sanaban,Sayaa,Sayyan,Shabayah,Shabwah,Shafa,Shalim,Shaqra,Sharjah,Sharkat,Sharurah,Shatifiyah,Shibam,Shidah,Shifiyah,Shihar,Shoqra,Shoqsan,Shuwaq,Sibah,Sihmah,Sinaw,Sirwah,Sohar,Suhailah,Sulaibiya,Sunbah,Tabuk,Taif,Taqah,Tarif,Tharban,Thumrait,Thuqbah,Thuwal,Tubarjal,Turaif,Turbah,Tuwaiq,Ubar,Umaljerem,Urayarah,Urwah,Wabrah,Warbah,Yabreen,Yadamah,Yafur,Yarim,Yemen,Yiyallah,Zabid,Zahwah,Zallaq,Zinjibar,Zulumah"},{name:"Inuit",i:19,min:5,max:15,d:"alutsn",m:0,b:"Aaluik,Aappilattoq,Aasiaat,Agdleruussakasit,Aggas,Akia,Akilia,Akuliaruseq,Akuliarutsip,Akunnaaq,Agissat,Agssaussat,Alluitsup,Alluttoq,Aluit,Aluk,Ammassalik,Amarortalik,Amitsorsuaq,Anarusuk,Angisorsuaq,Anguniartarfik,Annertussoq,Annikitsoq,Anoraliuirsoq,Appat,Apparsuit,Apusiaajik,Arsivik,Arsuk,Ataa,Atammik,Ateqanngitsorsuaq,Atilissuaq,Attu,Aukarnersuaq,Augpalugtoq, Aumat,Auvilikavsak,Auvilkikavsaup,Avadtlek,Avallersuaq,Bjornesk,Blabaerdalen,Blomsterdalen,Brattalhid,Bredebrae,Brededal,Claushavn,Edderfulegoer,Egger,Eqalugalinnguit,Eqalugarssuit,Eqaluit,Eqqua,Etah,Graah,Hakluyt,Haredalen,Hareoen,Hundeo,Igdlorssuit,Igaliku,Igdlugdlip,Igdluluarssuk,Iginniafik,Ikamiuk,Ikamiut,Ikarissat,Ikateq,Ikeq,Ikerasak,Ikerasaarsuk,Ikermiut,Ikermoissuaq,Ikertivaq,Ikorfarssuit,Ikorfat,Ilimanaq,Illorsuit,Iluileq,Iluiteq,Ilulissat,Illunnguit,Imaarsivik,Imartunarssuk,Immikkoortukajik,Innaarsuit,Ingjald,Inneruulalik,Inussullissuaq,Iqek,Ikerasakassak,Iperaq,Ippik,Isortok,Isungartussoq,Itileq,Itivdleq,Itissaalik,Ittit,Ittoqqortoormiit,Ivingmiut,Ivittuut,Kanajoorartuut,Kangaamiut,Kangaarsuk,Kangaatsiaq,Kangeq,Kangerluk,Kangerlussuaq,Kanglinnguit,Kapisillit,Karrat,Kekertamiut,Kiatak,Kiatassuaq,Kiataussaq,Kigatak,Kigdlussat,Kinaussak,Kingittorsuaq,Kitak,Kitsissuarsuit,Kitsissut,Klenczner,Kook,Kraulshavn,Kujalleq,Kullorsuaq,Kulusuk,Kuurmiit,Kuusuaq,Laksedalen,Maniitsoq,Marrakajik,Mattaangassut,Mernoq,Mittivakkat,Moriusaq,Myggbukta,Naajaat,Nako,Nangissat,Nanortalik,Nanuuseq,Nappassoq,Narsarmijt,Narssaq,Narsarsuaq,Narssarssuk,Nasaussaq,Nasiffik,Natsiarsiorfik,Naujanguit,Niaqornaarsuk,Niaqornat,Nordfjordspasset,Nugatsiaq,Nuluuk,Nunaa,Nunarssit,Nunarsuaq,Nunataaq,Nunatakavsaup,Nutaarmiut,Nuugaatsiaq,Nuuk,Nuukullak,Nuuluk,Nuussuaq,Olonkinbyen,Oqaatsut,Oqaits\xFAnguit,Oqonermiut,Oodaaq,Paagussat,Palungataq,Pamialluk,Paamiut,Paatuut,Patuersoq,Perserajoq,Paornivik,Pituffik,Puugutaa,Puulkuip,Qaanaq,Qaarsorsuaq,Qaarsorsuatsiaq,Qaasuitsup,Qaersut,Qajartalik,Qallunaat,Qaneq,Qaqaarissorsuaq,Qaqit,Qaqortok,Qasigiannguit,Qasse,Qassimiut,Qeertartivaq,Qeertartivatsiaq,Qeqertaq,Qeqertarssdaq,Qeqertarsuaq,Qeqertasussuk,Qeqertarsuatsiaat,Qeqertat,Qeqqata,Qernertoq,Qernertunnguit,Qianarreq,Qilalugkiarfik,Qingagssat,Qingaq,Qoornuup,Qorlortorsuaq,Qullikorsuit,Qunnerit,Qutdleq,Ravnedalen,Ritenbenk,Rypedalen,Sarfannguit,Saarlia,Saarloq,Saatoq,Saatorsuaq,Saatup,Saattut,Sadeloe,Salleq,Salliaruseq,Sammeqqat,Sammisoq,Sanningassoq,Saqqaq,Saqqarlersuaq,Saqqarliit,Sarqaq,Sattiaatteq,Savissivik,Serfanguaq,Sermersooq,Sermersut,Sermilik,Sermiligaaq,Sermitsiaq,Simitakaja,Simiutaq,Singamaq,Siorapaluk,Sisimiut,Sisuarsuit,Skal,Skarvefjeld,Skjoldungen,Storoen,Sullorsuaq,Suunikajik,Sverdrup,Taartoq,Takiseeq,Talerua,Tarqo,Tasirliaq,Tasiusak,Tiilerilaaq,Timilersua,Timmiarmiut,Tingmjarmiut,Traill,Tukingassoq,Tuttorqortooq,Tuujuk,Tuttulissuup,Tussaaq,Uigordlit,Uigorlersuaq,Uilortussoq,Uiivaq,Ujuaakajiip,Ukkusissat,Umanat,Upernavik,Upernattivik,Upepnagssivik,Upernivik,Uttorsiutit,Uumannaq,Uummannaarsuk,Uunartoq,Uvkusigssat,Ymer"},{name:"Basque",i:20,min:4,max:11,d:"r",m:.1,b:"Abadio,Abaltzisketa,Abanto Zierbena,Aduna,Agurain,Aia,Aiara,Aizarnazabal,Ajangiz,Albiztur,Alegia,Alkiza,Alonsotegi,Altzaga,Altzo,Amezketa,Amorebieta,Amoroto,Amurrio,Andoain,Anoeta,Antzuola,Arakaldo,Arama,Aramaio,Arantzazu,Arbatzegi ,Areatza,Aretxabaleta,Arraia,Arrankudiaga,Arrasate,Arratzu,Arratzua,Arrieta,Arrigorriaga,Artea,Artzentales,Artziniega,Asparrena,Asteasu,Astigarraga,Ataun,Atxondo,Aulesti,Azkoitia,Azpeitia,Bakio,Baliarrain,Balmaseda,Barakaldo,Barrika,Barrundia,Basauri,Bastida,Beasain,Bedia,Beizama,Belauntza,Berango,Berantevilla,Berastegi,Bergara,Bermeo,Bernedo,Berriatua,Berriz,Berrobi,Bidania,Bilar,Bilbao,Burgelu,Busturia,Deba,Derio,Dima,Donemiliaga,Donostia,Dulantzi,Durango,Ea,Eibar,Elantxobe,Elduain,Elgeta,Elgoibar,Elorrio,Erandio,Ereno,Ermua,Errenteria,Errezil,Erribera Beitia,Erriberagoitia,Errigoiti,Eskoriatza,Eskuernaga,Etxebarri,Etxebarria,Ezkio,Fika,Forua,Fruiz,Gabiria,Gaintza,Galdakao,Galdames,Gamiz,Garai,Gasteiz,Gatika,Gatzaga,Gaubea,Gauna,Gautegiz Arteaga,Gaztelu,Gernika,Gerrikaitz,Getaria,Getxo,Gizaburuaga,Goiatz,Gordexola,Gorliz,Harana,Hernani,Hernialde,Hondarribia,Ibarra,Ibarrangelu,Idiazabal,Iekora,Igorre,Ikaztegieta,Iruna Oka,Irun,Irura,Iruraiz,Ispaster,Itsaso,Itsasondo,Iurreta,Izurtza,Jatabe,Kanpezu,Karrantza Harana,Kortezubi,Kripan,Kuartango,Lanestosa,Lantziego,Larrabetzu,Larraul,Lasarte,Laudio,Laukiz,Lazkao,Leaburu,Legazpi,Legorreta,Legutio,Leintz,Leioa,Lekeitio,Lemoa,Lemoiz,Leza,Lezama,Lezo,Lizartza,Loiu,Lumo,Manaria,Maeztu,Mallabia,Markina,Maruri,Manueta,Menaka,Mendaro,Mendata,Mendexa,Moreda Araba,Morga,Mundaka,Mungia,Munitibar,Murueta,Muskiz,Mutiloa,Mutriku,Muxika,Nabarniz,Onati,Oiartzun,Oion,Okondo,Olaberria,Ondarroa,Ordizia,Orendain,Orexa,Oria,Orio,Ormaiztegi,Orozko,Ortuella,Otxandio,Pasaia,Plentzia,Portugalete,Samaniego,Santurtzi,Segura,Sestao,Sondika,Sopela,Sopuerta,Soraluze,Sukarrieta,Tolosa,Trapagaran,Turtzioz,Ubarrundia,Ubide,Ugao,Urdua,Urduliz,Urizaharra,Urkabustaiz,Urnieta,Urretxu,Usurbil,Xemein,Zaia,Zaldibar,Zaldibia,Zalduondo,Zambrana,Zamudio,Zaratamo,Zarautz,Zeanuri,Zeberio,Zegama,Zerain,Zestoa,Zierbena,Zigoitia,Ziortza,Zizurkil,Zuia,Zumaia,Zumarraga"},{name:"Nigerian",i:21,min:4,max:10,d:"",m:.3,b:"Abadogo,Abafon,Abdu,Acharu,Adaba,Adealesu,Adeto,Adyongo,Afaga,Afamju,Afuje,Agbelagba,Agigbigi,Agogoke,Ahute,Aiyelaboro,Ajebe,Ajola,Akarekwu,Akessan,Akunuba,Alawode,Alkaijji,Amangam,Amaoji,Amgbaye,Amtasa,Amunigun,Anase,Aniho,Animahun,Antul,Anyoko,Apekaa,Arapagi,Asamagidi,Asande,Ataibang,Awgbagba,Awhum,Awodu,Babanana,Babateduwa,Bagu,Bakura,Bandakwai,Bangdi,Barbo,Barkeje,Basa,Basabra,Basansagawa,Bieleshin,Bilikani,Birnindodo,Braidu,Bulakawa,Buriburi,Burisidna,Busum,Bwoi,Cainnan,Chakum,Charati,Chondugh,Dabibikiri,Dagwarga,Dallok,Danalili,Dandala,Darpi,Dhayaki,Dokatofa,Doma,Dozere,Duci,Dugan,Ebelibri,Efem,Efoi,Egudu,Egundugbo,Ekoku,Ekpe,Ekwere,Erhua,Eteu,Etikagbene,Ewhoeviri,Ewhotie,Ezemaowa,Fatima,Gadege,Galakura,Galea,Gamai,Gamen,Ganjin,Gantetudu,Garangamawa,Garema,Gargar,Gari,Garinbode,Garkuwa,Garu Kime,Gazabu,Gbure,Gerti,Gidan,Giringwe,Gitabaremu,Giyagiri,Giyawa,Gmawa,Golakochi,Golumba,Guchi,Gudugu,Gunji,Gusa,Gwambula,Gwamgwam,Gwodoti,Hayinlere,Hayinmaialewa,Hirishi,Hombo,Ibefum,Iberekodo,Ibodeipa,Icharge,Ideoro,Idofin,Idofinoka,Idya,Iganmeji,Igbetar,Igbogo,Ijoko,Ijuwa,Ikawga,Ikekogbe,Ikhin,Ikoro,Ikotefe,Ikotokpora,Ikpakidout,Ikpeoniong,Ilofa,Imuogo,Inyeneke,Iorsugh,Ipawo,Ipinlerere,Isicha,Itakpa,Itoki,Iyedeame,Jameri,Jangi,Jara,Jare,Jataudakum,Jaurogomki,Jepel,Jibam,Jirgu,Jirkange,Kafinmalama,Kamkem,Katab,Katanga,Katinda,Katirije,Kaurakimba,Keffinshanu,Kellumiri,Kiagbodor,Kibiare,Kingking,Kirbutu,Kita,Kogbo,Kogogo,Kopje,Koriga,Koroko,Korokorosei,Kotoku,Kuata,Kujum,Kukau,Kunboon,Kuonubogbene,Kurawe,Kushinahu,Kwaramakeri,Ladimeji,Lafiaro,Lahaga,Laindebajanle,Laindegoro,Lajere,Lakati,Ligeri,Litenswa,Lokobimagaji,Lusabe,Maba,Madarzai,Magoi,Maialewa,Maianita,Maijuja,Mairakuni,Maleh,Malikansaa,Mallamkola,Mallammaduri,Marmara,Masagu,Masoma,Mata,Matankali,Mbalare,Megoyo,Meku,Miama,Mige,Mkporagwu,Modi,Molafa,Mshi,Msugh,Muduvu,Murnachehu,Namnai,Nanumawa,Nasudu,Ndagawo,Ndamanma,Ndiebeleagu,Ndiwulunbe,Ndonutim,Ngaruwa,Ngbande,Nguengu,Nto Ekpe,Nubudi,Nyajo,Nyido,Nyior,Obafor,Obazuwa,Odajie,Odiama,Ofunatam,Ogali,Ogan,Ogbaga,Ogbahu,Ogultu,Ogunbunmi,Ogunmakin,Ojaota,Ojirami,Ojopode,Okehin,Olugunna,Omotunde,Onipede,Onisopi,Onma,Orhere,Orya,Oshotan,Otukwang,Otunade,Pepegbene,Poros,Rafin,Rampa,Rimi,Rinjim,Robertkiri,Rugan,Rumbukawa,Sabiu,Sabon,Sabongari,Sai,Salmatappare,Sangabama,Sarabe,Seboregetore,Seibiri,Sendowa,Shafar,Shagwa,Shata,Shefunda,Shengu,Sokoron,Sunnayu,Taberlma,Tafoki,Takula,Talontan,Taraku,Tarhemba,Tayu,Ter,Timtim,Timyam,Tindirke,Tirkalou,Tokunbo,Tonga,Torlwam,Tseakaadza,Tseanongo,Tseavungu,Tsebeeve,Tsekov,Tsepaegh,Tuba,Tumbo,Tungalombo,Tungamasu,Tunganrati,Tunganyakwe,Tungenzuri,Ubimimi,Uhkirhi,Umoru,Umuabai,Umuaja,Umuajuju,Umuimo,Umuojala,Unchida,Ungua,Unguwar,Unongo,Usha,Ute,Utongbo,Vembera,Vorokotok,Wachin,Walebaga,Wurawura,Wuro,Yanbashi,Yanmedi,Yenaka,Yoku,Zamangera,Zarunkwari,Zilumo,Zulika"},{name:"Celtic",i:22,min:4,max:12,d:"nld",m:0,b:"Aberaman,Aberangell,Aberarth,Aberavon,Aberbanc,Aberbargoed,Aberbeeg,Abercanaid,Abercarn,Abercastle,Abercegir,Abercraf,Abercregan,Abercych,Abercynon,Aberdare,Aberdaron,Aberdaugleddau,Aberdeen,Aberdulais,Aberdyfi,Aberedw,Abereiddy,Abererch,Abereron,Aberfan,Aberffraw,Aberffrwd,Abergavenny,Abergele,Aberglasslyn,Abergorlech,Abergwaun,Abergwesyn,Abergwili,Abergwynfi,Abergwyngregyn,Abergynolwyn,Aberhafesp,Aberhonddu,Aberkenfig,Aberllefenni,Abermain,Abermaw,Abermorddu,Abermule,Abernant,Aberpennar,Aberporth,Aberriw,Abersoch,Abersychan,Abertawe,Aberteifi,Aberthin,Abertillery,Abertridwr,Aberystwyth,Achininver,Afonhafren,Alisaha,Antinbhearmor,Ardenna,Attacon,Beira,Bhrura,Boioduro,Bona,Boudobriga,Bravon,Brigant,Briganta,Briva,Cambodunum,Cambra,Caracta,Catumagos,Centobriga,Ceredigion,Chalain,Dinn,Diwa,Dubingen,Duro,Ebora,Ebruac,Eburodunum,Eccles,Eighe,Eireann,Ferkunos,Genua,Ghrainnse,Inbhear,Inbhir,Inbhirair,Innerleithen,Innerleven,Innerwick,Inver,Inveraldie,Inverallan,Inveralmond,Inveramsay,Inveran,Inveraray,Inverarnan,Inverbervie,Inverclyde,Inverell,Inveresk,Inverfarigaig,Invergarry,Invergordon,Invergowrie,Inverhaddon,Inverkeilor,Inverkeithing,Inverkeithney,Inverkip,Inverleigh,Inverleith,Inverloch,Inverlochlarig,Inverlochy,Invermay,Invermoriston,Inverness,Inveroran,Invershin,Inversnaid,Invertrossachs,Inverugie,Inveruglas,Inverurie,Kilninver,Kirkcaldy,Kirkintilloch,Krake,Latense,Leming,Lindomagos,Llanaber,Lochinver,Lugduno,Magoduro,Monmouthshire,Narann,Novioduno,Nowijonago,Octoduron,Penning,Pheofharain,Ricomago,Rossinver,Salodurum,Seguia,Sentica,Theorsa,Uige,Vitodurum,Windobona"},{name:"Mesopotamian",i:23,min:4,max:9,d:"srpl",m:.1,b:"Adab,Akkad,Akshak,Amnanum,Arbid,Arpachiyah,Arrapha,Assur,Babilim,Badtibira,Balawat,Barsip,Borsippa,Carchemish,Chagar Bazar,Chuera,Ctesiphon ,Der,Dilbat,Diniktum,Doura,Durkurigalzu,Ekallatum,Emar,Erbil,Eridu,Eshnunn,Fakhariya ,Gawra,Girsu,Hadatu,Hamoukar,Haradum,Harran,Hatra,Idu,Irisagrig,Isin,Jemdet,Kahat,Kartukulti,Khaiber,Kish ,Kisurra,Kuara,Kutha,Lagash,Larsa ,Leilan,Marad,Mardaman,Mari,Mashkan,Mumbaqat ,Nabada,Nagar,Nerebtum,Nimrud,Nineveh,Nippur,Nuzi,Qalatjarmo,Qatara,Rawda,Seleucia,Shaduppum,Shanidar,Sharrukin,Shemshara,Shibaniba,Shuruppak,Sippar,Tarbisu,Tellagrab,Tellessawwan,Tellessweyhat,Tellhassuna,Telltaya,Telul,Terqa,Thalathat,Tutub,Ubaid ,Umma,Ur,Urfa,Urkesh,Uruk,Urum,Zabalam,Zenobia"},{name:"Iranian",i:24,min:5,max:11,d:"",m:.1,b:"Abali,Abrisham,Absard,Abuzeydabad,Afus,Alavicheh,Alikosh,Amol,Anarak,Anbar,Andisheh,Anshan,Aran,Ardabil,Arderica,Ardestan,Arjomand,Asgaran,Asgharabad,Ashian,Awan,Babajan,Badrud,Bafran,Baghestan,Baghshad,Bahadoran,Baharan Shahr,Baharestan,Bakun,Bam,Baqershahr,Barzok,Bastam,Behistun,Bitistar,Bumahen,Bushehr,Chadegan,Chahardangeh,Chamgardan,Chermahin,Choghabonut,Chugan,Damaneh,Damavand,Darabgard,Daran,Dastgerd,Dehaq,Dehaqan,Dezful,Dizicheh,Dorcheh,Dowlatabad,Duruntash,Ecbatana,Eslamshahr,Estakhr,Ezhiyeh,Falavarjan,Farrokhi,Fasham,Ferdowsieh,Fereydunshahr,Ferunabad,Firuzkuh,Fuladshahr,Ganjdareh,Ganzak,Gaz,Geoy,Godin,Goldasht,Golestan,Golpayegan,Golshahr,Golshan,Gorgab,Guged,Habibabad,Hafshejan,Hajjifiruz,Hana,Harand,Hasanabad,Hasanlu,Hashtgerd,Hecatompylos,Hormirzad,Imanshahr,Isfahan,Jandaq,Javadabad,Jiroft,Jowsheqan ,Jowzdan,Kabnak,Kahriz Sang,Kahrizak,Kangavar,Karaj,Karkevand,Kashan,Kelishad,Kermanshah,Khaledabad,Khansar,Khorramabad,Khur,Khvorzuq,Kilan,Komeh,Komeshcheh,Konar,Kuhpayeh,Kul,Kushk,Lavasan,Laybid,Liyan,Lyan,Mahabad,Mahallat,Majlesi,Malard,Manzariyeh,Marlik,Meshkat,Meymeh,Miandasht,Mish,Mobarakeh,Nahavand,Nain,Najafabad,Naqshe,Narezzash,Nasimshahr,Nasirshahr,Nasrabad,Natanz,Neyasar,Nikabad,Nimvar,Nushabad,Pakdasht,Parand,Pardis,Parsa,Pasargadai,Patigrabana,Pir Bakran,Pishva,Qahderijan,Qahjaverestan,Qamsar,Qarchak,Qods,Rabat,Ray-shahr,Rezvanshahr,Rhages,Robat Karim,Rozveh,Rudehen,Sabashahr,Safadasht,Sagzi,Salehieh,Sandal,Sarvestan,Sedeh,Sefidshahr,Semirom,Semnan,Shadpurabad,Shah,Shahdad,Shahedshahr,Shahin,Shahpour,Shahr,Shahreza,Shahriar,Sharifabad,Shemshak,Shiraz,Shushan,Shushtar,Sialk,Sin,Sukhteh,Tabas,Tabriz,Takhte,Talkhuncheh,Talli,Tarq,Temukan,Tepe,Tiran,Tudeshk,Tureng,Urmia,Vahidieh,Vahrkana,Vanak,Varamin,Varnamkhast,Varzaneh,Vazvan,Yahya,Yarim,Yasuj,Zarrin Shahr,Zavareh,Zayandeh,Zazeran,Ziar,Zibashahr,Zranka"},{name:"Hawaiian",i:25,min:5,max:10,d:"auo",m:1,b:"Aapueo,Ahoa,Ahuakaio,Ahuakamalii,Ahuakeio,Ahupau,Aki,Alaakua,Alae,Alaeloa,Alaenui,Alamihi,Aleamai,Alena,Alio,Aupokopoko,Auwahi,Hahakea,Haiku,Halakaa,Halehaku,Halehana,Halemano,Haleu,Haliimaile,Hamakuapoko,Hamoa,Hanakaoo,Hanaulu,Hanawana,Hanehoi,Haneoo,Haou,Hikiaupea,Hoalua,Hokuula,Honohina,Honokahua,Honokala,Honokalani,Honokeana,Honokohau,Honokowai,Honolua,Honolulu,Honolulunui,Honomaele,Honomanu,Hononana,Honopou,Hoolawa,Hopenui,Hualele,Huelo,Hulaia,Ihuula,Ilikahi,Kaalaea,Kaalelehinale,Kaapahu,Kaehoeho,Kaeleku,Kaeo,Kahakuloa,Kahalawe,Kahalawe,Kahalehili,Kahana,Kahilo,Kahuai,Kaiaula,Kailihiakoko,Kailua,Kainehe,Kakalahale,Kakanoni,Kakio,Kakiweka,Kalena,Kalenanui,Kaleoaihe,Kalepa,Kaliae,Kalialinui,Kalihi,Kalihi,Kalihi,Kalimaohe,Kaloi,Kamani,Kamaole,Kamehame,Kanahena,Kanaio,Kaniaula,Kaonoulu,Kaopa,Kapaloa,Kapaula,Kapewakua,Kapohue,Kapuaikini,Kapunakea,Kapuuomahuka,Kauau,Kauaula,Kaukuhalahala,Kaulalo,Kaulanamoa,Kauluohana,Kaumahalua,Kaumakani,Kaumanu,Kaunauhane,Kaunuahane,Kaupakulua,Kawaipapa,Kawaloa,Kawaloa,Kawalua,Kawela,Keaa,Keaalii,Keaaula,Keahua,Keahuapono,Keakuapauaela,Kealahou,Keanae,Keauhou,Kekuapawela,Kelawea,Keokea,Keopuka,Kepio,Kihapuhala,Kikoo,Kilolani,Kipapa,Koakupuna,Koali,Koananai,Koheo,Kolea,Kolokolo,Kooka,Kopili,Kou,Kualapa,Kuhiwa,Kuholilea,Kuhua,Kuia,Kuiaha,Kuikui,Kukoae,Kukohia,Kukuiaeo,Kukuioolu,Kukuipuka,Kukuiula,Kulahuhu,Kumunui,Lapakea,Lapalapaiki,Lapueo,Launiupoko,Loiloa,Lole,Lualailua,Maalo,Mahinahina,Mahulua,Maiana,Mailepai,Makaakini,Makaalae,Makaehu,Makaiwa,Makaliua,Makapipi,Makapuu,Makawao,Makila,Mala,Maluaka,Mamalu,Manawaiapiki,Manawainui,Maulili,Mehamenui,Miana,Mikimiki,Moalii,Moanui,Mohopili,Mohopilo,Mokae,Mokuia,Mokupapa,Mooiki,Mooloa,Moomuku,Muolea,Nahuakamalii,Nailiilipoko,Nakaaha,Nakalepo,Nakaohu,Nakapehu,Nakula,Napili,Niniau,Niumalu,Nuu,Ohia,Oloewa,Olowalu,Omaopio,Onau,Onouli,Opaeula,Opana,Opikoula,Paakea,Paeahu,Paehala,Paeohi,Pahoa,Paia,Pakakia,Pakala,Palauea,Palemo,Panaewa,Paniau,Papaaea,Papaanui,Papaauhau,Papahawahawa,Papaka,Papauluana,Pauku,Paunau,Pauwalu,Pauwela,Peahi,Piapia,Pohakanele,Pohoula,Polaiki,Polanui,Polapola,Polua,Poopoo,Popoiwi,Popoloa,Poponui,Poupouwela,Puaa,Puaaluu,Puahoowali,Puakea,Puako,Pualaea,Puehuehu,Puekahi,Pueokauiki,Pukaauhuhu,Pukalani,Pukuilua,Pulehu,Pulehuiki,Pulehunui,Punaluu,Puolua,Puou,Puuhaehae,Puuhaoa,Puuiki,Puuki,Puukohola,Puulani,Puumaneoneo,Puunau,Puunoa,Puuomaiai,Puuomaile,Uaoa,Uhao,Ukumehame,Ulaino,Ulumalu,Wahikuli,Waiahole,Waiakoa,Waianae,Waianu,Waiawa,Waiehu,Waieli,Waihee,Waikapu,Wailamoa,Wailaulau,Wailua,Wailuku,Wainee,Waiohole,Waiohonu,Waiohue,Waiohuli,Waiokama,Waiokila,Waiopai,Waiopua,Waipao,Waipio,Waipioiki,Waipionui,Waipouli,Wakiu,Wananalua"},{name:"Karnataka",i:26,min:5,max:11,d:"tnl",m:0,b:"Adityapatna,Adyar,Afzalpur,Aland,Alnavar,Alur,Ambikanagara,Anekal,Ankola,Annigeri,Arkalgud,Arsikere,Athni,Aurad,Badami,Bagalkot,Bagepalli,Bail,Bajpe,Bangalore,Bangarapet,Bankapura,Bannur,Bantval,Basavakalyan,Basavana,Belgaum,Beltangadi,Belur,Bhadravati,Bhalki,Bhatkal,Bhimarayanagudi,Bidar,Bijapur,Bilgi,Birur,Bommasandra,Byadgi,Challakere,Chamarajanagar,Channagiri,Channapatna,Channarayapatna,Chik,Chikmagalur,Chiknayakanhalli,Chikodi,Chincholi,Chintamani,Chitapur,Chitgoppa,Chitradurga,Dandeli,Dargajogihalli,Devadurga,Devanahalli,Dod,Donimalai,Gadag,Gajendragarh,Gangawati,Gauribidanur,Gokak,Gonikoppal,Gubbi,Gudibanda,Gulbarga,Guledgudda,Gundlupet,Gurmatkal,Haliyal,Hangal,Harapanahalli,Harihar,Hassan,Hatti,Haveri,Hebbagodi,Heggadadevankote,Hirekerur,Holalkere,Hole,Homnabad,Honavar,Honnali,Hoovina,Hosakote,Hosanagara,Hosdurga,Hospet,Hubli,Hukeri,Hungund,Hunsur,Ilkal,Indi,Jagalur,Jamkhandi,Jevargi,Jog,Kadigenahalli,Kadur,Kalghatgi,Kamalapuram,Kampli,Kanakapura,Karkal,Karwar,Khanapur,Kodiyal,Kolar,Kollegal,Konnur,Koppa,Koppal,Koratagere,Kotturu,Krishnarajanagara,Krishnarajasagara,Krishnarajpet,Kudchi,Kudligi,Kudremukh,Kumta,Kundapura,Kundgol,Kunigal,Kurgunta,Kushalnagar,Kushtagi,Lakshmeshwar,Lingsugur,Londa,Maddur,Madhugiri,Madikeri,Mahalingpur,Malavalli,Mallar,Malur,Mandya,Mangalore,Manvi,Molakalmuru,Mudalgi,Mudbidri,Muddebihal,Mudgal,Mudhol,Mudigere,Mulbagal,Mulgund,Mulki,Mulur,Mundargi,Mundgod,Munirabad,Mysore,Nagamangala,Nanjangud,Narasimharajapura,Naregal,Nargund,Navalgund,Nipani,Pandavapura,Pavagada,Piriyapatna,Pudu,Puttur,Rabkavi,Raichur,Ramanagaram,Ramdurg,Ranibennur,Raybag,Robertson,Ron,Sadalgi,Sagar,Sakleshpur,Saligram,Sandur,Sankeshwar,Saundatti,Savanur,Sedam,Shahabad,Shahpur,Shaktinagar,Shiggaon,Shikarpur,Shirhatti,Shorapur,Shrirangapattana,Siddapur,Sidlaghatta,Sindgi,Sindhnur,Sira,Siralkoppa,Sirsi,Siruguppa,Somvarpet,Sorab,Sringeri,Srinivaspur,Sulya,Talikota,Tarikere,Tekkalakote,Terdal,Thumbe,Tiptur,Tirthahalli,Tirumakudal,Tumkur,Turuvekere,Udupi,Vijayapura,Wadi,Yadgir,Yelandur,Yelbarga,Yellapur,Yenagudde"},{name:"Quechua",i:27,min:6,max:12,d:"l",m:0,b:"Altomisayoq,Ancash,Andahuaylas,Apachekta,Apachita,Apu\xA0,Apurimac,Arequipa,Atahuallpa,Atawalpa,Atico,Ayacucho,Ayllu,Cajamarca,Carhuac,Carhuacatac,Cashan,Caullaraju,Caxamalca,Cayesh,Chacchapunta,Chacraraju,Champara,Chanchan,Chekiacraju,Chinchey,Chontah,Chopicalqui,Chucuito,Chuito,Chullo,Chumpi,Chuncho,Chuquiapo,Churup,Cochapata,Cojup,Collota,Conococha,Copa,Corihuayrachina,Cusichaca,Despacho,Haika,Hanpiq,Hatun,Haywarisqa,Huaca,Hualcan,Huamanga,Huamashraju,Huancarhuas,Huandoy,Huantsan,Huarmihuanusca,Huascaran,Huaylas,Huayllabamba,Huichajanca,Huinayhuayna,Huinioch,Illiasca,Intipunku,Ishinca,Jahuacocha,Jirishanca,Juli,Jurau,Kakananpunta,Kamasqa,Karpay,Kausay,Khuya\xA0,Kuelap,Llaca,Llactapata,Llanganuco,Llaqta,Llupachayoc,Machu,Mallku,Matarraju,Mikhuy,Milluacocha,Munay,Ocshapalca,Ollantaytambo,Pacamayo,Paccharaju,Pachacamac,Pachakamaq,Pachakuteq,Pachakuti,Pachamama\xA0\xA0,Paititi,Pajaten,Palcaraju,Pampa,Panaka,Paqarina,Paqo,Parap,Paria,Patallacta,Phuyupatamarca,Pisac,Pongos,Pucahirca,Pucaranra,Puscanturpa,Putaca,Qawaq\xA0,Qayqa,Qochamoqo,Qollana,Qorihuayrachina,Qorimoqo,Quenuaracra,Queshque,Quillcayhuanca,Quillya,Quitaracsa,Quitaraju,Qusqu,Rajucolta,Rajutakanan,Rajutuna,Ranrahirca,Ranrapalca,Raria,Rasac,Rimarima,Riobamba,Runkuracay,Rurec,Sacsa,Saiwa,Sarapo,Sayacmarca,Sinakara,TamboColorado,Tamboccocha,Taripaypacha,Taulliraju,Tawantinsuyu,Taytanchis,Tiwanaku,Tocllaraju,Tsacra,Tuco,Tullparaju,Tumbes,Ulta,Uruashraju,Vallunaraju,Vilcabamba,Wacho\xA0,Wankawillka,Wayra,Yachay,Yahuarraju,Yanamarey,Yanesha,Yerupaja"},{name:"Swahili",i:28,min:4,max:9,d:"",m:0,b:"Abim,Adjumani,Alebtong,Amolatar,Amuria,Amuru,Apac,Arua,Arusha,Babati,Baragoi,Bombo,Budaka,Bugembe,Bugiri,Buikwe,Bukedea,Bukoba,Bukomansimbi,Bukungu,Buliisa,Bundibugyo,Bungoma,Busembatya,Bushenyi,Busia,Busia,Busolwe,Butaleja,Butambala,Butere,Buwenge,Buyende,Dadaab,Dodoma,Dokolo,Eldoret,Elegu,Emali,Embu,Entebbe,Garissa,Gede,Gulu,Handeni,Hima,Hoima,Hola,Ibanda,Iganga,Iringa,Isingiro,Isiolo,Jinja,Kaabong,Kabale,Kaberamaido,Kabuyanda,Kabwohe,Kagadi,Kahama,Kajiado,Kakamega,Kakinga,Kakira,Kakiri,Kakuma,Kalangala,Kaliro,Kalisizo,Kalongo,Kalungu,Kampala,Kamuli,Kamwenge,Kanoni,Kanungu,Kapchorwa,Kapenguria,Kasese,Kasulu,Katakwi,Kayunga,Kericho,Keroka,Kiambu,Kibaale,Kibaha,Kibingo,Kiboga,Kibwezi,Kigoma,Kihiihi,Kilifi,Kira,Kiruhura,Kiryandongo,Kisii,Kisoro,Kisumu,Kitale,Kitgum,Kitui,Koboko,Korogwe,Kotido,Kumi,Kyazanga,Kyegegwa,Kyenjojo,Kyotera,Lamu,Langata,Lindi,Lodwar,Lokichoggio,Londiani,Loyangalani,Lugazi,Lukaya,Luweero,Lwakhakha,Lwengo,Lyantonde,Machakos,Mafinga,Makambako,Makindu,Malaba,Malindi,Manafwa,Mandera,Maralal,Marsabit,Masaka,Masindi,MasindiPort,Masulita,Matugga,Mayuge,Mbale,Mbarara,Mbeya,Meru,Mitooma,Mityana,Mombasa,Morogoro,Moroto,Moshi,Moyale,Moyo,Mpanda,Mpigi,Mpondwe,Mtwara,Mubende,Mukono,Mumias,Muranga,Musoma,Mutomo,Mutukula,Mwanza,Nagongera,Nairobi,Naivasha,Nakapiripirit,Nakaseke,Nakasongola,Nakuru,Namanga,Namayingo,Namutumba,Nansana,Nanyuki,Narok,Naromoru,Nebbi,Ngora,Njeru,Njombe,Nkokonjeru,Ntungamo,Nyahururu,Nyeri,Oyam,Pader,Paidha,Pakwach,Pallisa,Rakai,Ruiru,Rukungiri,Rwimi,Sanga,Sembabule,Shimoni,Shinyanga,Singida,Sironko,Songea,Soroti,Ssabagabo,Sumbawanga,Tabora,Takaungu,Tanga,Thika,Tororo,Tunduma,Vihiga,Voi,Wajir,Wakiso,Watamu,Webuye,Wobulenzi,Wote,Wundanyi,Yumbe,Zanzibar"},{name:"Vietnamese",i:29,min:3,max:12,d:"",m:1,b:"An Khe,An Nhon,Ayun Pa,Ba Don,Ba Ria,Bac Giang,Bac Kan,Bac Lieu,Bac Ninh,Bao Loc,Ben Cat,Ben Tre,Bien Hoa,Bim Son,Binh Long,Binh Minh,Buon Ho,Buon Ma Thuot,Ca Mau,Cai Lay,Cam Pha,Cam Ranh,Can Tho,Cao Bang,Cao Lanh,Chau Doc,Chi Linh,Cua Lo,Da Lat,Da Nang,Di An,Dien Ban,Dien Bien Phu,Dong Ha,Dong Hoi,Dong Trieu,Duyen Hai,Gia Nghia,Gia Rai,Go Cong,Ha Giang,Ha Long,Ha Noi,Ha Tinh,Hai Duong,Hai Phong,Hoa Binh,Hoang Mai,Hoi An,Hong Linh,Hong Ngu,Hue,Hung Yen,Huong Thuy,Huong Tra,Kien Tuong,Kon Tum,Ky Anh,La Gi,Lai Chau,Lang Son,Lao Cai,Long Khanh,Long My,Long Xuyen,Mong Cai,Muong Lay,My Hao,My Tho,Nam Dinh,Nga Bay,Nga Nam,Nghia Lo,Nha Trang,Ninh Binh,Ninh Hoa,Phan Rang Thap Cham,Phan Thiet,Pho Yen,Phu Ly,Phu My,Phu Tho,Phuoc Long,Pleiku,Quang Ngai,Quang Tri,Quang Yen,Quy Nhon,Rach Gia,Sa Dec,Sam Son,Soc Trang,Son La,Son Tay,Song Cau,Song Cong,Tam Diep,Tam Ky,Tan An,Tan Chau,Tan Uyen,Tay Ninh,Thai Binh,Thai Hoa,Thai Nguyen,Thanh Hoa,Thu Dau Mot,Thuan An,Tra Vinh,Tu Son,Tuy Hoa,Tuyen Quang,Uong Bi,Vi Thanh,Viet Tri,Vinh,Vinh Chau,Vinh Long,Vinh Yen,Vung Tau,Yen Bai"},{name:"Cantonese",i:30,min:5,max:11,d:"",m:0,b:"Chaiwan,Chekham,Cheungshawan,Chingchung,Chinghoi,Chingsen,Chingshing,Chiunam,Chiuon,Chiuyeung,Chiyuen,Choihung,Chuehoi,Chuiman,Chungfa,Chungfu,Chungsan,Chunguktsuen,Dakhing,Daopo,Daumun,Dingwu,Dinpak,Donggun,Dongyuen,Duenchau,Fachau,Fado,Fanling,Fatgong,Fatshan,Fotan,Fuktien,Fumun,Funggong,Funghoi,Fungshun,Fungtei,Gamtin,Gochau,Goming,Gonghoi,Gongshing,Goyiu,Hanghau,Hangmei,Hashan,Hengfachuen,Hengon,Heungchau,Heunggong,Heungkiu,Hingning,Hohfuktong,Hoichue,Hoifung,Hoiping,Hokong,Hokshan,Homantin,Hotin,Hoyuen,Hunghom,Hungshuikiu,Jiuling,Kamping,Kamsheung,Kamwan,Kaulongtong,Keilun,Kinon,Kinsang,Kityeung,Kongmun,Kukgong,Kwaifong,Kwaihing,Kwongchau,Kwongling,Kwongming,Kwuntong,Laichikok,Laiking,Laiwan,Lamtei,Lamtin,Leitung,Leungking,Limkong,Linchau,Linnam,Linping,Linshan,Loding,Lokcheong,Lokfu,Lokmachau,Longchuen,Longgong,Longmun,Longping,Longwa,Longwu,Lowu,Luichau,Lukfung,Lukho,Lungmun,Macheung,Maliushui,Maonshan,Mauming,Maunam,Meifoo,Mingkum,Mogong,Mongkok,Muichau,Muigong,Muiyuen,Naiwai,Namcheong,Namhoi,Namhong,Namo,Namsha,Namshan,Nganwai,Ngchuen,Ngoumun,Ngwa,Nngautaukok,Onting,Pakwun,Paotoishan,Pingshan,Pingyuen,Poklo,Polam,Pongon,Poning,Potau,Puito,Punyue,Saiwanho,Saiyingpun,Samshing,Samshui,Samtsen,Samyuenlei,Sanfung,Sanhing,Sanhui,Sanwai,Sanwui,Seiwui,Shamshuipo,Shanmei,Shantau,Shatin,Shatinwai,Shaukeiwan,Shauking,Shekkipmei,Shekmun,Shekpai,Sheungshui,Shingkui,Shiuhing,Shundak,Shunyi,Shupinwai,Simshing,Siuhei,Siuhong,Siukwan,Siulun,Suikai,Taihing,Taikoo,Taipo,Taishuihang,Taiwai,Taiwo,Taiwohau,Tinhau,Tinho,Tinking,Tinshuiwai,Tiukengleng,Toishan,Tongfong,Tonglowan,Tsakyoochung,Tsamgong,Tsangshing,Tseungkwano,Tsihing,Tsimshatsui,Tsinggong,Tsingshantsuen,Tsingwun,Tsingyi,Tsingyuen,Tsiuchau,Tsuenshekshan,Tsuenwan,Tuenmun,Tungchung,Waichap,Waichau,Waidong,Wailoi,Waishing,Waiyeung,Wanchai,Wanfau,Wanon,Wanshing,Wingon,Wongchukhang,Wongpo,Wongtaisin,Woping,Wukaisha,Yano,Yaumatei,Yauoi,Yautong,Yenfa,Yeungchun,Yeungdong,Yeunggong,Yeungsai,Yeungshan,Yimtin,Yingdak,Yiuping,Yongshing,Yongyuen,Yuenlong,Yuenshing,Yuetsau,Yuknam,Yunping,Yuyuen"},{name:"Mongolian",i:31,min:5,max:12,d:"aou",m:.3,b:"Adaatsag,Airag,Alag Erdene,Altai,Altanshiree,Altantsogts,Arbulag,Baatsagaan,Batnorov,Batshireet,Battsengel,Bayan Adarga,Bayan Agt,Bayanbulag,Bayandalai,Bayandun,Bayangovi,Bayanjargalan,Bayankhongor,Bayankhutag,Bayanlig,Bayanmonkh,Bayannuur,Bayan Ondor,Bayan Ovoo,Bayantal,Bayantsagaan,Bayantumen,Bayan Uul,Bayanzurkh,Berkh,Biger,Binder,Bogd,Bombogor,Bor Ondor,Bugat,Bulgan,Buregkhangai,Burentogtokh,Buutsagaan,Buyant,Chandmani,Chandmani Ondor,Choibalsan,Chuluunkhoroot,Chuluut,Dadal,Dalanjargalan,Dalanzadgad,Darkhan,Darvi,Dashbalbar,Dashinchilen,Delger,Delgerekh,Delgerkhaan,Delgerkhangai,Delgertsogt,Deluun,Deren,Dorgon,Duut,Erdene,Erdenebulgan,Erdeneburen,Erdenedalai,Erdenemandal,Erdenetsogt,Galshar,Galt,Galuut,Govi Ugtaal,Gurvan,Gurvanbulag,Gurvansaikhan,Gurvanzagal,Ikhkhet,Ikh Tamir,Ikh Uul,Jargalan,Jargalant,Jargaltkhaan,Jinst,Khairkhan,Khalhgol,Khaliun,Khanbogd,Khangai,Khangal,Khankh,Khankhongor,Khashaat,Khatanbulag,Khatgal,Kherlen,Khishig Ondor,Khokh,Kholonbuir,Khongor,Khotont,Khovd,Khovsgol,Khuld,Khureemaral,Khurmen,Khutag Ondor,Luus,Mandakh,Mandal Ovoo,Mankhan,Manlai,Matad,Mogod,Monkhkhairkhan,Moron,Most,Myangad,Nogoonnuur,Nomgon,Norovlin,Noyon,Ogii,Olgii,Olziit,Omnodelger,Ondorkhaan,Ondorshil,Ondor Ulaan,Orgon,Orkhon,Rashaant,Renchinlkhumbe,Sagsai,Saikhan,Saikhandulaan,Saikhan Ovoo,Sainshand,Saintsagaan,Selenge,Sergelen,Sevrei,Sharga,Sharyngol,Shine Ider,Shinejinst,Shiveegovi,Sumber,Taishir,Tarialan,Tariat,Teshig,Togrog,Tolbo,Tomorbulag,Tonkhil,Tosontsengel,Tsagaandelger,Tsagaannuur,Tsagaan Ovoo,Tsagaan Uur,Tsakhir,Tseel,Tsengel,Tsenkher,Tsenkhermandal,Tsetseg,Tsetserleg,Tsogt,Tsogt Ovoo,Tsogttsetsii,Tunel,Tuvshruulekh,Ulaanbadrakh,Ulaankhus,Ulaan Uul,Uyench,Yesonbulag,Zag,Zamyn Uud,Zereg"},{name:"Human Generic",i:32,min:6,max:11,d:"peolst",m:0,b:"Grimegrove,Cliffshear,Eaglevein,Basinborn,Whalewich,Faypond,Pondshade,Earthfield,Dustwatch,Houndcall,Oakenbell,Wildwell,Direwallow,Springmire,Bayfrost,Fearwich,Ghostdale,Cursespell,Shadowvein,Freygrave,Freyshell,Tradewick,Grasswallow,Kilshell,Flatwall,Mosswind,Edgehaven,Newfalls,Flathand,Lostcairn,Grimeshore,Littleshade,Millstrand,Snowbay,Quickbell,Crystalrock,Snakewharf,Oldwall,Whitvalley,Stagport,Deadkeep,Claymond,Angelhand,Ebonhold,Shimmerrun,Honeywater,Gloomburn,Arrowburgh,Slyvein,Dawnforest,Dirtshield,Southbreak,Clayband,Oakenrun,Graypost,Deepcairn,Lagoonpass,Cavewharf,Thornhelm,Smoothwallow,Lightfront,Irongrave,Stonespell,Cavemeadow,Millbell,Shimmerwell,Eldermere,Roguehaven,Dogmeadow,Pondside,Springview,Embervault,Dryhost,Bouldermouth,Stormhand,Oakenfall,Clearguard,Lightvale,Freyshear,Flameguard,Bellcairn,Bridgeforest,Scorchwich,Mythgulch,Maplesummit,Mosshand,Iceholde,Knightlight,Dawnwater,Laststar,Westpoint,Goldbreach,Falsevale,Pinegarde,Shroudrock,Whitwharf,Autumnband,Oceanstar,Rosedale,Snowtown,Chillstrand,Saltmouth,Crystalsummit,Redband,Thorncairn,Beargarde,Pearlhaven,Lostward,Northpeak,Sandhill,Cliffgate,Sandminster,Cloudcrest,Mythshear,Dragonward,Coldholde,Knighttide,Boulderharbor,Faybarrow,Dawnpass,Pondtown,Timberside,Madfair,Crystalspire,Shademeadow,Dragonbreak,Castlecross,Dogwell,Caveport,Wildlight,Mudfront,Eldermere,Midholde,Ravenwall,Mosstide,Everborn,Lastmere,Dawncall,Autumnkeep,Oldwatch,Shimmerwood,Eldergate,Deerchill,Fallpoint,Silvergulch,Cavemire,Deerbrook,Pinepond,Ravenside,Thornyard,Scorchstall,Swiftwell,Roguereach,Cloudwood,Smoothtown,Kilhill,Ironhollow,Stillhall,Rustmore,Ragefair,Ghostward,Deadford,Smallmire,Barebreak,Westforest,Bonemouth,Evercoast,Sleekgulch,Neverfront,Lostshield,Icelight,Quickgulch,Brinepeak,Hollowstorm,Limeband,Basinmore,Steepmoor,Blackford,Stormtide,Wildyard,Wolfpass,Houndburn,Pondfalls,Pureshell,Silvercairn,Houndwallow,Dewmere,Fearpeak,Bellstall,Diredale,Crowgrove,Moongulf,Kilholde,Sungulf,Baremore,Bleakwatch,Farrun,Grimeshire,Roseborn,Heartford,Scorchpost,Cloudbay,Whitlight,Timberham,Cloudmouth,Curseminster,Basinfrost,Maplevein,Sungarde,Cloudstar,Bellport,Silkwich,Ragehall,Bellreach,Swampmaw,Snakemere,Highbourne,Goldyard,Lakemond,Shadeville,Mightmouth,Nevercrest,Pinemount,Claymouth,Rosereach,Oldreach,Brittlehelm,Heartfall,Bonegulch,Silkhollow,Crystalgulf,Mutewell,Flameside,Blackwatch,Greenwharf,Moonacre,Beachwick,Littleborough,Castlefair,Stoneguard,Nighthall,Cragbury,Swanwall,Littlehall,Mudford,Shadeforest,Mightglen,Millhand,Easthill,Amberglen,Nighthall,Cragbury,Swanwall,Littlehall,Mudford,Shadeforest,Mightglen,Millhand,Easthill,Amberglen,Smoothcliff,Lakecross,Quicklight,Eaglecall,Silentkeep,Dragonshear,Ebonfront,Oakenmeadow,Cliffshield,Stormhorn,Cavefell,Wildedenn,Earthgate,Brittlecall,Swangarde,Steamwallow,Demonfall,Sleethallow,Mossstar,Dragonhold,Smoothgrove,Sleetrun,Flamewell,Mistvault,Heartvault,Newborough,Deeppoint,Littlehold,Westshell,Caveminster,Swiftshade,Grimwood,Littlemire,Bridgefalls,Lastmere,Fayyard,Madham,Curseguard,Earthpass,Silkbrook,Winterview,Grimeborough,Dustcross,Dogcoast,Dirtstall,Oxlight,Pondstall,Sleetglen,Ghostpeak,Snowshield,Loststar,Chillwharf,Sleettide,Millgulch,Whiteshore,Sunmond,Moonwell,Grassdrift,Westmeadow,Crowvault,Everchill,Bearmire,Bronzegrasp,Oxbrook,Cursefield,Steammouth,Smoothham,Arrowdenn,Stillstrand,Mudwich"},{name:"Elven",i:33,min:6,max:12,d:"lenmsrg",m:0,b:"Adrindest,Aethel,Afranthemar,Aggar,Aiqua,Alari,Allanar,Allanbelle,Almalian,Alora,Alyanasari,Alyelona,Alyran,Amenalenora,Ammar,Amymabelle,Ancalen,AnhAlora,Anore,Anyndell,Arasari,Aren,Ashesari,Ashletheas,Ashmebel,Asrannore,Athelle,Aymlume,Baethei,Bel-Didhel,Belanore,Borethanil,Brinorion,Caelora,Chaggaust,Chaulssad,Chaundra,ChetarIthlin,Cyhmel,Cyla,Cyonore,Cyrangroth,Doladress,Dolarith,Dolasea,Dolonde,Dorthore,Dorwine,Draethe,Dranzan,Draugaust,Dreghei,Drelhei,Dryndlu,E'ana,E'ebel,Eahil,Edhil,Edraithion,Efho,Efranluma,Efvanore,Einyallond,Elathlume,Eld-Sinnocrin,Elddrinn,Elelthyr,Elheinn,Ellanalin,Ellena,Ellheserin,Ellnlin,Ellorthond,Elralara,Elstyr,Eltaesi,Elunore,Eman,EmneLenora,Emyel,Emyranserine,Enhethyr,Ennore,Entheas,Eriargond,Erranlenor,ErrarIthinn,Esari,Esath,Eserius,Eshsalin,Eshthalas,Esseavad,Esyana,EsyseAiqua,Evraland,Faellenor,Faladhell,Famelenora,Fethalas,Filranlean,Filsaqua,Formarion,Ferdor,Gafetheas,GafSerine,Gansari,Geliene,Gondorwin,Guallu,Haeth,Hanluna,Haulssad,Helatheas,Hellerien,Heloriath,Himlarien,Himliene,Hinnead,Hlaughei,Hlinas,Hloireenil,Hluihei,Hluitar,Hlurthei,Hlynead,Iaenarion,Ifrennoris,IllaAncalen,Illanathaes,Illfanora,Imlarlon,Imyfaluna,Imyse,Imyvelian,Inferius,Inhalon,Inllune,Inlurth,innsshe,Inransera,Iralserin,Irethtalos,Irholona,Ishal,Ishlashara,Isyenshara,Ithelion,Iymerius,Iaron,Iulil,Jaal,Jamkadi,Kaalume,Kaansera,Kalthalas,Karanthanil,Karnosea,Kasethyr,Keatheas,Kelsya,KethAiqua,Kmlon,Kyathlenor,Kyhasera,Lahetheas,Lammydr,Lefdorei,Lelhamelle,Lelon,Lenora,Lilean,Lindoress,Lindeenil,Lirillaquen,Litys,Llaughei,Llurthei,Lya,Lyenalon,Lyfa,Lylharion,Lylmhil,Lynathalas,Lir,Machei,Masenoris,Mathathlona,Mathethil,Mathntheas,Meethalas,Melelume,Menyamar,Menzithl,Minthyr,Mithlonde,Mornetheas,Mytha,Mythnserine,Mythsemelle,Mythsthas,Myvanas,Naahona,Nalore,NasadIlaurth,Nasin,Nathemar,Navethas,Neadar,Neanor,Neilon,Nelalon,Nellean,Nelnetaesi,Nfanor,Nilenathyr,Nionande,Nurtaleewe,Nylm,Nytenanas,Nythanlenor,Nythfelon,Nythodorei,Nytlenor,Nidiel,Noruiben,O'anlenora,O'lalona,Obeth,Ofaenathyr,Oflhone,Ollethlune,Ollmarion,Ollmnaes,Ollsmel,Olranlune,Olyaneas,Olynahil,Omanalon,Omyselon,Onelion,Onelond,Onylanor,Orlormel,Orlynn,Ormrion,Oshana,Oshmahona,Oshvamel,Raethei,Raineas,Rauguall,Rauthe,Rauthei,Reisera,Reslenora,Rrharrvhei,Ryanasera,Rymaserin,Sahnor,Saselune,Sel-Zedraazin,Selananor,Sellerion,Selmaluma,Serin,Serine,Shaeras,Shemnas,Shemserin,Sheosari,Sileltalos,Siriande,Siriathil,Sohona,Srannor,Sshanntyr,Sshaulssin,Sshaulu,Syholume,Sylharius,Sylranbel,Symdorei,Syranbel,Szoberr,Silon,Taesi,Thalas,Thalor,Thalore,Tharenlon,Tharlarast,Thelethlune,Thelhohil,Thelnora,Themar,Thene,Thilfalean,Thilnaenor,Thvethalas,Thylathlond,Tiregul,Tirion,Tlauven,Tlindhe,Ulal,Ullallanar,Ullmatalos,Ullve,Ulmetheas,Ulrenserine,Ulssin,Umnalin,Umye,Umyheserine,Unanneas,Unarith,Undraeth,Unysarion,Vel-Shonidor,Venas,Vinargothr,Waethe,Wasrion,Wlalean,Y'maqua,Yaeluma,Yeelume,Yele,Yethrion,Ymserine,Yueghed,Yuereth,Yuerran,Yuethin,Nandeedil,Olwen,Yridhremben"},{name:"Dark Elven",i:34,min:6,max:14,d:"nrslamg",m:.2,b:"Abaethaggar,Abburth,Afranthemar,Aharasplit,Aidanat,Ald'ruhn,Ashamanu,Ashesari,Ashletheas,Baerario,Baereghel,Baethei,Bahashae,Balmora,Bel-Didhel,Borethanil,Buiyrandyn,Caellagith,Caellathala,Caergroth,Caldras,Chaggar,Chaggaust,Channtar,Charrvhel'raugaust,Chaulssin,Chaundra,ChedNasad,ChetarIthlin,ChethRrhinn,Chymaer,Clarkarond,Cloibbra,Commoragh,Cyrangroth,Cilben,D'eldarc,Daedhrog,Dalkyn,Do'Urden,Doladress,Dolarith,Dolonde,Draethe,Dranzan,Dranzithl,Draugaust,Dreghei,Drelhei,Dryndlu,Dusklyngh,DyonG'ennivalz,Edraithion,Eld-Sinnocrin,Ellorthond,Enhethyr,Entheas,ErrarIthinn,Eryndlyn,Faladhell,Faneadar,Fethalas,Filranlean,Formarion,Ferdor,Gafetheas,Ghrond,Gilranel,Glamordis,Gnaarmok,Gnisis,Golothaer,Gondorwin,Guallidurth,Guallu,Gulshin,Haeth,Haggraef,Harganeth,Harkaldra,Haulssad,Haundrauth,Heloriath,Hlammachar,Hlaughei,Hloireenil,Hluitar,Inferius,innsshe,Ithilaughym,Iz'aiogith,Jaal,Jhachalkhyn,Kaerabrae,Karanthanil,Karondkar,Karsoluthiyl,Kellyth,Khuul,Lahetheas,Lidurth,Lindeenil,Lirillaquen,LithMy'athar,LlurthDreier,Lolth,Lothuial,Luihaulen'tar,Maeralyn,Maerimydra,Mathathlona,Mathethil,Mellodona,Menagith,Menegwen,Menerrendil,Menzithl,Menzoberranzan,Mila-Nipal,Mithryn,Molagmar,Mundor,Myvanas,Naggarond,NasadIlaurth,Nauthor,Navethas,Neadar,Nurtaleewe,Nidiel,Noruiben,O'lalona,Obeth,Ofaenathyr,Orlormel,Orlytlar,Pelagiad,Raethei,Raugaust,Rauguall,Rilauven,Rrharrvhei,Sadrith,Sel-Zedraazin,Seydaneen,Shaz'rir,Skaal,Sschindylryn,Shamath,Shamenz,Shanntur,Sshanntynlan,Sshanntyr,Shaulssin,SzithMorcane,Szithlin,Szobaeth,Sirdhemben,T'lindhet,Tebh'zhor,Telmere,Telnarquel,Tharlarast,Thylathlond,Tlaughe,Trizex,Tyrybblyn,Ugauth,Ughym,Ullmatalos,Ulmetheas,Ulrenserine,Uluitur,Undraeth,Undraurth,Undrek'Thoz,Ungethal,UstNatha,V'elddrinnsshar,Vaajha,Vel-Shonidor,Velddra,Velothi,Venead,Vhalth'vha,Vinargothr,Vojha,Waethe,Waethei,Xaalkis,Yakaridan,Yeelume,Yuethin,Yuethindrynn,Zirnakaynin,Nandeedil,olwen,Uhaelben,Uthaessien,Yridhremben"},{name:"Dwarven",i:35,min:4,max:11,d:"dk",m:0,b:"Addundad,Ahagzad,Ahazil,Akil,Akzizad,Anumush,Araddush,Arar,Arbhur,Badushund,Baragzig,Baragzund,Barakinb,Barakzig,Barakzinb,Barakzir,Baramunz,Barazinb,Barazir,Bilgabar,Bilgatharb,Bilgathaz,Bilgila,Bilnaragz,Bilnulbar,Bilnulbun,Bizaddum,Bizaddush,Bizanarg,Bizaram,Bizinbiz,Biziram,Bunaram,Bundinar,Bundushol,Bundushund,Bundushur,Buzaram,Buzundab,Buzundush,Gabaragz,Gabaram,Gabilgab,Gabilgath,Gabizir,Gabunal,Gabunul,Gabuzan,Gatharam,Gatharbhur,Gathizdum,Gathuragz,Gathuraz,Gila,Giledzir,Gilukkhath,Gilukkhel,Gunala,Gunargath,Gunargil,Gundumunz,Gundusharb,Gundushizd,Kharbharbiln,Kharbhatharb,Kharbhela,Kharbilgab,Kharbuzadd,Khatharbar,Khathizdin,Khathundush,Khazanar,Khazinbund,Khaziragz,Khaziraz,Khizdabun,Khizdusharbh,Khizdushath,Khizdushel,Khizdushur,Kholedzar,Khundabiln,Khundabuz,Khundinarg,Khundushel,Khuragzig,Khuramunz,Kibarak,Kibilnal,Kibizar,Kibunarg,Kibundin,Kibuzan,Kinbadab,Kinbaragz,Kinbarakz,Kinbaram,Kinbizah,Kinbuzar,Nala,Naledzar,Naledzig,Naledzinb,Naragzah,Naragzar,Naragzig,Narakzah,Narakzar,Naramunz,Narazar,Nargabad,Nargabar,Nargatharb,Nargila,Nargundum,Nargundush,Nargunul,Narukthar,Narukthel,Nula,Nulbadush,Nulbaram,Nulbilnarg,Nulbunal,Nulbundab,Nulbundin,Nulbundum,Nulbuzah,Nuledzah,Nuledzig,Nulukkhaz,Nulukkhund,Nulukkhur,Sharakinb,Sharakzar,Sharamunz,Sharbarukth,Shatharbhizd,Shatharbiz,Shathazah,Shathizdush,Shathola,Shaziragz,Shizdinar,Shizdushund,Sholukkharb,Shundinulb,Shundushund,Shurakzund,Shuramunz,Tumunzadd,Tumunzan,Tumunzar,Tumunzinb,Tumunzir,Ukthad,Ulbirad,Ulbirar,Ulunzar,Ulur,Umunzad,Undalar,Undukkhil,Undun,Undur,Unduzur,Unzar,Unzathun,Usharar,Zaddinarg,Zaddushur,Zaharbad,Zaharbhizd,Zarakib,Zarakzar,Zaramunz,Zarukthel,Zinbarukth,Zirakinb,Zirakzir,Ziramunz,Ziruktharbh,Zirukthur,Zundumunz"},{name:"Goblin",i:36,min:4,max:9,d:"eag",m:0,b:"Crild,Cielb,Srurd,Fruict,Xurx,Crekork,Strytzakt,Ialsirt,Gnoklig,Kleardeek,Gobbledak,Thelt,Swaxi,Ulm,Shaxi,Thult,Jasheafta,Kleabtong,Bhiagielt,Kuipuinx,Hiszils,Nilbog,Gneabs,Stiolx,Esz,Honk,Veekz,Vohniots,Bratliaq,Slehzit,Diervaq,Zriokots,Buyagh,Treaq,Phax,Ilm,Blus,Srefs,Biokvish,Gigganqi,Watvielx,Katmelt,Slofboif,gobbok,Klilm,Blix,Qosx,Fygsee,Moft,Asinx,Joimtoilm,Styrzangai,Prolkeh,Stioskurt,Mogg,Cel,Far,Rekx,Chalk,Paas,Brybsil,Utiarm,Eebligz,Iahzaarm,Stuikvact,Gobbrin,Ish,Suirx,Utha,Taxai,Onq,Stiaggaltia,Dobruing,Breshass,Cosvil,Traglila,Felhob,Hobgar,Preang,Sios,Wruilt,Chox,Pyreazzi,Glamzofs,Froihiofz,Givzieqee,Vreagaald,Bugbig,Kluirm,Ulb,Driord,Stroir,Croibieq,Bridvelb,Wrogdilk,Slukex,Ozbiard,Gagablin,Heszai,Kass,Chiafzia,Thresxea,Een,Oimzoishai,Enissee,Glernaahx,Qeerags,Phigheldai,Ziggek"},{name:"Orc",i:37,min:4,max:8,d:"gzrcu",m:0,b:"ModhOdod,BodRugniz,Rildral,Zalbrez,Bebugh,Grurro,Ibruzzed,Goccogmurd,CheganKhed,BedgezGraz,IkhUgnan,NoGolkon,Dhezza,Chuccuz,Dribor,Khezdrugh,Uzdriboz,Nolgazgredh,KrogvurOz,ZrucraBi,ErLigvug,OkhUggekh,Vrobrun,Raggird,Adgoz,Chugga,Ghagrocroz,Khuldrerradh,IrmekhBhor,KuzgrurdDedh,ZunBergrord,AdhKhorkol,Alzokh,Mubror,Bozdra,Brugroz,Nuzecro,Qidzodkakh,GharedKrin,OrkudhBhur,EkhKrerdrugh,KrarZurmurd,Nuccag,Rezegh,Lorgran,Grergran,Nadguggez,Mocculdrer,BrorkrilZrog,RurguzVig,CharRodkeg,UghBhelgag,Zulbriz,Rodrekh,Erbragh,Bhicrur,Arkugzo,Arrordri,MiccolBurd,OddighKrodh,UghVruron,VrughNardrer,Dhoddud,Murmad,Chuzar,Vrazin,Ridgozedh,Lazzogno,MughakhChil,VrolburNur,KrighBhurdin,GhadhDrurzan,Adran,Chazgro,Krorgrug,Grodzakh,Ugrudraz,Iggulzaz,KudrukhLi,QuccuBan,GrighKaggaz,ArdGrughokh,Zolbred,Drozgrir,Agkadh,Zuggedh,Lulkore,Dhulbazzol,DhazonNer,ZrazzuzVaz,BrurKorre,EkhMezred,Vaddog,Drirdradh,Qashnagh,Arad,Zadarord,Khorbriccord,NelzorZroz,DruccoRad,DhodhBrerdrodh,BhakhZradgukh,Qirrer,Uzord,Bulbredh,Khuzdraz,Churgrorgadh,Legvicrodh,GazdrakhVrard,VagordKhod,GidhUcceg,BhogKirgol,Brogved,Aga,Kudzal,Brolzug,Ughudadh,Noshnogradh,ZubodUr,ZrulbukhDekh,ReVurkog,RoghChirzaz,Kharkiz,Bhogug,Bozziz,Vuccidh,Ruddirgrad,Zordrordud,GrirkrunQur,IbulBrad,AdAdzurd,GaghDruzred,Acran,Morbraz,Drurgin,Chogidh,Nogvolkar,Uzaggor,KazzuzZrar,ArrulChukh,DiChudun,GhoUgnud,Uzron,Uzdroz,Gholgard,Zragmukh,Qiddolzog,Reradgri,QiccadChal,NubudId,ZrardKrodog,KrudhKhogzokh,Vizdrun,Orrad,Darmon,Ulkin,Zigmorbredh,Bizzadurd,MuccugGhuz,MabraghBhard,DurKhaddol,BheghGegnod,Qazzudh,Drobagh,Zorrudh,Dodkakh,Gribrabrokh,Quggidkad,DududhAkh,DrizdedhAd,GhordBhozdrokh,ZadEzzedh,Larud,Ashnedh,Gridkog,Qirzodh,Bhirgoshbel,Ghirmarokh,ArizDru,AgzilGhal,DrodhAshnugh,UghErrod,Lugekh,Buccel,Rarurd,Verrugh,Qommorbrord,Bagzildre,NazadLudh,IbaghChol,GrazKhulgag,QigKrorkodh,Rozzez,Koggodh,Ruzgrin,Zrigud,Zragrizgrakh,Irdrelzug,VrurzarMol,KezulBruz,GurGhogkagh,KigRadkodh,Ulgor,Kroddadh,Eldrird,Bozgrun,Digzagkigh,Azrurdrekh,KhuzdordDugh,DhurkighGrer,MeGheggor,KoGerkradh,Bashnud,Nirdrukh,Adog,Egmod,Vruzzegvukh,Nagrubagh,DugkegVuz,MorkirZrudh,NudhKuldra,DhodhGhigin,Graldrodh,Rero,Merkraz,Ummo,Largraragh,Brordeggeg,UldrukhBhudh,DregvekhOg,GughZozgrod,GhidZrogiz,Khebun,Ordol,Ghadag,Dredagh,Bhiccozdur,Chizeril,KarkorZrid,EmmanMaz,LiBogzel,EkhBeccon,Dashnukh,Kacruz,Krummel,Dirdrurd,Khalbammedh,Dhizdrermodh,GharuZrug,BhurkrukhLen,ZuZredzokh,BralLazogh,Velgrudh,Dorgri,Irbraz,Udral,Bigkurel,Zarralkod,DhoggunBhogh,AdgrilGha,DrukhQodgoz,KaNube,Vrurgu,Mazgar,Lalga,Bolkan,Kudgroccukh,Zraldrozzuz,VorordUz,ZacradLe,BrukhZrabrul,GagDrugmag,Kraghird,Bhummagh,Brazadh,Kalbrugh,Brogzozir,Mugmodror,RezgrughErd,UmmughEkh,GuNuccul,VunGaghukh,Ghizgil,Arbran,Bulgragh,Negvidh,Girodgrurd,Ghedgrolbrol,DrogvukhDrodh,DhalgronMog,MulDhazzug,ChazCharard,Drurkuz,Niddeg,Bagguz,Ogkal,Rordrushnokh,Gorkozzil,KorkrirGrar,RigaghZrad"},{name:"Giant",i:38,min:5,max:10,d:"kdtng",m:0,b:"Kostand,Throtrek,Solfod,Shurakzund,Heimfara,Anumush,Dulkun,Sigbeorn,Velhera,Glumvat,Khundinarg,Shathizdush,Baramunz,Nargunul,Magald,Noluch,Yotane,Tumunzar,Giledzir,Nurkel,Khizdabun,Yudgor,Hartreo,Galfald,Vigkan,Kibarak,Girkun,Gomruch,Guddud,Darnaric,Botharic,Gunargath,Oldstin,Rizen,Marbold,Nargundush,Hargarth,Kengord,Maerdis,Brerstin,Sigbi,Zigez,Umunzad,Nelkun,Yili,Usharar,Ranhera,Mistoch,Nuledzah,Nulbilnarg,Nulukkhur,Tulkug,Kigine,Marbrand,Gagkake,Khathizdin,Geru,Nagu,Grimor,Kaltoch,Koril,Druguk,Khatharbar,Debuch,Eraddam,Neliz,Brozu,Morluch,Enuz,Gatal,Beratira,Gurkale,Gluthmark,Iora,Tozage,Agane,Kegkez,Nuledzig,Bahourg,Jornangar,Kilfond,Dankuc,Rurki,Eldond,Barakzig,Olane,Gostuz,Grimtira,Brildung,Nulbaram,Nargabar,Narazar,Natan,oci,Khaziragz,Gabuzan,Orga,Addundad,Yulkake,Nulukkhaz,Bundushund,Guril,Barakinb,Sadgach,Vylwed,Vozig,Hildlaug,Chergun,Dagdhor,Kibizar,Shundushund,Mornkin,Jaldhor,inez,Lingarth,Churtec,Naragzah,Gabizir,Zugke,Ranava,Minu,Barazinb,Fynwyn,Talkale,Widhyrde,Sidga,Velfirth,Varkud,Shathola,Duhal,Srokvan,Guruge,Lindira,Rannerg,Kilkan,Gudgiz,Baragzund,Aerora,Inginy,Kharbharbiln,Theoddan,Rirkan,Undukkhil,Borgbert,Dina,Gortho,Kinbuzar,Kuzake,Drard,Gorkege,Nargatharb,Diru,Shatharbiz,Sgandrol,Sharakzar,Barakzinb,Dinez,Jarwar,Khizdushel,Wylaeya,Khazanar,Beornelde,Arangrim,Sholukkharb,Stighere,Gulwo,Irkin,Jornmoth,Gundusharb,Gabaram,Shizdinar,Memron,Guzi,Naramunz,Morntaric,Somrud,Norginny,Bremrol,Rurkoc,Zugkan,Vorkige,Kinbadab,Gila,Sulduch,Natil,Idgurth,Gabaragz,Tolkeg,Eradhelm,Dugfast,Froththorn,Galgrim,Theodgrim,Valdhere,Gazin,Tigkiz,Burthug,Chazruc,Kakkek,Toren"},{name:"Draconic",i:39,min:6,max:14,d:"aliuszrox",m:0,b:"Aaronarra,Adalon,Adamarondor,Aeglyl,Aerosclughpalar,Aghazstamn,Aglaraerose,Agoshyrvor,Alduin,Alhazmabad,Altagos,Ammaratha,Amrennathed,Anaglathos,Andrathanach,Araemra,Araugauthos,Arauthator,Arharzel,Arngalor,Arveiaturace,Athauglas,Augaurath,Auntyrlothtor,Azarvilandral,Azhaq,Balagos,Baratathlaer,Bleucorundum,BrazzPolis,Canthraxis,Capnolithyl,Charvekkanathor,Chellewis,Chelnadatilar,Cirrothamalan,Claugiyliamatar,Cragnortherma,Dargentum,Dendeirmerdammarar,Dheubpurcwenpyl,Domborcojh,Draconobalen,Dragansalor,Dupretiskava,Durnehviir,Eacoathildarandus,Eldrisithain,Enixtryx,Eormennoth,Esmerandanna,Evenaelorathos,Faenphaele,Felgolos,Felrivenser,Firkraag,Fll'Yissetat,Furlinastis,Galadaeros,Galglentor,Garnetallisar,Garthammus,Gaulauntyr,Ghaulantatra,Glouroth,Greshrukk,Guyanothaz,Haerinvureem,Haklashara,Halagaster,Halaglathgar,Havarlan,Heltipyre,Hethcypressarvil,Hoondarrh,Icehauptannarthanyx,Iiurrendeem,Ileuthra,Iltharagh,Ingeloakastimizilian,Irdrithkryn,Ishenalyr,Iymrith,Jaerlethket,Jalanvaloss,Jhannexydofalamarne,Jharakkan,Kasidikal,Kastrandrethilian,Khavalanoth,Khuralosothantar,Kisonraathiisar,Kissethkashaan,Kistarianth,Klauth,Klithalrundrar,Krashos,Kreston,Kriionfanthicus,Krosulhah,Krustalanos,Kruziikrel,Kuldrak,Lareth,Latovenomer,Lhammaruntosz,Llimark,Ma'fel'no'sei'kedeh'naar,MaelestorRex,Magarovallanthanz,Mahatnartorian,Mahrlee,Malaeragoth,Malagarthaul,Malazan,Maldraedior,Maldrithor,MalekSalerno,Maughrysear,Mejas,Meliordianix,Merah,Mikkaalgensis,Mirmulnir,Mistinarperadnacles,Miteach,Mithbarazak,Morueme,Moruharzel,Naaslaarum,Nahagliiv,Nalavarauthatoryl,Naxorlytaalsxar,Nevalarich,Nolalothcaragascint,Nurvureem,Nymmurh,Odahviing,Olothontor,Ormalagos,Otaaryliakkarnos,Paarthurnax,Pelath,Pelendralaar,Praelorisstan,Praxasalandos,Protanther,Qiminstiir,Quelindritar,Ralionate,Rathalylaug,Rathguul,Rauglothgor,Raumorthadar,Relonikiv,Ringreemeralxoth,Roraurim,Ruuthundrarar,Rylatar'ralah'tyma,Rynnarvyx,Sablaxaahl,Sahloknir,Sahrotaar,Samdralyrion,Saryndalaghlothtor,Sawaka,Shalamalauth,Shammagar,Sharndrel,Shianax,Skarlthoon,Skurge,Smergadas,Ssalangan,Sssurist,Sussethilasis,Sylvallitham,Tamarand,Tantlevgithus,Taraunramorlamurla,Tarlacoal,Tenaarlaktor,Thalagyrt,Tharas'kalagram,Thauglorimorgorus,Thoklastees,Thyka,Tsenshivah,Ueurwen,Uinnessivar,Urnalithorgathla,Velcuthimmorhar,Velora,Vendrathdammarar,Venomindhar,Viinturuth,Voaraghamanthar,Voslaarum,Vr'tark,Vrondahorevos,Vuljotnaak,Vulthuryol,Wastirek,Worlathaugh,Xargithorvar,Xavarathimius,Yemere,Ylithargathril,Ylveraasahlisar,Za-Jikku,Zarlandris,Zellenesterex,Zilanthar,Zormapalearath,Zundaerazylym,Zz'Pzora"},{name:"Arachnid",i:40,min:4,max:10,d:"erlsk",m:0,b:"Aaqok'ser,Acah,Aiced,Aisi,Aizachis,Allinqel,As'taq,Ashrash,Caaqtos,Caq'zux,Ceek'sax,Ceezuq,Cek'siereel,Cen'qi,Ceqru,Ceqzocer,Cezeed,Chachocaq,Charis,Chashar,Chashilieth,Checib,Chen'qal,Chernul,Cherzoq,Chezi,Chiazu,Chikoqal,Chishros,Chixhi,Chizhi,Chizoser,Chollash,Choq'sha,Chouk'rix,Cinchichail,Collul,Ecush'taid,Eenqachal,Ekiqe,El'zos,El'zur,Ellu,Eq'tur,Eqa,Eqas,Er'uria,Erikas,Ertu,Es'tase,Esrub,Evirrot,Exha,Haqsho,Heekath,Hiavheesh,Hitha,Hok'thi,Hossa,Iacid,Iciever,Ik'si,Illuq,Iri,Isicer,Isnir,Ivrid,Kaalzux,Keezut,Kheellavas,Kheizoh,Khellinqesh,Khiachod,Khika,Khinchi,Khirzur,Khivila,Khonrud,Khontid,Khosi,Khrakku,Khraqshis,Khrerrith,Khrethish'ti,Khriashus,Khrika,Khrirni,Khrocoqshesh,Klashirel,Klassa,Kleil'sha,Kliakis,Klishuth,Klith'osha,Krarnit,Kras'tex,Kreelzi,Krivas,Krotieqas,Laco,Lairta,Lais'tid,Laizuh,Lasnoth,Lekkol,Len'qeer,Leqanches,Lezad,Lhezsi,Lhilir,Lhivhath,Lhok'thu,Lialliesed,Liaraq,Liarisriq,Liceva,Lichorro,Lilla,Livorzish,Lokieqib,Nakar,Nakur,Naros,Natha,Necuk'saih,Neerhaca,Neet'er,Neezoh,Nenchiled,Nerhalneth,Nir'ih,Nizus,Noreeqo,Novalsher,On'qix,Qailloncho,Qak'sovo,Qalitho,Qartori,Qas'tor,Qasol,Qavrud,Qavud,Qazar,Qazieveq,Qazru,Qeik'thoth,Qekno,Qeqravee,Qes'tor,Qhaaviq,Qhaik'sal,Qhak'sish,Qhazsakais,Qhechorte,Qheliva,Qhenchaqes,Qherazal,Qhesoh,Qhiallud,Qhon'qos,Qhoshielleed,Qish'tur,Qisih,Qollal,Qorhoci,Qouxet,Qranchiq,Racith,Rak'zes,Ranchis,Rarhie,Rarzi,Rarzisiaq,Ras'tih,Ravosho,Recad,Rekid,Relshacash,Reqishee,Rernee,Rertachis,Rezhokketh,Reziel,Rhacish,Rhail'shel,Rhairhizse,Rhakivex,Rhaqeer,Rhartix,Rheciezsei,Rheevid,Rhel'shir,Rhetovraix,Rhevhie,Rhialzub,Rhiavekot,Rhikkos,Rhiqese,Rhiqi,Rhiqracar,Rhisned,Rhokno,Rhousnateb,Rhouvaqid,Riakeesnex,Rik'sid,Rintachal,Rir'ul,Rorrucis,Rosharhir,Rourk'u,Rouzakri,Sailiqei,Sanchiqed,Sanqad,Saqshu,Sat'ier,Sazi,Seiqas,Shieth'i,Shiqsheh,Shizha,Shrachuvo,Shranqo,Shravhos,Shravuth,Shreerhod,Shrethuh,Shriantieth,Shronqash,Shrovarhir,Shrozih,Siacaqoh,Siezosh,Silrul,Siq'sha,Sirro,Sornosi,Srachussi,Sreqrud,Srirnukaaq,Szaca,Szacih,Szaqova,Szasu,Szazhilos,Szeerrud,Szeezsad,Szeknur,Szesir,Szet'as,Szetirrar,Szezhirros,Szilshith,Szon'qol,Szornuq,Xaax'uq,Xeekke,Xosax,Yaconchi,Yacozses,Yazrer,Yeek'su,Yeeq'zox,Yeqil,Yeqroq,Yeveed,Yevied,Yicaveeh,Yirresh,Yisie,Yithik'thaih,Yorhaqshes,Zacheek'sa,Zakkasa,Zaqi,Zelraq,Zeqo,Zhaivoq,Zharuncho,Zhath'arhish,Zhavirrit,Zhazilraq,Zhazot,Zhazsachiel,Zhek'tha,Zhequ,Zhias'ted,Zhicat,Zhicur,Zhiese,Zhirhacil,Zhizri,Zhochizses,Zhorkir,Ziarih,Zirnib,Zis'teq,Zivezeh"},{name:"Serpents",i:41,min:5,max:11,d:"slrk",m:0,b:"Aj'ha,Aj'i,Aj'tiss,Ajakess,Aksas,Aksiss,Al'en,An'jeshe,Apjige,Arkkess,Athaz,Atus,Azras,Caji,Cakrasar,Cal'arrun,Capji,Cathras,Cej'han,Ces,Cez'jenta,Cij'te,Cinash,Cizran,Coth'jus,Cothrash,Culzanek,Cunaless,Ej'tesh,Elzazash,Ergek,Eshjuk,Ethris,Gan'jas,Gapja,Gar'thituph,Gopjeguss,Gor'thesh,Gragishaph,Grar'theness,Grath'ji,Gressinas,Grolzesh,Grorjar,Grozrash,Guj'ika,Harji,Hej'hez,Herkush,Horgarrez,Illuph,Ipjar,Ithashin,Kaj'ess,Kar'kash,Kepjusha,Ki'kintus,Kissere,Koph,Kopjess,Kra'kasher,Krak,Krapjez,Krashjuless,Kraz'ji,Krirrigis,Krussin,Ma'lush,Mage,Maj'tak,Mal'a,Mapja,Mar'kash,Mar'kis,Marjin,Mas,Mathan,Men'jas,Meth'jaresh,Mij'hegak,Min'jash,Mith'jas,Monassu,Moss,Naj'hass,Najugash,Nak,Napjiph,Nar'ka,Nar'thuss,Narrusha,Nash,Nashjekez,Nataph,Nij'ass,Nij'tessiph,Nishjiss,Norkkuss,Nus,Olluruss,Or'thi,Or'thuss,Paj'a,Parkka,Pas,Pathujen,Paz'jaz,Pepjerras,Pirkkanar,Pituk,Porjunek,Pu'ke,Ragen,Ran'jess,Rargush,Razjuph,Rilzan,Riss,Rithruz,Rorgiss,Rossez,Rraj'asesh,Rraj'tass,Rrar'kess,Rrar'thuph,Rras,Rrazresh,Rrej'hish,Rrigelash,Rris,Rris,Rroksurrush,Rukrussush,Rurri,Russa,Ruth'jes,Sa'kitesh,Sar'thass,Sarjas,Sazjuzush,Ser'thez,Sezrass,Shajas,Shas,Shashja,Shass,Shetesh,Shijek,Shun'jaler,Shurjarri,Skaler,Skalla,Skallentas,Skaph,Skar'kerriz,Skath'jeruk,Sker'kalas,Skor,Skoz'ji,Sku'lu,Skuph,Skur'thur,Slalli,Slalt'har,Slelziress,Slil'ar,Sloz'jisa,Sojesh,Solle,Sorge,Sral'e,Sran'ji,Srapjess,Srar'thazur,Srash,Srath'jess,Srathrarre,Srerkkash,Srus,Sruss'tugeph,Sun,Suss'tir,Uzrash,Vargush,Vek,Vess'tu,Viph,Vult'ha,Vupjer,Vushjesash,Xagez,Xassa,Xulzessu,Zaj'tiss,Zan'jer,Zarriss,Zassegus,Zirres,Zsor,Zurjass"}]},getMapName:A,calculateChain:t}}();window.Biomes=function(){return{getDefault:()=>{const t=["Marine","Hot desert","Cold desert","Savanna","Grassland","Tropical seasonal forest","Temperate deciduous forest","Tropical rainforest","Temperate rainforest","Taiga","Tundra","Glacier","Wetland"],n=["#466eab","#fbe79f","#b5b887","#d2d082","#c8d68f","#b6d95d","#29bc56","#7dcb35","#409c43","#4b6b32","#96784b","#d5e7eb","#0b9131"],i=[0,4,10,22,30,50,100,80,90,12,4,0,12],r=[0,3,2,120,120,120,120,150,150,100,5,0,150],c=[{},{dune:3,cactus:6,deadTree:1},{dune:9,deadTree:1},{acacia:1,grass:9},{grass:1},{acacia:8,palm:1},{deciduous:1},{acacia:5,palm:3,deciduous:1,swamp:1},{deciduous:6,swamp:1},{conifer:1},{grass:1},{},{swamp:1}],f=[10,200,150,60,50,70,70,80,90,200,1e3,5e3,150],z=[new Uint8Array([1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10]),new Uint8Array([3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,9,9,9,9,10,10,10]),new Uint8Array([5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,9,9,9,9,9,10,10,10]),new Uint8Array([5,6,6,6,6,6,6,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,10,10,10]),new Uint8Array([7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,10,10])];for(let m=0;m t.c[o].some(l=>e.h[l] t.p[o]);r[p]+=round(lineGen(s))}terrs.append("rect").attr("x",0).attr("y",0).attr("width",graphWidth).attr("height",graphHeight).attr("fill",c(.8));for(const g of d3.range(20,101)){if(r[g].length<10)continue;const p=lo(g,c);f&&terrs.append("path").attr("d",r[g]).attr("transform","translate(.7,1.4)").attr("fill",d3.color(p).darker(f)).attr("data-height",g),terrs.append("path").attr("d",r[g]).attr("fill",p).attr("data-height",g)}function u(g,p){const B=[];for(let k=0,d=g;k===0||d!==g&&k<2e4;k++){const s=B[B.length-1];B.push(d);const o=t.c[d];o.filter(h=>e.h[h]===p).forEach(h=>i[h]=1);const l=o[0]>=n||e.h[o[0]] =n||e.h[o[1]] =n||e.h[o[2]] k%p===0)}Q&&console.timeEnd("drawHeightmap")}function Sa(e){return e==="bright"?d3.scaleSequential(d3.interpolateSpectral):e==="light"?d3.scaleSequential(d3.interpolateRdYlGn):e==="green"?d3.scaleSequential(d3.interpolateGreens):e==="monochrome"?d3.scaleSequential(d3.interpolateGreys):d3.scaleSequential(d3.interpolateSpectral)}function lo(e,t=Sa()){return t(1-(e<20?e-5:e)/100)}function co(e){if(!temperature.selectAll("*").size())Le("toggleTemp"),uo(),e&&ge(e)&&editStyle("temperature");else{if(e&&ge(e)){editStyle("temperature");return}Ee("toggleTemp"),temperature.selectAll("*").remove()}}function uo(){Q&&console.time("drawTemp"),temperature.selectAll("*").remove(),lineGen.curve(d3.curveBasisClosed);const e=d3.scaleSequential(d3.interpolateSpectral),t=+temperatureEquatorOutput.max,n=+temperatureEquatorOutput.min,i=t-n,r=grid.cells,c=grid.vertices,f=r.i.length,z=new Uint8Array(f),m=d3.min(r.temp),b=d3.max(r.temp),A=Math.max(Math.round(Math.abs(m-b)/5),1),u=d3.range(m+A,b,A),C=[],g=[];for(const o of r.i){const l=r.temp[o];if(z[o]||!u.includes(l))continue;const a=B(o,l);if(!a)continue;z[o]=1;const S=s(a,l).filter((v,E)=>E%4===0||c.c[v].some(P=>P>=f));if(S.length<6)continue;const h=S.map(v=>c.p[v]);C.push([l,h]),k(h,l)}temperature.append("path").attr("d",`M0,0 h${graphWidth} v${graphHeight} h${-graphWidth} Z`).attr("fill",e(1-(m-n)/i)).attr("stroke","none");for(const o of u){const l=C.filter(S=>S[0]===o).map(S=>round(lineGen(S[1]))).join("");if(!l)continue;const a=e(1-(o-n)/i),w=d3.color(a).darker(.2);temperature.append("path").attr("d",l).attr("fill",a).attr("stroke",w)}temperature.append("g").attr("id","tempLabels").attr("fill-opacity",1).selectAll("text").data(g).enter().append("text").attr("x",o=>o[0]).attr("y",o=>o[1]).text(o=>Xt(o[2]));function B(o,l){return r.b[o]?r.v[o].find(a=>c.c[a].some(w=>w>=f)):r.v[o][r.c[o].findIndex(a=>r.temp[a] 2&&(H="Vassal"),l[T].diplomacy[R]=H==="Vassal"?"Suzerain":H,l[R].diplomacy[T]=H}}for(let T=1;T ${n} ${qa(p)}
+ Please consider changing climate settings in the World Configurator`,$("#alert").dialog({resizable:!1,title:"Extreme climate warning",buttons:{Ok:function(){$(this).dialog("close")}}});else{WARN&&console.warn("There are no populated cells. Cannot generate cultures"),pack.cultures=[{name:"Wildlands",i:0,base:1,shield:"round"}],alertMessage.innerHTML=` The climate is harsh and people cannot live in this world.
+ No cultures, states and burgs will be created.
+ Please consider changing climate settings in the World Configurator`,$("#alert").dialog({resizable:!1,title:"Extreme climate warning",buttons:{Ok:function(){$(this).dialog("close")}}});return}const C=pack.cultures=s(A),g=d3.quadtree(),p=va(A),B=document.getElementById("emblemShape").value,k=[];C.forEach(function(a,w){const S=a.center=d(a.sort?a.sort:h=>e.s[h]);g.add(e.p[S]),a.i=w+1,delete a.odd,delete a.sort,a.color=p[w],a.type=o(S),a.expansionism=l(a.type),a.origins=[0],a.code=bt(a.name,k),k.push(a.code),e.culture[S]=w+1,B==="random"&&(a.shield=b())});function d(a){let w,S=(graphWidth+graphHeight)/2/A;const h=[...u].sort((E,P)=>a(P)-a(E)),v=Math.floor(h.length/2);do w=h[Ot(0,v,5)],S*=.9;while(g.find(e.p[w][0],e.p[w][1],S)!==void 0);return w}C.unshift({name:"Wildlands",i:0,base:1,origins:[null],shield:"round"}),nameBases.length||(ERROR&&console.error("Name base is empty, default nameBases will be applied"),nameBases=Names.getNameBases()),C.forEach(a=>a.base=a.base%nameBases.length);function s(a){let w=i(a);if(a===w.length)return w;if(w.every(v=>v.odd===1))return w.splice(0,a);const S=Math.min(a,w.length),h=[];for(let v,E,P=0;h.length50)return"Highland";const w=pack.features[e.f[e.haven[a]]];return w.type==="lake"&&w.cells>5?"Lake":e.harbor[a]&&w.type!=="lake"&&V(.1)||e.harbor[a]===1&&V(.6)||pack.features[e.f[a]].group==="isle"&&V(.4)?"Naval":e.r[a]&&e.fl[a]>100?"River":e.t[a]>2&&[3,7,8,9,10,12].includes(e.biome[a])?"Hunting":"Generic"}function l(a){let w=1;return a==="Lake"?w=.8:a==="Naval"?w=1.5:a==="River"?w=.9:a==="Nomadic"?w=1.5:a==="Hunting"?w=.7:a==="Highland"&&(w=1.2),O((Math.random()*powerInput.value/2+1)*w,1)}Q&&console.timeEnd("generateCultures")},n=function(A){const u=i();let C,g,p;pack.cultures.lengtha.province[ce]===F),W=Y.length===ee.cells&&!Y.find(ce=>a.f[ce]!==ee.i),de=!W&&!Y.find(ce=>pack.features[a.f[ce]].group!=="isle"),me=!W&&!de&&V(.5)&&!oe(M.center,Z),pe=function(){const ce=me&&V(.8)&&G();return ce||(j&&V(.5)?S[te].name:Names.getState(Names.getCultureShort(X),X))}(),we=function(){return W?"Island":de?"Islands":me?"Colony":he(P.Wild)}(),ke=pe+" "+we,He=V(me?.95:W||de?.7:.3),Be=He?0:.4,Fe=n(Z,(U=S[te])==null?void 0:U.port),_=COA.generate(M.coa,Be,He,Fe);_.shield=COA.getShield(X,M.i),h.push({i:F,state:M.i,center:Z,burg:te,name:pe,formName:we,fullName:ke,color:le,coa:_}),M.provinces.push(F),D=L.filter(ce=>a.state[ce]===M.i&&!a.province[ce])}}),Q&&console.timeEnd("generateProvinces")},updateCultures:z}}();window.Routes=function(){const e=function(){Q&&console.time("generateMainRoads");const m=pack.cells,A=pack.burgs.filter(C=>C.i&&!C.removed).filter(C=>C.capital).sort((C,g)=>C.population-g.population);if(A.length<2)return[];const u=[];for(const C of A){const g=A.filter(p=>p.feature===C.feature&&p!==C);for(const p of g){const[B,k]=c(C.cell,p.cell,!0);f(C.cell,k,"main",B).forEach(s=>u.push(s))}}return m.i.forEach(C=>m.s[C]+=m.road[C]/2),Q&&console.timeEnd("generateMainRoads"),u},t=function(){Q&&console.time("generateTrails");const m=pack.cells,b=pack.burgs.filter(u=>u.i&&!u.removed);if(b.length<2)return[];let A=[];for(const u of pack.features.filter(C=>C.land)){const C=b.filter(g=>g.feature===u.i);C.length<2||C.forEach(function(g,p){let B=[];if(p){if(m.road[g.cell])return;const[k,d]=c(g.cell,null,!0);if(d===null)return;B=f(g.cell,d,"small",k)}else{const k=d3.scan(C,(l,a)=>(a.y-g.y)**2+(a.x-g.x)**2-((l.y-g.y)**2+(l.x-g.x)**2)),d=C[k].cell;if(m.road[d])return;const[s,o]=c(g.cell,d,!0);B=f(g.cell,o,"small",s)}B&&(A=A.concat(B))})}return Q&&console.timeEnd("generateTrails"),A},n=function(){Q&&console.time("generateSearoutes");const{cells:m,burgs:b,features:A}=pack,u=b.filter(k=>k.port>0&&!k.removed);if(!u.length)return[];const C=new Set(u.map(k=>k.port));let g=[];const p=[];C.forEach(k=>{var s;const d=u.filter(o=>o.port===k);if(!!d.length){(s=A[k])!=null&&s.border&&B(k,d[0]);for(let o=0;o
+ ${e.join("")}
+
`,$("#alert").dialog({resizable:!1,title:"Seed history",position:{my:"center",at:"center",of:"svg"}})}function mi(){zoomExtentMin.value=1,zoomExtentMax.value=20,Zoom.scaleExtent([1,20]),Zoom.scaleTo(svg,1)}function fi(){const e=document.querySelectorAll("i.icon-lock").length,t=`?seed=${optionsSeed.value}&width=${graphWidth}&height=${graphHeight}${e?"":"&options=default"}`;navigator.clipboard.writeText(location.host+location.pathname+t).then(()=>{se("Map URL is copied to clipboard",!1,"success",3e3)}).catch(n=>se("Could not copy URL: "+n,!1,"error",5e3))}const yi={1:1e3,2:2e3,3:5e3,4:1e4,5:2e4,6:3e4,7:4e4,8:5e4,9:6e4,10:7e4,11:8e4,12:9e4,13:1e5};function bi(e){const t=yi[e]||1e3;pointsInput.dataset.cells=t,pointsOutputFormatted.value=vi(t),pointsOutputFormatted.style.color=ki(t)}function vi(e){return e/1e3+"K"}function ki(e){return e>5e4?"#b12117":e!==1e4?"#dfdf12":"#053305"}function wi(){const e=culturesSet.selectedOptions[0].dataset.max;culturesInput.max=culturesOutput.max=e,+culturesOutput.value>+e&&(culturesInput.value=culturesOutput.value=e)}function Si(e){const t=document.getElementById("emblemShapeImage"),n=window.COArenderer&&COArenderer.shieldPaths[e];n?t.setAttribute("d",n):t.removeAttribute("d");const i=["culture","state","random"].includes(e)?null:e;e==="random"&&pack.cultures.filter(c=>!c.removed).forEach(c=>c.shield=Cultures.getRandomShield());const r=(c,f)=>{const z=document.getElementById(c);!z||(z.remove(),COArenderer.trigger(c,f))};pack.states.forEach(c=>{if(!c.i||c.removed||!c.coa||c.coa==="custom")return;const f=i||COA.getShield(c.culture,null);f!==c.coa.shield&&(c.coa.shield=f,r("stateCOA"+c.i,c.coa))}),pack.provinces.forEach(c=>{if(!c.i||c.removed||!c.coa||c.coa==="custom")return;const f=pack.cells.culture[c.center],z=i||COA.getShield(f,c.state);z!==c.coa.shield&&(c.coa.shield=z,r("provinceCOA"+c.i,c.coa))}),pack.burgs.forEach(c=>{if(!c.i||c.removed||!c.coa||c.coa==="custom")return;const f=i||COA.getShield(c.culture,c.state);f!==c.coa.shield&&(c.coa.shield=f,r("burgCOA"+c.i,c.coa))})}function Ai(e){regionsOutput.style.color=+e?null:"#b12117",burgLabels.select("#capitals").attr("data-size",Math.max(O(6-e/20),3)),labels.select("#countries").attr("data-size",Math.max(O(18-e/6),4))}function zi(e){if(isNaN(+e)||+e<.5)return;const t=xi();+e>t&&(e=t),uiSizeInput.value=uiSizeOutput.value=e,document.getElementsByTagName("body")[0].style.fontSize=O(e*10,2)+"px",document.getElementById("options").style.width=e*300+"px"}function xi(){return O(Math.min(window.innerHeight/465,window.innerWidth/302),1)}function Ci(e){tooltip.style.fontSize=`calc(${e}px + 0.5vw)`}const jt="#997787";function Bi(){localStorage.removeItem("themeColor"),Bt(jt,transparencyInput.value)}function Mi(e){const{s:t,l:n}=d3.hsl(themeColorInput.value),i=d3.hsl(+e,t,n).hex();Bt(i,transparencyInput.value)}function Bt(e,t){transparencyInput.value=transparencyOutput.value=t;const n=(100-+t)/100,i=Math.min(n+.3,1),{h:r,s:c,l:f}=d3.hsl(e||jt);themeColorInput.value=e||jt,themeHueInput.value=r;const z=(A,u,C,g)=>d3.hsl(A,u,C,g).toString(),m=[{name:"--bg-main",h:r,s:c,l:f,alpha:n},{name:"--bg-lighter",h:r,s:c,l:f+.02,alpha:n},{name:"--bg-light",h:r,s:c-.02,l:f+.06,alpha:n},{name:"--light-solid",h:r,s:c+.01,l:f+.05,alpha:1},{name:"--dark-solid",h:r,s:c,l:f-.2,alpha:1},{name:"--header",h:r,s:c,l:f-.03,alpha:i},{name:"--header-active",h:r,s:c,l:f-.09,alpha:i},{name:"--bg-disabled",h:r,s:c-.04,l:f+.09,alphaReduced:i},{name:"--bg-dialogs",h:0,s:0,l:.98,alpha:n}],b=document.documentElement.style;m.forEach(({name:A,h:u,s:C,l:g,alpha:p})=>{b.setProperty(A,z(u,C,g,p))})}function Ei(e){const t=Math.max(+ne("zoomExtentMin").value,.01),n=Math.min(+ne("zoomExtentMax").value,200);Zoom.scaleExtent([t,n]);const i=Ie(+e,.01,200);Zoom.scaleTo(svg,i)}function Li(e){var t;(t=fmg.viewbox)==null||t.attr("shape-rendering",e)}function Ii(){unlock("era"),options.era=eraInput.value=Names.getBaseShort(V(.7)?1:be(nameBases.length))+" Era",options.eraShort=options.era.split(" ").map(e=>e[0].toUpperCase()).join("")}function Ri(){if(!!yearInput.value){if(isNaN(+yearInput.value)){se("Current year should be a number",!1,"error");return}options.year=+yearInput.value}}function Ti(){!eraInput.value||(mt("era"),options.era=eraInput.value)}async function Pi(){(await St(()=>import("./heightmap-selection.js_v_1.87.b0b46f49.js"),[])).open()}document.getElementById("sticked").addEventListener("click",function(e){const t=e.target.id;t==="newMapButton"?La():t==="saveButton"?Hi():t==="exportButton"?Ui():t==="loadButton"?Ni():t==="zoomReset"&&Zoom.reset(1e3)});function La(e){if(customization)return se("New map cannot be generated when edit mode is active, please exit the mode and retry",!1,"error");if((Date.now()-De(mapHistory).created)/6e4<5)return regenerateMap(e);alertMessage.innerHTML=`Are you sure you want to generate a new map?
+ All unsaved changes made to the current map will be lost`,$("#alert").dialog({resizable:!1,title:"Generate new map",buttons:{Cancel:function(){$(this).dialog("close")},Generate:function(){closeDialogs(),regenerateMap(e)}}})}function Hi(){const e=document.getElementById("sharableLinkContainer");e.style.display="none",$("#saveMapData").dialog({title:"Save map",resizable:!1,width:"25em",position:{my:"center",at:"center",of:"svg"},buttons:{Close:function(){$(this).dialog("close")}}})}function Ui(){document.getElementById("showLabels").checked=!hideLabels.checked,$("#exportMapData").dialog({title:"Export map data",resizable:!1,width:"26em",position:{my:"center",at:"center",of:"svg"},buttons:{Close:function(){$(this).dialog("close")}}})}async function Ni(){if($("#loadMapData").dialog({title:"Load map",resizable:!1,width:"24em",position:{my:"center",at:"center",of:"svg"},buttons:{Close:function(){$(this).dialog("close")}}}),Cloud.providers.dropbox.api){document.getElementById("dropboxConnectButton").style.display="none",document.getElementById("loadFromDropboxSelect").style.display="block";const e=document.getElementById("loadFromDropboxButtons"),t=document.getElementById("loadFromDropboxSelect");t.innerHTML='';const n=await Cloud.providers.dropbox.list();if(!n){e.style.display="none",t.innerHTML='';return}e.style.display="block",t.innerHTML="",n.forEach(({name:i,updated:r,size:c,path:f})=>{const z=O(c/1024/1024,2)+" MB",b=`${new Date(r).toLocaleDateString()}: ${i} [${z}]`,A=new Option(b,f);t.options.add(A)});return}document.getElementById("dropboxConnectButton").style.display="inline-block",document.getElementById("loadFromDropboxButtons").style.display="none",document.getElementById("loadFromDropboxSelect").style.display="none"}document.getElementById("mapToLoad").addEventListener("change",function(){const e=this.files[0];this.value="",closeDialogs(),uploadMap(e)});viewMode.addEventListener("click",Ki);function Ki(e){const t=e.target;if(t.tagName!=="BUTTON")return;const n=t.classList.contains("pressed");Ia(),!n&&t.id!=="viewStandard"&&(viewStandard.classList.remove("pressed"),t.classList.add("pressed"),Di(t.id))}function Ia(){viewMode.querySelectorAll(".pressed").forEach(e=>e.classList.remove("pressed")),heightmap3DView.classList.remove("pressed"),viewStandard.classList.add("pressed"),document.getElementById("canvas3d")&&(ThreeD.stop(),document.getElementById("canvas3d").remove(),options3dUpdate.offsetParent&&$("#options3d").dialog("close"),preview3d.offsetParent&&$("#preview3d").dialog("close"))}async function Di(e){const t=document.createElement("canvas");t.id="canvas3d",t.dataset.type=e,e==="heightmap3DView"?(t.width=parseFloat(preview3d.style.width)||graphWidth/3,t.height=t.width/(graphWidth/graphHeight),t.style.display="block"):(t.width=svgWidth,t.height=svgHeight,t.style.position="absolute",t.style.display="none"),await ThreeD.create(t,e)&&(t.style.display="block",t.onmouseenter=()=>{const i="Left mouse to change angle, middle mouse / mousewheel to zoom, right mouse to pan. O to toggle options";+t.dataset.hovered>2?se(""):se(i),t.dataset.hovered=(+t.dataset.hovered|0)+1},e==="heightmap3DView"?(document.getElementById("preview3d").appendChild(t),$("#preview3d").dialog({title:"3D Preview",resizable:!0,position:{my:"left bottom",at:"left+10 bottom-20",of:"svg"},resizeStop:Fi,close:Ia})):document.body.insertBefore(t,optionsContainer),Oi())}function Fi(){const e=document.getElementById("canvas3d");e.width=parseFloat(preview3d.style.width),e.height=parseFloat(preview3d.style.height)-2,ThreeD.redraw()}function Oi(){if(options3dUpdate.offsetParent){$("#options3d").dialog("close");return}if($("#options3d").dialog({title:"3D mode settings",resizable:!1,width:"fit-content",position:{my:"right top",at:"right-30 top+10",of:"svg",collision:"fit"}}),e(),fmg.modules.options3d)return;fmg.modules.options3d=!0,document.getElementById("options3dUpdate").addEventListener("click",ThreeD.update),document.getElementById("options3dSave").addEventListener("click",ThreeD.saveScreenshot),document.getElementById("options3dOBJSave").addEventListener("click",ThreeD.saveOBJ),document.getElementById("options3dScaleRange").addEventListener("input",t),document.getElementById("options3dScaleNumber").addEventListener("change",t),document.getElementById("options3dLightnessRange").addEventListener("input",n),document.getElementById("options3dLightnessNumber").addEventListener("change",n),document.getElementById("options3dSunX").addEventListener("change",i),document.getElementById("options3dSunY").addEventListener("change",i),document.getElementById("options3dSunZ").addEventListener("change",i),document.getElementById("options3dMeshRotationRange").addEventListener("input",r),document.getElementById("options3dMeshRotationNumber").addEventListener("change",r),document.getElementById("options3dGlobeRotationRange").addEventListener("input",r),document.getElementById("options3dGlobeRotationNumber").addEventListener("change",r),document.getElementById("options3dMeshLabels3d").addEventListener("change",c),document.getElementById("options3dMeshSkyMode").addEventListener("change",f),document.getElementById("options3dMeshSky").addEventListener("input",z),document.getElementById("options3dMeshWater").addEventListener("input",z),document.getElementById("options3dGlobeResolution").addEventListener("change",m);function e(){const b=document.getElementById("canvas3d").dataset.type==="viewGlobe";options3dMesh.style.display=b?"none":"block",options3dGlobe.style.display=b?"block":"none",options3dScaleRange.value=options3dScaleNumber.value=ThreeD.options.scale,options3dLightnessRange.value=options3dLightnessNumber.value=ThreeD.options.lightness*100,options3dSunX.value=ThreeD.options.sun.x,options3dSunY.value=ThreeD.options.sun.y,options3dSunZ.value=ThreeD.options.sun.z,options3dMeshRotationRange.value=options3dMeshRotationNumber.value=ThreeD.options.rotateMesh,options3dGlobeRotationRange.value=options3dGlobeRotationNumber.value=ThreeD.options.rotateGlobe,options3dMeshLabels3d.value=ThreeD.options.labels3d,options3dMeshSkyMode.value=ThreeD.options.extendedWater,options3dColorSection.style.display=ThreeD.options.extendedWater?"block":"none",options3dMeshSky.value=ThreeD.options.skyColor,options3dMeshWater.value=ThreeD.options.waterColor,options3dGlobeResolution.value=ThreeD.options.resolution}function t(){options3dScaleRange.value=options3dScaleNumber.value=this.value,ThreeD.setScale(+this.value)}function n(){options3dLightnessRange.value=options3dLightnessNumber.value=this.value,ThreeD.setLightness(this.value/100)}function i(){const b=+options3dSunX.value,A=+options3dSunY.value,u=+options3dSunZ.value;ThreeD.setSun(b,A,u)}function r(){(this.nextElementSibling||this.previousElementSibling).value=this.value;const b=+this.value;ThreeD.setRotation(b)}function c(){ThreeD.toggleLabels()}function f(){const b=ThreeD.options.extendedWater;options3dColorSection.style.display=b?"none":"block",ThreeD.toggleSky()}function z(){ThreeD.setColors(options3dMeshSky.value,options3dMeshWater.value)}function m(){ThreeD.setResolution(this.value)}}window.scale=1;window.viewX=0;window.viewY=0;window.Zoom=function(){function e(){const{k:b,x:A,y:u}=d3.event.transform,C=Boolean(scale-b),g=Boolean(viewX-A||viewY-u);!C&&!g||(scale=b,viewX=A,viewY=u,handleZoom(C,g))}const t=vt(e,50),n=d3.zoom().scaleExtent([1,20]).on("zoom",t);function i(){svg.call(n)}function r(b,A,u=8,C=2e3){const g=d3.zoomIdentity.translate(b*-u+graphWidth/2,A*-u+graphHeight/2).scale(u);svg.transition().duration(C).call(n.transform,g)}function c(b=1e3){svg.transition().duration(b).call(n.transform,d3.zoomIdentity)}function f([b,A]){n.scaleExtent([b,A])}function z([b,A,u,C]){n.translateExtent([[b,A],[u,C]])}function m(b,A){n.scaleTo(b,A)}return{setZoomBehavior:i,to:r,reset:c,scaleExtent:f,translateExtent:z,scaleTo:m}}();$("#optionsContainer").draggable({handle:".drag-trigger",snap:"svg",snapMode:"both"});$("#exitCustomization").draggable({handle:"div"});$("#mapLayers").disableSelection();ze("disable_click_arrow_tooltip")&&(ct(),optionsTrigger.classList.remove("glow"));optionsTrigger.addEventListener("mouseenter",function(){optionsTrigger.classList.contains("glow")||document.getElementById("options").style.display==="none"&&(regenerate.style.display="block")});collapsible.addEventListener("mouseleave",function(){regenerate.style.display="none"});document.getElementById("options").querySelector("div.tab").addEventListener("click",function(e){if(e.target.tagName!=="BUTTON")return;const t=e.target.id,n=document.getElementById("options").querySelector(".tab > button.active");n&&t===n.id||(n&&n.classList.remove("active"),document.getElementById(t).classList.add("active"),document.getElementById("options").querySelectorAll(".tabcontent").forEach(i=>i.style.display="none"),t==="layersTab"?layersContent.style.display="block":t==="styleTab"?styleContent.style.display="block":t==="optionsTab"?It.style.display="block":t==="toolsTab"?customization===1?customizationMenu.style.display="block":toolsContent.style.display="block":t==="aboutTab"&&(aboutContent.style.display="block"))});document.getElementById("options").addEventListener("change",Ra);document.getElementById("dialogs").addEventListener("change",Ra);document.getElementById("options").addEventListener("input",Ta);document.getElementById("dialogs").addEventListener("input",Ta);function Ra(e){e.target.dataset.stored&&mt(e.target.dataset.stored)}function Ta(e){const t=e.target.id,n=e.target.value;if(t==="manorsInput")return manorsOutput.value=n==1e3?"auto":n;if(t.slice(-5)==="Input"){const i=document.getElementById(t.slice(0,-5)+"Output");i&&(i.value=n)}else if(t.slice(-6)==="Output"){const i=document.getElementById(t.slice(0,-6)+"Input");i&&(i.value=n)}}const It=document.getElementById("optionsContent");It.addEventListener("input",function(e){const t=e.target.id,n=e.target.value;t==="mapWidthInput"||t==="mapHeightInput"?Gi():t==="pointsInput"?_i(+n):t==="culturesSet"?Ha():t==="regionsInput"||t==="regionsOutput"?Ua(n):t==="emblemShape"?ar(n):t==="tooltipSizeInput"||t==="tooltipSizeOutput"?Ka(n):t==="themeHueInput"?or(n):t==="themeColorInput"?kt(themeColorInput.value,transparencyInput.value):t==="transparencyInput"&&kt(themeColorInput.value,n)});It.addEventListener("change",function(e){const t=e.target.id,n=e.target.value;t==="zoomExtentMin"||t==="zoomExtentMax"?ir(n):t==="optionsSeed"?Ji():t==="uiSizeInput"||t==="uiSizeOutput"?Wt(n):t==="shapeRendering"?Da(n):t==="yearInput"?hr():t==="eraInput"?gr():t==="stateLabelsModeInput"&&(options.stateLabelsMode=n)});It.addEventListener("click",function(e){const t=e.target.id;t==="toggleFullscreen"?Wi():t==="optionsMapHistory"?Yi():t==="optionsCopySeed"?Qi():t==="optionsEraRegenerate"?dr():t==="templateInputContainer"?pr():t==="zoomExtentDefault"?Xi():t==="translateExtent"?qi(e.target):t==="speakerTest"?Zi():t==="themeColorRestore"&&nr()});function Gi(){Pa(),localStorage.setItem("mapWidth",mapWidthInput.value),localStorage.setItem("mapHeight",mapHeightInput.value)}function Pa(){svgWidth=Math.min(+mapWidthInput.value,window.innerWidth),svgHeight=Math.min(+mapHeightInput.value,window.innerHeight),svg.attr("width",svgWidth).attr("height",svgHeight);const e=Math.max(+mapWidthInput.value,graphWidth),t=Math.max(+mapHeightInput.value,graphHeight);Zoom.translateExtent([0,0,e,t]),landmass.select("rect").attr("x",0).attr("y",0).attr("width",e).attr("height",t),oceanPattern.select("rect").attr("x",0).attr("y",0).attr("width",e).attr("height",t),oceanLayers.select("rect").attr("x",0).attr("y",0).attr("width",e).attr("height",t),fogging.selectAll("rect").attr("x",0).attr("y",0).attr("width",e).attr("height",t),defs.select("mask#fog > rect").attr("width",e).attr("height",t),texture.select("image").attr("width",e).attr("height",t),fitScaleBar(),window.fitLegendBox&&fitLegendBox()}function ji(){const e=+zoomExtentMin.value,t=+zoomExtentMax.value;graphWidth=+mapWidthInput.value,graphHeight=+mapHeightInput.value,svgWidth=Math.min(graphWidth,window.innerWidth),svgHeight=Math.min(graphHeight,window.innerHeight),svg.attr("width",svgWidth).attr("height",svgHeight),Zoom.translateExtent([0,0,graphWidth,graphHeight]),Zoom.scaleExtent([e,t]),Zoom.scaleTo(svg,e)}function Wi(){mapWidthInput.value!=window.innerWidth||mapHeightInput.value!=window.innerHeight?(mapWidthInput.value=window.innerWidth,mapHeightInput.value=window.innerHeight,localStorage.removeItem("mapHeight"),localStorage.removeItem("mapWidth")):(mapWidthInput.value=graphWidth,mapHeightInput.value=graphHeight),Pa()}function qi(e){const t=!Number(e.dataset.on),n=t?[-graphWidth/2,-graphHeight/2,graphWidth*1.5,graphHeight*1.5]:[0,0,graphWidth,graphHeight];Zoom.translateExtent(n),e.dataset.on=Number(t)}const Vi=setInterval(function(){const e=speechSynthesis.getVoices();if(e.length)clearInterval(Vi);else return;const t=document.getElementById("speakerVoice");e.forEach((n,i)=>{t.options.add(new Option(n.name,i,!1))}),ze("speakerVoice")?t.value=ze("speakerVoice"):t.value=e.findIndex(n=>n.lang==="en-US")},1e3);function Zi(){const e=`${mapName.value}, ${options.year} ${options.era}`,t=new SpeechSynthesisUtterance(e),n=speechSynthesis.getVoices();if(n.length){const i=+document.getElementById("speakerVoice").value;t.voice=n[i]}speechSynthesis.speak(t)}function Ji(){if(optionsSeed.value==seed)return se("The current map already has this seed",!1,"error");Fa()}function Yi(){const e=mapHistory.map((t,n)=>{const i=new Date(t.created).toLocaleTimeString(),r=``;return`
+ ${e.join("")}
+
`,$("#alert").dialog({resizable:!1,title:"Seed history",position:{my:"center",at:"center",of:"svg"}})}function Xi(){zoomExtentMin.value=1,zoomExtentMax.value=20,Zoom.scaleExtent([1,20]),Zoom.scaleTo(svg,1)}function Qi(){const e=document.querySelectorAll("i.icon-lock").length,t=`?seed=${optionsSeed.value}&width=${graphWidth}&height=${graphHeight}${e?"":"&options=default"}`;navigator.clipboard.writeText(location.host+location.pathname+t).then(()=>{se("Map URL is copied to clipboard",!1,"success",3e3)}).catch(n=>se("Could not copy URL: "+n,!1,"error",5e3))}const $i={1:1e3,2:2e3,3:5e3,4:1e4,5:2e4,6:3e4,7:4e4,8:5e4,9:6e4,10:7e4,11:8e4,12:9e4,13:1e5};function _i(e){const t=$i[e]||1e3;pointsInput.dataset.cells=t,pointsOutputFormatted.value=er(t),pointsOutputFormatted.style.color=tr(t)}function er(e){return e/1e3+"K"}function tr(e){return e>5e4?"#b12117":e!==1e4?"#dfdf12":"#053305"}function Ha(){const e=culturesSet.selectedOptions[0].dataset.max;culturesInput.max=culturesOutput.max=e,+culturesOutput.value>+e&&(culturesInput.value=culturesOutput.value=e)}function ar(e){const t=document.getElementById("emblemShapeImage"),n=window.COArenderer&&COArenderer.shieldPaths[e];n?t.setAttribute("d",n):t.removeAttribute("d");const i=["culture","state","random"].includes(e)?null:e;e==="random"&&pack.cultures.filter(c=>!c.removed).forEach(c=>c.shield=Cultures.getRandomShield());const r=(c,f)=>{const z=document.getElementById(c);!z||(z.remove(),COArenderer.trigger(c,f))};pack.states.forEach(c=>{if(!c.i||c.removed||!c.coa||c.coa==="custom")return;const f=i||COA.getShield(c.culture,null);f!==c.coa.shield&&(c.coa.shield=f,r("stateCOA"+c.i,c.coa))}),pack.provinces.forEach(c=>{if(!c.i||c.removed||!c.coa||c.coa==="custom")return;const f=pack.cells.culture[c.center],z=i||COA.getShield(f,c.state);z!==c.coa.shield&&(c.coa.shield=z,r("provinceCOA"+c.i,c.coa))}),pack.burgs.forEach(c=>{if(!c.i||c.removed||!c.coa||c.coa==="custom")return;const f=i||COA.getShield(c.culture,c.state);f!==c.coa.shield&&(c.coa.shield=f,r("burgCOA"+c.i,c.coa))})}function Ua(e){regionsOutput.style.color=+e?null:"#b12117",burgLabels.select("#capitals").attr("data-size",Math.max(O(6-e/20),3)),labels.select("#countries").attr("data-size",Math.max(O(18-e/6),4))}function Wt(e){if(isNaN(+e)||+e<.5)return;const t=Na();+e>t&&(e=t),uiSizeInput.value=uiSizeOutput.value=e,document.getElementsByTagName("body")[0].style.fontSize=O(e*10,2)+"px",document.getElementById("options").style.width=e*300+"px"}function Na(){return O(Math.min(window.innerHeight/465,window.innerWidth/302),1)}function Ka(e){tooltip.style.fontSize=`calc(${e}px + 0.5vw)`}const qt="#997787";function nr(){localStorage.removeItem("themeColor"),kt(qt,transparencyInput.value)}function or(e){const{s:t,l:n}=d3.hsl(themeColorInput.value),i=d3.hsl(+e,t,n).hex();kt(i,transparencyInput.value)}function kt(e,t){transparencyInput.value=transparencyOutput.value=t;const n=(100-+t)/100,i=Math.min(n+.3,1),{h:r,s:c,l:f}=d3.hsl(e||qt);themeColorInput.value=e||qt,themeHueInput.value=r;const z=(A,u,C,g)=>d3.hsl(A,u,C,g).toString(),m=[{name:"--bg-main",h:r,s:c,l:f,alpha:n},{name:"--bg-lighter",h:r,s:c,l:f+.02,alpha:n},{name:"--bg-light",h:r,s:c-.02,l:f+.06,alpha:n},{name:"--light-solid",h:r,s:c+.01,l:f+.05,alpha:1},{name:"--dark-solid",h:r,s:c,l:f-.2,alpha:1},{name:"--header",h:r,s:c,l:f-.03,alpha:i},{name:"--header-active",h:r,s:c,l:f-.09,alpha:i},{name:"--bg-disabled",h:r,s:c-.04,l:f+.09,alphaReduced:i},{name:"--bg-dialogs",h:0,s:0,l:.98,alpha:n}],b=document.documentElement.style;m.forEach(({name:A,h:u,s:C,l:g,alpha:p})=>{b.setProperty(A,z(u,C,g,p))})}function ir(e){const t=Math.max(+ne("zoomExtentMin").value,.01),n=Math.min(+ne("zoomExtentMax").value,200);Zoom.scaleExtent([t,n]);const i=Ie(+e,.01,200);Zoom.scaleTo(svg,i)}function rr(){var f,z;(!ze("mapWidth")||!ze("mapHeight"))&&(mapWidthInput.value=window.innerWidth,mapHeightInput.value=window.innerHeight);const e=ze("template");if(e){const m=((f=heightmapTemplates[e])==null?void 0:f.name)||((z=precreatedHeightmaps[e])==null?void 0:z.name)||e;ft(ne("templateInput"),e,m)}ze("distanceUnit")&&ft(distanceUnitInput,ze("distanceUnit")),ze("heightUnit")&&ft(heightUnit,ze("heightUnit"));for(let m=0;m
+ All unsaved changes made to the current map will be lost`,$("#alert").dialog({resizable:!1,title:"Generate new map",buttons:{Cancel:function(){$(this).dialog("close")},Generate:function(){closeDialogs(),regenerateMap(e)}}})}function mr(){const e=document.getElementById("sharableLinkContainer");e.style.display="none",$("#saveMapData").dialog({title:"Save map",resizable:!1,width:"25em",position:{my:"center",at:"center",of:"svg"},buttons:{Close:function(){$(this).dialog("close")}}})}function fr(){document.getElementById("showLabels").checked=!hideLabels.checked,$("#exportMapData").dialog({title:"Export map data",resizable:!1,width:"26em",position:{my:"center",at:"center",of:"svg"},buttons:{Close:function(){$(this).dialog("close")}}})}async function yr(){if($("#loadMapData").dialog({title:"Load map",resizable:!1,width:"24em",position:{my:"center",at:"center",of:"svg"},buttons:{Close:function(){$(this).dialog("close")}}}),Cloud.providers.dropbox.api){document.getElementById("dropboxConnectButton").style.display="none",document.getElementById("loadFromDropboxSelect").style.display="block";const e=document.getElementById("loadFromDropboxButtons"),t=document.getElementById("loadFromDropboxSelect");t.innerHTML='';const n=await Cloud.providers.dropbox.list();if(!n){e.style.display="none",t.innerHTML='';return}e.style.display="block",t.innerHTML="",n.forEach(({name:i,updated:r,size:c,path:f})=>{const z=O(c/1024/1024,2)+" MB",b=`${new Date(r).toLocaleDateString()}: ${i} [${z}]`,A=new Option(b,f);t.options.add(A)});return}document.getElementById("dropboxConnectButton").style.display="inline-block",document.getElementById("loadFromDropboxButtons").style.display="none",document.getElementById("loadFromDropboxSelect").style.display="none"}document.getElementById("mapToLoad").addEventListener("change",function(){const e=this.files[0];this.value="",closeDialogs(),uploadMap(e)});viewMode.addEventListener("click",br);function br(e){const t=e.target;if(t.tagName!=="BUTTON")return;const n=t.classList.contains("pressed");Oa(),!n&&t.id!=="viewStandard"&&(viewStandard.classList.remove("pressed"),t.classList.add("pressed"),vr(t.id))}function Oa(){viewMode.querySelectorAll(".pressed").forEach(e=>e.classList.remove("pressed")),heightmap3DView.classList.remove("pressed"),viewStandard.classList.add("pressed"),document.getElementById("canvas3d")&&(ThreeD.stop(),document.getElementById("canvas3d").remove(),options3dUpdate.offsetParent&&$("#options3d").dialog("close"),preview3d.offsetParent&&$("#preview3d").dialog("close"))}async function vr(e){const t=document.createElement("canvas");t.id="canvas3d",t.dataset.type=e,e==="heightmap3DView"?(t.width=parseFloat(preview3d.style.width)||graphWidth/3,t.height=t.width/(graphWidth/graphHeight),t.style.display="block"):(t.width=svgWidth,t.height=svgHeight,t.style.position="absolute",t.style.display="none"),await ThreeD.create(t,e)&&(t.style.display="block",t.onmouseenter=()=>{const i="Left mouse to change angle, middle mouse / mousewheel to zoom, right mouse to pan. O to toggle options";+t.dataset.hovered>2?se(""):se(i),t.dataset.hovered=(+t.dataset.hovered|0)+1},e==="heightmap3DView"?(document.getElementById("preview3d").appendChild(t),$("#preview3d").dialog({title:"3D Preview",resizable:!0,position:{my:"left bottom",at:"left+10 bottom-20",of:"svg"},resizeStop:kr,close:Oa})):document.body.insertBefore(t,optionsContainer),wr())}function kr(){const e=document.getElementById("canvas3d");e.width=parseFloat(preview3d.style.width),e.height=parseFloat(preview3d.style.height)-2,ThreeD.redraw()}function wr(){if(options3dUpdate.offsetParent){$("#options3d").dialog("close");return}if($("#options3d").dialog({title:"3D mode settings",resizable:!1,width:"fit-content",position:{my:"right top",at:"right-30 top+10",of:"svg",collision:"fit"}}),e(),fmg.modules.options3d)return;fmg.modules.options3d=!0,document.getElementById("options3dUpdate").addEventListener("click",ThreeD.update),document.getElementById("options3dSave").addEventListener("click",ThreeD.saveScreenshot),document.getElementById("options3dOBJSave").addEventListener("click",ThreeD.saveOBJ),document.getElementById("options3dScaleRange").addEventListener("input",t),document.getElementById("options3dScaleNumber").addEventListener("change",t),document.getElementById("options3dLightnessRange").addEventListener("input",n),document.getElementById("options3dLightnessNumber").addEventListener("change",n),document.getElementById("options3dSunX").addEventListener("change",i),document.getElementById("options3dSunY").addEventListener("change",i),document.getElementById("options3dSunZ").addEventListener("change",i),document.getElementById("options3dMeshRotationRange").addEventListener("input",r),document.getElementById("options3dMeshRotationNumber").addEventListener("change",r),document.getElementById("options3dGlobeRotationRange").addEventListener("input",r),document.getElementById("options3dGlobeRotationNumber").addEventListener("change",r),document.getElementById("options3dMeshLabels3d").addEventListener("change",c),document.getElementById("options3dMeshSkyMode").addEventListener("change",f),document.getElementById("options3dMeshSky").addEventListener("input",z),document.getElementById("options3dMeshWater").addEventListener("input",z),document.getElementById("options3dGlobeResolution").addEventListener("change",m);function e(){const b=document.getElementById("canvas3d").dataset.type==="viewGlobe";options3dMesh.style.display=b?"none":"block",options3dGlobe.style.display=b?"block":"none",options3dScaleRange.value=options3dScaleNumber.value=ThreeD.options.scale,options3dLightnessRange.value=options3dLightnessNumber.value=ThreeD.options.lightness*100,options3dSunX.value=ThreeD.options.sun.x,options3dSunY.value=ThreeD.options.sun.y,options3dSunZ.value=ThreeD.options.sun.z,options3dMeshRotationRange.value=options3dMeshRotationNumber.value=ThreeD.options.rotateMesh,options3dGlobeRotationRange.value=options3dGlobeRotationNumber.value=ThreeD.options.rotateGlobe,options3dMeshLabels3d.value=ThreeD.options.labels3d,options3dMeshSkyMode.value=ThreeD.options.extendedWater,options3dColorSection.style.display=ThreeD.options.extendedWater?"block":"none",options3dMeshSky.value=ThreeD.options.skyColor,options3dMeshWater.value=ThreeD.options.waterColor,options3dGlobeResolution.value=ThreeD.options.resolution}function t(){options3dScaleRange.value=options3dScaleNumber.value=this.value,ThreeD.setScale(+this.value)}function n(){options3dLightnessRange.value=options3dLightnessNumber.value=this.value,ThreeD.setLightness(this.value/100)}function i(){const b=+options3dSunX.value,A=+options3dSunY.value,u=+options3dSunZ.value;ThreeD.setSun(b,A,u)}function r(){(this.nextElementSibling||this.previousElementSibling).value=this.value;const b=+this.value;ThreeD.setRotation(b)}function c(){ThreeD.toggleLabels()}function f(){const b=ThreeD.options.extendedWater;options3dColorSection.style.display=b?"none":"block",ThreeD.toggleSky()}function z(){ThreeD.setColors(options3dMeshSky.value,options3dMeshWater.value)}function m(){ThreeD.setResolution(this.value)}}function Sr(){const e=Yt(this.getAttribute("transform")),t=+e[0]-d3.event.x,n=+e[1]-d3.event.y,i=legend.node().getBBox();d3.event.on("drag",function(){const r=O((t+d3.event.x+i.width)/svgWidth*100,2),c=O((n+d3.event.y+i.height)/svgHeight*100,2),f=`translate(${t+d3.event.x},${n+d3.event.y})`;legend.attr("transform",f).attr("data-x",r).attr("data-y",c)})}function Ar(){legend.selectAll("*").remove(),legend.attr("data",null)}class Ga{constructor(){this.data=[]}create(t,n){const i=new t(n);return this.data.push(i),i}toString(){return this.data.map(t=>t.toString()).join("; ")}fromString(t){this.data=[];const n={Ruler:ja,Opisometer:zr,RouteOpisometer:xr,Planimeter:Cr},i=t.split("; ");for(const r of i){const[c,f]=r.split(": ");if(!c||!f)continue;const z=f.split(" ").map(m=>m.split(",").map(b=>+b));this.create(n[c],z)}}draw(){this.data.forEach(t=>t.draw())}undraw(){this.data.forEach(t=>t.undraw())}remove(t){if(t===void 0)return;const n=this.data.find(r=>r.id===t);n.undraw();const i=this.data.indexOf(n);rulers.data.splice(i,1)}}class Rt{constructor(t){this.points=t,this.id=rulers.data.length}toString(){return this.constructor.name+": "+this.points.join(" ")}getSize(){return O(1/scale**.3*2,2)}getDash(){return O(30/distanceScaleInput.value,2)}drag(){const t=Yt(this.getAttribute("transform")),n=+t[0]-d3.event.x,i=+t[1]-d3.event.y;d3.event.on("drag",function(){const r=`translate(${n+d3.event.x},${i+d3.event.y})`;this.setAttribute("transform",r)})}addPoint(t){const n=d3.event.sourceEvent.shiftKey?9:100,i=De(this.points);t=[t[0]|0,t[1]|0],!((i[0]-t[0])**2+(i[1]-t[1])**2
at ")}const Va=document.createElement("template");Va.innerHTML=`
+
+
+`;class jr extends HTMLElement{constructor(){super();oa(this,"tooltip");this.tooltip=this.dataset.tip||"Fill style. Click to change"}showTip(){se(this.tooltip)}connectedCallback(){var n,i,r;this.appendChild(Va.content.cloneNode(!0)),(n=this.querySelector("rect"))==null||n.setAttribute("fill",this.fill),(i=this.querySelector("svg"))==null||i.setAttribute("width",this.size),(r=this.querySelector("svg"))==null||r.setAttribute("height",this.size),this.addEventListener("mousemove",this.showTip)}disconnectedCallback(){this.removeEventListener("mousemove",this.showTip)}get fill(){return this.getAttribute("fill")||"#333"}set fill(n){var i;this.setAttribute("fill",n),(i=this.querySelector("rect"))==null||i.setAttribute("fill",n)}get size(){return this.getAttribute("size")||"1em"}}customElements.define("fill-box",jr);console.log("Hello World");Fr();const Ae=window.d3;window.fmg={modules:{}};options={pinNotes:!1,showMFCGMap:!0,winds:[225,45,225,315,135,315],stateLabelsMode:"auto"};populationRate=+ne("populationRateInput").value;distanceScale=+ne("distanceScaleInput").value;urbanization=+ne("urbanizationInput").value;urbanDensity=+ne("urbanDensityInput").value;statesNeutral=1;rr();rulers=new Ga;biomesData=Biomes.getDefault();nameBases=Names.getNameBases();graphWidth=+ne("mapWidthInput").value;graphHeight=+ne("mapHeightInput").value;svgWidth=graphWidth;svgHeight=graphHeight;defineSvg(graphWidth,graphHeight);scaleBar.on("mousemove",()=>se("Click to open Units Editor")).on("click",()=>editUnits());legend.on("mousemove",()=>se("Drag to change the position. Click to hide the legend")).on("click",()=>Ar());document.on("DOMContentLoaded",async()=>{if(location.hostname)Za(),await qr();else{const e="https://github.com/Azgaar/Fantasy-Map-Generator/wiki/Run-FMG-locally";alertMessage.innerHTML=`Fantasy Map Generator cannot run serverless. Follow the instructions on how you can
+ easily run a local web-server`,$("#alert").dialog({resizable:!1,title:"Loading error",width:"28em",position:{my:"center center-4em",at:"center",of:"svg"},buttons:{OK:function(){$(this).dialog("close")}}})}Wa()});function Za(){Ae.select("#loading").transition().duration(3e3).style("opacity",0),Ae.select("#optionsContainer").transition().duration(2e3).style("opacity",1),Ae.select("#tooltip").transition().duration(3e3).style("opacity",1)}function Wr(){Ae.select("#loading").transition().duration(200).style("opacity",1),Ae.select("#optionsContainer").transition().duration(100).style("opacity",0),Ae.select("#tooltip").transition().duration(200).style("opacity",0)}async function qr(){const t=new URL(window.location.href).searchParams;if(t.get("maplink")){console.warn("Load map from URL");const i=t.get("maplink");if(/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/.test(i)){setTimeout(()=>{loadMapFromURL(i,1)},1e3);return}else showUploadErrorMessage("Map link is not a valid URL",i)}if(t.get("seed")){console.warn("Generate map for seed"),await Kt();return}const n=()=>new Promise((i,r)=>{ldb.get("lastMap",c=>{if(c){console.warn("Load last saved map");try{uploadMap(c),i()}catch(f){r(f)}}else r("No map stored")})});if(onloadMap.value==="saved")try{await n()}catch(i){console.error(i),console.warn("Cannot load stored map, random map to be generated"),await Kt()}else console.warn("Generate random map"),await Kt()}async function Kt(){await Er(),await Ja(),Vr(),ao()}function Vr(){const t=new URL(window.location.href).searchParams;if(t.get("from")==="MFCG"&&document.referrer)if(t.get("seed").length===13){const f=t.get("seed").slice(-4);t.set("burg",f)}else{Zr(t);return}const i=t.get("scale"),r=t.get("cell"),c=t.get("burg");if(i||r||c){const f=+i||8;if(r){const b=+t.get("cell"),[A,u]=pack.cells.p[b];Zoom.to(A,u,f,1600);return}if(c){const b=isNaN(+c)?pack.burgs.find(C=>C.name===c):pack.burgs[+c];if(!b)return;const{x:A,y:u}=b;Zoom.to(A,u,f,1600);return}const z=+t.get("x")||graphWidth/2,m=+t.get("y")||graphHeight/2;Zoom.to(z,m,f,1600)}}function Zr(e){const{cells:t,burgs:n}=pack;if(pack.burgs.length<2){console.error("Cannot select a burg for MFCG");return}const i=+e.get("size"),r=+e.get("coast"),c=+e.get("port"),f=+e.get("river");let z=m(r,c,f);z.length||(z=m(r,!c,!f)),z.length||(z=m(!r,0,!f)),z.length||(z=[n[1]]);function m(p,B,k){return B&&k?n.filter(d=>d.port&&t.r[d.cell]):!B&&p&&k?n.filter(d=>!d.port&&t.t[d.cell]===1&&t.r[d.cell]):!p&&!k?n.filter(d=>t.t[d.cell]!==1&&!t.r[d.cell]):!p&&k?n.filter(d=>t.t[d.cell]!==1&&t.r[d.cell]):p&&k?n.filter(d=>t.t[d.cell]===1&&t.r[d.cell]):[]}const b=Ae.scan(z,(p,B)=>Math.abs(p.population-i)-Math.abs(B.population-i)),A=z[b].i;if(!A){console.error("Cannot select a burg for MFCG");return}const u=n[A],C=new URL(document.referrer);for(let p of C.searchParams)p[0]==="name"?u.name=p[1]:p[0]==="size"?u.population=+p[1]:p[0]==="seed"?u.MFCG=+p[1]:p[0]==="shantytown"?u.shanty=+p[1]:u[p[0]]=+p[1];e.get("name")&&e.get("name")!="null"&&(u.name=e.get("name"));const g=burgLabels.select("[data-id='"+A+"']");g.size()&&g.text(u.name).classed("drag",!0).on("mouseover",function(){Ae.select(this).classed("drag",!1),g.on("mouseover",null)}),Zoom.to(u.x,u.y,8,1600),wt(),se("Here stands the glorious city of "+u.name,!0,"success",15e3)}(function(){document.addEventListener("dragover",function(t){t.stopPropagation(),t.preventDefault(),ne("mapOverlay").style.display=null}),document.addEventListener("dragleave",function(t){ne("mapOverlay").style.display="none"}),document.addEventListener("drop",function(t){t.stopPropagation(),t.preventDefault();const n=ne("mapOverlay");if(n.style.display="none",t.dataTransfer.items==null||t.dataTransfer.items.length!==1)return;const i=t.dataTransfer.items[0].getAsFile();if(i.name.indexOf(".map")==-1){alertMessage.innerHTML="Please upload a .map file you have previously downloaded",$("#alert").dialog({resizable:!1,title:"Invalid file format",position:{my:"center",at:"center",of:"svg"},buttons:{Close:function(){$(this).dialog("close")}}});return}n.style.display=null,n.innerHTML="Uploading...",closeDialogs&&closeDialogs(),uploadMap(i,()=>{n.style.display="none",n.innerHTML="Drop a .map file to open"})})})();async function Ja(e){try{const t=performance.now(),{seed:n,graph:i}=e||{};wt(),Jr(n),Ft&&console.group("Generated Map "+seed),ji(),sr(),fn(grid)?grid=i||yn():delete grid.cells.h,grid.cells.h=await HeightmapGenerator.generate(grid),Yr(),Xr(),Qr(),$r(),OceanLayers(),_r(),window.mapCoordinates=es(),ts(),as(),ns(),os(),Rivers.generate(),Ca(),Lakes.defineGroup(),ss(),cs(),Cultures.generate(),Cultures.expand(),BurgsAndStates.generate(),Religions.generate(),BurgsAndStates.defineStateForms(),BurgsAndStates.generateProvinces(),BurgsAndStates.defineBurgFeatures(),Aa(),za(),BurgsAndStates.drawStateLabels(),Rivers.specify(),Lakes.generateName(),Military.generate(),Markers.generate(),us(),Br(scale),Names.getMapName(),dn&&console.warn(`TOTAL: ${O((performance.now()-t)/1e3,2)}s`),ds(),Ft&&console.groupEnd("Generated Map "+seed)}catch(t){console.error(t);const n=qa(t);ct(),alertMessage.innerHTML=`An error has occurred on map generation. Please retry.
If error is critical, clear the stored data and try again.
+
Are you sure you want to proceed?",$("#alert").dialog({resizable:!1,title:"Regenerate element",buttons:{Proceed:function(){ua(e,t),$(this).dialog("close")},Cancel:function(){$(this).dialog("close")}},open:function(){const i='';this.parentElement.querySelector(".ui-dialog-buttonpane").insertAdjacentHTML("afterbegin",i)},close:function(){const i=this.parentElement.querySelector(".checkbox");i!=null&&i.checked&&sessionStorage.setItem("regenerateFeatureDontAsk",!0),$(this).dialog("destroy")}})}t==="configRegenerateMarkers"&&Ds(),t==="addLabel"?Ls():t==="addBurgTool"?Rs():t==="addRiver"?Ts():t==="addRoute"?Hs():t==="addMarker"?Ns():t==="openSubmapMenu"?UISubmap.openSubmapMenu():t==="openResampleMenu"&&UISubmap.openResampleMenu()});function ua(e,t){t==="regenerateStateLabels"?(BurgsAndStates.drawStateLabels(),layerIsOn("toggleLabels")||toggleLabels()):t==="regenerateReliefIcons"?(ReliefIcons(),layerIsOn("toggleRelief")||toggleRelief()):t==="regenerateRoutes"?(Routes.regenerate(),layerIsOn("toggleRoutes")||toggleRoutes()):t==="regenerateRivers"?vs():t==="regeneratePopulation"?ks():t==="regenerateStates"?ws():t==="regenerateProvinces"?Ss():t==="regenerateBurgs"?As():t==="regenerateEmblems"?zs():t==="regenerateReligions"?xs():t==="regenerateCultures"?Cs():t==="regenerateMilitary"?Bs():t==="regenerateIce"?Ms():t==="regenerateMarkers"?_a():t==="regenerateZones"&&Es(e)}async function bs(){var i,r;let e,t,n;if((i=pack.states[1])!=null&&i.coa)e="state",t="stateCOA1",n=pack.states[1];else if((r=pack.burgs[1])!=null&&r.coa)e="burg",t="burgCOA1",n=pack.burgs[1];else{se("No emblems to edit, please generate states and burgs first",!1,"error");return}await COArenderer.trigger(t,n.coa),editEmblem(e,t,n)}function vs(){Rivers.generate(),Lakes.defineGroup(),Rivers.specify(),layerIsOn("toggleRivers")?drawRivers():toggleRivers()}function ks(){rankCells(),pack.burgs.forEach(e=>{if(!e.i||e.removed||e.lock)return;const t=e.cell;e.population=O(Math.max((pack.cells.s[t]+pack.cells.road[t]/2)/8+e.i/1e3+t%100/1e3,.1),3),e.capital&&(e.population=e.population*1.3),e.port&&(e.population=e.population*1.3),e.population=O(e.population*gauss(2,3,.6,20,3),3)})}function ws(){var m,b,A;const e=Jt();Math.random=aleaPRNG(e);const t=+regionsOutput.value,n=pack.burgs.filter(u=>u.i&&!u.removed);if(!n.length)return se("There are no any burgs to generate states. Please create burgs first",!1,"error");if(n.length
+ `,c=i.map(({type:z,icon:m,multiplier:b},A)=>{const u=`markerIconInput${A}`;return`Type
+ Icon
+ Multiplier
+ Number
+
+ `}),f=`
+
+
+
+
+
+ ${n.filter(C=>C.type===z).length}
+ ${r}${c.join("")}
`;alertMessage.innerHTML=f,alertMessage.querySelectorAll("i").forEach(z=>{z.addEventListener("click",function(){const m=this.previousElementSibling;selectIcon(m.value,b=>m.value=b)})})}const t=()=>{const n=alertMessage.querySelectorAll("tbody > tr"),i=Array.from(n).map(f=>{const z=f.querySelectorAll("input");return{type:z[0].value,icon:z[1].value,multiplier:parseFloat(z[2].value)}}),c=Markers.getConfig().map((f,z)=>{const{type:m,icon:b,multiplier:A}=i[z];return{...f,type:m,icon:b,multiplier:A}});Markers.setConfig(c)};$("#alert").dialog({resizable:!1,title:"Markers generation settings",position:{my:"left top",at:"left+10 top+10",of:"svg",collision:"fit"},buttons:{Regenerate:()=>{t(),_a(),e()},Close:function(){$(this).dialog("close")}},open:function(){const n=$(this).dialog("widget").find(".ui-dialog-buttonset > button");n[0].addEventListener("mousemove",()=>se("Apply changes and regenerate markers")),n[1].addEventListener("mousemove",()=>se("Close the window"))},close:function(){$(this).dialog("destroy")}})}function Fs(){$("#cellInfo").dialog({resizable:!1,width:"22em",title:"Cell Details",position:{my:"right top",at:"right-10 top+10",of:"svg",collision:"fit"}})}async function Os(){(await St(()=>import("./charts-overview.js_v_1.87.711ec26c.js"),[])).open()}window.ThreeD=function(){const e={scale:50,lightness:.7,shadow:.5,sun:{x:100,y:600,z:1e3},rotateMesh:0,rotateGlobe:.5,skyColor:"#9ecef5",waterColor:"#466eab",extendedWater:0,labels3d:0,resolution:2};let t,n,i,r,c,f,z,m,b,A,u,C,g,p,B,k=[],d=[],s=[];const o=document.createElement("canvas").getContext("2d"),l=async function(_,oe="viewMesh"){return e.isOn=!0,e.isGlobe=oe==="viewGlobe",e.isGlobe?le(_):G(_)},a=function(){Z(),n.remove(b),t.setSize(t.domElement.width,t.domElement.height),e.isGlobe?Y():te(graphWidth,graphHeight,grid.cellsX,grid.cellsY),pe()},w=function(){e.isGlobe?Y():ee()},S=function(){cancelAnimationFrame(c),z.dispose(),m.dispose(),f.dispose(),C&&C.dispose(),g&&g.dispose(),Z(),t.renderLists.dispose(),t.dispose(),n.remove(b),n.remove(u),n.remove(A),n.remove(p),t=void 0,n=void 0,r=void 0,i=void 0,f=void 0,z=void 0,m=void 0,b=void 0,ThreeD.options.isOn=!1},h=function(_){e.scale=_,m.vertices.forEach((oe,ce)=>oe.z=q(ce)),m.verticesNeedUpdate=!0,m.computeVertexNormals(),m.verticesNeedUpdate=!1,a()},v=function(_){e.lightness=_,A.intensity=_,pe()},E=function(_,oe,ce){e.sun={x:_,y:oe,z:ce},u.position.set(_,oe,ce),pe()},P=function(_){e.isGlobe?e.rotateGlobe=_:e.rotateMesh=_,r.autoRotateSpeed=_;const oe=!r.autoRotate&&Boolean(_),ce=r.autoRotate&&!Boolean(_);r.autoRotate=Boolean(_),oe&&ke(),ce&&cancelAnimationFrame(c)},T=function(){e.extendedWater?(n.background=null,n.fog=null,n.remove(p)):X(graphWidth,graphHeight),e.extendedWater=!e.extendedWater,a()},R=function(){e.labels3d=!e.labels3d,e.labels3d?j().then(()=>w()):(Z(),w())},L=function(_,oe){e.skyColor=_,n.background=n.fog.color=new THREE.Color(_),e.waterColor=oe,g.color=new THREE.Color(oe),pe()},M=function(_){e.resolution=_,w()},I=async function(){const _=t.domElement.toDataURL("image/jpeg"),oe=document.createElement("a");oe.download=getFileName()+".jpeg",oe.href=_,oe.click(),se('Screenshot is saved. Open "Downloads" screen (CTRL + J) to check',!0,"success",7e3),window.setTimeout(()=>window.URL.revokeObjectURL(_),5e3)},H=async function(){downloadFile(await W(),getFileName()+".obj","text/plain;charset=UTF-8")};async function G(_){return await He()?(n=new THREE.Scene,A=new THREE.AmbientLight(13421772,e.lightness),n.add(A),u=new THREE.SpotLight(13421772,.8,2e3,.8,0,0),u.position.set(e.sun.x,e.sun.y,e.sun.z),u.castShadow=!0,n.add(u),t=new THREE.WebGLRenderer({canvas:_,antialias:!0,preserveDrawingBuffer:!0}),t.setSize(_.width,_.height),t.shadowMap.enabled=!0,e.extendedWater&&X(graphWidth,graphHeight),te(graphWidth,graphHeight,grid.cellsX,grid.cellsY),i=new THREE.PerspectiveCamera(70,_.width/_.height,.1,2e3),i.position.set(0,O(svgWidth/3.5),500),r=await Be(i,_),r.enableKeys=!1,r.minDistance=10,r.maxDistance=1e3,r.maxPolarAngle=Math.PI/2,r.autoRotate=Boolean(e.rotateMesh),r.autoRotateSpeed=e.rotateMesh,r.autoRotate&&ke(),r.addEventListener("change",pe),!0):(se("Cannot load 3d library",!1,"error",4e3),!1)}function D(_,oe,ce){const ye=new THREE.TextureLoader().load(_);ye.anisotropy=t.getMaxAnisotropy();const Se=new THREE.SpriteMaterial({map:ye}),ve=new THREE.Sprite(Se);return ve.scale.set(oe,ce,1),ve.renderOrder=1,ve}async function U({text:_,font:oe,size:ce,color:ye,quality:Se}){return o.font=`${ce*Se}px ${oe}`,o.canvas.width=o.measureText(_).width,o.canvas.height=ce*Se*1.25,o.clearRect(0,0,o.canvas.width,o.canvas.height),o.font=`${ce*Se}px ${oe}`,o.fillStyle=ye,o.fillText(_,0,ce*Se),D(o.canvas.toDataURL(),o.canvas.width/Se,o.canvas.height/Se)}function F(_,oe){const ce=_-graphWidth/2,ye=oe-graphHeight/2;B.ray.origin.x=ce,B.ray.origin.z=ye;const Se=B.intersectObject(b)[0].point.y;return[ce,Se,ye]}async function j(){var nt;B=new THREE.Raycaster,B.set(new THREE.Vector3(0,1e3,0),new THREE.Vector3(0,-1,0));const _=viewbox.select("#labels #states"),oe=burgLabels.select("#cities"),ce=burgLabels.select("#towns");burgIcons.select("#cities"),burgIcons.select("#towns");const ye={font:_.attr("font-family"),size:+_.attr("data-size"),color:_.attr("fill"),elevation:20,quality:20},Se={font:oe.attr("font-family"),size:+oe.attr("data-size"),color:oe.attr("fill"),elevation:10,quality:20,iconSize:1,iconColor:"#666",line:10-oe.attr("data-size")/2},ve={font:ce.attr("font-family"),size:+ce.attr("data-size"),color:ce.attr("fill"),elevation:5,quality:30,iconSize:.5,iconColor:"#666",line:5-ce.attr("data-size")/2},Ue=new THREE.MeshPhongMaterial({color:Se.iconColor}),Ve=new THREE.MeshPhongMaterial({color:ve.iconColor}),Oe=new THREE.CylinderGeometry(Se.iconSize*2,Se.iconSize*2,Se.iconSize,16,1),$e=new THREE.CylinderGeometry(ve.iconSize*2,ve.iconSize*2,ve.iconSize,16,1),rt=new THREE.LineBasicMaterial({color:Se.iconColor});for(let _e=1;_e
You may retry after clearing stored data or contact us at discord.
+