Browse Source

favicon changes dynamically, added new country_code variable, js now resides in bc.js, index.py only exports html, merge with previous

pull/3/head
rscmbbng 11 years ago
parent
commit
909c3d0a59
  1. 8
      main.py
  2. 132
      web/index.py
  3. 70
      web/js/bc.js
  4. 20
      web/js/favicon.js
  5. BIN
      web/js/world/.DS_Store
  6. BIN
      web/js/world/ad.png
  7. BIN
      web/js/world/ae.png
  8. BIN
      web/js/world/af.png
  9. BIN
      web/js/world/ag.png
  10. BIN
      web/js/world/ai.png
  11. BIN
      web/js/world/al.png
  12. BIN
      web/js/world/am.png
  13. BIN
      web/js/world/an.png
  14. BIN
      web/js/world/ao.png
  15. BIN
      web/js/world/aq.png
  16. BIN
      web/js/world/ar.png
  17. BIN
      web/js/world/as.png
  18. BIN
      web/js/world/at.png
  19. BIN
      web/js/world/au.png
  20. BIN
      web/js/world/aw.png
  21. BIN
      web/js/world/ax.png
  22. BIN
      web/js/world/az.png
  23. BIN
      web/js/world/ba.png
  24. BIN
      web/js/world/bb.png
  25. BIN
      web/js/world/bd.png
  26. BIN
      web/js/world/be.png
  27. BIN
      web/js/world/bf.png
  28. BIN
      web/js/world/bg.png
  29. BIN
      web/js/world/bh.png
  30. BIN
      web/js/world/bi.png
  31. BIN
      web/js/world/bj.png
  32. BIN
      web/js/world/bl.loc.png
  33. BIN
      web/js/world/bl.png
  34. BIN
      web/js/world/bm.png
  35. BIN
      web/js/world/bn.png
  36. BIN
      web/js/world/bo.png
  37. BIN
      web/js/world/br.png
  38. BIN
      web/js/world/bs.png
  39. BIN
      web/js/world/bt.png
  40. BIN
      web/js/world/bv.png
  41. BIN
      web/js/world/bw.png
  42. BIN
      web/js/world/by.png
  43. BIN
      web/js/world/bz.png
  44. BIN
      web/js/world/ca.png
  45. BIN
      web/js/world/cc.png
  46. BIN
      web/js/world/cd.png
  47. BIN
      web/js/world/cf.png
  48. BIN
      web/js/world/cg.png
  49. BIN
      web/js/world/ch.png
  50. BIN
      web/js/world/ci.png
  51. BIN
      web/js/world/ck.png
  52. BIN
      web/js/world/cl.png
  53. BIN
      web/js/world/cm.png
  54. BIN
      web/js/world/cn.png
  55. BIN
      web/js/world/co.png
  56. BIN
      web/js/world/cr.png
  57. BIN
      web/js/world/cs.png
  58. BIN
      web/js/world/cu.png
  59. BIN
      web/js/world/cv.png
  60. BIN
      web/js/world/cx.png
  61. BIN
      web/js/world/cy.png
  62. BIN
      web/js/world/cz.png
  63. BIN
      web/js/world/de.png
  64. BIN
      web/js/world/dj.png
  65. BIN
      web/js/world/dk.png
  66. BIN
      web/js/world/dm.png
  67. BIN
      web/js/world/do.png
  68. BIN
      web/js/world/dz.png
  69. BIN
      web/js/world/ec.png
  70. BIN
      web/js/world/ee.png
  71. BIN
      web/js/world/eg.png
  72. BIN
      web/js/world/eh.png
  73. BIN
      web/js/world/er.png
  74. BIN
      web/js/world/es.png
  75. BIN
      web/js/world/et.png
  76. BIN
      web/js/world/eu.png
  77. BIN
      web/js/world/fi.png
  78. BIN
      web/js/world/fj.png
  79. BIN
      web/js/world/fk.png
  80. BIN
      web/js/world/fm.png
  81. BIN
      web/js/world/fo.png
  82. BIN
      web/js/world/fr.png
  83. BIN
      web/js/world/fx.png
  84. BIN
      web/js/world/ga.png
  85. BIN
      web/js/world/gb.png
  86. BIN
      web/js/world/gd.png
  87. BIN
      web/js/world/ge.png
  88. BIN
      web/js/world/gf.png
  89. BIN
      web/js/world/gg.png
  90. BIN
      web/js/world/gh.png
  91. BIN
      web/js/world/gi.png
  92. BIN
      web/js/world/gl.png
  93. BIN
      web/js/world/gm.png
  94. BIN
      web/js/world/gn.png
  95. BIN
      web/js/world/gp.loc1.png
  96. BIN
      web/js/world/gp.loc2.png
  97. BIN
      web/js/world/gp.png
  98. BIN
      web/js/world/gq.png
  99. BIN
      web/js/world/gr.png
  100. BIN
      web/js/world/gs.png

8
main.py

@ -53,7 +53,7 @@ class bc(object):
self.old_url = "" # the before last url from the history file self.old_url = "" # the before last url from the history file
self.destination_ip = "" #the ip adress of self.url self.destination_ip = "" #the ip adress of self.url
self.hop_ip = "" #the ip of the servers/router on a hop self.hop_ip = "" #the ip of the servers/router on a hop
self.timestamp = "" #the time it took to go to a hop in miliseconds. self.timestamp = "1" #the time it took to go to a hop in miliseconds.
# these variables are all the result of Maxmind DB lookups # these variables are all the result of Maxmind DB lookups
self.longitude = "" # the lat/long that corresponds the an ip as per Maxmind DB self.longitude = "" # the lat/long that corresponds the an ip as per Maxmind DB
@ -363,17 +363,19 @@ class bc(object):
self.city = city self.city = city
self.country = country self.country = country
self.server_name = self.hop_host_name self.server_name = self.hop_host_name
cc = record['country_code'].lower()
elif record.has_key('country_name'): elif record.has_key('country_name'):
country = record['country_name'] country = record['country_name']
print "Trace:", self.hop_count, "->", ip, "->", longitude + ":" + latitude, "->", country, "->", self.hop_host_name, "->", self.asn, '->', self.timestamp+'ms' print "Trace:", self.hop_count, "->", ip, "->", longitude + ":" + latitude, "->", country, "->", self.hop_host_name, "->", self.asn, '->', self.timestamp+'ms'
self.country = country self.country = country
self.city = '-' self.city = '-'
self.server_name = self.hop_host_name self.server_name = self.hop_host_name
cc = record['country_code'].lower()
#self.hop_count+=1 #self.hop_count+=1
self.vardict = {'url': self.url, 'destination_ip': self.destination_ip, 'hop_count': self.hop_count,'hop_ip': self.hop_ip, 'server_name': self.server_name, 'country': self.country, 'city': self.city, 'longitude': self.longitude, 'latitude': self.latitude, 'asn' : self.asn, 'timestamp' : self.timestamp } self.vardict = {'url': self.url, 'destination_ip': self.destination_ip, 'hop_count': self.hop_count,'hop_ip': self.hop_ip, 'server_name': self.server_name, 'country': self.country, 'city': self.city, 'longitude': self.longitude, 'latitude': self.latitude, 'asn' : self.asn, 'timestamp' : self.timestamp, 'country_code': cc }
except: except:
print "Trace:", self.hop_count, "->", "Not allowed" print "Trace:", self.hop_count, "->", "Not allowed"
self.vardict = {'url': self.url, 'destination_ip': self.destination_ip, 'hop_count': self.hop_count,'hop_ip': self.hop_ip, 'server_name': self.server_name, 'country': '-', 'city': '-', 'longitude': '-', 'latitude': '-', 'asn' : self.asn, 'timestamp' : self.timestamp } self.vardict = {'url': self.url, 'destination_ip': self.destination_ip, 'hop_count': self.hop_count,'hop_ip': self.hop_ip, 'server_name': self.server_name, 'country': '-', 'city': '-', 'longitude': '-', 'latitude': '-', 'asn' : self.asn, 'timestamp' : self.timestamp, 'country_code': '-' }
self.hop_count+=1 self.hop_count+=1
# write xml data to file # write xml data to file

132
web/index.py

@ -6,8 +6,8 @@ GPLv3 - 2013 by psy (epsylon@riseup.net)
""" """
from xml.dom.minidom import parseString from xml.dom.minidom import parseString
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
# extract data from a xml file
# extract data from a xml file # try:
f = open('data.xml', 'r') f = open('data.xml', 'r')
f2 = open('data.xml', 'r') f2 = open('data.xml', 'r')
xml = ET.parse(f) xml = ET.parse(f)
@ -24,6 +24,7 @@ asn_list =[]
server_name_list = [] server_name_list = []
timestamp_list = [] timestamp_list = []
last_hop = int(xml.findall('hop')[-1].text) last_hop = int(xml.findall('hop')[-1].text)
country_code_list = []
for counter in range(1, last_hop+1): for counter in range(1, last_hop+1):
url = xml.getroot().text url = xml.getroot().text
@ -35,6 +36,7 @@ for counter in range(1, last_hop+1):
longitude = hop_element.getElementsByTagName('longitude')[0].toxml().replace('<longitude>','').replace('</longitude>','') longitude = hop_element.getElementsByTagName('longitude')[0].toxml().replace('<longitude>','').replace('</longitude>','')
latitude = hop_element.getElementsByTagName('latitude')[0].toxml().replace('<latitude>','').replace('</latitude>','') latitude = hop_element.getElementsByTagName('latitude')[0].toxml().replace('<latitude>','').replace('</latitude>','')
timestamp = hop_element.getElementsByTagName('timestamp')[0].toxml().replace('<timestamp>','').replace('</timestamp>','') timestamp = hop_element.getElementsByTagName('timestamp')[0].toxml().replace('<timestamp>','').replace('</timestamp>','')
country_code = hop_element.getElementsByTagName('country_code')[0].toxml().replace('<country_code>','').replace('</country_code>','')
latlong = [float(latitude.encode('utf-8')), float(longitude.encode('utf-8'))] latlong = [float(latitude.encode('utf-8')), float(longitude.encode('utf-8'))]
geoarray.append(latlong) geoarray.append(latlong)
@ -43,113 +45,55 @@ for counter in range(1, last_hop+1):
hop_ip_list.append(hop_ip.encode('utf-8')) hop_ip_list.append(hop_ip.encode('utf-8'))
server_name_list.append(server_name.encode('utf-8')) server_name_list.append(server_name.encode('utf-8'))
timestamp_list.append(float(timestamp)) timestamp_list.append(float(timestamp))
country_code_list.append(country_code.encode('utf-8'))
f = open('kaart.html', 'w') #f = open('kaart.html', 'w')
#the html
output = """ output = """
<html> <html>
<head> <head>
<title>Border Check - Web Visualizor</title> <title>Border Check - Web Visualizor</title>
<link rel="stylesheet" href="js/leaflet/leaflet.css" /> <link rel="stylesheet" href="js/leaflet/leaflet.css" />
<link rel="stylesheet" href="style.css" /> <link rel="stylesheet" href="style.css" />
<script src="js/leaflet/leaflet.js"></script> <script src="js/leaflet/leaflet.js"></script>
<script src= "js/rlayer-modified.min.js"></script> <script src="js/rlayer-modified.min.js"></script>
<script src= "js/raphael.js"></script> <script src="js/raphael.js"></script>
<script src="js/jquery-1.10.2.min.js"></script> <script src="js/jquery-1.10.2.min.js"></script>
<script type="text/javascript"> <script src="js/bc.js"></script>
<script src="js/favicon.js"></script>
<script type="text/javascript">
$(document).ready (function(){ $(document).ready (function(){
var h = $(window).innerHeight(); var h = $(window).innerHeight();
var w = $(window).innerWidth(); var w = $(window).innerWidth();
$("#wrapper").css({ $("#wrapper").css({
"width": w, "height": h "width": w, "height": h
}) })
}) })
//$(document).ready( fullScreen())
//$(window).resize( fullScreen())
</script> </script>
</head> </head>
<body> <body>
<div id="wrapper"> <div id="wrapper">
<div id="header">"""+url+"""</div> <div id="header">"""+url+"""</div>
<div id="map" style="width: 100%; height: 100%"></div> <div id="map" style="width: 100%; height: 100%"></div>
<div id="bar"><button id='button'><</button></div> <div id="bar"><button id='button'><</button></div>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
window.onload = function () { hop_list = """+str(hop_list)+"""
var map = L.map('map',{ hop_ip_list = """+str(hop_ip_list)+"""
minZoom: 2, counter_max = """+str(last_hop)+"""
maxZoom:5, latlong = """+str(geoarray)+"""
asn_list = """+str(asn_list)+"""
}).setView(["""+latitude+""", """+longitude+"""], 3);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
$('#button').bind('click', function(){
$('#bar').animate({"width": '200'})
var info = $("<div id = info><p>this is where info goes</p><p>I will make a 'slide back' option later</p></div>")
.appendTo("#bar")
console.log('click')
})
var hop_list = """+str(hop_list)+"""
var hop_ip_list = """+str(hop_ip_list)+"""
var counter_max = """+str(last_hop)+"""
var latlong = """+str(geoarray)+"""
var asn_list = """+str(asn_list)+"""
server_name_list = """+str(server_name_list)+""" server_name_list = """+str(server_name_list)+"""
timestamp_list = """+str(timestamp_list)+""" timestamp_list = """+str(timestamp_list)+"""
//var polyline = L.polyline(latlong, {color: 'red'}).addTo(map); country_code_list = """+str(country_code_list)+"""
</script>
index = 0
AddStep(latlong[index], latlong[index+1], index)
function AddMarker(src, index){
var marker = L.marker([src[0], src[1]]).bindPopup(
"Hop: <b>"+hop_list[index]+"</b><br />"+server_name_list[index]+"<br />"+asn_list[index]
);
marker.addTo(map).openPopup()
}
function AddStep(src, dest, index){
var b = new R.BezierAnim([src, dest], {})
map.addLayer(b)
AddMarker(src, index)
processStep(index)
}
function processStep (index) {
map.panTo(latlong[index]);
if (index < counter_max-2) {
console.log('hop#', hop_list[index])
window.setTimeout(function () {
AddStep(latlong[index], latlong[index+1], index)
}, 500);}
//in the wait function we can add the ms of the actual traceroute to get the (de)acceleration of the real thing
else
if (index < counter_max-1){
console.log('hop#', hop_list[index])
window.setTimeout(function () {
AddStep(latlong[index], latlong[index], index)
}, 500);}
else
if (index = counter_max-1){
console.log('fin')
}
index = index + 1
}
};
</script>
</html> </html>
""" """
f.write(output) #f.write(output)
f.close #f.close
# except:
# output = """
# <html> loading </html>
# """

70
web/js/bc.js

@ -0,0 +1,70 @@
window.onload = function () {
var map = L.map('map',{
minZoom: 2,
maxZoom:5,
}).setView([38.0, -97.0], 3);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
//the slider bar
$('#button').bind('click', function(){
$('#bar').animate({"width": '200'})
var info = $("<div id = info><p>this is where info goes</p><p>I will make a 'slide back' option later</p></div>")
.appendTo("#bar")
console.log('click')
})
//function chain for drawing the markers and lines on the map.
index = 0
delay = (400+timestamp_list[index])
AddStep(latlong[index], latlong[index+1], index)
function AddMarker(src, index){
var marker = L.marker([src[0], src[1]]).bindPopup(
"<p>Hop no:"+hop_list[index]+"<br /><a>show metadata</a></p><p id=metadata'>Server name:<br />"+server_name_list[index]+"<br />Network owner:<br />"+asn_list[index]+"</p>"
);
marker.addTo(map).openPopup()
}
function AddStep(src, dest, index){
var b = new R.BezierAnim([src, dest], {})
map.addLayer(b)
AddMarker(src, index)
processStep(index)
//console.log(delay)
}
function processStep (index) {
map.panTo(latlong[index]);
if (index < counter_max-2) {
//console.log('hop#', hop_list[index])
changeFavicon('js/world/'+country_code_list[index]+'.png')
window.setTimeout(function () {
AddStep(latlong[index], latlong[index+1], index)
}, delay);}
else
if (index < counter_max-1){
//console.log('hop#', hop_list[index])
changeFavicon('js/world/'+country_code_list[index]+'.png')
window.setTimeout(function () {
AddStep(latlong[index], latlong[index], index)
}, delay);}
else
if (index = counter_max-1){
changeFavicon('js/world/'+country_code_list[index]+'.png')
//console.log('fin')
//map.fitBounds([bounds])
}
index = index + 1
delay = (400 + timestamp_list[index])
}
};

20
web/js/favicon.js

@ -0,0 +1,20 @@
/*!
* Dynamically changing favicons with JavaScript
* Works in all A-grade browsers except Safari and Internet Explorer
* Demo: http://mathiasbynens.be/demo/dynamic-favicons
*/
// HTML5™, baby! http://mathiasbynens.be/notes/document-head
document.head = document.head || document.getElementsByTagName('head')[0];
function changeFavicon(src) {
var link = document.createElement('link'),
oldLink = document.getElementById('dynamic-favicon');
link.id = 'dynamic-favicon';
link.rel = 'shortcut icon';
link.href = src;
if (oldLink) {
document.head.removeChild(oldLink);
}
document.head.appendChild(link);
}

BIN
web/js/world/.DS_Store

Binary file not shown.

BIN
web/js/world/ad.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

BIN
web/js/world/ae.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 518 B

BIN
web/js/world/af.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 B

BIN
web/js/world/ag.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 880 B

BIN
web/js/world/ai.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 862 B

BIN
web/js/world/al.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 770 B

BIN
web/js/world/am.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

BIN
web/js/world/an.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

BIN
web/js/world/ao.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 B

BIN
web/js/world/aq.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 836 B

BIN
web/js/world/ar.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 B

BIN
web/js/world/as.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 806 B

BIN
web/js/world/at.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 B

BIN
web/js/world/au.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

BIN
web/js/world/aw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

BIN
web/js/world/ax.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 B

BIN
web/js/world/az.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 834 B

BIN
web/js/world/ba.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 B

BIN
web/js/world/bb.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 B

BIN
web/js/world/bd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 817 B

BIN
web/js/world/be.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 B

BIN
web/js/world/bf.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 B

BIN
web/js/world/bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

BIN
web/js/world/bh.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

BIN
web/js/world/bi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 837 B

BIN
web/js/world/bj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 B

BIN
web/js/world/bl.loc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 B

BIN
web/js/world/bl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 885 B

BIN
web/js/world/bm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 773 B

BIN
web/js/world/bn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 B

BIN
web/js/world/bo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 B

BIN
web/js/world/br.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 801 B

BIN
web/js/world/bs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

BIN
web/js/world/bt.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 929 B

BIN
web/js/world/bv.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 819 B

BIN
web/js/world/bw.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B

BIN
web/js/world/by.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 567 B

BIN
web/js/world/bz.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 841 B

BIN
web/js/world/ca.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

BIN
web/js/world/cc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 B

BIN
web/js/world/cd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 933 B

BIN
web/js/world/cf.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 764 B

BIN
web/js/world/cg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

BIN
web/js/world/ch.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

BIN
web/js/world/ci.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B

BIN
web/js/world/ck.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

BIN
web/js/world/cl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 B

BIN
web/js/world/cm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 659 B

BIN
web/js/world/cn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 523 B

BIN
web/js/world/co.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

BIN
web/js/world/cr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

BIN
web/js/world/cs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 B

BIN
web/js/world/cu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
web/js/world/cv.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 734 B

BIN
web/js/world/cx.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 B

BIN
web/js/world/cy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 B

BIN
web/js/world/cz.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

BIN
web/js/world/de.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

BIN
web/js/world/dj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

BIN
web/js/world/dk.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 625 B

BIN
web/js/world/dm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 882 B

BIN
web/js/world/do.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 771 B

BIN
web/js/world/dz.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 909 B

BIN
web/js/world/ec.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

BIN
web/js/world/ee.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 B

BIN
web/js/world/eg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 B

BIN
web/js/world/eh.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 B

BIN
web/js/world/er.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 B

BIN
web/js/world/es.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

BIN
web/js/world/et.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 B

BIN
web/js/world/eu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

BIN
web/js/world/fi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 B

BIN
web/js/world/fj.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 974 B

BIN
web/js/world/fk.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 730 B

BIN
web/js/world/fm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 800 B

BIN
web/js/world/fo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 B

BIN
web/js/world/fr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

BIN
web/js/world/fx.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

BIN
web/js/world/ga.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

BIN
web/js/world/gb.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 980 B

BIN
web/js/world/gd.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

BIN
web/js/world/ge.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 693 B

BIN
web/js/world/gf.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

BIN
web/js/world/gg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 B

BIN
web/js/world/gh.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

BIN
web/js/world/gi.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

BIN
web/js/world/gl.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 B

BIN
web/js/world/gm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

BIN
web/js/world/gn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

BIN
web/js/world/gp.loc1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 707 B

BIN
web/js/world/gp.loc2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 B

BIN
web/js/world/gp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

BIN
web/js/world/gq.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 B

BIN
web/js/world/gr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 744 B

BIN
web/js/world/gs.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 B

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save