WoTStatScript

More info for World of Tanks profile page. Updated for the new style.

As of 2016-07-09. See the latest version.

// ==UserScript==
// @name        WoTStatScript
// @version     0.9.15.1.5
// @description More info for World of Tanks profile page. Updated for the new style.
// @author      Orrie
// @namespace   http://forum.worldoftanks.eu/index.php?/topic/263423-
// @icon        https://dl.dropboxusercontent.com/u/12497046/wot/projects/statscript/img/icon.png
// @include     http*://worldoftanks.eu/*/accounts/*/*
// @include     http*://worldoftanks.ru/*/accounts/*/*
// @include     http*://worldoftanks.com/*/accounts/*/*
// @include     http*://worldoftanks.asia/*/accounts/*/*
// @include     http*://worldoftanks.kr/*/accounts/*/*
// @grant       GM_xmlhttpRequest
// @connect     www.wnefficiency.net
// @connect     jaj22.org.uk
// @connect     api.worldoftanks.eu
// @connect     api.worldoftanks.ru
// @connect     api.worldoftanks.com
// @connect     api.worldoftanks.asia
// @connect     api.worldoftanks.kr
// @connect     clanapi-wotcs-eu.herokuapp.com
// @license     MIT License
// ==/UserScript==
(function() {
	// global vars
	var d = document, c = d.cookie, n = navigator, fragment = d.createDocumentFragment();

	// get server info and webpage
	var wg = {host:d.location.host, href:d.location.href, clan:{}};
	wg.srv = wg.host.match(/\.(eu|ru|com|asia|kr)/)[1].replace(/com/,"na");

	// getting userinfo and checking if own profile
	var profileName_header = d.getElementById('js-profile-name');
	wg.name = profileName_header.innerHTML;
	wg.id = wg.href.match(/\/(\d+)/)[1];
	wg.login = (c.match(/user_name=(\w+)/) || false)[1];
	wg.own = wg.login == wg.name;

	// script variables
	var sc = {
		vers: ((GM_info) ? GM_info.script.version : ""),
		host: "http://greasyfork.org/scripts/661-wotstatscript",
		user: {
			wl: "http://forum.wotlabs.net/index.php?/user/1618-orrie/",
			wot: "http://worldoftanks.eu/community/accounts/505838943-Orrie/"
		},
		top: {
			eu: "http://forum.worldoftanks.eu/index.php?showtopic=263423",
			na: "http://forum.worldoftanks.com/index.php?showtopic=404652"
		},
		cred: { // translators
			cs: "<tr><td><a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/500744969/'>Crabtr33</a></td><td><a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/508323506/'>Ragnarocek</a></td></tr><tr><td><a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/508904714/'>jViks</a></td></tr>" ,
			de: "<tr><td><a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/504873051/'>ArtiOpa</a></td><td><a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/501118529/'>Crakker</a></td></tr><tr><td><a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/501072645/'>multimill</a></td><td><a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/500373105/'>coolathlon</a></td></tr>",
			fr: "<tr><td><a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/506641783/'>SuperPommeDeTerre</a></td></tr>",
			pl: "<tr><td><a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/501801562/'>KeluMocy</a></td><td><a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/504412736/'>pokapokami</a></td></tr>",
			es: "<tr><td><a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/512759883/'>Frodo45127</a></td></tr>",
			tr: "<tr><td><a class='b-orange-arrow' href='http://worldoftanks.eu/community/accounts/500400806/'>Ufuko</a></td></tr>",
			ru: "<tr><td><a class='b-orange-arrow' href='http://worldoftanks.ru/community/accounts/291063/'>Bananium</a></td><td><a class='b-orange-arrow' href='http://worldoftanks.ru/community/accounts/147060/'>Minamoto</a></td></tr>"
		},
		api: {
			ru: "98ca7c4fb108175b67d6505b9c3f3ebd",
			eu: "a7595640a90bf2d19065f3f2683b171c",
			na: "bf5dba0efd444d75147b6222dd903fd2",
			asia: "95f8713eccd322e52dbf521dbd28b19c",
			kr: "ffea0f1c3c5f770db09357d94fe6abfb"
		},
		srv: {
			wl: false,   // wotlabs
			nm: false,   // noobmeter
			vb: false,   // vbaddict
			ws: false,   // wotstats
			cs: false,   // wotcs
			wlf: false,  // wot-life
			ct: false,   // clan tools
			aos: false,  // age of strife
			kttc: false, // kttc
			wots: false, // wots
			ch: false,   // clan history
			wr: false,   // wotreplays
			we: false    // wot event stats
		},
		stat: {
			wn8: "http://www.wnefficiency.net/exp/expected_tank_values_latest.json",
			wn9: "http://jaj22.org.uk/tankdata/exp_wn9.json"
		},
		nm: {
			id: "orrie_js_174043" // noobmeter api id
		},
		loc: {
			cur: [c.match(/hllang=(\w+)/)[1], wg.href.match(/\.\w+\/([\w-]+)\//)[1]],
			sup: ["en", "ru", "cs", "de", "fr", "pl", "es", "tr"],
			miss: 0
		},
		date: {
			raw: new Date(),
			now: Date.now(),
			format: {ru: "ru-RU", eu: "en-GB", na: "en-US", asia: "en-AU", kr: "ko-KR"}
		},
		col: {
			//      col        wr  lr  bat    sr  hr  dmg  wgr   wn9   wn8   wn7   eff   nm
			sUni: [ "#5A3175", 65, 35, 30000, 50, 80, 270, 9900, 1000, 2900, 2050, 2050, 2000 ], // 99.99% super unicum
			uni:  [ "#83579D", 60, 40, 25000, 46, 75, 240, 9000,  900, 2450, 1850, 1800, 1950 ], // 99.90% unicum
			gr8:  [ "#3972C6", 56, 44, 21000, 42, 70, 210, 8500,  800, 2000, 1550, 1500, 1750 ], // 99.00% great
			vGud: [ "#4099BF", 54, 46, 17000, 38, 65, 180, 6500,  700, 1600, 1350             ], // 95.00% very good
			good: [ "#4D7326", 52, 48, 13000, 34, 60, 150, 5000,  600, 1200, 1100, 1200, 1450 ], // 82.00% good
			aAvg: [ "#849B24", 50, 50, 10000, 30, 55, 120, 4000,  500,  900                   ], // 63.00% above average
			avg:  [ "#CCB800", 48, 52,  7000, 25, 50,  90, 3000,  400,  650,  900,  900, 1250 ], // 40.00% average
			bAvg: [ "#CC7A00", 47, 53,  3000, 20, 45,  60, 2000,  300,  450,  700,  600, 1150 ], // 20.00% below average
			bas:  [ "#CD3333", 46, 54,  1000, 15, 40,  30, 1500,  200,  300,  500             ], //  6.00% basic
			beg:  [ "#930D0D",  0, 100,    0,  0,  0,   0,    0,    0,    0,    0,    0,    0 ], //  0.00% beginner
			dft:  [ "#6B6B6B" ], // default
			id: { col: 0, wr: 1,  lr: 2, bat: 3, sr: 4, hr: 5, dmg: 6, wgr: 7, wn9: 8, wn8: 9, wn7: 10, eff: 11, nm: 12 }  // type identifier
		},
		web: {
			gecko: typeof InstallTrigger !== 'undefined',
			opera: !!window.opera || /opera|opr/i.test(n.userAgent),
			chrome: !!window.chrome && !!window.chrome.webstore,
			safari: /constructor/i.test(window.HTMLElement)
		},
		debug: false
	};

	// script functions
	var sf = {
		apiInfoHnd: function (resp) { // processing information from player API
			var data = resp.data[wg.id],
			allStats = data.statistics.all;

			// add client language as a flag
			profileName_header.appendChild(sf.elem("img", "i-profile-flag", "", {src:"https://bytebucket.org/seriych/worldoftanksforumextendedstat.user.js/raw/tip/data/img/lang/"+data.client_language+".png"}));

			// last battle if it exists
			if (data.last_battle_time) {
				var lastBattle_div = d.getElementById('js-lastBattle');
				lastBattle_div.textContent = new Date(data.last_battle_time*1000).toLocaleString(sc.date.format[wg.srv]);
				lastBattle_div.parentNode.parentNode.parentNode.classList.add("b-display-block");
			}

			// ban time if it exists
			if (data.ban_time) {
				var banInfo_div = d.getElementById('js-banInfo');
				banInfo_div.textContent = new Date(data.ban_time*1000).toLocaleString(sc.date.format[wg.srv]);
				banInfo_div.parentNode.parentNode.parentNode.classList.add("b-display-block");
			}

			// add stats in existing tables
			or_table.appendChild(sf.elem("tr", "", "<td class='t-dotted_minor'>"+loc[98]+"</td><td class='t-dotted_value'></td><td class='t-dotted_value'>"+allStats.tanking_factor+"</td>"));
			bp_table.lastElementChild.innerHTML = "<td class='t-dotted_minor'>"+loc[50]+"</td><td class='t-dotted_value'>"+sf.color(allStats.hits/allStats.shots*100, "hr", 2, "%")+"</td><td class='t-dotted_value'>"+sf.format(allStats.hits,2)+"</td>";
			bp_table.appendChild(sf.elem("tr", "", "<td class='t-dotted_minor'>"+loc[114]+"</td><td class='t-dotted_value'>"+sf.color(allStats.piercings/allStats.hits*100, "", 2, "%")+"</td><td class='t-dotted_value'>"+sf.format(allStats.piercings,2)+"</td>"));
			bp_table.appendChild(sf.elem("tr", "", "<td class='t-dotted_minor'>"+loc[97]+"</td><td class='t-dotted_value'>"+sf.format(data.statistics.trees_cut/allStats.battles,2,2)+"</td><td class='t-dotted_value'>"+sf.format(data.statistics.trees_cut,2)+"</td>"));

			// add new tables for API stats
			var statTabMore = sf.elem("div", "b-tab-more"),
			newTables = [
				[
					[loc[86], d.querySelectorAll("[data-vehicle-cd='"+allStats.max_damage_tank_id+"']")[0].previousElementSibling.firstElementChild.lastElementChild.innerHTML, sf.format(allStats.max_damage,2)],
					[loc[87], d.querySelectorAll("[data-vehicle-cd='"+allStats.max_frags_tank_id+"']")[0].previousElementSibling.firstElementChild.lastElementChild.innerHTML, sf.format(allStats.max_frags,2)],
					[loc[88], d.querySelectorAll("[data-vehicle-cd='"+allStats.max_xp_tank_id+"']")[0].previousElementSibling.firstElementChild.lastElementChild.innerHTML, sf.format(allStats.max_xp,2)],
					[loc[89], sf.format(allStats.avg_damage_assisted,2), sf.format(allStats.avg_damage_assisted*allStats.battles,2)],
					[loc[90], sf.format(allStats.avg_damage_assisted_radio,2), sf.format(allStats.avg_damage_assisted_radio*allStats.battles,2)],
					[loc[91], sf.format(allStats.avg_damage_assisted_track,2), sf.format(allStats.avg_damage_assisted_track*allStats.battles,2)]
				],
				[
					[loc[92], sf.color(100, "", 2, "%"), sf.format(allStats.direct_hits_received,2)],
					[loc[93], sf.color(allStats.piercings_received/allStats.direct_hits_received*100, "", 2, "%"), sf.format(allStats.piercings_received,2)],
					[loc[94], sf.color(allStats.no_damage_direct_hits_received/allStats.direct_hits_received*100, "", 2, "%"), sf.format(allStats.no_damage_direct_hits_received,2)],
					[loc[95], sf.color(allStats.explosion_hits_received/allStats.direct_hits_received*100, "", 2, "%"), sf.format(allStats.explosion_hits_received,2)],
					[loc[96], sf.format(allStats.avg_damage_blocked,2), sf.format(allStats.avg_damage_blocked*allStats.battles,2)],
					[loc[98], "", allStats.tanking_factor]
				],
				[
					loc[84],
					loc[85]
				]
			];
			for (var _a=0, _a_len = newTables.length; _a<(_a_len-1); ++_a) {
				var newTable = sf.elem("div", "b-result b-result-api", "<h3>"+newTables[2][_a]+"</h3><table class='t-dotted t-dotted__fixed'></table>");
				for (var _ar=0, _ar_len = newTables[_a].length; _ar<_ar_len; ++_ar) {
					newTable.lastElementChild.appendChild(sf.elem("tr", "", "<td class='t-dotted_minor'>"+newTables[_a][_ar][0]+"</td><td class='t-dotted_value'>"+newTables[_a][_ar][1]+"</td><td class='t-dotted_value'>"+newTables[_a][_ar][2]+"</td>"));
				}
				statTabMore.appendChild(newTable);
			}
			statTabsParent.appendChild(statTabMore);

			// add new tables for each gamemode
			var modeTables = [
				[
					["globalmap_absolute", loc[104]],
					["globalmap_champion", loc[103]],
					["globalmap_middle", loc[102]]
				],
				[
					["stronghold_skirmish", loc[106]],
					["stronghold_defense", loc[107]]
				],
				[
					["team", loc[108]],
					["regular_team", loc[109]]
				],
				[
					["fallout", loc[111]],
					["historical", loc[112]],
					["company", loc[113]]
				],
				[
					"clan",
					"strong",
					"team",
					"other"
				]
			];
			for (var _mt=0, _mt_len = modeTables.length; _mt<(_mt_len-1); ++_mt) {
				var newModeTab = sf.elem("div", "b-tab-"+modeTables[4][_mt]);
				for (var _gm=0, _gm_len = modeTables[_mt].length; _gm<_gm_len; ++_gm) {
					var modeStats = data.statistics[modeTables[_mt][_gm][0]],
					modeStatsArr = [
						[loc[38], "", sf.format(modeStats.battles,2)],
						[loc[39], sf.color(modeStats.wins/modeStats.battles*100, "wr", 2, "%"), sf.format(modeStats.wins,2)],
						[loc[40], sf.color(modeStats.losses/modeStats.battles*100, "lr", 2, "%"), sf.format(modeStats.losses,2)],
						[loc[41], sf.color(modeStats.draws/modeStats.battles*100, "", 2, "%"), sf.format(modeStats.draws,2)],
						[loc[42], sf.color(modeStats.survived_battles/modeStats.battles*100, "sr", 2, "%"), sf.format(modeStats.survived_battles,2)],
						[loc[44], sf.format(modeStats.xp/modeStats.battles,2), sf.format(modeStats.xp,2)],
						[loc[51], sf.format(modeStats.damage_dealt/modeStats.battles,2), sf.format(modeStats.damage_dealt,2)],
						[loc[98], "", sf.format(modeStats.tanking_factor,2,2)],
						[loc[50], "", sf.color(modeStats.hits/modeStats.shots*100, "hr", 2, "%")]
					],
					newTableMode = sf.elem("div", "b-result b-result-api", "<h3>"+modeTables[_mt][_gm][1]+"</h3><table class='t-dotted t-dotted__fixed'></table>");
					for (var _ms=0, _ms_len = modeStatsArr.length; _ms<_ms_len; ++_ms) {
						newTableMode.lastElementChild.appendChild(sf.elem("tr", "", "<td class='t-dotted_minor'>"+modeStatsArr[_ms][0]+"</td><td class='t-dotted_value'>"+modeStatsArr[_ms][1]+"</td><td class='t-dotted_value'>"+modeStatsArr[_ms][2]+"</td>"));
					}
					newModeTab.appendChild(newTableMode);
				}
				statTabsParent.appendChild(newModeTab);
			}
		},
		apiVehHnd: function (resp) { // processing information from vehicle API
			var data = resp.data[wg.id],
			account = {b: 0, bRan: 0, wn9: 0, wn9nerf: 0, wn9tot: 0, wn8: 0},
			weight = {total: 0, used: 0, use: 0},
			tankList = [],
			tiers = ["",{b:0,w:0,wn8:0},{b:0,w:0,wn8:0},{b:0,w:0,wn8:0},{b:0,w:0,wn8:0},{b:0,w:0,wn8:0},{b:0,w:0,wn8:0},{b:0,w:0,wn8:0},{b:0,w:0,wn8:0},{b:0,w:0,wn8:0},{b:0,w:0,wn8:0}],
			types = {lighttank:{b:0,w:0,wn8:0},mediumtank:{b:0,w:0,wn8:0},heavytank:{b:0,w:0,wn8:0},"at-spg":{b:0,w:0,wn8:0},spg:{b:0,w:0,wn8:0},prem:{b:0,w:0,wn8:0},ten:{b:0,w:0,wn8:0},test:{b:0,w:0,wn8:0}},
			nations = {germany:{b:0,w:0,wn8:0,cl:"de"},usa:{b:0,w:0,wn8:0,cl:"usa"},ussr:{b:0,w:0,wn8:0,cl:"ussr"},china:{b:0,w:0,wn8:0,cl:"cn"},france:{b:0,w:0,wn8:0,cl:"fr"},uk:{b:0,w:0,wn8:0,cl:"uk"},japan:{b:0,w:0,wn8:0,cl:"ja"},czech:{b:0,w:0,wn8:0,cl:"cz"}},
			tierAvg = [ // from 150816 EU avgs exc scout/arty
				{ win:0.477, dmg:88.9, frag:0.68, spot:0.90, def:0.53, cap:1.0, weight:0.40 },
				{ win:0.490, dmg:118.2, frag:0.66, spot:0.85, def:0.65, cap:1.0, weight:0.41 },
				{ win:0.495, dmg:145.1, frag:0.59, spot:1.05, def:0.51, cap:1.0, weight:0.44 },
				{ win:0.492, dmg:214.0, frag:0.60, spot:0.81, def:0.55, cap:1.0, weight:0.44 },
				{ win:0.495, dmg:388.3, frag:0.75, spot:0.93, def:0.63, cap:1.0, weight:0.60 },
				{ win:0.497, dmg:578.7, frag:0.74, spot:0.93, def:0.52, cap:1.0, weight:0.70 },
				{ win:0.498, dmg:791.1, frag:0.76, spot:0.87, def:0.58, cap:1.0, weight:0.82 },
				{ win:0.497, dmg:1098.7, frag:0.79, spot:0.87, def:0.58, cap:1.0, weight:1.00 },
				{ win:0.498, dmg:1443.2, frag:0.86, spot:0.94, def:0.56, cap:1.0, weight:1.23 },
				{ win:0.498, dmg:1963.8, frag:1.04, spot:1.08, def:0.61, cap:1.0, weight:1.60 }
			];
			for (var _v=0, _v_len = data.length; _v<_v_len; _v++) {
				var veh = {wn8:{}, wn9:{}},
				vehAll = data[_v].all,
				vehRan = data[_v].random,
				vehExp = false, vehExp9 = false;
				for (var _wn8=0, _wn8_len = wn.wn8.length; _wn8<_wn8_len; _wn8++) {
					if (wn.wn8[_wn8].IDNum == data[_v].tank_id) {
						vehExp = wn.wn8[_wn8];
						break;
					}
				}
				for (var _wn9=0, _wn9_len = wn.wn9.length; _wn9<_wn9_len; _wn9++) {
					if (wn.wn9[_wn9].id == data[_v].tank_id) {
						vehExp9 = wn.wn9[_wn9];
						break;
					}
				}
				if (vehExp && vehExp9) {
					if (vehAll.battles <= 0) continue; // ignore ids with 0 battle

					// battles and winrate
					veh.bats = vehAll.battles;
					veh.batsRan = vehRan.battles;

					// wn8 rating
					veh.wn8.win = Math.max((100*vehAll.wins/(veh.bats*vehExp.expWinRate)-0.71)/(1-0.71),0);
					veh.wn8.dmg = Math.max((vehAll.damage_dealt/(veh.bats*vehExp.expDamage)-0.22)/(1-0.22),0);
					veh.wn8.frag = Math.max(Math.min(veh.wn8.dmg+0.2,(vehAll.frags/(veh.bats*vehExp.expFrag)-0.12)/(1-0.12)),0);
					veh.wn8.spot = Math.max(Math.min(veh.wn8.dmg+0.1,(vehAll.spotted/(veh.bats*vehExp.expSpot)-0.38)/(1-0.38)),0);
					veh.wn8.def = Math.max(Math.min(veh.wn8.dmg+0.1,(vehAll.dropped_capture_points/(veh.bats*vehExp.expDef)-0.10)/(1-0.10)),0);
					veh.wn8.rat = 980*veh.wn8.dmg + 210*veh.wn8.dmg*veh.wn8.frag + 155*veh.wn8.frag*veh.wn8.spot + 75*veh.wn8.frag*veh.wn8.def + 145*Math.min(1.8,veh.wn8.win);

					// wn9 rating
					var avg = tierAvg[vehExp9.mmrange >= 3 ? vehExp9.tier : vehExp9.tier-1];
					veh.wn9 = {
						dmg: vehRan.damage_dealt/(veh.batsRan*avg.dmg),
						frag: vehRan.frags/(veh.batsRan*avg.frag),
						spot: vehRan.spotted/(veh.batsRan*avg.spot),
						def: vehRan.dropped_capture_points/(veh.batsRan*avg.def),
						win: vehRan.wins/(veh.batsRan*avg.win)
					};
					veh.wn9.base = 0.7*veh.wn9.dmg+((veh.batsRan < 5) ? 0.14*veh.wn9.frag+0.13*Math.sqrt(veh.wn9.spot)+0.03*Math.sqrt(veh.wn9.def) : 0.25*Math.sqrt(veh.wn9.frag*veh.wn9.spot)+0.05*Math.sqrt(veh.wn9.frag*Math.sqrt(veh.wn9.def)));
					veh.wn9.rat = 666*(1+(veh.wn9.base/vehExp9.wn9exp-1)/vehExp9.wn9scale);
					veh.wn9.ratNerf = 666*(1+(veh.wn9.base/(vehExp9.wn9exp*(1+vehExp9.wn9nerf))-1)/vehExp9.wn9scale);

					// store ratings
					var vehTier = tiers[vehExp.tier],
					vehType = types[vehExp.type],
					vehNation = nations[vehExp.nation];

					// tier ratings
					vehTier.b += veh.bats;
					vehTier.wn8 += veh.wn8.rat * veh.bats;
					vehTier.wn9 += veh.wn9.rat * veh.batsRan;
					vehTier.wn9nerf += veh.wn9.ratNerf * veh.batsRan;

					// type ratings
					vehType.b += veh.bats;
					vehType.wn8 += veh.wn8.rat * veh.bats;

					// nation ratings
					vehNation.b += veh.bats;
					vehNation.wn8 += veh.wn8.rat * veh.bats;

					// prem ratings
					if (vehExp.prem) {
						vehType = types.prem;
						vehType.b += veh.bats;
						vehType.wn8 += veh.wn8.rat * veh.bats;
					}

					// super test ratings
					if (vehExp.test) {
						vehType = types.test;
						vehType.b += veh.bats;
						vehType.wn8 += veh.wn8.rat * veh.bats;
					}

					// ten ratings
					if (vehExp.tier == 10) {
						vehType = types.ten;
						vehType.b += veh.bats;
						vehType.wn8 += veh.wn8.rat * veh.bats;
					}

					// total ratings
					account.b += veh.bats;
					account.bRan += veh.batsRan;
					account.wn8 += veh.wn8.rat * veh.bats;
					account.wn9 += veh.wn9.rat * veh.bRan;
					account.wn9nerf += veh.wn9.ratNerf * veh.bRan;

					// insert wn8 into vehicle tables
					var tankRows = d.getElementsByClassName('js-'+data[_v].tank_id);
					for (var _tr=0, _tr_len = tankRows.length; _tr<_tr_len; _tr++) {
						tankRows[_tr].cells[0].appendChild(sf.elem("span", "b-rating-vehicle", sf.color(veh.wn8.rat,"wn8",2,"","f")));
					}
					// push vehicle stats into array for future use
					tankList.push(veh);
				}
			}

			// adjust tier values accordingly and insert
			for (var _ta=1; _ta<11; _ta++) {
				var tier = tiers[_ta];
				if (tier.b > 0) {
					tier.wn8 /= tier.b;
					d.getElementById('js-tier_'+_ta).innerHTML = sf.color(tier.wn8,"wn8",2,"","f");
				}
			}

			// adjust type values accordingly and insert
			for (var _ty in types) {
				if (types.hasOwnProperty(_ty)) {
					var type = types[_ty];
					if (type.b > 0) {
						type.wn8 /= type.b;
						var typeRow = d.getElementsByClassName('b-diagram-ico__'+_ty)[0],
						typeTable = d.getElementsByClassName('b-tankstype-ico__'+_ty)[0].parentNode;
						typeTable.appendChild(sf.elem("span", "b-rating-vehicle", sf.color(type.wn8,"wn8",2,"","f")));
						if (typeRow) {
							typeRow.previousElementSibling.insertBefore(sf.elem("span", "t-diagram_rating", sf.color(type.wn8,"wn8",2,"","f")), typeRow.previousElementSibling.firstChild);
						}
					}
				}
			}

			// adjust nation values accordingly and insert
			for (var _na in nations) {
				if (nations.hasOwnProperty(_na)) {
					var nation = nations[_na];
					if (nation.b > 0) {
						nation.wn8 /= nation.b;
						var natRow = d.getElementsByClassName('b-diagram-ico__'+nation.cl)[0].previousElementSibling;
						natRow.insertBefore(sf.elem("span", "t-diagram_rating", sf.color(nation.wn8,"wn8",2,"","f")), natRow.firstChild);
					}
				}
			}

			// adjust wn8 and wn9 values accordingly
			account.wn8 /= account.b;
			account.wn9 /= account.bRan;
			account.wn9nerf /= account.bRan;

			// filter out tanks less than 300 battles for account wn9
			for (var _w=0, _w_len = tankList.length; _w<_w_len; _w++) {
				tankList[_w].batsRan = Math.min(tankList[_w].batsRan, 200+(account.bRan/50));
				weight.total += tankList[_w].batsRan;
			}

			// sort tanks by wn9 descending
			tankList.sort(function(a, b) {
				return b.wn9.ratNerf - a.wn9.ratNerf;
			});

			// add up account wn9 over top 65% of battles
			weight.use = 0.65*weight.total;
			for (var _uw = 0; weight.used+tankList[_uw].batsRan <= weight.use; _uw++) {
				account.wn9tot += tankList[_uw].wn9.ratNerf*tankList[_uw].batsRan;
				weight.used += tankList[_uw].batsRan;
			}
			// last tank before cutoff uses remaining weight, not its battle count
			account.wn9tot += tankList[_uw].wn9.ratNerf*(weight.use-weight.used);
			account.wn9tot /= weight.use;

			// insert new WN9
			d.getElementById('js-wn').innerHTML = sf.color(account.wn9tot,"wn9",2,"","f");
		},
		clan: function () { // clanBlock function
			wg.clan.id = cl_class.getAttribute('href').match(/\/(\d+)/)[1];
			wg.clan.name = cl_class.getElementsByTagName('span')[0].innerHTML.match(/[\w.+\-]+/)[0];
			// clan statistic links
			var clanStat_table_cells = [
				[
					[loc[65]],
					[sc.srv.wl, "<a target='_blank' href='http://wotlabs.net/"+sc.srv.wl+"/clan/"+wg.clan.name+"'>WoTLabs</a>"],
					[sc.srv.nm, "<a target='_blank' href='http://noobmeter.com/clan/"+sc.srv.nm+"/"+wg.clan.name+"/"+wg.clan.id+"'>Noobmeter</a>"],
					[sc.srv.ct, "<a target='_blank' href='http://clantools.us/servers/"+sc.srv.ct+"/clans?id="+wg.clan.id+"'>Clan Tools</a>"]
				],
				[
					[""],
					[sc.srv.cs, "<a target='_blank' href='http://wotcs.com/clan.php?wid="+wg.clan.id+"'>WoT-CS</a>"],
					[sc.srv.vb, "<a target='_blank' href='http://www.vbaddict.net/clan/worldoftanks."+sc.srv.vb+"/"+wg.clan.id+"/clan-"+wg.clan.name.toLowerCase()+"'>vBAddict</a>"],
					(wg.srv=="ru") ? [sc.srv.kttc, "<a target='_blank' href='http://kttc.ru/clan/"+wg.clan.id+"/'>KTTC</a>"] : [sc.srv.wlf, "<a target='_blank' href='http://en.wot-life.com/"+sc.srv.wlf+"/clan/"+wg.clan.name+"-"+wg.clan.id+"/'>WoT-Life</a>"]
				],
				[
					[loc[66]],
					[sc.srv.wr, "<a target='_blank' href='http://wotreplays."+sc.srv.wr+"/clan/"+wg.clan.name+"'>WoTReplays</a>"]
				],
				[
					[sc.srv.we, loc[80]],
					[sc.srv.we, "<a target='_blank' href='http://wotevent.guildity.com/clans/"+wg.clan.name+"/'>WoT Event Stats</a>"]
				]
			];
			sf.links(clanStat_table, clanStat_table_cells, "table");
			clanBlock.appendChild(clanStat_table);
		},
		medals: function () { // special medals function
			if (medalSpecial_class) {
				var medals = medalSpecial_class.getElementsByTagName('li'),
				medalsFull = Math.floor(medals.length/12)*12,
				medalsRest = 12-(medals.length-medalsFull),
				medalsHelper = medals[medalsFull];
				if (medalsRest !== 12) {
					medalsHelper.style.marginLeft = (medalsRest*37.5)+"px";
				}
			}
		},
		format: function (input, type, dec) { // input and output formatting
			var inputReg = new RegExp("\\"+loc[0], "g");
			switch(type) {
				case (1): // input string into number
					return parseFloat(input.replace(inputReg,"").replace(",","."));
				case (2): // output number with locale symbol
					if (isNaN(input)) {return 0;}
					dec = dec ? dec : 0;
					input = input.toFixed(dec).toString().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1"+loc[0]);
					return (loc[0] !== "," && dec !== 0) ? input.replace(/\.(\d+)*$/g,",$1") : input;
				default:
					console.error("Error filtering: ", input);
					return input;
			}
		},
		color: function (input, type, dec, sym, ext) { // color formatting
			if (isNaN(input)) {return 0;}
			var color, output = input.toFixed(dec);
			if (type == "dmg") {
				output =  sf.format(ext,2,0);
			}
			else if (input >= 1000) {
				output = sf.format(input,2,dec);
			}
			if (type !== "") {
				if (s.h[type] && ext !== "f") {
					color = s.h[type];
				}
				else {
					for (var _c in sc.col) {
						if (sc.col.hasOwnProperty(_c)) {
							if (type == "lr") {
								if (input <= sc.col[_c][sc.col.id[type]]) {
									color = sc.col[_c][0]; break;
								}
							}
							else {
								if (input >= sc.col[_c][sc.col.id[type]]) {
									color = sc.col[_c][0]; break;
								}
							}
						}
					}
					if (sym !== "%") {
						s.h[type] = color;
					}
				}
			}
			if (loc[0] !== "," && dec !== 0) {
				output = output.replace(/\.(\d+)*$/g,",$1");
			}
			if (sym) {
				output += sym;
			}
			return "<span style='color:"+color+"'>"+output+"</span>";
		},
		elem: function (tag, name, html, extra) { // element creation
			var element = d.createElement(tag);
			if (name) {
				element.className = name;
			}
			if (html) {
				if (/</.test(html)) {
					element.innerHTML = html;
				}
				else {
					element.textContent = html;
				}
			}
			if (extra) {
				for (var _e in extra) {
					if (extra.hasOwnProperty(_e)) {
						element[_e] = extra[_e];
					}
				}
			}
			return element;
		},
		settings: function (name, text) { // script menu handler
			var setItem = sf.elem("li", "b-settingItem"),
			setDiv = sf.elem("div", "b-settingParent b-"+name, "<a>"+text+"</a>");
			switch(name) {
				case ("wnRefresh"):
					setDiv.addEventListener('click', function() {localStorage.removeItem("wnExpValues"); localStorage.removeItem("wn9ExpValues"); location.reload();}, false);
				break;
				case ("copyClipboard"):
					setDiv.addEventListener('click', function() {window.prompt(loc[63], d.getElementById('js-clipBoard').innerHTML);}, false);
				break;
				default: break;
			}
			setItem.appendChild(setDiv);
			return setItem;
		},
		links: function (parent, links, type) { // statistic links handler
			var linksFragment = d.createDocumentFragment();
			for (var _l=0, _l_len = links.length; _l<_l_len; ++_l) {
				switch(type) {
					case ("table"):
						var link = sf.elem("tr");
						for (var _lr=0, _lr_len = links[_l].length; _lr<_lr_len; ++_lr) {
							link.appendChild((links[_l][_lr][0] && links[_l][_lr][1]) ? sf.elem("td", "", links[_l][_lr][1]) : sf.elem("td", "", links[_l][_lr][0]));
						}
						linksFragment.appendChild(link);
					break;
					case ("list"):
						if (links[_l] instanceof HTMLElement) {
							linksFragment.appendChild(links[_l]);
						}
						else {
							linksFragment.appendChild((links[_l][0] && links[_l][1]) ? sf.elem("li", "", links[_l][1]) : sf.elem("li", "statname", links[_l][0]));
						}
					break;
					default: break;
				}
			}
			parent.appendChild(linksFragment);
		},
		tabs: function (elem) { // statistic tabs handler
			var tab = elem.target.parentNode;
			if (!tab.classList.contains("js-tabs__active")) {
				d.getElementsByClassName('b-statistics-wrpr')[0].getElementsByClassName('js-tabs__active')[0].classList.remove('js-tabs__active');
				tab.classList.add("js-tabs__active");
				d.getElementsByClassName('js-stat_active')[0].classList.remove("js-stat_active");
				d.getElementsByClassName(tab.getAttribute('data-ref'))[0].classList.add("js-stat_active");
			}
		},
		storage: function (name, data, type, mode) { // localstorage handler
			var storage;
			switch(type) {
				case ("set"):
					if (mode == "string") {
						data = JSON.stringify(data);
					}
					storage = localStorage.setItem(name, data);
				break;
				case ("get"):
					storage = localStorage.getItem(name);
					if (mode == "parse") {
						storage = JSON.parse(storage);
					}
				break;
				default: break;
			}
			return storage;
		},
		stat: {
			wn8: function (resp) { // wnefficiency.net/exp/expected_tank_values_latest.json handler
				wn.run++;
				sf.storage("wnExpValues", resp, "set", "string");
				sf.storage("wnExpDate", sc.date.now, "set");
				if (wn.run == 2) {
					sf.storage("wnExpVers", sc.vers, "set");
					location.reload();
				}
			},
			wn9: function (resp) { // jaj22.org.uk/tankdata/exp_wn9.json handler
				wn.run++;
				sf.storage("wn9ExpValues", resp, "set", "string");
				if (wn.run == 2) {
					sf.storage("wnExpVers", sc.vers, "set");
					location.reload();
				}
			}
		},
		ch: { // clan history handler
			hnd: function (resp) {
				var history = resp.changes, _h_len = history.length, clansCount = 0, prevClan,
				clanHistFragment = d.createDocumentFragment();
				clanHist_div.lastElementChild.classList.add("b-display-none");
				if (_h_len > 0) {
					for (var _h=_h_len-1; _h>=0; --_h) {
						clansCount ++;
						if (!!history[_h].clan_tag && prevClan !== history[_h].clan_tag && (clansCount == 1 || history[_h].joined)) {
							var clanHist_span = sf.elem("span", (history[_h].clan_tag == wg.clan.name) ? "clantag curr" : "clantag", "<a href='http://"+sc.srv.ch+".wargaming.net/clans/"+history[_h].clan_id+"/' target='_blank'>["+history[_h].clan_tag+"]</a>");
							clanHistFragment.appendChild(clanHist_span);
							prevClan = history[_h].clan_tag;
						}
					}
					if (wg.clan.name && prevClan !== wg.clan.name) {
						clanHistFragment.appendChild(sf.elem("span", "clantag curr", "<a href='http://"+sc.srv.ch+".wargaming.net/clans/"+wg.clan.id+"/' target='_blank'>["+wg.clan.name+"]</a>"));
					}
					clanHist_div.appendChild(clanHistFragment);
				}
				else {
					clanHist_div.appendChild(sf.elem("span", "clantag", loc[75]));
				}
			},
			error: function () {
				clanHist_div.appendChild(sf.elem("span", "", loc[76]));
			}
		},
		request: function (name, api, handler, error) { // request handler
			GM_xmlhttpRequest({
				method: "GET",
				url: api,
				headers: {
					"Accept": "application/json"
				},
				onload: function(resp) {
					var data = JSON.parse(resp.responseText);
					if (resp.status == 200) {
						if (sc.debug) {console.info(name, data);}
						handler(data);
					}
					else {
						console.error("Error:", name, api, resp);
						if (error) {error();}
					}
				},
				onerror: function(resp) {
					console.error("Error:", name, api, resp);
					if (error) {error();}
				}
			});
		}
	};

	// make sure correct localization is displayed, and reload page with user language if not
	if (sc.loc.cur[0] == sc.loc.cur[1]) {
		sc.loc.cur = sc.loc.cur[0];
	}
	else {
		sc.loc.cur = sc.loc.cur[0];
		window.location.href = "http://"+wg.host+"/"+sc.loc.cur+"/community/accounts/"+wg.id+"-"+wg.name+"/";
	}

	// fetch wnefficiency values - check if array exists in localStorage, otherwise fetch and reload page
	var wn = {
		wn8: sf.storage("wnExpValues", "", "get", "parse"),
		wn9: sf.storage("wn9ExpValues", "", "get", "parse"),
		date: sf.storage("wnExpDate", "", "get", "parse")+12096e5 >= sc.date.now, // true if timestamp is less than 2 weeks old, refresh list if false.
		vers: [sf.storage("wnExpVers", "", "get")],
		run: 0
	};
	if (wn.vers[0] == sc.vers && (wn.wn8 && wn.wn9) && wn.date) {
		wn.vers.push(wn.wn8.header.version, wn.wn9.header.version);
		wn.wn8 = wn.wn8.data;
		wn.wn9 = wn.wn9.data;
	}
	else {
		// add animated loading icon for progress indication
		var pageWrpr = d.getElementsByClassName('page-wrapper')[0],
		loadGif = sf.elem("div", "processing", "<div class='processing_loader'><img src='http://eu.wargaming.net/clans/static/2.2.8/images/processing/loader.gif' alt='Processing...'></div>");
		pageWrpr.appendChild(loadGif);
		sf.request("wn8Data", sc.stat.wn8, sf.stat.wn8);
		sf.request("wn9Data", sc.stat.wn9, sf.stat.wn9);
	}

	// inserting style into head
	var style = sf.elem("style", "wotstatscript", "", {type:"text/css"}),
	styleText = [
		// processing loader rules
		".processing {width: 100%; height: 100%; position: fixed; top: 0; left: 0; z-index: 500; background: url(http://eu.wargaming.net/clans/static/2.2.9/images/processing/processing_overlay-pattern.png);}",
		".processing_loader {width: 56px; height: 54px; position: absolute; top: 50%; left: 50%; margin-top: -27px; margin-left: -28px;}",
		// settings menu rules
		"#common_menu .menu-settings {color: #7C7E80; display: inline-block;}",
		"#common_menu .menu-settings .cm-user-menu-link {margin: 0 10px 0 0;}",
		"#common_menu .menu-settings .cm-user-menu-link_cutted-text {max-width: unset;}",
		"#common_menu .menu-settings .cm-user-menu {min-width: 200px; padding: 15px;}",
		"#common_menu .menu-settings .cm-parent-link:hover {cursor: pointer;}",
		"#common_menu .menu-settings .b-settingItem {margin: 6px 0px; text-align: center;}",
		"#common_menu .menu-settings label {display: table; line-height: normal; cursor: pointer; margin: 0 auto;}",
		"#common_menu .menu-settings .l-box {display: none;}",
		"#common_menu .menu-settings .b-checkbox {height: 16px; width: 16px; float: left; margin-right: 5px;}",
		"#common_menu .menu-settings .b-checkbox span {height: 16px; width: 16px;}",
		"#common_menu .menu-settings .b-combobox-label__checked {color: #DCDCDC;}",
		"#common_menu .menu-settings .b-settingItem .b-combobox-label:hover {color: #DCDCDC;}",
		"#common_menu .menu-settings .b-settingItem .b-combobox-label:hover .b-checkbox {background-position: 0px -34px; box-shadow: 0px 0px 10px 1px rgba(191, 166, 35, 0.15), 0px 0px 3px 1px rgba(191, 166, 35, 0.25);}",
		"#common_menu .menu-settings .b-settingItem .b-combobox-label:hover .b-checkbox.b-checkbox__checked {background-position: 0px -68px;}",
		"#common_menu .menu-settings textarea.l-textarea {background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 2px; color: #FFFFFF; line-height: normal; padding: 5px; min-height: 50px; margin: 5px 0 5px 0; min-width: 175px;}",
		"#common_menu .menu-settings textarea::-webkit-input-placeholder {color: #FFFFFF;}",
		"#common_menu .menu-settings textarea::-moz-placeholder {color: #FFFFFF;}",
		"#common_menu .menu-settings .b-settingParent {line-height: 26px;}",
		"#common_menu .menu-settings .b-settingParent a {cursor: pointer; color: #B1B2B3; text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);}",
		"#common_menu .menu-settings .b-settingParent a:hover {color: #FFFFFF; text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75); text-decoration: underline;}",
		"#common_menu .menu-settings .settingCredits {margin: 2px 0px;}",
		"#common_menu .menu-settings .settingCredits h1 {color: #B1B2B3;}",
		"#common_menu .menu-settings .settingCredits table {font-size: 12px; margin: 0 auto; width: unset;}",
		"#common_menu .menu-settings .settingCredits table td {padding: 0 5px;}",
		"#common_menu .menu-settings .settingCredits p {font-size: 12px; padding: 2px 0;}",
		"#common_menu .menu-settings .settingCredits .b-orange-arrow {color: #F25322; line-height: 14px; padding-right: 9px;}",
		"#common_menu .menu-settings .settingCredits .b-orange-arrow:hover {color: #FF7432;}",
		"#common_menu .menu-settings .settingCredits.settingSeperator {border-top: 1px dashed #212123; margin-top: 6px; padding-top: 12px;}",
		"#common_menu .menu-settings .settingCredits.settingLinks {margin: 5px 0;}",
		"#common_menu .menu-settings .settingCredits.settingLinks a {margin: 0 5px;}"
	];
	d.head.appendChild(style);

	// localization
	var loc = [
		{ i:0, en: ",", ru: " ", cs: " ", de: ".", fr: " ", pl: " ", es:".", tr: "."}, // thousands separator
		{ i:1, en: "Go to Bottom", ru: "Пролистать вниз", cs: "Konec stránky", de: "nach unten", fr: "Aller à la fin", pl: "Koniec strony", es: "Ir al final", tr: "Aşağı İn"},
		{ i:2, en: "Go to Top", ru: "Пролистать наверх", cs: "Začátek stránky", de: "nach oben", fr: "Aller au début", pl: "Początek strony", es: "Ir al principio", tr: "Yukarı Çık"},
		{ i:3, en: "Days Ago", ru: "Дней назад", cs: "dnů", de: "Tage in WOT aktiv", fr: "jours", pl: "Dni temu", es: "Días", tr: "Gün Önce"},
		{ i:4, en: "Player Stats:", ru: "Статистика игрока:", cs: "Stat. hráče:", de: "Spielerstatistik", fr: "Statistiques du joueur:", pl: "Statystyki gracza:", es: "Estadísticas del jugador:", tr: "Oyuncu Statları"},
		{ i:5, en: "Signature:", ru: "Подпись:", cs: "Podpis:", de: "Forumsignatur", fr: "Signature:", pl: "Sygnatura do forum:", es: "Firma", tr: "İmza"},
		{ i:6, en: "Light", ru: "Светлые тона", cs: "Světlý", de: "Signatur Weiß", fr: "Claire", pl: "Jasna", es: "Clara", tr: "Açık"},
		{ i:7, en: "Dark", ru: "Тёмные тона", cs: "Tmavý", de: "Signatur Schwarz", fr: "Foncée", pl: "Ciemna", es: "Oscura", tr: "Koyu"},
		{ i:8, en: "Replays:", ru: "Реплеи:", cs: "Záznamy:", de: "Replays", fr: "Replays:", pl: "Powtórki:", es: "Repeticiones:", tr: "Replayler"},
		{ i:9, en: "Victories", ru: "Победы", cs: "Vítězství", de: "Siege", fr: "Victoires", pl: "Zwycięstw", es: "Victorias", tr: "Zaferler"},
		{ i:10, en: "Battles Participated", ru: "Участий в битвах", cs: "Počet bitev", de: "Gefechte geführt", fr: "Batailles participées", pl: "Bitew", es: "Batallas jugadas", tr: "Savaş Katılımı"},
		{ i:11, en: "Average Experience", ru: "Средний опыт", cs: "Průměrné zkušenosti", de: "Durchnittl. Erfahrung", fr: "Expérience moyenne", pl: "Średnie doświadczenie", es: "Experiencia media", tr: "Ortalama Deneyim"},
		{ i:12, en: "Average Tier", ru: "Средний уровень танка", cs: "Průměrný Tier", de: "Durchschnittl. Stufe", fr: "Tiers moyen", pl: "Średni poziom pojazdu", es: "Tier medio", tr: "Ortalama Seviye"},
		{ i:13, en: "Win/Loss Ratio", ru: "Отношение Победы/Поражения", cs: "Poměr vítězství/porážek", de: "Verhältnis Siege/ Niederlagen", fr: "Ratio Victoires/Défaites", pl: "Zwycięstwa/porażki", es: "Ratio de victorias/derrotas", tr: "Zafer/Kayıp Oranı"},
		{ i:14, en: "Performance Ratings", ru: "Рейтинги производительности", cs: "Hodnocení bojového výkonu", de: "Leistungsverhältnis", fr: "Indices de performances", pl: "Statystyki wydajności", es: "Ratios de rendimiento", tr: "Performans Değerleri"},
		{ i:15, en: "Fetching...", ru: "Загрузка...", cs: "Načítám...", de: "abrufen...", fr: "Récupération...", pl: "Pobieranie...", es: "Recuperando...", tr: "Getiriliyor..."},
		{ i:16, en: "Performance Rating Calculations", ru: "Вычисления рейтинга производительности", cs: "Výpočet hodnocení bojového výkonu", de: "Leistungsberechnung", fr: "Calculs des indicateurs de performances", pl: "Obliczenia statystyk wydajności", es: "Cálculos del ratio de rendimiento", tr: "Performans Değeri Hesaplamaları"},
		{ i:17, en: "Formula Type", ru: "Тип формулы", cs: "Typ výpočtu", de: "Formel", fr: "Type de formule", pl: "Formuła", es: "Tipo de fórmula", tr: "Formül Tipi"},
		{ i:18, en: "Total", ru: "Всего", cs: "Celkem", de: "Gesamt", fr: "Total", pl: "Wynik", es: "Total", tr: "Toplam"},
		{ i:19, en: "Scaled", ru: "Шкала", cs: "Stupnice", de: "Skaliert", fr: "A l'échelle", pl: "Skalowanie", es: "Escala", tr: "Ölçek"},
		{ i:20, en: "Destroyed", ru: "Уничтожено", cs: "Zničeno", de: "Zerstört", fr: "Détruits", pl: "Fragi", es: "Destruidos", tr: "imha"},
		{ i:21, en: "Damage", ru: "Урон", cs: "Poškození", de: "Schaden", fr: "Dommages", pl: "Obrażenia", es: "Daño", tr: "Hasar"},
		{ i:22, en: "Detected", ru: "Обнаружено", cs: "Detekováno", de: "Aufgeklärt", fr: "Détectés", pl: "Wykrycia", es: "Detectados", tr: "Tespit"},
		{ i:23, en: "Capping", ru: "Захват", cs: "Obsazení", de: "Erobert", fr: "Capture", pl: "Zdobycie bazy", es: "Capturando", tr: "İşgal"},
		{ i:24, en: "Defense", ru: "Оборона", cs: "Obrana", de: "Verteidigt", fr: "Défense", pl: "Obrona bazy", es: "Defendiendo", tr: "Savunma"},
		{ i:25, en: "Victories", ru: "Победы", cs: "Vítězství", de: "Siege", fr: "Victoires", pl: "Zwycięstwa", es: "Victorias", tr: "Zaferler"},
		{ i:26, en: "WN9", ru: "WN9", cs: "WN9", de: "WN9", fr: "WN9", pl: "WN9", es: "WN9", tr: "WN9", f:1},
		{ i:27, en: "WN8", ru: "WN8", cs: "WN8", de: "WN8", fr: "WN8", pl: "WN8", es: "WN8", tr: "WN8", f:1},
		{ i:28, en: "WN7", ru: "WN7", cs: "WN7", de: "WN7", fr: "WN7", pl: "WN7", es: "WN7", tr: "WN7", f:1},
		{ i:29, en: "Efficiency", ru: "Эффективность", cs: "Efektivita", de: "Effizienz", fr: "Efficacité", pl: "Efficiency", es: "Eficiencia", tr: "Efficiency", f:1},
		{ i:30, en: "NoobMeter", ru: "NoobMeter", cs: "NoobMeter", de: "NoobMeter", fr: "NoobMeter", pl: "NoobMeter", es: "NoobMeter", tr: "NoobMeter", f:1},
		{ i:31, en: "What is WN Efficiency?", ru: "Что такое WN эффективность?", cs: "Co je WN hodnocení?", de: "Was bedeutet WN Effizienz", fr: "Qu'est que l'efficacité WN ?", pl: "Czym jest statystyka wydajności WN?", es: "¿Qué es la eficiencia WN?", tr: "WN Efficiency Nedir?"},
		{ i:32, en: "Ace Tanker", ru: "Мастер", cs: "Hrdina", de: "Panzer Ass", fr: "As du char", pl: "As Pancerny", es: "As de tanques", tr: "Tank Ası"},
		{ i:33, en: "1st Class", ru: "1 степень", cs: "1. třídy", de: "1ter Klasse", fr: "Classe 1", pl: "Pierwsza Klasa", es: "Clase I", tr: "1. Sınıf"},
		{ i:34, en: "2nd Class", ru: "2 степень", cs: "2. třídy", de: "2ter Klasse", fr: "Classe 2", pl: "Druga Klasa", es: "Clase II", tr: "2. Sınıf"},
		{ i:35, en: "3rd Class", ru: "3 степень", cs: "3. třídy", de: "3ter Klasse", fr: "Classe 3", pl: "Trzecia Klasa", es: "Clase III", tr: "3. Sınıf"},
		{ i:36, en: "No Badge", ru: "Нет значка", cs: "Nezískáno", de: "kein Orden", fr: "Aucun badge", pl: "Bez odznaki", es: "Sin medalla", tr: "Rozetsiz"},
		{ i:37, en: "Total Vehicles", ru: "Общее количество танки", cs: "Celkem vozidel", de: "Alle Fahrzeuge", fr: "Nombre total de véhicules", pl: "Całkowita liczba pojazdów", es: "Total de vehículos", tr: "Toplam Araçlar"},
		{ i:38, en: "Battles Participated", ru: "Участий в битвах", cs: "Počet bitev", de: "An Gefechten teilgenommen", fr: "Batailles participées", pl: "Bitwy", es: "Batallas jugadas", tr: "Savaş Katılımı"},
		{ i:39, en: "Victories", ru: "Победы", cs: "Vítězství", de: "Siege", fr: "Victoires", pl: "Zwycięstwa", es: "Victorias", tr: "Zaferler"},
		{ i:40, en: "Defeats", ru: "Поражения", cs: "Porážek", de: "Niederlagen", fr: "Défaites", pl: "Porażki", es: "Derrotas", tr: "Yenilgiler"},
		{ i:41, en: "Draws", ru: "Ничья", cs: "Remíza", de: "Unentschieden", fr: "Egalités", pl: "Remisy", es: "Empates", tr: "Beraberlikler"},
		{ i:42, en: "Battles Survived", ru: "Битв пережито", cs: "Přežito bitev", de: "Gefechte überlebt", fr: "Batailles survécues", pl: "Przetrwane bitwy", es: "Batallas como superviviente", tr: "Hayatta Kalma"},
		{ i:43, en: "Average Battles per Day", ru: "Среднее число битв за день", cs: "Průměrný počet bitev za den", de: "Durschnittliche Gefechte pro Tag", fr: "Nombre moyen de batailles par jour", pl: "Średnia bitew na dzień", es: "Media de batallas por día", tr: "Günlük Ortalama Savaş"},
		{ i:44, en: "Experience", ru: "Опыт", cs: "Zkušenosti", de: "Erfahrung", fr: "Expérience", pl: "Doświadczenie", es: "Experiencia", tr: "Deneyim"},
		{ i:45, en: "Average Experience per Battle", ru: "Средний опыт за битву", cs: "Průměrné zkušenosti za bitvu", de: "Durchschnittserfahrung", fr: "Expérience moyenne par bataille", pl: "Średnie doświadczenie na bitwę", es: "Experiencia media por batalla", tr: "Savaş Başına Ortalama Deneyim"},
		{ i:46, en: "Maximum Experience per Battle", ru: "Максимальный опыт за битву", cs: "Maximální zkušenosti za bitvu", de: "Höchste Gefechtserfahrung", fr: "Expérience maximum par bataille", pl: "Maksymalne doświadczenie na bitwę", es: "Experiencia máxima por batalla", tr: "Savaş Başına Maksimum Deneyim"},
		{ i:47, en: "Destroyed", ru: "Уничтожено", cs: "Zničeno", de: "Zerstört", fr: "Détruits", pl: "Zniszczeni przeciwnicy", es: "Destruidos", tr: "İmhalar"},
		{ i:48, en: "Deaths", ru: "Смертей", cs: "Nepřežil", de: "Tode", fr: "Morts", pl: "Zniszczony", es: "Muertes", tr: "Ölümler"},
		{ i:49, en: "Detected", ru: "Обнаружено", cs: "Detekováno", de: "Aufgeklärt", fr: "Détectés", pl: "Wykrytych", es: "Detectados", tr: "Tespitler"},
		{ i:50, en: "Hit Ratio", ru: "Коэффициент попаданий", cs: "Přesnost střelby", de: "Trefferquote", fr: "Ratio de hit", pl: "Celność", es: "Ratio de impactos", tr: "İsabet Oranı"},
		{ i:51, en: "Damage Caused", ru: "Урона нанесено", cs: "Udělené poškození", de: "Schaden verursacht", fr: "Dommages causés", pl: "Zadane obrażenia", es: "Daño causado", tr: "Yapılan Hasar"},
		{ i:52, en: "Damage Received", ru: "Урона получено", cs: "Přijaté poškození", de: "Schaden erhalten", fr: "Dommages reçus", pl: "Otrzymane obrażenia", es: "Daño recibido", tr: "Alınan Hasar"},
		{ i:53, en: "Base Capture Points", ru: "Очки захвата", cs: "Bodů obsazení základny", de: "Eroberungspunkte", fr: "Points de capture de base", pl: "Punkty przejęcia bazy", es: "Puntos de captura", tr: "Bölge İşgali Puanı"},
		{ i:54, en: "Base Defense Points", ru: "Очки обороны", cs: "Bodů obrany základny", de: "Verteidigungspunkte", fr: "Points de défense de base", pl: "Punkty obrony bazy", es: "Puntos de defensa", tr: "Bölge Savunması Puanı"},
		{ i:55, en: "Average Tier", ru: "Средний уровень", cs: "Průměrný Tier", de: "Durchschnittliche Stufe", fr: "Tiers moyen", pl: "Średni poziom pojazdów", es: "Tier media", tr: "Ortalama Seviye"},
		{ i:56, en: "Vehicle Tiers", ru: "Уровни техники", cs: "Tiery vozidel", de: "Fahrzeuge Stufe", fr: "Tiers du véhicule", pl: "Poziomy czołgów", es: "Tier de los vehículos:", tr: "Araç Seviyeleri"},
		{ i:57, en: "Tier", ru: "Уровень", cs: "Tier", de: "Stufe", fr: "Tiers", pl: "Poziom", es: "Tier", tr: "Seviye", f:1},
		{ i:58, en: "Total Vehicles:", ru: "Количество техники:", cs: "Celkem vozidel:", de: "Gesamt Fahrzeuge", fr: "Nombre total de véhicules:", pl: "Całkowita liczba pojazdów:", es: "Total de vehículos:", tr: "Toplam Araçlar"},
		{ i:59, en: "Tankopedia", ru: "Танковедение", cs: "Tankpédie", de: "Tankopedia", fr: "Tankopedia", pl: "Tankopedia", es: "Tankopedia", tr: "Tankopedia", f:1},
		{ i:60, en: "Tank Statistics", ru: "Статистика танка", cs: "Statistiky vozidel", de: "Panzer Statistik", fr: "Statistiques des chars", pl: "Statystyki czołgu", es: "Estadísticas de tanques", tr: "Tank İstatistikleri"},
		{ i:61, en: "Premium Tanks", ru: "Премиум танки", cs: "Premium tanky", de: "Premium Panzer", fr: "Chars premiums", pl: "Czołgi premium", es: "Tanques premium", tr: "Premium Tanklar"},
		{ i:62, en: "Copy stats to Clipboard", ru: "Скопировать в буфер обмена", cs: "Kopírovat Stat. do schránky", de: "Statistiken in Zwischenablage kopieren", fr: "Copier les statistiques vers le presse-papiers", pl: "Kopiuj statystyki do schowka", es: "Copiar estadísticas al portapapeles", tr: "İstatistikleri Panoya Kopyala"},
		{ i:63, en: "Press Ctrl+C, or Right-Click and Copy", ru: "Нажмите Ctrl+C или ПКМ и Скопировать", cs: "Stiskni Ctrl+C, nebo klikni pravým tl. myši a vyber Kopírovat", de: "STRG+C/ rechter Mausklick und Kopieren", fr: "Appuyez sur Ctrl+C, ou clic droit et Copier", pl: "Naciśnij Ctrl+C, lub prawy klawisz myszy i 'Kopiuj'", es: "Presiona Ctrl+C, o haz clic derecho y pulsa Copiar.", tr: "Ctrl+C Tuşuna Bas, veya Sağ Tıkla ve Kopyala"},
		{ i:64, en: "WoTStatScript not active, because of player having 0 battles", ru: "Скрипт неактивен, т.к. у игрока 0 битв", cs: "WoTStatScript není aktivní, protože hráč má 0 bitev", de: "WoTStatScript inaktiv wegen fehlender Gefechte", fr: "WoTStatScript n'est pas actif, car le joueur a 0 batailles", pl: "WoTStatScript nieaktywny, ponieważ gracz rozegrał 0 bitew", es: "El script WoTStat no está activo, porque el jugador no ha jugado ninguna batalla.", tr: "WoTStat Scipt aktif değil, çünkü oyuncunun 0 savaşı var."},
		{ i:65, en: "Clan Stats:", ru: "Статистика клана:", cs: "Stat. klanu:", de: "Clanstatistiken", fr: "Statistiques du clan:", pl: "Statystyki klanu:", es: "Estadísticas del clan:", tr: "Klan İstatistikleri"},
		{ i:66, en: "Replays:", ru: "Реплеи:", cs: "Záznamy:", de: "Replays", fr: "Replays:", pl: "Powtórki:", es: "Repeticiones:", tr: "Replayler"},
		{ i:67, en: "Tier 10 Tanks", ru: "Уровень 10 Только", cs: "Pouze Tier 10", de: "nur Stufe 10", fr: "Seulement les tiers 10", pl: "Tylko 10 tier", es: "Sólo tier 10", tr: "Seviye 10 Tanklar"},
		{ i:68, en: "Battles missing from API, ratings may be inaccurate", ru: "Отсутствует Battles от API, рейтинги могут быть неточными", cs: "Některé bitvy se z API nenačetly, hodnocení může být nepřesné", de: "Fehlende API Gefechtsdaten, Bewertungen können ungenau sein", fr: "Des batailles manquent de l'API, les indices peuvent être faussés", pl: "Brakujące bitwy, obliczenia mogą być niedokładne", es: "Faltan batallas desde la API, por lo que los ratios pueden no ser muy precisos.", tr: "Savaş bilgileri eksik, hesaplamalar hatalı olabilir."},
		{ i:69, en: "Hit Ratio", ru: "Коэффициент попаданий", cs: "Přesnost střelby", de: "Trefferquote", fr: "Ratio de hit", pl: "Celność", es: "Ratio de impacto", tr: "İsabet Oranı"},
		{ i:70, en: "Average Damage", ru: "Средний Урона", cs: "Průměrné poškození", de: "Durchschnittlicher Schaden", fr: "Dommages moyens", pl: "Średnie obrażenia", es: "Daño medio", tr: "Ortalama Hasar"},
		{ i:71, en: "Stats for", ru: "Cтатистика для", cs: "Statistika hráče", de: "Statistik für", fr: "Statistiques pour ", pl: "Statystyki z", es: "Estadísticas para", tr: "İstatistikler"},
		{ i:72, en: "Battles:", ru: "Битвы:", cs: "Bitev:", de: "Gefechte", fr: "Batailles:", pl: "Bitew:", es: "Batallas:", tr: "Savaşlar"},
		{ i:73, en: "Clan History:", ru: "История клана:", cs: "Historie klanů:", de: "Clan Historie", fr: "Historique de clan :", pl: "Poprzednie klany:", es: "Clan History:", tr: "Clan History:"},
		{ i:74, en: "No Rating", ru: "Нет рейтинга", cs: "Bez hodnocení", de: "Kein Rating", fr: "Aucun indice de performance", pl: "Brak klasyfikacji", es: "No Rating", tr: "No Rating"},
		{ i:75, en: "None", ru: "Никто", cs: "Žádné", de: "Kein", fr: "Aucun", pl: "Brak", es: "None", tr: "None"},
		{ i:76, en: "Error", ru: "Oшибка", cs: "Chyba", de: "Fehler", fr: "Erreur", pl: "Błąd", es: "Error", tr: "Error"},
		{ i:77, en: "Missing Tanks", ru:"Отсутствующие танки", cs: "Chybějící tanky", de: "Fehlende Panzer", fr: "Chars manquants", pl: "Missing Tanks", es: "Missing Tanks", tr: "Missing Tanks"},
		{ i:78, en: "Refresh WN8 Table", ru: "Обновить таблицу WN8", cs: "Obnov WN8 Tabulku", de: "WN8-Tabelle neu laden", fr: "Rafraîchir la table WN8", pl: "Refresh WN8 Table", es: "Refresh WN8 Table", tr: "Refresh WN8 Table"},
		{ i:79, en: "Script Menu", ru: "Меню скрипта", cs: "Nastavení scriptu", de: "Script-Menü", fr: "Menu du script", pl: "Script Menu", es:"Script Menu", tr: "Script Menu"},
		{ i:80, en: "Famepoints:", ru: "Очки славы:", cs: "Body slávy:", de: "Ruhmespunkte:", fr: "Points de renommée:", pl: "Famepoints:", es:"Famepoints:", tr: "Famepoints:"},
		{ i:81, en: "Tanks missing from WN8 table, ratings may be inaccurate", ru:"Отсутствуют танки в таблице WN8, рейтинги могут быть не точными", cs: "Některé tanky chybí ve WN8 tabulce, statistiky mohou být nepřesné", de: "Einige Panzer fehlen in der WN8-Tabelle; Ratings können abweichen", fr: "Certains chars sont absents de la table WN8, les indices de performances peuvent être faussés", pl: "Tanks missing from WN8 table, ratings may be inaccurate", es:"Tanks missing from WN8 table, ratings may be inaccurate", tr: "Tanks missing from WN8 table, ratings may be inaccurate"},
		{ i:82, en: "Account banned until:", ru: "Аккаунт заблокирован до", cs: "Konto zabanováno do:", de: "Account gebannt bis:", fr: "Compte banni jusqu'au :", pl: "Account banned until:", es:"Account banned until:", tr: "Account banned until:"},
		{ i:83, en: "Last Battle:", ru: "Последние бои:", cs: "Poslední bitva:", de: "Letztes Gefecht:", fr: "Dernière bataille :", pl: "Last Battle:", es:"Last Battle:", tr: "Last Battle:"},
		{ i:84, en: "Max & Assist Performance", ru: "Максимальная эффективность и помощь", cs: "Nej výkony & Asistence", de: "Performances Max & Assistance", fr: "Max & Assist Performance", pl: "Max & Assist Performance", es:"Max & Assist Performance", tr: "Max & Assist Performance"},
		{ i:85, en: "Tanking Performance", ru: "Танковая эффективность", cs: "Tankovací výkon", de: "Tanking Performance", fr: "Performanec de Tanking", pl: "Tanking Performance", es:"Tanking Performance", tr: "Tanking Performance"},
		{ i:86, en: "Maximum Damage in a Battle", ru: "Максимальный урон за бой", cs: "Nejvyšší poškození v bitvě", de: "Maximum Damage in a Battle", fr: "Dommages maximums effectués", pl: "Maximum Damage in a Battle", es:"Maximum Damage in a Battle", tr: "Maximum Damage in a Battle"},
		{ i:87, en: "Maximum Destroyed in a Battle", ru: "Максимально унечтожено за бой", cs: "Nejvíce zničení v bitvě", de: "Maximum Destroyed in a Battle", fr: "Nb de chars détruits maximum", pl: "Maximum Destroyed in a Battle", es:"Maximum Destroyed in a Battle", tr: "Maximum Destroyed in a Battle"},
		{ i:88, en: "Maximum Experience in a Battle", ru: "Максимально опыта за бой", cs: "Nejvíce zkušeností v bitvě", fr: "Maximum Experience in a Battle", de: "Expérience maximum", pl: "Maximum Experience in a Battle", es:"Maximum Experience in a Battle", tr: "Maximum Experience in a Battle"},
		{ i:89, en: "Damage Assisted", ru: "Урон, нанесённый с вашей помощью", cs: "Asistované poškození", de: "Schaden durch Unterstützung", fr: "Dommages assistés", pl: "Damage Assisted", es:"Damage Assisted", tr: "Damage Assisted"},
		{ i:90, en: "Damage Assisted with Radio", ru: "Урон по вашим разведданным", cs: "Asistované poškození spotováním", de: "Schaden durch Aufklärung", fr: "Dommages assistés par radio", pl: "Damage Assisted with Radio", es:"Damage Assisted with Radio", tr: "Damage Assisted with Radio"},
		{ i:91, en: "Damage Assisted with Tracking", ru: "Урон после вашего попадания, сбившего гусеницу", cs: "Asistované poškození detrackováním", de: "Schaden durch Ketten", fr: "Dommages assistés par détrack", pl: "Damage Assisted with Tracking", es:"Damage Assisted with Tracking", tr: "Damage Assisted with Tracking"},
		{ i:92, en: "Direct Hits Received", ru: "Прямых попаданий получено", cs: "Obdrženo přímých zásahů", de: "Erhaltene Schüsse", fr: "Tirs directs reçus", pl: "Direct Hits Received", es:"Direct Hits Received", tr: "Direct Hits Received"},
		{ i:93, en: "Penetrations Received", ru: "Пробитий получено", cs: "Obdrženo penetrací", de: "Erhaltene Durchschläge", fr: "Pénétrations reçues", pl: "Penetrations Received", es:"Penetrations Received", tr: "Penetrations Received"},
		{ i:94, en: "No Damage Direct Hits Recieved", ru: "Попаданий без урона", cs: "Obdrženo zásahů bez poškození", de: "Erhaltene Schüsse ohne Schaden", fr: "Aucun tir direct reçu", pl: "No Damage Direct Hits Recieved", es:"No Damage Direct Hits Recieved", tr: "No Damage Direct Hits Recieved"},
		{ i:95, en: "Explosion Hits Recieved", ru: "Фугасных попаданий получено", cs: "Obdrženo explozivních zásahů", de: "Erhaltene HE-Schüsse", fr: "Tirs par explosion reçus", pl: "Explosion Hits Recieved", es:"Explosion Hits Recieved", tr: "Explosion Hits Recieved"},
		{ i:96, en: "Damage Blocked", ru: "Заблокировано урона", cs: "Poškození zastavené pancířem", de: "Abgewehrter Schaden", fr: "Dommages bloqués", pl: "Damage Blocked", es:"Damage Blocked", tr: "Damage Blocked"},
		{ i:97, en: "Trees Driven Down", ru: "Повалено деревьев", cs: "Pokáceno stromů", de: "Umgefahrene Bäume", fr: "Arbres abbatus", pl: "Trees Driven Down", es:"Trees Driven Down", tr: "Trees Driven Down"},
		{ i:98, en: "Armor-Use Efficiency", ru: "Эффективность использования брони", cs: "Efektivita využítí pancíře", de: "Panzerungs-Effektivität", fr: "Efficacité d'utilisation du blindage", pl: "Armor-Use Efficiency", es:"Armor-Use Efficiency", tr: "Armor-Use Efficiency"},
		{ i:99, en: "Overall", ru: "В общем", cs: "Celkem", de: "Gesamt", fr: "Global", pl: "Overall", es:"Overall", tr: "Overall"},
		{ i:100, en: "Max, Assist & Tanking", ru: "Лучшее, ассист и танкование", cs: "Nej, Asist & Tankování", de: "Max., Aufklärung & Tanken", fr: "Max, Assistance & Tanking", pl: "Max, Assist & Tanking", es:"Max, Assist & Tanking", tr: "Max, Assist & Tanking"},
		{ i:101, en: "Global Map", ru: "Глобальная карта", cs: "Klanové války", de: "Weltkarte", fr: "Carte globale", pl: "Global Map", es:"Global Map", tr: "Global Map"},
		{ i:102, en: "Medium - T6", ru: "Средний - 6 ур.", cs: "Medium - T6", de: "Medium - T6", fr: "Moyen - T6", pl: "Medium - T6", es:"Medium - T6", tr: "Medium - T6", f:1},
		{ i:103, en: "Champion - T8", ru: "Чемпионский - 8 ур.", cs: "Champion - T8", de: "Champion - T8", fr: "Champion - T8", pl: "Champion - T8", es:"Champion - T8", tr: "Champion - T8", f:1},
		{ i:104, en: "Absolute - T10", ru: "Абсолютный  - 10 ур.", cs: "Absolute - T10", de: "Absolut - T10", fr: "Absolu - T10", pl: "Absolute - T10", es:"Absolute - T10", tr: "Absolute - T10", f:1},
		{ i:105, en: "Strongholds", ru: "Укрепрайоны", cs: "Opevnění", de: "Festungen", fr: "Bastions", pl: "Strongholds", es:"Strongholds", tr: "Strongholds"},
		{ i:106, en: "Stronghold Skirmish", ru: "Укрепрайоны Вылазки", cs: "Opevnění - Šarvátky", de: "Festungen Bollwerk", fr: "Batailles de bastion", pl: "Stronghold Skirmish", es:"Stronghold Skirmish", tr: "Stronghold Skirmish"},
		{ i:107, en: "Stronghold Defense", ru: "Укрепрайоны защита", cs: "Opevnění - Obrana", de: "Festungs-Verteidigung", fr: "Défense de bastion", pl: "Stronghold Defense", es:"Stronghold Defense", tr: "Stronghold Defense"},
		{ i:108, en: "Team Battles", ru: "Командные бои", cs: "Týmové bitvy", de: "Teamgefechte", fr: "Batailles en équipe", pl: "Team Battles", es:"Team Battles", tr: "Team Battles"},
		{ i:109, en: "Ranked Team Battles", ru: "Ранговые командные бои", cs: "Hodnocené týmové bitvy", de: "Gewertete Teamgefechte", fr: "Batailles en équipe classées", pl: "Ranked Team Battles", es:"Ranked Team Battles", tr: "Ranked Team Battles"},
		{ i:110, en: "Other Modes", ru: "Другие режимы", cs: "Ostatní bitvy", de: "Andere Modi", fr: "Autres modes", pl: "Other Modes", es:"Other Modes", tr: "Other Modes"},
		{ i:111, en: "Rampage", ru: "Превосходство", cs: "Běsnení", de: "Verwüstung", fr: "Ravages", pl: "Rampage", es:"Rampage", tr: "Rampage"},
		{ i:112, en: "Historical Battles", ru: "Исторические бои", cs: "Historické bitvy", de: "Historische Gefechte", fr: "Batailles historiques", pl: "Historical Battles", es:"Historical Battles", tr: "Historical Battles"},
		{ i:113, en: "Tank Company", ru: "Роты", cs: "Roty", de: "Kompanie", fr: "Compagnie de chars", pl: "Tank Company", es:"Tank Company", tr: "Tank Company"},
		{ i:114, en: "Penetration Ratio", ru: "Процент пробития", cs: "Poměr průstřelů", de: "Penetrationsrate", fr: "Ratio de pénétration", pl: "Penetration Ratio", es:"Penetration Ratio", tr: "Penetration Ratio"},
		{ i:115, en: "First value is either average per battle or % of a related value, and the second value is the total.", ru: "Первое значение - это или среднее за бой или процент от связанного значения, второе значение - сумма.", cs: "První hodnota je buďto průměr na jednu bitvu nebo procentuální zastoupení dané hodnoty. Druhá hodnota je celkové množství ve všech bitvách.", de: "Der erste Wert ist entweder der Durchschnitt pro Gefecht oder ein prozentualer Anteil; der zweite Wert ist die Summe.", fr: "La première valeur est soit la moyenne par bataille ou un % de la valeur afférente, et la deuxième valeur correspond au total.", pl: "First value is either average per battle or % of a related value, and the second value is the total.", es:"First value is either average per battle or % of a related value, and the second value is the total.", tr: "First value is either average per battle or % of a related value, and the second value is the total."},
		{ i:116, en: "Do mind that some of the values are from the API, and might not load immediately.", ru: "Помните о том, что часть записей берутся из API, и не могут загрузиться мгновенно.", cs: "Některé hodnoty jsou načítány z API a nemusí se načíst ihned.", de: "Bitte beachten: Einige Werte stammen aus der API und brauchen deshalb einige Zeit zum Laden.", fr: "Gardez à l'esprit que les valeurs proviennent de l'API, et qu'elles peuvent ne pas être chargées immédiatement.", pl: "Do mind that some of the values are from the API, and might not load immediately.", es:"Do mind that some of the values are from the API, and might not load immediately.", tr: "Do mind that some of the values are from the API, and might not load immediately."},
		{ i:117, en: "Script Author:", ru: "Автор скрипта:", cs: "Autor skriptu:", de: "Script-Autor:", fr: "Auteur du script :", pl: "Script Author:", es:"Script Author:", tr: "Script Author:"},
		{ i:118, en: "Contributors", ru: "Внесшие вклад", cs: "Kontributoři", de: "Contributors", fr: "Contributeurs", pl: "Contributors", es:"Contributors", tr: "Contributors"},
		{ i:119, en: "Battles & WN8 per Tier", ru: "Бои & WN8 по уровням", cs: "Battles & WN8 per Tier", de: "Battles & WN8 per Tier", fr: "Battles & WN8 per Tier", pl: "Battles & WN8 per Tier", es:"Battles & WN8 per Tier", tr: "Battles & WN8 per Tier"},
		{ i:120, en: "Battles & WN8 per Class", ru: "Бои & WN8 по классам", cs: "Battles & WN8 per Class", de: "Battles & WN8 per Class", fr: "Battles & WN8 per Class", pl: "Battles & WN8 per Class", es:"Battles & WN8 per Class", tr: "Battles & WN8 per Class"},
		{ i:121, en: "Battles & WN8 per Nation", ru: "Бои & WN8 по нациям", cs: "Battles & WN8 per Nation", de: "Battles & WN8 per Nation", fr: "Battles & WN8 per Nation", pl: "Battles & WN8 per Nation", es:"Battles & WN8 per Nation", tr: "Battles & WN8 per Nation"},
		{ i:122, en: "Calculating", ru: "Рассчет", cs: "Calculating", de: "Calculating", fr: "Calculating", pl: "Calculating", es:"Calculating", tr: "Calculating"},
		{ i:123, en: "Supertest Tanks", ru: "Танки на супертесте", cs: "Supertest Tanks", de: "Supertest Tanks", fr: "Supertest Tanks", pl: "Supertest Tanks", es:"Supertest Tanks", tr: "Supertest Tanks"}
		// { en: "", ru: "", cs: "", de: "", fr: "", pl: "", es:"", tr: ""},
	];

	// region settings for external sites
	switch(wg.srv) {
		case ("eu"): // eu server
			sc.srv.wl = sc.srv.nm = sc.srv.vb = sc.srv.ws = sc.srv.cs = sc.srv.wlf = sc.srv.ct = sc.srv.kttc = sc.srv.aos = sc.srv.ch = sc.srv.wr = sc.srv.we = wg.srv;
		break;
		case ("ru"): // ru server
			sc.srv.wl = sc.srv.nm = sc.srv.vb = sc.srv.ws = sc.srv.cs = sc.srv.ct = sc.srv.kttc = sc.srv.wots = sc.srv.aos = sc.srv.ch = sc.srv.wr = wg.srv;
		break;
		case ("na"): // na server - american english
			sc.srv.wl = sc.srv.nm = sc.srv.vb = sc.srv.ws = sc.srv.cs = sc.srv.wlf = sc.srv.ct = sc.srv.kttc = sc.srv.aos = sc.srv.ch = sc.srv.vb = wg.srv; sc.srv.wr = "com";
			loc[24].en = "Defence";
			loc[54].en = "Base Defence Points:";
			loc[107].en = "Stronghold Defence";
		break;
		case ("asia"): // asia server
			sc.srv.wl = sc.srv.nm = sc.srv.vb = sc.srv.ws = sc.srv.cs = "sea"; sc.srv.ct = sc.srv.kttc = sc.srv.aos = sc.srv.ch = sc.srv.vb = wg.srv; sc.srv.wr = "com";
		break;
		case ("kr"): // korean server
			sc.srv.wl = sc.srv.nm = sc.srv.vb = sc.srv.ws = sc.srv.cs = sc.srv.ct = sc.srv.aos = sc.srv.ch = sc.srv.vb = wg.srv; sc.srv.wr = "com";
		break;
		default: break;
	}

	// set script language to english if an unsupported language is detected
	if (sc.loc.sup.indexOf(sc.loc.cur) == -1) {
		sc.loc.cur = "en";
	}
	// process localization
	for (var _l=0, l_len = loc.length; _l<l_len; _l++) {
		var langLoc = loc[_l][sc.loc.cur];
		if (sc.loc.cur !== "en" && langLoc == loc[_l].en && !loc[_l].f) {
			sc.loc.miss ++;
			console.info("Missing translation at line "+(_l+668)+" - en:\""+loc[_l].en+"\"", sc.loc.cur+":\""+loc[_l][sc.loc.cur]+"\"");
		}
		loc[_l] = langLoc;
	}

	// add language to body classname for language based styling
	d.body.classList.add("lang-"+sc.loc.cur);

	// script link, settings, credits and localization indicators
	var userSet_div = sf.elem("div", "menu-settings menu-top_item", "<a class='cm-user-menu-link' href='#' onClick='return false;'><span class='cm-user-menu-link_cutted-text'>"+loc[79]+"</span><span class='cm-arrow'></span></a>"),
	userSet_list = sf.elem("ul", "cm-user-menu"),
	userSet_list_locItem = sf.elem("li", "b-settingItem settingCredits settingSeperator"),
	userSet_list_items = [
		sf.settings("wnRefresh", loc[78]+" [v"+wn.vers[1]+"]"),
		sf.settings("copyClipboard", loc[62]),
		sf.elem("li", "b-settingItem settingCredits settingSeperator", "<p>Version: "+sc.vers+"</p>"),
		sf.elem("li", "b-settingItem settingCredits", "<p>"+loc[117]+" <a class='b-orange-arrow' href='"+sc.user.wot+"'>Orrie</a></p>"+((sc.cred[sc.loc.cur]) ? "<p>"+loc[118]+" ("+sc.loc.cur.toUpperCase()+"):</p><table>"+sc.cred[sc.loc.cur]+"</table>" : "")),
		sf.elem("li", "b-settingItem settingCredits settingLinks", "<p><a class='b-orange-arrow' href='"+sc.host+"'>Greasy Fork</a><a class='b-orange-arrow' href='"+((wg.srv == "na") ? sc.top.na : sc.top.eu)+"'>Support Thread</a></p>")
	],
	navMenu = d.getElementById('common_menu'),
	navUser = navMenu.getElementsByClassName('cm-menu__user')[0],
	navLook = new MutationObserver(function() {
		navUser = navMenu.getElementsByClassName('cm-menu__user')[0];
		navUser.appendChild(userSet_div);
		navLook.disconnect();
	});
	if (sc.loc.sup.indexOf(sc.loc.cur) == -1) {
		userSet_list_locItem.innerHTML = "<h1>Script Translation</h1><p>Unsupported language detected!</p><p>If you want to contribute with translation, please contact <a class='b-orange-arrow' href='"+sc.user.wl+"'>Orrie</a></p>";
		userSet_list_items.push(userSet_list_locItem);
	}
	else if (sc.loc.miss > 0) {
		userSet_list_locItem.innerHTML = "<h1>Script Translation</h1><p>Currently "+sc.loc.miss+" out of "+_l+" strings not translated in your language!</p><p>If you want to contribute, open the browser console, translate the strings and send them to <a class='b-orange-arrow' href='"+sc.user.wl+"'>Orrie</a></p>";
		userSet_list_items.push(userSet_list_locItem);
	}
	sf.links(userSet_list, userSet_list_items, "list");
	userSet_div.firstElementChild.addEventListener('click', function() {this.classList.toggle('cm-user-menu-link__opened'); this.nextSibling.classList.toggle('cm-user-menu__opened');}, false);
	userSet_div.appendChild(userSet_list);
	if (navUser) {
		navUser.appendChild(userSet_div);
	}
	navLook.observe(navMenu, {childList: true});

	// check if player has 0 battles before continuing
	var tableBattles = sf.format(d.getElementsByClassName('t-personal-data_value')[2].innerHTML, 1),
	profileName_class = d.getElementsByClassName('b-profile-name')[0];
	if (tableBattles > 0 && wn.wn8) {
		// request and retrieve statistics from API
		sc.api.i = "http://api.worldoftanks."+((wg.srv == "na") ? "com" : wg.srv)+"/wot/account/info/?application_id="+sc.api[wg.srv]+"&account_id="+wg.id+"&extra=statistics.fallout,statistics.globalmap_absolute,statistics.globalmap_champion,statistics.globalmap_middle";
		sc.api.v = "http://api.worldoftanks."+((wg.srv == "na") ? "com" : wg.srv)+"/wot/tanks/stats/?application_id="+sc.api[wg.srv]+"&account_id="+wg.id+"&extra=random";
		sf.request("infoData", sc.api.i, sf.apiInfoHnd);
		sf.request("vehData", sc.api.v, sf.apiVehHnd);

		// url variables
		sc.nm.url = "http://noobmeter.com/player/"+sc.srv.nm+"/"+wg.name+"/"+wg.id;
		sc.nm.api = "http://noobmeter.com/simpleplayerprapi/"+sc.srv.nm+"/"+wg.name+"/"+wg.id+"/"+sc.nm.id;
		sc.chApi = "http://clanapi-wotcs-eu.herokuapp.com/players/"+wg.id+"/changes";

		// variables for dropbox, css and data uri
		var css = {
			box: "box-shadow: 0 0 38px 1px rgba(0, 0, 0, 0.3) inset, 0 0 23px 1px rgba(255, 255, 255, 0.02), 0 0 5px 1px rgba(0, 0, 0, 0.5) inset;",
			input: "background: rgba(0, 0, 0, 0.09); box-shadow: 0 0 1px 1px rgba(255, 255, 255, 0.15) inset, 0 0 38px 1px rgba(0, 0, 0, 0.3) inset, 0 0 23px 1px rgba(255, 255, 255, 0.02), 0 0 5px 1px rgba(0, 0, 0, 0.5) inset; color: #606061;",
			l: [
				"https://dl.dropboxusercontent.com/u/12497046/wot/projects/statscript/img",
				"/static/wot/common/css/scss/context-menu/img/arrow.png",
				"/static/wot/common/css/scss/content/links/img/orange_arrow.png",
				"/static/wot/common/css/scss/content/user/img/speedometr-separator.png",
				"/static/wot/common/css/scss/content/links/img/ico-info.png",
				"/static/wot/common/css/scss/content/links/img/vertical-arrow.png",
				"/static/wot/common/img/common/cont-img-mask.png",
				"/static/wot/common/img/classes/class-ace.png",
				"/static/wot/common/img/classes/class-1.png",
				"/static/wot/common/img/classes/class-2.png",
				"/static/wot/common/img/classes/class-3.png"
			],
			u: {
				menu: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPQAAAABCAIAAABmEhQDAAAAHklEQVQoU2MAAj4BAR5ePi6eUTSKhgni4eFjYGAAAN9YIhjam+zlAAAAAElFTkSuQmCC",
				icon1:"data:image/png;base64,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",
				icon2:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAcCAYAAAATFf3WAAALCUlEQVR42p2Xe2wc13XGv3Pnzsw+uEvucpdvkZT4EClKsh52akeO5VjNo4lSo24UF0WbokjqIq0BFEiB/NNW8T9Ba6AvBEURNAWCps5LcWQncWIJcRLbkm3JpmLJEmlKlkjxzX1w34/Zmbk3Z+0FIhBOrOTb/WEWd3bnfvudPQez+HXSADVBS1qD3uYYjLc5flygpZEAtv3VZz792ZfPvvD/0+de/sbnH330b0ai0dF3uyZ+SxHzG00SH5rG3n4cY05AEcAeYZwAtj909A/uOPaph0cP3Xuvbguas4ZWXr7mTb56/jXj5JPfmX/iuycvAbiK31F0m+bw9muApoDwNWDooaMfGnzgyEd6h4e3m4NDg9mJnWPzKGaWELQ8RLv7rl6eGVqYX0wsLC2pF1782cYT335yCcAiU8FvIfmu5lqJaQBE0F8BzAgQ3Wkheef9D/Q+ODHevWNoSN61f39+7+TEBkXFCq6czuWXKqTbBnSs9/rC+J77M2M7xnpn5ua6fe21dyZ6wsuLi/FnTp9edRwnA6DM6PdOcGtiAOFX4E6gTQ1Ek9H4QE9fT09i34F9wY8f/cPK1P6pVRRSaf3GdK3suzrSucNIR9ooBCBkmX4xte61dyd8bD9gg5C4fPlK19Pf+174/PR0dTmVyizfuJFiFQHUbtsgjjOPtdYOg/A81FQyubd3W+/AffcdNv78U8fy23ePbODalWI1m0G+LmUwGEDFdZVN8P1om1+t1QksYUSJhKBAzFI+G+7bedADEJibm+v67lNPhU6eOKGWl5dTGxsbC+9h8FZzrbWDEGhqGv43/+Px3bvHd2LPaPcmsjfcpcWCrFTrpkGuAdjwteVnGo7yqK5Mh5RvmtrqjSjlxbWQkoRhkOywhCr5OpJMup1DQ04ikcCZM2dis7OzxiOPPDL/uxmcbv0cf/SjWE3mzXSpqFOFsrTKNVmu14WjSZqGp+dWHHVh7g0zk0/bItTuDA6OFvbt2tWQsRj5SomurjDqjqTOeFyDla5W/ampKTcej1N7e7svhCjdVpOwOQ1ANEurVyCoeXRAS6vXTelX5ErqKuUq2iiVPOlEA/1rN1OZk8+/MnjHHWO/v/99+/YNjx0T2gw2Rob6Vi9duf7mM6dOp35xeRZKkhO17ZsvnT+fPn78eH58fByvzM6KUdsWViJxe11MgG6lqLF2UMDZELq9Jok8Izd7zl7YLAYL1U0P8X7DDYWT6yvpyle+/fTw/578zh9viwV/TxUzEQ2BXGpd4drKIJW9yXvu2F795EfvoZGdk8qMJCtEKH/mbx/951A0tjje3ePbAVtz+X2wbq/EaA1i7DJ0XpqgTRvalaeig8m00UFWPIZAdzJwYz1tf//spY7P/f3f/dFDn3zwSG35Boobq0ivrehCahVBr443vTCCoSB279qFvuEx0oEotFJYXVv/8Ze+9IW1YlmVlJZQSkP5ytNag1FSGqHOeCxSd9xQvlh0D+6ZSkk+R/hiq3tTTBdAdlrrhoFsxZM365v2CjdEoViL5mfmO6+tbqhDh953+BMf+9AHZ199Tbx6/lxjfvGmWFxYpIZbRySeQCafQygQwpkLb+iuRKceGNgGsgI49P4PHNs2PHHV9chxPQVoQAhSYCl2a1uW3RGNhCq1mpUvlb2R0ZGCJAJ7bOl55vCMwk64tNqLhuOINa+mLuayvVc3a0OpsjMUbg8N7Bgd3ldcuqkf//cvu2enL4qenq5mt2qLOzZTTZE0TahGRaPR0I1CUSwtLIiMY3jCV4We/pFuQJPrumjGZhhCgwi+7yMSCiHWHkWpWkWuWEL/QF+bBMABgnD8nUa5/3nQheuQeyeCph3UlKko6UIEpGW02wGZrLle8sRPX8KO/j7YloFkrF0HTYMEEUxDAQTluA0KtYURjbYhGLDBNVRBgzDc0+39w+ePz9brtapWXFxGK+0TQQIQzQXZrHOI97btSs1pzEqwZgAqPQFZA/zHgO7AMo786Z7efdo0pG9XIhNdlJiyRXy9UQltpDfNLhk0x0Yn8S//dCe++vVv0A9OPUfRaAQCBB8Ab6Q9DXIUoVHz0NTU8JCOlFJiLB4O/eTC/AqAPEOMz9gtGkyKucFcZVYJgMUE4gA2gUNHP/zAw0/+z7/dIxPdQnh10sUsFZYWxOKbF3U4EAbF+3kelpDK5nUqm0PDc7F35wge+9f/kpFwUGkSKCmhDDNAhjQw2N2pjxzcg4bvq/TaOqIdnd5yrqxevHBx/sWXzs8GLanzpcpyy6DPbDI3WybTBCBuAzEHmPqLo4cf/MJf/8l9kwcOmt88dV7F/YJ2Gg2jUq7ojY2szpZrCIdCqqEUza+uq1KhQD2xDhik6cbNJZKmqWGYKCoSiiSBhIy3R/XEYE+94dQws7iO/kRCDA/0y77+/kp//7ZcW8D2Tp86ffWL//nfzwFYY+pMoZVkmQBMMP1T49sf/Me//Pjhhz98V/T/Tl9wf3h2Bj0hwG24hrIjyHtANpOlkF9TkY4YlnJFQ7keTO3qoAAC0kQNRMqwyCEOXyllKiWCktiz6fieRw1NaIpN0/jYqBgdGeVTlstjKpfNFS4++8KZH5599eIFAFnGbWIAOMCMf+Seve9/4M6xgbW1lPv415+lgG3pKgh1xxObFYdqviLblDCFgGVZENKW0rK1kBICgGLqujnaA6bSWnmep4Tn+ZZylGZztYaLSMCE0IpSmQzNXZ/H65dn/ddef93nsRL8wF0H9k5uH45M7hh88+z0pbdal9QCwAAzUsxlQ+trm26qpCnUnkTY1NRgY1VPUc2pUbWQQ61WhSOs5pqwJHmxoPRNQ8BR0EpweETaFFAS2jMBH9JCwwoThOQvHKBMrkDlUhlBy0LYskl7PsFTOHdpxl/NbBb2TI4f/rNPfGwP3pFmYDAfZIbnltJd/cmYfezI3SJbrWPm6jykIGhfk1AKEakpYgLKNFXIMnnmgUwC8RMQQktDakOQ5rb1wwGbzwshzWZ9DTieD9s2yfM9kqZNjuOgWC4TpwyezUoTUaPRME0yXgkHzB987eQzi2jJYO5mupnO+VQuGAqHxeceuh9fe+rn2MwX4CpOqznntE/aVwh18NyTBgztM4p8LqevoQkgoZtBQneEw2QJRZCSrEAIIYM0lE8+mbbibq7zAPfZlgJBCaHu3b+b7t4zFdrMFb/84reePjW9tqZuNTjBxJmOas0JLm9kZTSeoE9/9hFdrjuUzWYFG6Wa4u1D7VR1FHtTkJxWkJNsTlrH8zSg4Wvf0FqLDlsQJwpXEXwuowHNiXJKZEfItOJEQknLdDp4AvQlEjTU1Y2Xf/H6V587+9qzz165ktl6s/BRZh+zlxkSgmJjO4ZkV+82OnjwAIK2JEN73CAGlNaoVqvNJtF1pwHLNME3r6g6LjgYElAgAgiEWt2B5M+YUqLRcFCu1tAsaSIaxvhAD1yOneefkUrnMstrqe//5KVXfgxgjiluvd1aY2JMO2MpdjH31kJbNl+RAAzuXGEYIE4AXE7U6/V3NvV8EPGaywm6LnlKkQFAM811z+dUtYbBHxZEbLJBLq/N8Te5dn3BS3ZE675COpcvXvjZuenTAJYYB1tETB8zyOxkxlqv40yQMRnjPf4/a4a2vEe1juJd9vOZLLPcSuw8s8pkmBqjtiZYaLn3mSqzySSZttYGtMWARuvYgn6NaaMFMfoWGswK81bL5GrLcJ1R2CLZcq0Zr2Uw3Uow1DpPtxhtSt2mQcEYt1zDa5koMXkm3TJWvDW5rfolvxqAFmiL3qMAAAAASUVORK5CYII=",
				nmLogo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABgUlEQVQ4y92SPWsUYRSFn/POzE4MgkhMKyKICAEjiUksgoWClY0WYifKDlj4VyxsDGvlgmhtLUiIkoSNiLEWCwN+dmvAnZl3jkV2lxArSz3d/eDe53Iu/NOabb8J6cHkfLGZbXUWq1E8c2c7kxpPhF8unfPu0bk4qqWqz+jggAtFL6uor9hhLqjZnkwHq7ip+/WRJlF50tYs0oLwF5vdPwhKKCHDguiEfpUBkKh6aMIT8MutzmJ3TDFGb/duA7L91HBTgAEYQlqHgeOH9PPt/oUCWCpezVTk7z1sFpwG7gMt4C64a7QCdGUTVF9LQ/l6feXiN80Xmw8aJ/cQxm6AIKkAXgAfgWnbZyVNgp8bjdAIqi8HW1MMeSUs2MG+ZfsTeMdwQrBs+AAgPAQ1gl0BnC82njVOboxPkGujVHhglMuORonYywfid8nXe52ltbGNC8X6JaNTQapjrGNjchH7VutYnvhHJJ3Cg8+mdXSCr4/XOlcH+7xf1d984Fx7I/D/6Dd9b6wCx93gcQAAAABJRU5ErkJggg==",
				vbLogo: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAACrUExURUxpcahYHvXmtciUVrbSzejKpNzr8f///47A3adRHu3n29zd3cOUct3t9cDj9BFeuTJUoe7EitufUiuGzOrTn5HT+NHdy7Pp+f/0x83m9Pz96n240Pry4DWg2WKn1Nfp9K7f8CthnNurZvz27OrTsP/////+/P757fv+/vL8/+L6/+fy+Pv49f/z2uPSvrDf+Prrysfj4OPDlrqRrsDDrXen15PH3sC918vq/6QbRKQAAAAldFJOUwBxqjlV41VVVTnGqsbxuDmqqqqqOaqOqnGOjqrjqsbGORxxxhxX8ZyaAAAAjElEQVQY043N1xaCMAyA4aKAbPceuNq0FHCP938yU6pU7/yvmu+cNIR8tfGa5KckbuiH18Lcqcx3Ww0HiuUcor2e25kC6tQfdCpg3ffYF7Tu6CMMzUxZD2HMDXB1dmmAnQcI62dhJRC5wvEzmCDMJYQxC1KxCEVRnbnJzwYElgJ7VT6up0t5n41s8kcvaosSk0veKFwAAAAASUVORK5CYII=",
				rat:"data:image/png;base64,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",
				ratMark:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAANCAQAAADLNWwDAAAAV0lEQVQI12NgEGQQZhBhEALSQEqMQQIIgUxxBqmvRyBMKQa5H3cZpIGyDHIMir/fAkkxBgZFa/0/nxgUgQoZVNLsgExloGpkUSS1SCYgmQuxTQwkCncDAH0wFzVj5p2XAAAAAElFTkSuQmCC",
				tiers:"data:image/png;base64,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",
				bad1:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAfCAYAAABtYXSPAAAFVklEQVR42q2Xf0idVRjHu/f95dxVBGvNJlM2lI2hbW5sqMo23SDa2JaOtWBDCuZG2QBawZis0WA4pgtMREUQFXWJiASIGgkgEBWRKSD9GYAVEDQE+qtOzweey7nck12vdODLc5/3fL/f87znx/ve94X/aDEbFc61TXSZtFk2X6PnmGUe2OVYeNZ/aw1BXAWxtN+a66A2p7nXrcYnT/vtZVEQIi3MigONtjAH2qd810N9MzcV2DsIFTmCHfbOMxVjeejQWy+dZS0y86xYUSR48fr169MHDhx4czvFoEOPD372JjefHTu1wM5GflFR0fujo6MmNzf3s97e3pJsioGPDj0++OFriwGW7yyRVp8rSOzZs+fVs2fPfj03N2ck/3xoaKgCYllZWRzs3r3bKy4u9goLCz0iebIPHnx06PHBD1/1j9KWyikkTBYjrbKlpeXvwcHBv2SaKeaLvr6+GsjHjh3zgCyBf/ToUW/fvn0ekTzZBw8+OvT44IdvSjFhWkHO7mcaXwqC4PbMzIwB7e3tJhaLfTkwMNCAoLa2NgCHDx8OGxoa/EOHDvlE8mQfPPjo0Ce98MWfcdzTaWfG152/My8vr6ygoGBgcnLSLCwsmJ6eHmbmK7nT1yCfPHkyBMePH4/Onz8fVFVVBUTyZB88+OjQ44Mfvvgzjo7npy9VLOX0FAr56b1798yjR49Md3e32b9/P8V809nZeQ7y6dOnI1BdXZ3T1NQUnjhxIiSSJ/vgwUeHHh/88MWfcVJOVyy9mEArLZOpfXb37l0zPz9vLl++jAnF/NDV1XUBcmNj4w4gy5F79erVqKamJiKSJ/vgwUeHHh/88MWfcXS84N+KCXVjlQs+qqurMxsbG+bx48dmZGTEYPrkyZNzkM+cOZML6uvrd167di2SGBHJk33w4KNDjw9++OKv48ALbTH2h6+b6uXy8vKnJSUl64uLi6ajo8PIHWPwvRhegCjHdCeQvZGQE5IjMYdInuyDBx8denzwwxd/xtHxfLjpBYXaWSzPiZ/Gx8eN7APDesseYGqXHzx48Ho2xcBHhx4f/PDFn3EYz86M+xqIdPr6Ll26ZNbX141sTjMxMcHMLN+5c6cxm2Lgo0OPD3744q/jRDqu+yrQzhLB22EY/jI2NmbkRJiHDx9isNLW1nb71q1b9YgyNXjw0aHHBz988WccW4zWkLZnIj3/lYL2vXv3/lpRUWHkYUYx38rR7bAFZS4EPjr0+OCHL/46TpS6Z9y3tW7ieDzecvHixefDw8OmsrKSdf5NrrccOXLkQ7cgtxB48NGhxwc/fO3m3fztHRcEinxBred5azdv3jT9/f3m/v37Zmpq6k+5/okYvmULcguhHx58dOjxwQ9f9Q8U8c2KoQVacYXgAzF+Lu8ec/DgQXPjxg3D2u/atWtF+tgPzRSwtLT0jEjOdfrhwUeHHh/88FX/IG1ct6CUv4V5gmrBx3I81xKJxB9RFJn8/HyeFYbNeOXKlRUt4A0iOdfphwcfHXp88MNX/f3NC3H/XEeCAkGd4B3Bp3Jkf29tbTWnTp0y8pQ109PTZnZ21jQ3N68RyblOPzz46NDjo36R8yd+i18Iob7uSwVN8oL7ubS01MgpMcQgCAyPd15+RPLUfvjo0KtPmM2XQSwl+kAN8vTF9q6s/XeCVd/3V2Xw1TAMlwU/Esm5Tj88+OhUH1rPrD7o7LeNxkCPY5XeaavgPUUby0AkB/TDg49O9dYP/6yb+9GVELwiKNJYIigmJ5Kn9Secj8JtNfcLEgR26Yhbyl2fbTcr9pzjb3N7Et1j61mf/6k539FuEXGnL8si/gEY8SzOXUsBvQAAAABJRU5ErkJggg==",
				bad2:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAfCAQAAADHaLwEAAAErklEQVQYGQXAD4yWdR0A8M/39zzv8R4cB4fADmUorjRUmULKNDetVMtcTWdYbra0aJZrjmVZrY1yW26LcmuMZCZrJUbaLEfGRjUczjnHTUXaIADjPzAABLw74O55vg4ACIQQAiEAABAAAAAANSohBIAQAIoCKCAUgAKg0qq1QoVQBAgUFC231mpFqwgpAAqARqCgVdQCIVC0CBW3UVCrhAoFCEARWpWCIpyTAgFaVGgVtdBKKYwJoaUAWnQQ+h968VNfBgAApPa6iz//mn5FkToKgoIQKlCbMOvrd96775aVc7inHtr92+a55vlmRf4uNxy+oY+Vc07fuOhzd680RVFLrZDUSAW1Srlk7lUPzjAys7efPxy9ZeCP0rhhPZbM+MuRBTN6+5vLue32zfOOveeCGuOIgiJUMPHy29994MY19B6btePUwoFXdc1wjX4D1rqn++bho7P39f3H3CkPvj64WEcIIShCIoVJY7fdG9PLpaL3s6tvmHq/p/zckJPW+4Ufme/OvgWr9V3veHlEfZepoJKylopQK5OnVtdcMNWgLAe6w/6kccI9jjvrFdN0nPPuRD2TdHVcmD0w+9QZjUaIgkSr67uPLdllu2foG467DHlUOGXEB3q87IsuMTlMfMGQNzy6aOA3eoVQyQJCMe2ji1sLbfItej5w0gW11Dprkta4fpUPQ/chZ7SutH9Av0qtFQWEEPnOG252g9k4oeO0Lnaba4LWMWmm0VR6LPAVmzVb9SlaKYuQWq3TVwzuP7xZWkXbNe6499CrOKG1117TzQ2xzg7HbBydc9wZqQhRpFDQyS89PWuF5/SI6ixG3GyK804aMMsFl5niQirTrbfU97tXLBZohCxIjTRx58aXrDDdd6S+5oQXHbDEJHuEJ822xVsuauV95nrS8diwTZ8WjSxCgPPe/ueRjb5qF+XA818b2+igtThqj997xZD7muVb1f9zla5fj3nZKakIKiFVinPONWeGrt7et92RfX17tu5/ev4yZ1xmkU3escvjtu38wq5/j47O3+m1kcNrm/X2GTMmKRIpNY6W/df3PqH1yUvf2la2/PKlpec7xpzWY6Inxg7um/bmj/81eOWwb7uzro/Y7ZxGKNQgpcZou+sfhwb7H3Nw5vxn7/9VvDpt+IGHX7fQVo84dOTvK0fHf7rsE7P3KFaPj7ytQUoJUNDR41o/KKevznm5JJfnzPc93rPqm9nJZdlZa2nPxp/kUzkvP511Y5Wb9KoVRQGgqFUmu8my2Nb34YTsz0tzTS5+3/Jn01+v2/S3/ExOyQk5eaTssdLdpuvqCAQBQmgVHb2ucYVr7/jG3Gk71L6n62eHll48aI0tFhoe+/MLthmy3UljQoskAFBJtSkmWTD5mYvmzHLYQYvc6r826JrnmBOjJ39ovVNGjUutFJIAhBQqFBMMuqM8rFuEaERoa23ThmaddXb4SCuFRkgIANRaIVWmucRlpusgjOhRS+mE/9tr2HnjQiskEACAUGmFXv1S6Gg0KjQ6RjTOSq1UpAQIABAIiVoqWiEVoVU0WiGMCyQABACAkCqNokiNIgVSoBUILQBQAQAAAAgpERIhkQAAHwPlu9kMCvbXiAAAAABJRU5ErkJggg==",
				miss: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAcCAMAAAAz6Z0tAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAA5UExURUxpcdkCCP8KJP8MJtIAAdkEC88AANAAAP8LJusHGM8AAM8AAM8AAM8AAP8OKf8OKdAAAP8MJ88AAK2kIk4AAAATdFJOUwBH1rffDcv+/if1nzhijVC68IB97NktAAAAjElEQVQoz+3RSxIDIQgEUBkQ8K9z/8OOJi4l2afS5c6nXahzvx3fKmJt3hYBh84MDKa4dNTW6qWXYTzqey+g9HNXG2OfDxThSKpW2OaWdCSozQEJTwPSj6TLvD2/jEWS3G4bq6hEWnOsLorlPHSXtI2w8cCrowAUEsrW82aOEufi/OEbS2JOxbt/vucBz3AEu+Dj2y4AAAAASUVORK5CYII=",
				sparks: "data:image/png;base64,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",
				blueMsg: "data:image/png;base64,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",
				wgLogo: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAG2UExURXiw+HLC5Yji84DB0woUGILK3g0VGEZcdR44SA8bHozU8Ds9QCg1NSI3O4PJ70VcYYqvu6vBxw0bJA8WFxMjJxQWFhMZJQ4YHBEWGBoaGCAhHxIaHRwdG0NFRikvLyQuL2aXsJDU9np6fKW0u9na3+jm57rCxhcZFQ8VFyMjITAxMRcZFycoJzM0MxoaGQ8VF0pMTi0vLT5CQDA3OjI2NDM1MlhaW1FTUzhUZ0pOTnZ3d32BgI2Sko6Vl26gsVmCkFxnZ3CAhsfLy5q2v6Cqr8HIzKSpqpqfobe+wc/T1sbO08zQ0RoqL4CxwUJGSj5CRUFER2ZqbZaWl8a/wY9vcskiHjU2ODo9P1VXWUtMTlBJTF9dX32DhVkGBsDBw56anN/T1bCztN3d32wkJ9QJCce4uaBqbD8eH3JhYl1ERVIdHUtERm5naVMBAYyRk2sXF3BKSpdMTZIpKWlkZYxFR24DApxXV50EA5QeINbOzs7HyHFpansDA8tnaJSLjZMQD5IQEenf36wnLNJaYvtCDq8xE/QWFfwxHLRFKOUcBuva36Z5e9giH6+JjKEUF9RVSfdBQ6CisIhPiQ4AAABOdFJOUwQHCxsrFk0CBzcR9g0pCxItRBtoIJ4URny4sFqm8GJSFQ/9Xej+78qD5O2x1u3JkPGSz0p0zv2iG4+xnaKPLiVgX8I4Z6fN8Oux4+UvI/Wmz6gAAAELSURBVBjTDcjTlsMAFADAmzZumtrm2mbXPKdJ26S21rZt//FmHgcIQFgPptZo1BjNIkAAgcjo6cXlYHBpVo15WACQYTML10K9/hXz++S0DID2zQs398W7D7Hm18ilCM1d3D68R2ufz99nU+MAyES0chX4e3p9+a0eByYxUI1mDsvlytvjT0zcL47JQTWcLuRLl1XxvLS3ExuRYiCZ3T44Ojn1FnbX80NuYHr7U5GNrZyQ3cyteZ1uIHu6E3xqNRrJpFcifa5BIJVdnXEuHOa5eNJhdymlcFodPJeQTtHeYaOA1FI6a2ubQtHc1GAw4ygQjJ6yme0WS4uhUYejRiAI0qhHKROOmyhUy5D/T8Y4lZQQWWoAAAAASUVORK5CYII=",
				tenIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQcSURBVEhLlZVdSJtXGMf96DY1M35NiMNh1EXm90cak6hrdCatKOhFdegWvNFdZNkqokPEC4V5o5W6ebHhxNJuVh2i0CtbC522tNgxxCF0TJBsNhukIl0XyxqCPPv/X960gbluPvDjnJz3PP/znOc85yTiPywKvARiwnhFHeO3Y1skCInGAQ2IV2GfC5wAnEeOZdEgJJwE3lBJUMf4jaKc97+MkdKBzqkgG5TZ7fbHNTU1j9AvBVkgBRwrLdwit2wANvBedna2d3R01Ds8POxhH2PvgrdBBngV0OdfLbQtTVpamikjI+M3irAtKCj4cW5uTiYnJ4V9joXIy8v7MDExkbuj75H55nZe1mg0usrKys+bmpoOA4GA9Pb2is1mWxocHPQ2NDTcd7nc8vChT3w+n/j9fuG83NzcLgTDXf4zJVlZWVqK5ufnf83Ja2trsrvrlY6ODmlsbLwWGxt7hf29vT2ZmZmRvr4+WV9fl52dHamqqtqPj48/l5OTkwyp51Fje7pw0eXlZSErN25IW1vboV6vXwIHFJmZnZX6+npfmbFsGwv9tbm5KWNjY/tJSUm3DQZDCeSeR41oDSHR7Z+3FdFLly/L1tYWo/Uih1covLGxIUNDQ2KxWn6319ofVFRUHFy/fk2QpseqcDHknkUc9RYsJSVlU6vV/lBb6xBrhfURBOX7e/cEefVgfJbCq6ur0tPTE8Sh7iBqKS8vP5yfn5eBgYE/dTrdbRymEXrPKoS36DUMnsEBfEBMJlPAdsomKysr4nA4PIhYEV5aXBS3272fnp5+s/zkyfuYJ1NTU9Ld3e2H8F1QBS3eTMViAeuxDJwtKiq6hUj+sFqtsrCwINXV1R7sRknFpYsXpbOz8ylS9x0q4YvS0tLDiYkJcblcB6mpqRQ+BQ1eHF4axV4HlpiYmE9ZuyUlJXeMRqNMT08L8vgrhL+h8PiFCzxMwemv48A/Li4ufjIyMiJOp9NPYWqoWoqxsHOAE1u8Y7FYgjiEb+GEaD4Tk9m8C+FFRXh8nKlgbn36LL2nrq7uKQ+zubk5SF9qqFqKMdlGbOMrRott3iRIiTAaRO5DjV4l7e3t0t/fr9R2S0uLnOvqUhbC/Cf0pQa1FFXYiaioqEZEyHwKDwRFokAnpEJwbR+YzWYpLCxkjoNO5/vS2toqH7ndwczMTMWHvtSglqqrpMKCkvokOTm5PyEhYQi3bCw6OvonXJpbyOcvyP35uLi482wx9yoiFKQmgAgFafqSPvSlBrUoGjKeJCuDT6IVq55GqxAZGVmHthbYwTv4fQacxpxatA60DoxbAX2pQS3FmGOWHJ+/dMCPfG8J3+I3VcLHMtU+W3Kk8YJQmAtQnPCl0qot/zEI++GEvocuBDXC/7KUR+OofwB+fBEvsIiIvwGdi5IETpXqcAAAAABJRU5ErkJggg==",
				testIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAANlSURBVEhLtZTPS1RRFMfnvfvr/RhNUMfSHHXMZkZnnPHNWFFQUKvKCPq1yApaVvtoIS2qTYXRj021SYOCDCKiIogW2b/QwhQCF7XTdQ7S6XvepAy9cdGvA1/ee/fe83nnnnvuiRHRf1HdwT8V2+p77cTfqi64xiw7FlNxo7sapRhtEfb9diVmklpWepRc7lBiHmNTmDvpK5UUWMs+Vde1wRYWeo5llRNajSe1mu0xqjLgaOp3IcdQ1lGUNmoJc5+apRz3bGtYWjGPfRlQF8yRYmG5RdoTm4xayHma0oBmjKYcnjnXQE6ogucQ1iwmpD3JcPatC7Zt2/KV7GzX8jqiWxgbLdHXD+foC2uadRbv0PSZVY0dD0J4q5I3fK27hRB2BIwUuE1Snkg5ZibwXTpa6KCXt0boxc399Bz6/PZ0qBc3R+jVrQPQCB0qtFPguZRy9Nw6KU8xIwI2VqytTYmpvGeWBrHNPLbNOe01ijq1oumJI/T+wWFKIS1FzA9BvK6EIAZ9U4HvU2ZEwOtsa3OnFvOluKGibyjDBwYIH1zKSHp3/yC9u3eQ+jDGwHLcpSBezXXgO5RUcp4ZEfB6KfJdWi3nAC0CnsXB9SFSPjQ+wDd39tHr23spg/EcQP1QEPdCFRtc3tkyMyLgNgymUFoFQAfgnMcPcmGJKdrsSHp+bQ89u7qb0r6mUiMqAykYgIJGqMGhbvgyIwKO21Zvu5Izg4gkD2cGF/GO/NEmV9HUlV305PJOvCMV4a4cyKUhPPl7gxYzzIiAlRVrbpHiXtbVSwUs5MUBwCUoDdjjizvo0cXtlObdeACHuQUY6/o9/a1VibvMiIBR4Abldgzp+FQFV09+GM5ZVMfDC1uhLbiBhgqYK6PMtnFFeOZ7t6M/4oofZkYELMILopIJJcczrl7kaIoQl1MOP5g4P0wPzpdpAOAhBkNbMJd2zUJCiWueFBuBsCJgNlx25eJ6rldiErdvkcuOo2PY5dEMXYKySAOnJwjrXC90KDnp23Z5zSv908ImxPA2LW/0Omou65oKR1xEJWxr4l3gR56p4LbNbkCjagR0zSb0i1kcOdpmdxPaJraJtinRNlUFfWE5ibaZkOIpzuNUgzFdshpp/bZZaysTv6sVW/2uHWRbmfhdrdjqd+3kvxPFfgCnD1EcKH+OSwAAAABJRU5ErkJggg=="
			}
		};

		// style contents
		styleText = styleText.concat([
			// global rules
			"h3, h4 {margin: 0 0 15px; text-align: center;}",
			"h5 {margin: 5px 0 8px;}",
			"p, .reg-KR p {margin: 0;}",
			".reg-KR p {line-height: 133%;}",
			"table {width: 100%;}",
			".b-profile-wrpr, .b-header-h1__profile {text-shadow: 0px 0px 1px rgba(27,27,28, 1), 0px 0px 2px rgba(27,27,28, 1), 0px 0px 3px rgba(27,27,28, 1), 0px 0px 4px rgba(27,27,28, 1);}",
			".b-hr-layoutfix__small-indent-bottom {margin: 0px 0 -10px;}",
			".js-account_game_ban_info_msg {display: none !important;}",
			// page/content-wrapper rules
			".page-wrapper__old .nav-submenu_item {padding: 0 1.25%;}",
			".content-wrapper__old p {margin: 0;}",
			".content-wrapper__old p.b-fame-message, .b-fame-message {display: table; color: #B1B2B2; margin: 0px auto 14px;}",
			// nav bar user info rules
			".b-user-data {position: absolute; top: 0; right: 10%;}",
			".t-user-data {margin: 6px 0; font: 14px robotocondensedbold,'Arial Narrow',Arial,sans-serif;}",
			".t-user-data td {padding: 0 5px;}",
			".t-user-data td:last-of-type {text-align: right;}",
			".currency-gold, .currency-credit, .currency-experience {font-weight: unset;}",
			// header rules
			".b-header {height: 194px;}",
			".b-logo {height: 175px; top: 45px;}",
			// container wrapper
			".l-container-wrapper {background: none;}",
			// content width
			".l-content {width: 955px}",
			// background rules
			".b-background {display: flex; opacity: 0.25; position: absolute; width: 100%; z-index: -1;}",
			".b-background img {width: 100%;}",
			// profile wrapper rules
			".b-profile-wrpr {margin: 20px 0 0;}",
			".b-profile-wrpr td {font-weight: bold; line-height: 133%;}",
			".b-profile-wrpr .t-profile-table a, .b-profile-wrpr #js-profile-clan-table a {background: url("+css.l[1]+") no-repeat 0 2px; color: #CACBCC; padding: 0 0 0 10px;}",
			".b-profile-wrpr .t-profile-table a:hover, .b-profile-wrpr #js-profile-clan-table a:hover {background: url("+css.l[1]+") no-repeat -244px 2px; color: #FFFFFF;}",
			".b-profile-wrpr .b-profile-header {position: absolute; width: 750px; top: -4px;}",
			".b-profile-wrpr .b-ratingsClip {display: inline-block;}",
			".b-profile-wrpr .b-ratingsButton {"+css.input+" display: block; border-bottom: 1px solid #000000; border-left: 1px solid #000000; border-right: 1px solid #000000; padding: 7px 7px 6px;}",
			".b-profile-wrpr .b-ratingsButton:hover {background-color: #282828; cursor: pointer;}",
			".b-profile-wrpr .b-profile-error {background: rgba(81,0,0,0.5); border: 1px solid #510000; box-shadow: 0 0 3px #733232; color: #CACBCC; display: none; padding: 3px; text-align: center; margin: 0 auto;}",
			// b-info-block rules
			".b-profile-wrpr .b-info-block {display: inline-block; width: 745px;}",
			".b-profile-wrpr .b-info-block > div {min-height: 118px;}",
			// profile player rules
			".b-profile-wrpr .b-profile-name {display: table-cell; margin: 0; max-width: unset; width: 50%;}",
			".b-profile-wrpr .b-profile-name table {font-family: Arial;}",
			".b-profile-wrpr .b-profile-name td:first-child {white-space: nowrap;}",
			".b-profile-wrpr .b-header-h1__profile {display: inline-block; margin: 0; padding: 0 0 6px; max-width: 375px;}",
			".b-profile-wrpr .b-header-h1__profile.b-account-type__premium {background-position: right top; background-repeat: no-repeat; color: #FFC364; max-width: 350px; padding: 0 25px 6px 0;}",
			".b-profile-wrpr .b-header-h1__profile .i-profile-flag {border: 1px solid rgba(27,27,28, 0.5); margin-left: 2px; vertical-align: super;}",
			// profile clan rules
			".b-profile-wrpr #js-clan-block-container {display: table-cell; width: 50%;}",
			".b-profile-wrpr .b-profile-clan {display: flex; float: none; margin: 0; padding: 0;}",
			".b-profile-wrpr .b-photo {min-height: 52px;}",
			".b-profile-wrpr .b-profile-clan .b-text {margin: 3px 0 0 0;}",
			".b-profile-wrpr .b-profile-clan .b-text-wrpr {margin: 0; max-width: 310px; padding: 0 0 4px 0;}",
			".b-profile-wrpr a.b-link-clan, .b-link-clan a {display: inline;}",
			".b-profile-wrpr .b-statistic {margin: 0;}",
			".b-profile-wrpr .b-statistic_item {color: #979899;}",
			".b-profile-wrpr #js-clan-block-container table {font-family: Arial;}",
			".b-profile-wrpr #js-clan-block-container td:first-child {white-space: nowrap;}",
			".b-profile-wrpr .b-profile-noclan {margin: 16px 0 13px 0;}",
			// profile clan history rules
			".b-profile-wrpr .b-clanHistory-wrpr {font-family: Arial; margin: 0 0 10px 0; width: 715px;}",
			".b-profile-wrpr .b-clanHistory-wrpr span {display: inline-block; font-weight: bold; line-height: 133%;}",
			".b-profile-wrpr .b-clanHistory-wrpr .clanname {padding: 0 2px 0 0;}",
			".b-profile-wrpr .b-clanHistory-wrpr .clantag {padding: 0 2px;}",
			".b-profile-wrpr .b-clanHistory-wrpr .clantag.curr a {color: #F9D088;}",
			".b-profile-wrpr .b-clanHistory-wrpr a {color: #CACBCC;}",
			".b-profile-wrpr .b-clanHistory-wrpr a:hover {color: #FFFFFF;}",
			// campaign rating rules
			".b-profile-wrpr #js-knockout-fame-points {}",
			".b-profile-wrpr #js-knockout-fame-points.b-fame-points-empty {margin: 0 0 10px 0;}",
			".b-profile-wrpr .b-header-h3__user-account {display: none;}",
			".b-profile-wrpr .b-time {margin: 0;}",
			".b-profile-wrpr .b-tabs {padding-top: 0;}",
			".b-profile-wrpr .b-tabs-list {display: table; margin: 0 auto;}",
			".b-profile-wrpr .b-main-divider {margin: 0 auto; left: 0; right: 0;}",
			".b-profile-wrpr .l-tabs__top-indent {margin: 0;}",
			".b-profile-wrpr .b-fame-list {padding: 0; margin: 0 0 5px 0;}",
			".b-profile-wrpr .b-fame-indicators__one-country {background-color: unset; border-radius: 10px 10px 0 0; margin: 0 0 -1px 0; padding: 10px 20px 10px;}",
			".b-profile-wrpr .b-fame-list_item {padding: 0 10px; text-align: center;}",
			".b-profile-wrpr .b-fame-list_count {display: table; margin: 0 auto;}",
			".b-profile-wrpr .b-link-list {text-align: center;}",
			".b-profile-wrpr .b-link-list_item {padding: 0 8px;}",
			// sidebar rules
			".b-profile-wrpr .l-sidebar {margin: 0; position: absolute; right: 0; top: -1px; width: auto;}",
			".b-profile-wrpr .b-context-menu {background: url("+css.u.menu+") repeat-y; border-right: 1px solid black; margin: 0; width: 200px; z-index: 3;}",
			".b-profile-wrpr .b-context-menu_wrapper {padding: 10px 0 5px;}",
			".b-profile-wrpr .b-context-menu-list {line-height: 16px;}",
			".b-profile-wrpr .b-context-menu-list a {background-position: 0 50%;}",
			".b-profile-wrpr .b-context-menu-list a:hover {background-position: -244px 50%;}",
			".b-profile-wrpr .b-context-menu-list .current-page a {background-position: -244px 50%;}",
			".b-profile-wrpr .b-context-menu-list li {padding: 4px 3px 4px 12px;}",
			// sidebar messages wrapper rules
			".b-profile-wrpr .l-side-msg {position: absolute; left: 201px; text-align: center; top: 77px; width: 192px;}",
			".b-profile-wrpr .b-sidebar-widget__comparison {background-color: #000000; border: 1px solid #000000; margin: 0; position: absolute; left: 201px; top: 51px; width: 192px;}",
			".b-profile-wrpr .b-sidebar-widget {margin: 0;}",
			".b-profile-wrpr .b-sidebar-widget_inner {padding: 10px}",
			".b-profile-wrpr .b-sidebar-widget_inner__comparison {display: table; margin: 5px auto; padding: 0;}",
			".b-profile-wrpr .b-sidebar-widget_title {margin: 0 0 5px; text-align: center;}",
			".b-profile-wrpr .b-sidebar-widget_text {margin: 0 0 5px;}",
			".b-profile-wrpr .b-box-shadow.js-recruitstation-recommended-widget {margin: 0; width: 242px;}",
			".b-profile-wrpr .l-sidebar .b-b4r {height: 52px; overflow: hidden; position: absolute; top: 0; left: 201px;}",
			".b-profile-wrpr .l-sidebar .b-b4r_link img {width: 192px;}",
			// userblock wrapper rules
			".b-userblock-wrpr .b-user-block {background-color: unset; margin: 0;}",
			".b-userblock-wrpr .b-user-block:first-of-type {display: none;}",
			".b-userblock-wrpr .b-user-block__sparks {background-image: url("+css.u.sparks+"); border-radius: 0 0 10px 10px;}",
			".b-userblock-wrpr .b-user-block__sparks.b-user-block_sparks-radius {border-radius: 10px;}",
			".b-userblock-wrpr .b-personal-data {min-height: 180px; padding: 0 20px 15px;}",
			".b-userblock-wrpr .t-personal-data_ico {padding: 82px 5px 0;}",
			".b-userblock-wrpr .t-personal-data_ico__hitrate {background: url("+css.u.icon1+") no-repeat 50% 50px;}",
			".b-userblock-wrpr .t-personal-data_ico__tier {background: url("+css.u.icon2+") no-repeat 50% 50px;}",
			".b-userblock-wrpr .t-personal-data_value {font-size: 28px; line-height: 100%;}",
			".b-userblock-wrpr .t-personal-data_value.t-personal-data_value__pr {font-size: 36px;}",
			".b-userblock-wrpr .b-speedometer-body {background-color: unset; padding: 20px 50px;}",
			".b-userblock-wrpr .b-speedometer {width: 33.3333%}",
			".b-userblock-wrpr .b-message-ban-holder {display: none; position: absolute; width: 620px;}",
			".b-userblock-wrpr .b-message-error {margin: 0; min-height: 48px;}",
			".b-userblock-wrpr .b-message-battle-holder {display: none; position: absolute; width: 637px; right: 0;}",
			".b-userblock-wrpr .b-message-battle {background: url("+css.u.blueMsg+") no-repeat 0 0; margin: 0; min-height: 48px; text-align: right; padding: 15px 48px 13px 13px;}",
			".b-userblock-wrpr .t-ratings-info {table-layout: fixed;}",
			".b-userblock-wrpr .t-ratings-info th {font-size: 13px; font-weight: bold; line-height: 133%; padding: 20px 0 0;}",
			".b-userblock-wrpr .t-ratings-info td {font-family: 'WarHeliosCondCBold','Arial Narrow',arial,sans-serif; font-size: 36px; line-height: 133%}",
			".b-userblock-wrpr .t-ratings-info .rating-url_nm {background: url("+css.u.nmLogo+") no-repeat left center; padding: 0 0 0 20px;}",
			".b-userblock-wrpr .ratings-table {background: url("+css.l[3]+") no-repeat 50% 0; padding: 20px 25px 10px;}",
			".b-userblock-wrpr .t-table-ratings {width: 100%;}",
			".b-userblock-wrpr .t-table-ratings td {line-height: 130%; padding: 9px 12px 2px 0; vertical-align: bottom;}",
			".b-userblock-wrpr .t-table-ratings .td-center {line-height: 16px; padding: 9px 0 2px; text-align: center;}",
			".b-userblock-wrpr .t-table-ratings .td-rating-meter {background: url("+css.l[3]+") no-repeat 50% 100%;}",
			".b-userblock-wrpr .t-table-ratings .td-rating-meter td {padding: 0;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter {background: url("+css.u.rat+") no-repeat; border: 1px solid #252527; border-radius: 3px; height: 3px; margin: 0 7px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter-dail_line {background: url("+css.u.rat+") no-repeat; box-shadow: 0 0 10px 1px rgba(221, 84, 12, 0.15), 0 0 3px 1px rgba(133, 18, 11, 0.25); height: 3px; width: 0;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter-marker {background: url("+css.u.ratMark+") no-repeat; float: right; height: 13px; margin: -5px -2px 0 0; width: 5px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_wn8 {background-position: 0 0;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_wn8 .rating-meter-dail_line {background-position: 0 -3px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_wn7 {background-position: 0 -6px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_wn7 .rating-meter-dail_line {background-position: 0 -9px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_eff {background-position: 0 -12px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_eff .rating-meter-dail_line {background-position: 0 -15px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_wn9 {background-position: 0 -18px;}",
			".b-userblock-wrpr .t-table-ratings .rating-meter_wn9 .rating-meter-dail_line {background-position: 0 -21px;}",
			".b-userblock-wrpr .t-table-ratings .b-stat-fun {height: 16px;}",
			".b-userblock-wrpr .t-table-ratings .i-stat-fun {margin-top: -9px;}",
			".b-userblock-wrpr .wnelink {padding: 5px 25px 5px 0; text-align: right;}",
			".b-userblock-wrpr .wnelink_info {background-image: url("+css.l[4]+"), url("+css.l[2]+"); background-position: 4px 0px, right 0; padding: 0 9px 0 20px;}",
			".b-userblock-wrpr .wnelink_info:hover {background-position: 4px -17px, right -22px;}",
			// statistics wrapper rules
			".b-statistics-wrpr {margin: 0 0 35px;}",
			".b-statistics-wrpr .l-tabs__top-indent {margin: 0;}",
			".b-statistics-wrpr .b-tabs-list {display: table; margin: 0 auto;}",
			".b-statistics-wrpr .b-tabs-list_link {cursor: pointer;}",
			".b-statistics-wrpr .b-main-divider {margin: 0 auto; left: 0; right: 0;}",
			".b-statistics-wrpr .b-fame-indicators__one-country {background-color: unset; border-radius: 10px 10px 0 0; margin: 0 0 -1px 0; padding: 10px 20px 10px;}",
			".b-statistics-wrpr .b-fame-indicators {border-radius: 10px; padding: 20px 8px;}",
			".b-statistics-wrpr .b-tabs {padding-top: 0;}",
			".b-statistics-wrpr .b-tabs > div {display: none; margin: 0 auto}",
			".b-statistics-wrpr .b-tabs .js-stat_active {display: table;}",
			".b-statistics-wrpr .b-tab-clan .b-result {width: 296px;}",
			".b-statistics-wrpr .b-tab-more .b-result {width: 420.5px; padding: 0 18px;}",
			".b-statistics-wrpr .b-tab-strong .b-result {padding: 0 20px; width: 428px;}",
			".b-statistics-wrpr .b-tab-team .b-result {padding: 0 20px; width: 428px;}",
			".b-statistics-wrpr .b-tab-other .b-result {width: 296px;}",
			".b-statistics-wrpr .b-tab-more .b-result td:last-of-type {min-width: 45px;}",
			".b-statistics-wrpr .b-tab-user > div {width: 359px;}",
			".b-statistics-wrpr .b-tab-user > div:first-of-type {width: 255px;}",
			".b-statistics-wrpr .b-tab-user > div:last-of-type {width: 275px;}",
			".b-statistics-wrpr .b-result {float: none; display: inline-block; margin: 0; padding: 0 8px; vertical-align: top; width: 317px;}",
			".b-statistics-wrpr .t-dotted td {line-height: 23px; padding: 0 1px;}",
			".b-statistics-wrpr .t-dotted tr:hover td {color: #79797A;}",
			".b-statistics-wrpr .t-dotted td.t-dotted_class-ico {line-height: 13px;}",
			".b-statistics-wrpr .t-dotted td.t-dotted_class-ico img {margin: 2px 0 -1px;}",
			".b-statistics-wrpr .b-result .t-dotted__fixed {table-layout: auto;}",
			".b-statistics-wrpr .b-result-classes span {color: #606061; display: inline-block; width: 48px;}",
			".b-statistics-wrpr .b-result-api h3 {background: url("+css.u.wgLogo+") no-repeat right 2px top 2px;}",
			".b-statistics-wrpr .t-dotted td {background: url("+css.l[3]+") no-repeat 50% 100%;}",
			".b-statistics-wrpr .b-stat-legend {line-height: 15px; margin-top: 20px; text-align: center;}",
			// cake diagram rules
			".b-diagrams-sector {margin: 0 0 35px;}",
			".b-diagrams-sector h3 {text-align: center;}",
			".b-diagrams-sector .b-diagram-block {display: table-cell; float: none; padding: 0 2px; width: 33.335%;}",
			".b-diagrams-sector .b-diagram-block h3 {margin: 0 0 3px 0;}",
			".b-diagrams-sector .b-diagram-block h4 {font-size: 12px; margin: 0;}",
			".b-diagrams-sector .b-diagram-wrpr {float: none; margin: 0 auto;}",
			".b-diagrams-sector .t-dotted.t-dotted__diagram {margin-top: 0px; width: 100%;}",
			".b-diagrams-sector .t-dotted_diagram-bg {position: unset;}",
			".b-diagrams-sector .t-dotted_diagram-percent {display: inline-block; width: 40px;}",
			".b-diagrams-sector .b-diagram-total {margin: 25px 0 0;}",
			".b-diagrams-sector .t-diagram_rating {display: inline-block; margin-right: 20px;}",
			".b-diagrams-sector .t-dotted_diagram-info .js-results {display: inline-block; margin: 0 3px; text-align: right; width: 40px;}",
			".b-diagrams-sector .b-diagram-ico_tier {background: url("+css.u.tiers+") no-repeat; padding-left: 30px;}",
			".b-diagrams-sector .b-diagram-ico_tier-1 {background-position: 4px 1px;}",
			".b-diagrams-sector .b-diagram-ico_tier-2 {background-position: 4px -14px;}",
			".b-diagrams-sector .b-diagram-ico_tier-3 {background-position: 4px -29px;}",
			".b-diagrams-sector .b-diagram-ico_tier-4 {background-position: 4px -45px;}",
			".b-diagrams-sector .b-diagram-ico_tier-5 {background-position: 4px -59px;}",
			".b-diagrams-sector .b-diagram-ico_tier-6 {background-position: 4px -74px;}",
			".b-diagrams-sector .b-diagram-ico_tier-7 {background-position: 4px -89px;}",
			".b-diagrams-sector .b-diagram-ico_tier-8 {background-position: 4px -104px;}",
			".b-diagrams-sector .b-diagram-ico_tier-9 {background-position: 4px -120px;}",
			".b-diagrams-sector .b-diagram-ico_tier-10 {background-position: 4px -134px;}",
			".b-diagrams-sector .t-dotted__diagram tr td.t-dotted_diagram-last {width: 0;}",
			// achievement wrapper rules
			".b-achievements-wrpr {margin: 0 0 50px;}",
			".b-achievements-wrpr .b-vertical-arrow {display: table; margin: 8px auto 0; padding: 2px 10px 0;}",
			".b-achievements-wrpr .js-all-achievements {display: table; margin: 15px auto 0; width: 897px;}",
			".b-achievements-wrpr .b-achivements {display: table; margin: 0 auto; padding: 0 0 20px;}",
			".b-achievements-wrpr .b-achivements-head {margin-top: 15px;}",
			".b-achievements-wrpr .b-achivements_item {display: inline-block; float: unset; margin: 5px 0 0 0; width: 72px;}",
			".b-achievements-wrpr .b-achivements_item img {display: table; margin: 0 auto;}",
			".b-achievements-wrpr .js-all-achievements #js-achivement-mechanicEngineer5 {margin-left: 112.5px;}",
			".b-achievements-wrpr .js-all-achievements #js-achivement-medalBurda {margin-left: 112.5px;}",
			".b-achievements-wrpr .js-all-achievements #js-achivement-tankwomen {margin-left: 375px;}",
			".b-achievements-wrpr .js-all-achievements #js-achivement-soldierOfFortune {margin-left: 112.5px;}",
			// global rating rules
			"#js-knockout-ratings {margin: 0 0 35px;}",
			"#js-knockout-ratings .b-composite-heading {margin: 21px 0 15px 400px; width: 553px;}",
			"#js-knockout-ratings .b-profile-ratings-date {margin-top: 1px}",
			"#js-knockout-ratings .b-leadership-info {display: table; margin: 0 auto;}",
			"#js-knockout-ratings .b-profile-link {display: table; margin: 14px auto 0}",
			"#js-knockout-ratings .b-msg-important__rating {display: table; margin: 5px auto 0;}",
			"#js-knockout-ratings .b-rating-dial__user {display: table; margin: 30px auto 22px;}",
			"#js-knockout-ratings .b-orange-arrow__leadership {display: table; margin: 25px auto 0;}",
			"#js-knockout-ratings .b-leadership-rating-text {text-align: center;}",
			"#js-knockout-ratings .l-leadership-info-alignment {text-align: center;}",
			// vehicle table rules
			".b-vehicles-wrpr {margin: 20px 0;}",
			".b-vehicles-wrpr .b-vehicles-header {display: table; margin: 0 auto 15px}",
			".b-vehicles-wrpr .b-profile-vehicles-tankstat {margin: 0; position: absolute; right: 15px;}",
			".b-vehicles-wrpr .b-profile-vehicles-tankstat_link {background-image: url("+css.u.vbLogo+"), url("+css.l[2]+"); background-position: left center, right 0px; padding: 0 9px 0 20px;}",
			".b-vehicles-wrpr .b-profile-vehicles-tankstat_link:hover {background-position: left center, right -22px;}",
			".b-vehicles-wrpr .t-profile__vehicle .t-profile_right {text-align: center;}",
			".b-vehicles-wrpr .t-profile_dropdown-ico .tablesorter-header-inner {display: inherit;}",
			".b-vehicles-wrpr .t-profile_tankstype-prem td {border-top: 2px dashed #212123;}",
			".b-vehicles-wrpr .t-profile_tankstype-prem .b-tankstype-text {color: #FFC363;}",
			".b-vehicles-wrpr .t-profile_tankstype-prem.t-profile_tankstype__empty .b-tankstype-text {color: rgba(255, 195, 99, 0.3);}",
			".b-vehicles-wrpr .t-profile_tankstype-miss .b-tankstype-text {color: #D00900;}",
			".b-vehicles-wrpr .b-tankstype-ico__miss {background: url("+css.u.miss+") no-repeat center center;}",
			".b-vehicles-wrpr .t-profile .t-profile_tankstype td {height: 50px; padding: 0; vertical-align: middle;}",
			".b-vehicles-wrpr .b-tankstype-ico {display: table-cell;}",
			".b-vehicles-wrpr .b-tankstype-ico__lighttank {background-position: 0 -114px;}",
			".b-vehicles-wrpr .b-tankstype-ico__mediumtank {background-position: 0 -173px;}",
			".b-vehicles-wrpr .b-tankstype-ico__heavytank {background-position: 0 5px;}",
			".b-vehicles-wrpr .b-tankstype-ico__at-spg {background-position: 0 -232px;}",
			".b-vehicles-wrpr .b-tankstype-ico__spg {background-position: 0 -54px;}",
			".b-vehicles-wrpr .b-tankstype-ico__prem {background-position: 0 -291px;}",
			".b-vehicles-wrpr .b-tankstype-ico__ten {background: url("+css.u.tenIcon+") no-repeat center center; color: #BBB7AC; font-size: 17px; font-weight: 100; padding: 0 0 3px; text-align: center;}",
			".b-vehicles-wrpr .b-tankstype-ico__test {background: url("+css.u.testIcon+") no-repeat center center; color: #BBB7AC; font-size: 17px; font-weight: 100; padding: 0 0 3px; text-align: center;}",
			".b-vehicles-wrpr .b-tankstype-text {display: table-cell; height: inherit; vertical-align: middle; width: 304px;}",
			".b-vehicles-wrpr .t-profile .t-profile_tankstype__item td {height: 40px; padding: 0; vertical-align: middle;}",
			".b-vehicles-wrpr .t-profile .t-profile_tankstype__item:hover td {background: rgba(0, 0, 0, 0.04); border-bottom: 1px solid rgba(255, 255, 255, 0); color: #BABCBF;}",
			".b-vehicles-wrpr .t-profile .t-profile_tankstype td.t-profile_center div.hidden {display: none;}",
			".b-vehicles-wrpr .t-profile .t-profile_tankstype td.t-profile_center span:first-of-type {margin-right: 5px;}",
			".b-vehicles-wrpr .t-profile .t-profile_tankstype td.t-profile_center span:last-of-type {margin-left: 5px;}",
			".b-vehicles-wrpr .b-armory-wrapper {height: inherit; margin: 0; padding: 0; width: 160px;}",
			".b-vehicles-wrpr .b-armory-wrapper .b-armory-level {display: table-cell; font-size: unset; height: inherit; position: unset; vertical-align: middle; left: 0; top: 0;}",
			".b-vehicles-wrpr .b-armory-wrapper img.png {height: 64px; margin: -50px 0 0 24px;}",
			".b-vehicles-wrpr .i-super_icon {position: absolute; right: 30px; bottom: -3px;}",
			".b-vehicles-wrpr .b-name-vehicle {color: #BBB7AC; display: table-cell; height: inherit; vertical-align: middle; width: 178px; max-width: 178px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}",
			".b-vehicles-wrpr .b-name-vehicle.b-gold-name {color: #FFC363;}",
			".b-vehicles-wrpr .b-name-vehicle.b-red-name {color: #D00900;}",
			".b-vehicles-wrpr .b-rating-vehicle {display: table-cell; height: inherit; text-align: right; vertical-align: middle; width: 50px;}",
			".b-vehicles-wrpr .t-profile_dropdown-link {display: inherit;}",
			".b-vehicles-wrpr .js-error-data {text-align: center;}",
			".b-vehicles-wrpr .b-msg-error {display: table; margin: 0 auto;}",
			".b-vehicles-wrpr .b-vehicle-detail_txt {margin: 0 auto 4px; text-align: center; width: 768px;}",
			".b-vehicles-wrpr .b-vehicle-detail_link {display: table; margin: 0 auto;}",
			".b-vehicles-wrpr .b-vehicle-slider {margin: 23px 64px 17px}",
			".b-vehicles-wrpr .b-vehicle-slider_inner {width: 741px;}",
			".b-vehicles-wrpr .b-vehicle-slider_prev {left: -12px;}",
			".b-vehicles-wrpr .b-vehicle-slider_next {right: -12px;}",
			".b-vehicles-wrpr .b-vehicle-minitable {margin: 0 43px; width: 350px;}",
			".b-vehicles-wrpr .b-vehicle-minitable__right {float: left;}",
			// profile navigator
			".b-profile-nav {font-family: Arial; font-size: 13px; text-align: center;}",
			".b-profile-nav-top {max-width: 135px; left: 0; margin: 0 auto; padding: 8px 0px 8px; position: absolute; right: 0; top: 0; z-index: 1000;}",
			".wrapper-dropdown .b-profile-nav {float: left; padding: 7px 0 0;}",
			".b-profile-nav a {background: url("+css.l[5]+") no-repeat; cursor: pointer; margin: 0 10px 0 0; padding: 0 10px;}",
			".b-profile-nav a.top {background-position: 100% 0px;}",
			".b-profile-nav a.top:hover {background-position: 100% -36px;}",
			".b-profile-nav a.bot {background-position: 100% -18px;}",
			".b-profile-nav a.bot:hover {background-position: 100% -54px;}",
			".b-profile-nav span {border-bottom: 1px dashed;}",
			// multiple usage rules
			".b-orange-arrow__heading, .b-profile-ratings_link {margin: 4px 0 0;}",
			// region spesific rules
			"body.reg-KR h1, body.reg-KR .b-header-h1 {line-height: 1;}",
			".b-diagrams-sector .reg-RUS .b-diagram-tiers .js-results {margin: 0 0 0 15px;}",
			".b-achievements-wrpr .reg-KR .js-full-achievements {margin: 0 34px 30px;}",
			// element display state rules
			".b-display-none, .b-profile-wrpr .b-clanHistory-wrpr span.b-display-none {display: none;}",
			".b-display-block {display: block !important;}",
			".b-display-table {display: table !important;}"
		]);
		// applies relevant style for own profile
		if (wg.own) {
			styleText.push(
				".b-context-menu-list__bottomindent {border-bottom: 1px dashed #212123; max-height: 115px; margin: 0; padding-bottom: 4px; overflow: hidden; transition: max-height 0.15s ease-out;}",
				".b-context-menu-list__bottomindent:hover {border: none; max-height: 300px; transition: max-height 0.25s ease-in;}"
			);
		}
		style.textContent = styleText.join("");
		// end style

		// formula calculations and variables
		// premium tanks up to 0.9.15
		var premArr = [
			// russian
			"r125_t_45", "tetrarch_ll", "bt-sv", "m3_stuart_ll", "r65_t-127", "r86_ltp", "r105_bt_7a", "valentine_ll",
			"a-32", "r118_t28_f30", "matilda_ii_ll", "r108_t34_85m", "r117_t34_85_rudy", "t44_85", "t44_122", "r112_t54_45", "r127_t44_100_p", "object_907", "r120_t22sr_a22",
			"churchill_ll", "r38_kv-220_action", "r38_kv-220", "r114_object_244", "r71_is_2b", "r54_kv-5", "r61_object252", "r113_object_730", "r115_is-3_auto", "r123_kirovets_1", "r128_kv4_kreslavskiy", "r110_object_260", "r119_object_777",
			"su76i", "su_85i", "su100y", "su122_44", "r116_isu122c_berlin", "r111_isu130", "r121_kv4_ktt", "r126_object_730_5",
			// german
			"h39_captured", "g108_pzkpfwii_ausfd", "g36_pzii_j", "t-15", "g117_toldi_iii", "g120_m41_90", "g120_m41_90_grandfinal",
			"g34_s35_captured", "g100_gtraktor_krupp", "g46_t-25", "g116_turan_iii_prot", "pziv_hydro", "g107_pzkpfwiii_ausfk", "pzv_pziv", "pzv_pziv_ausf_alfa", "pziv_schmalturm", "g78_panther_m10", "g106_pzkpfwpanther_ausff", "g119_panzer58", "g119_pz58_mutz", "g105_t-55_nva_ddr",
			"b-1bis_captured", "g58_vk4502p", "g118_vk4503", "lowe", "g115_typ_205_4_jun", "g92_vk7201",
			"g104_stug_iv", "dickermax", "g48_e-25", "g109_steyr_wt", "g65_jagdtiger_sdkfz_185", "g112_kanonenjagdpanzer", "g114_skorpian",
			// american
			"t2_lt", "t1_e6", "t7_combat_car", "m22_locust", "mtls_1g14", "a112_t71e2",
			"a78_m4_improved", "ram-ii", "m4a2e4", "a104_m4a3e8a", "a86_t23e3", "a63_m46_patton_kr", "a80_t26_e4_superpershing", "a111_t25_pilot", "t95_e2", "a92_m60", "a95_t95_e6", "a106_m48a2_120",
			"t14", "a13_t34_hvy", "a45_m6a2e1",
			"a101_m56", "a102_t28_concept",
			// french
			"f69_amx13_57_100", "f69_amx13_57_100_grandfinal",
			"f68_amx_chasseur_de_char_46", "f73_m4a1_revalorise",
			"f65_fcm_50t", "f74_amx_m4_1949",
			"fcm_36pak40",
			"f28_105_lefh18b2",
			// british
			"gb76_mk_vic",
			"gb33_sentinel_ac_i", "gb68_matilda_black_prince", "gb35_sentinel_ac_iv", "gb85_cromwell_berlin", "gb70_n_fv4202_105", "gb87_chieftain_t95_turret",
			"gb51_excelsior", "gb63_tog_ii", "gb52_a45",
			"gb71_at_15a",
			"gb78_sexton_i",
			// chinese
			"ch24_type64", "ch02_type62",
			"ch01_type59", "ch01_type59_gold", "ch14_t34_3", "ch26_59_patton", "ch25_121_mod_1971b",
			"ch03_wz-111", "ch23_112",
			// japanese
			"te_ke", "ke_ni_b",
			"j12_chi_nu_kai", "j18_sta_2_3",
			"j19_tiger_i_jpn",
			// czechoslovakian
			"cz01_skoda_t40"
		],
		superArr = [
			// russian
			"r125_t_45", "t44_85", "t44_122", "r114_object_244", "r123_kirovets_1", "r128_kv4_kreslavskiy", "r119_object_777", "r121_kv4_ktt", "r126_object_730_5",
			// german
			"g120_m41_90", "g107_pzkpfwiii_ausfk", "g119_panzer58", "g58_vk4502p", "g115_typ_205_4_jun", "g109_steyr_wt", "g114_skorpian",
			// american
			"a112_t71e2", "a111_t25_pilot", "a106_m48a2_120",
			// french
			"f69_amx13_57_100", "f74_amx_m4_1949",
			// british
			// "",
			// chinese
			"ch25_121_mod_1971b"
			// japanese
			// "",
			// czechoslovakian
			// "",
		];

		// variable for statistics
		var s = {
			b:[{c:0,p:0},{c:0,p:0},{c:0,p:0},{c:0,p:0},{c:0,p:0},{c:0,p:100}], // badges
			f:{wn8:{},wn7:{},eff:{},wgr:{}}, // formulas
			h:{}, // hex colours
			s:{e:{r:[],b:0,w:0,bg:0},p:{r:[],b:0,w:0,bg:0},t:{r:[],b:0,w:0,bg:0},s:{r:[],b:0,w:0,bg:0}}, // custom tank tables
			t:[{b:0,c:0,t:1},{b:0,c:0,t:2},{b:0,c:0,t:3},{b:0,c:0,t:4},{b:0,c:0,t:5},{b:0,c:0,t:6},{b:0,c:0,t:7},{b:0,c:0,t:8},{b:0,c:0,t:9},{b:0,c:0,t:10}], // tiers
			v:{a:0,bats:0,tier:0}, // vehicles
			w:{e:{frag:0,dmg:0,spot:0,def:0,win:0},c:{}}, // wn8 expected values
		};

		// total mastery badge and colouring tank table category rows
		var typeRow_class = d.getElementsByClassName('t-profile_tankstype js-table-dropdown-link');
		for (var _tr=0, _tr_len = typeRow_class.length; _tr<_tr_len; _tr++) {
			var typeRow = typeRow_class[_tr],
			typeBats = sf.format(typeRow.cells[1].innerHTML,1),
			typeWinrate = sf.format(typeRow.cells[2].innerHTML,1),
			typeWins = typeBats*(typeWinrate/100);

			// modify table
			typeRow.cells[2].innerHTML = sf.color(typeWinrate, "wr", 0, "%")+"≈<span>"+sf.format(typeWins,2)+"</span>";
		}

		// average tier, colouring premium tanks and winrates in vehicle tables
		var vehRow_class = d.getElementsByClassName('t-profile_tankstype t-profile_tankstype__item'),
		vehRowStats_class = d.getElementsByClassName('t-profile_slidedown tablesorter-childRow');
		for (var _vr=0, _vr_len = vehRow_class.length; _vr<_vr_len; _vr++) {
			var vehRow = vehRow_class[_vr],
			vehRowStats = vehRowStats_class[_vr],
			vehImg = vehRow.cells[0].getElementsByTagName('img')[0],
			vehImgBdg = vehRow.cells[3].getElementsByTagName('img')[0],
			vehSpan = vehRow.cells[0].getElementsByTagName('span'),
			vehImgName = vehImg.src.match(/\w+\-([\w\-]+).png/),
			vehId = vehRowStats.getAttribute('data-vehicle-cd'),
			vehBats = sf.format(vehRow.cells[1].innerHTML,1),
			vehWinrate = sf.format(vehRow.cells[2].innerHTML,1),
			vehTier = vehSpan[0].getAttribute('data-veh_level'),
			vehWins = vehBats*(vehWinrate/100),
			vehBadge = (vehImgBdg) ? vehImgBdg.getAttribute('data-badge_code') : 0;

			// modify table
			vehRow.classList.add("js-"+vehId);
			vehImg.src = "http://"+wg.host+"/static/wot/encyclopedia/tankopedia/vehicle/"+vehImgName[0];
			vehRow.cells[2].innerHTML = sf.color(vehWinrate, "wr", 0, "%")+"≈<span>"+sf.format(vehWins,2)+"</span>";

			// vehicle badges
			s.b[vehBadge].c ++;

			// vehicle battles per tier and amount
			s.t[vehTier-1].b += vehBats;
			s.t[vehTier-1].c ++;
			s.v.tier += vehTier*vehBats;
			s.v.a ++;

			// check if vehicle exists in wnefficiency value array - report if not and exclude from ratings
			var vehExp = false;
			for (var _so=0, _so_len = wn.wn8.length; _so<_so_len; _so++) {
				if (wn.wn8[_so].IDNum == vehId) {
					vehExp = wn.wn8[_so];
					break;
				}
			}
			if (vehExp) {
				// add data to vehExp array
				vehExp.name = vehSpan[1].innerHTML;
				vehExp.tier = vehTier;
				vehExp.type = vehRow.parentNode.previousElementSibling.getElementsByTagName('span')[0].className.match(/__([\w-]+)/)[1];
				vehExp.nation = vehRow.cells[0].firstElementChild.className.match(/__(\w+)/)[1];
				// add to total vehicle battles if it exists in wnefficiency table
				s.v.bats += vehBats;
				// summarize expected stat from every vehicle for WN8
				s.w.e.frag += vehExp.expFrag    * vehBats;
				s.w.e.dmg  += vehExp.expDamage  * vehBats;
				s.w.e.spot += vehExp.expSpot    * vehBats;
				s.w.e.def  += vehExp.expDef     * vehBats;
				s.w.e.win  += vehExp.expWinRate * vehBats;
			}
			else {
				s.s.e.b += vehBats;
				s.s.e.w += vehWins;
				vehSpan[1].classList.add("b-red-name");
				s.s.e.r.push([vehRow.cloneNode(true), vehRowStats.cloneNode(true)]);
				if (vehBadge !== 0) {
					s.s.e.bg ++;
				}
				if (premArr.indexOf(vehImgName[1]) == -1) {
					console.error(vehImgName[1]);
				}
			}

			// get info for super tester table
			if (superArr.indexOf(vehImgName[1]) > -1) {
				vehRow.cells[0].firstElementChild.appendChild(sf.elem("img", "i-super_icon", "", {src:"https://dl.dropboxusercontent.com/u/12497046/wot/projects/statscript/img/supertest.png"}));
				s.s.s.b += vehBats;
				s.s.s.w += vehWins;
				vehSpan[1].classList.add("b-gold-name");
				s.s.s.r.push([vehRow.cloneNode(true), vehRowStats.cloneNode(true)]);
				if (vehBadge !== 0) {
					s.s.s.bg ++;
				}
				if (vehExp) {
					vehExp.test = true;
				}
			}

			// get info for premium table
			if (premArr.indexOf(vehImgName[1]) > -1) {
				s.s.p.b += vehBats;
				s.s.p.w += vehWins;
				vehSpan[1].classList.add("b-gold-name");
				s.s.p.r.push([vehRow.cloneNode(true), vehRowStats.cloneNode(true)]);
				if (vehBadge !== 0) {
					s.s.p.bg ++;
				}
				if (vehExp) {
					vehExp.prem = true;
				}
			}

			// get info for tier 10 table
			if (vehTier == 10) {
				s.s.t.b += vehBats;
				s.s.t.w += vehWins;
				s.s.t.r.push([vehRow.cloneNode(true), vehRowStats.cloneNode(true)]);
				if (vehBadge !== 0) {
					s.s.t.bg ++;
				}
			}
		}

		// finding statistic tables
		var mb_table = d.getElementsByClassName('b-result-classes')[0].getElementsByClassName('t-dotted')[0],
		or_table = d.getElementsByClassName('b-result')[0].getElementsByClassName('t-dotted')[0],
		bp_table = d.getElementsByClassName('b-result')[1].getElementsByClassName('t-dotted')[0],
		sm_ratio = d.getElementsByClassName('b-speedometer-ratio'),
		pd_table = d.getElementsByClassName('t-dotted');

		// fetching info, calculate averages, colourize and store into var s
		// r = raw stats
		s.r = {
			days: (sc.date.raw - new Date(d.getElementsByClassName('js-date-format')[0].getAttribute('data-timestamp')*1000))/1000/60/60/24,
			bats: sf.format(or_table.rows[0].cells[1].innerHTML,1),
			wins: sf.format(or_table.rows[1].cells[1].innerHTML.match(/([\d.,\s|&nbsp;]+\d+)\s/)[1],1),
			loss: sf.format(or_table.rows[2].cells[1].innerHTML.match(/([\d.,\s|&nbsp;]+\d+)\s/)[1],1),
			surv: sf.format(or_table.rows[3].cells[1].innerHTML.match(/([\d.,\s|&nbsp;]+\d+)\s/)[1],1),
			exp: sf.format(or_table.rows[4].cells[1].innerHTML,1),
			expA: sf.format(or_table.rows[5].cells[1].innerHTML,1),
			frag: sf.format(bp_table.rows[0].cells[1].innerHTML,1),
			spot: sf.format(bp_table.rows[1].cells[1].innerHTML,1),
			hits: sf.format(bp_table.rows[2].cells[1].innerHTML,1),
			dmgD: sf.format(bp_table.rows[3].cells[1].innerHTML,1),
			caps: sf.format(bp_table.rows[5].cells[1].innerHTML,1),
			defs: sf.format(bp_table.rows[6].cells[1].innerHTML,1),
			dths: sf.format(sm_ratio[0].innerHTML.match(/\/(.+)$/)[1],1),
			dmgR: sf.format(sm_ratio[1].innerHTML.match(/\/(.+)$/)[1],1)
		};
		s.r.draw = s.r.bats-(s.r.wins+s.r.loss);
		s.r.winLR = s.r.wins/s.r.loss;
		// a = average stats
		s.a = {
			bats: s.r.bats/s.r.days,
			wins: (s.r.wins/s.r.bats)*100,
			loss: (s.r.loss/s.r.bats)*100,
			draw: (s.r.draw/s.r.bats)*100,
			surv: (s.r.surv/s.r.bats)*100,
			frag: s.r.frag/s.r.bats,
			dths: s.r.dths/s.r.bats,
			spot: s.r.spot/s.r.bats,
			dmgD: s.r.dmgD/s.r.bats,
			dmgR: s.r.dmgR/s.r.bats,
			caps: s.r.caps/s.r.bats,
			defs: s.r.defs/s.r.bats,
			tier: s.v.tier/s.v.bats
		};
		// c = coloured stats
		s.c = {
			winsR: sf.color(s.a.wins, "wr", 2, "%"),
			lossR: sf.color(s.a.loss, "lr", 2, "%"),
			survR: sf.color(s.a.surv, "sr", 2, "%"),
			hitsR: sf.color(s.r.hits, "hr", 2, "%"),
			drawR: sf.color(s.a.draw, "",   2, "%"),
			batsC: sf.color(s.r.bats, "bat", 0),
			dmgTier: sf.color(s.a.dmgD/s.a.tier, "dmg", 0, "", s.a.dmgD)
		};
		// p = personal stats - store to display on all profile pages
		var userData = sf.storage("wnExpUserdata", "", "get", "parse");
		if (wg.own) {
			s.p = {
				gold: [pd_table[0].rows[0].cells[0].textContent, pd_table[0].rows[0].cells[1].firstElementChild.textContent],
				cred: [pd_table[0].rows[1].cells[0].textContent, pd_table[0].rows[1].cells[1].firstElementChild.textContent],
				fxp:  pd_table[0].rows[2].cells[1].firstElementChild.textContent
			};
			if (pd_table[1].rows[1]) {
				s.p.prem = [pd_table[1].rows[1].cells[0].textContent, pd_table[1].rows[1].cells[1].textContent];
			}
			sf.storage("wnExpUserdata", s.p, "set", "string");
		}
		else if (userData) {
			s.p = userData;
		}
		// calculate badge percent
		s.b[5].c = s.v.a;
		for (var _b=0, _b_len = s.b.length; _b<_b_len; _b++) {
			s.b[_b].p = s.b[_b].c/s.b[5].c*100;
		}
		// prepare numbers for WN8 formula
		s.w.c.win = Math.max((s.a.wins/(s.w.e.win/s.v.bats)-0.71)/(1-0.71),0);
		s.w.c.dmg = Math.max((s.a.dmgD/(s.w.e.dmg/s.v.bats)-0.22)/(1-0.22),0);
		s.w.c.frag = Math.max(Math.min(s.w.c.dmg+0.2,(s.a.frag/(s.w.e.frag/s.v.bats)-0.12)/(1-0.12)),0);
		s.w.c.spot = Math.max(Math.min(s.w.c.dmg+0.1,(s.a.spot/(s.w.e.spot/s.v.bats)-0.38)/(1-0.38)),0);
		s.w.c.def = Math.max(Math.min(s.w.c.dmg+0.1,(s.a.defs/(s.w.e.def/s.v.bats)-0.10)/(1-0.10)),0);

		// calculate ratings
		// wg personal rating
		s.f.wgr = (function() {
			var rat = sf.format(d.getElementsByClassName("t-personal-data_value__pr")[0].innerHTML,1);
			return { rat: rat, ratCol: sf.color(rat,"wgr",0) };
		})();
		// WN8
		s.f.wn8 = (function() {
			var frag = 210*s.w.c.dmg*s.w.c.frag,
			dmg = 980*s.w.c.dmg,
			spot = 155*s.w.c.frag*s.w.c.spot,
			def = 75*s.w.c.def*s.w.c.frag,
			win = 145*Math.min(1.8,s.w.c.win),
			rat = frag+dmg+spot+def+win,
			pct = (rat<=sc.col.sUni[9]) ? (rat/sc.col.sUni[9])*100 : 100,
			scale = (rat<=sc.col.sUni[9]) ? Math.max(0,Math.min(100,rat*(rat*(rat*(rat*(rat*(-rat*0.00000000000000000004164+0.000000000000001176)-0.000000000009033)+0.000000027466)-0.00003804)+0.05819)-0.965)) : 100;
			return { frag: frag, dmg: dmg, spot: spot, def: def, win: win, rat: rat, pct: pct, scale: scale, ratCol: (isFinite(rat)) ? sf.color(rat,"wn8",2) : loc[15], scaleCol: (isFinite(rat)) ? sf.color(scale,"wn8",2) : loc[15]};
		})();
		// WN7 - legacy support
		s.f.wn7 = (function() {
			var frag = s.a.frag*(1240-1040/(Math.pow(Math.min(s.a.tier,6),0.164))),
			dmg = s.a.dmgD*530/(184*Math.exp(0.24*s.a.tier)+130),
			spot = s.a.spot*125*Math.min(s.a.tier,3)/3,
			def = Math.min(2.2,s.a.defs)*100,
			win = (((185/(0.17+Math.exp((s.a.wins-35)*-0.134)))-500)*0.45),
			norm = -Math.abs((((5-Math.min(s.a.tier,5))*125)/(1+Math.exp(s.a.tier-Math.pow(s.r.bats/220,3/s.a.tier))*1.5))),
			rat = frag+dmg+spot+def+win+norm,
			pct = (rat<=sc.col.sUni[10]) ? (rat/sc.col.sUni[10])*100 : 100,
			scale = (rat<=sc.col.sUni[10]) ? Math.max(0,Math.min(100,rat*(rat*(rat*(rat*(rat*(rat*0.000000000000000001225-0.000000000000007167)+0.000000000005501)+0.00000002368)-0.00003668)+0.05965)-5.297)) : 100;
			return { frag: frag, dmg: dmg, spot: spot, def: def, win: win, norm: norm, rat: rat, pct: pct, scale: scale, ratCol: sf.color(rat,"wn7",2), scaleCol: sf.color(scale,"wn7",2) };
		})();
		// efficiency - improved
		s.f.eff = (function() {
			var frag = s.a.frag*250,
				dmg = s.a.dmgD*(10/(s.a.tier+2))*(0.23+2*s.a.tier/100),
				spot = s.a.spot*150,
				cap = (Math.log(s.a.caps+1)/Math.log(1.732))*150,
				def = s.a.defs*150,
				rat = frag+dmg+spot+cap+def,
				pct = (rat<=sc.col.sUni[11]) ? (rat/sc.col.sUni[11])*100 : 100,
				scale = (rat<=sc.col.sUni[11]) ? Math.max(0,Math.min(100,rat*(rat*(rat*(rat*(rat*(rat*0.000000000000000013172 - 0.000000000000092286)+0.00000000023692)-0.00000027377)+0.00012983)+0.05935)-31.684)) : 100;
			return { frag: frag, dmg: dmg, spot: spot, cap: cap, def: def, rat: rat, pct: pct, scale: scale, ratCol: sf.color(rat,"eff",2), scaleCol: sf.color(scale,"eff",2) };
		})();
		// localized stats
		s.l = {
			veh: "<span style='color:#CD3333'>"+sf.format(s.v.bats,2)+"</span>",
			clip: loc[71]+" "+wg.name+": \n"+loc[72]+" "+s.r.bats+" \nWR: "+s.a.wins.toFixed(2)+" \nWN8: "+s.f.wn8.rat.toFixed(2)+" \nWN7: "+s.f.wn7.rat.toFixed(2)+" \nEff: "+s.f.eff.rat.toFixed(2)
		};
		// end formula calculations and variables

		// start modifying and enhancing the rest of the page
		// store userBlocks
		var userBlock_wprp = d.getElementsByClassName('b-userblock-wrpr')[0],
		userBlock_sparks = d.getElementsByClassName('b-user-block__sparks')[0];

		// add user treasury in navigation menu - personal data block will be hidden
		var subMenu_class = d.getElementsByClassName('nav-wrapper')[0];
		if (wg.login && s.p) {
			var userData_list = sf.elem("div", "b-user-data", "<table class='t-user-data'><tr><td>"+s.p.cred[0]+"</td><td><span class='currency-credit'>"+s.p.cred[1]+"</span></td></tr><tr><td>"+s.p.gold[0]+"</td><td><span class='currency-gold'>"+s.p.gold[1]+"</span></td></tr><tr><td>Free XP:</td><td><span class='currency-experience'>"+s.p.fxp+"</span></td></tr></table>");
			subMenu_class.appendChild(userData_list);
		}

		// modify sidebar structure
		var sidebar_class = d.getElementsByClassName('l-sidebar')[0],
		recBlock_class = d.getElementsByClassName('js-recruitsation-block')[0],
		sidemsg_class = sf.elem("div", "l-side-msg");
		sidemsg_class.appendChild(recBlock_class);
		sidebar_class.appendChild(sidemsg_class);

		// removing elements
		var layoutfix_class = d.getElementsByClassName('b-hr-layoutfix');
		layoutfix_class[0].parentNode.removeChild(layoutfix_class[0]);

		// page navigation
		var menu_class = d.getElementsByClassName('cm-holder')[0],
		content_class = d.getElementsByClassName('l-content')[0];
		content_class.appendChild(sf.elem("div", "b-profile-nav", "<a class='bot' onclick='window.scrollTo(0, 0)'><span>"+loc[2]+"</span></a>"));
		menu_class.appendChild(sf.elem("div", "b-profile-nav b-profile-nav-top", "<a class='top' onclick='window.scrollTo(0, 9999)'><span>"+loc[1]+"</span></a>"));

		// profile wrapper
		var profile_div = sf.elem("div", "b-profile-wrpr"),
		profileHead_div = sf.elem("div", "b-profile-header", "<div id='js-clipBoard' style='display:none;'>"+s.l.clip+"</div>"),
		profileError_div = sf.elem("div", "b-profile-error");
		if (s.v.bats !== s.r.bats) {
			profileError_div.classList.add("b-display-table");
			profileError_div.textContent = loc[68];
		}
		else {
			s.l.veh = " ";
		}
		profileName_class.lastElementChild.innerHTML += " - "+sf.format(s.r.days,2,0)+" "+loc[3];
		profileName_class.parentNode.insertBefore(profile_div, profileName_class.nextSibling);
		profileHead_div.appendChild(profileError_div);
		fragment.appendChild(profileHead_div);

		// add style if on own profile and has premium
		if (wg.own && s.p.prem) {
			var profileName_tooltip = d.getElementById('js-profile-name_tooltip');
			profileName_header.classList.add("b-account-type__premium");
			profileName_tooltip.firstElementChild.textContent += " - "+s.p.prem[0]+" "+s.p.prem[1];
		}

		// player statistic links
		var profileStat_table = sf.elem("table", "t-profile-table"),
		profileStat_table_cells = [
			[
				[loc[4]],
				[sc.srv.wl, "<a target='_blank' href='http://wotlabs.net/"+sc.srv.wl+"/player/"+wg.name+"'>WoTLabs</a>"],
				[sc.srv.nm, "<a target='_blank' href='"+sc.nm.url+"'>Noobmeter</a>"],
				[sc.srv.ct, "<a target='_blank' href='http://clantools.us/servers/"+sc.srv.ct+"/players?id="+wg.id+"'>Clan Tools</a>"]
			],
			[
				[""],
				[sc.srv.ws, "<a target='_blank' href='http://wotstats.org/stats/"+sc.srv.ws+"/"+wg.name+"/'>WoTstats</a>"],
				[sc.srv.vb, "<a target='_blank' href='http://www.vbaddict.net/player/"+wg.name.toLowerCase()+"-"+sc.srv.vb+"'>vBAddict</a>"],
				(wg.srv=="ru") ? [sc.srv.kttc, "<a target='_blank' href='http://kttc.ru/statistics/user/"+wg.name+"/'>KTTC</a>"] : [sc.srv.wlf, "<a target='_blank' href='http://en.wot-life.com/"+sc.srv.wlf+"/player/"+wg.name+"/'>WoT-Life</a>"]
			],
			[
				[loc[5]],
				[sc.srv.wl, "<a target='_blank' href='http://wotlabs.net/sig/"+sc.srv.wl+"/"+wg.name+"/signature.png'>"+loc[6]+"</a>"],
				[sc.srv.wl, "<a target='_blank' href='http://wotlabs.net/sig_dark/"+sc.srv.wl+"/"+wg.name+"/signature.png'>"+loc[7]+"</a>"]
			],
			[
				[loc[8]],
				[sc.srv.wr, "<a target='_blank' href='http://wotreplays."+sc.srv.wr+"/player/"+wg.name+"'>WoTReplays</a>"],
				[sc.srv.we, loc[80]],
				[sc.srv.we, "<a target='_blank' href='http://wotevent.guildity.com/players/"+wg.name+"/'>WoT Event Stats</a>"]
			]
		];
		sf.links(profileStat_table, profileStat_table_cells, "table");
		profileName_class.appendChild(profileStat_table);

		// clan handler
		var clanBlock = d.getElementById('js-clan-block-container'),
		cl_class = clanBlock.getElementsByTagName('a')[1],
		clanStat_table = sf.elem("table", "", "", {id: "js-profile-clan-table"}),
		clanLook = new MutationObserver(function() {
			cl_class = clanBlock.getElementsByTagName('a')[1];
			sf.clan();
			clanLook.disconnect();
		});
		// apply changes if and when clanBlock is modified
		if(cl_class) {
			sf.clan();
		}
		else {
			clanLook.observe(clanBlock, {childList: true});
		}
		// clan history retrieval
		if (!!sc.srv.cs) {
			sf.request("historyData", sc.chApi, sf.ch.hnd, sf.ch.error);
		}

		// move player and clan blocks together
		var infoBlock_div = sf.elem("div", "b-info-block");
		infoBlock_div.appendChild(profileName_class);
		infoBlock_div.appendChild(clanBlock);
		fragment.appendChild(infoBlock_div);

		// player clan history
		var clanHist_div = sf.elem("div", "b-clanHistory-wrpr", "<span class='clanname'>"+loc[73]+"</span><span>"+loc[15]+"</span>");
		fragment.appendChild(clanHist_div);

		// move fame points block, if it exists
		var fameClass = d.getElementById('js-knockout-fame-points'),
		fameMessage = d.getElementsByClassName('b-fame-message')[0];
		if (fameClass) {
			var fameHeader = d.getElementsByClassName('b-header-h3__user-account')[0],
			fameIndicator = d.getElementsByClassName('b-fame-indicators')[0],
			fameTime = d.getElementsByClassName('b-time')[0],
			fameLinkList = d.getElementsByClassName('b-link-list')[0];
			fameClass.insertBefore(fameHeader, fameClass.firstElementChild);
			fameLinkList.appendChild(sf.elem("li", "b-link-list_item"));
			fameLinkList.lastElementChild.appendChild(fameTime);
			fameIndicator.dataset.bind = "";
			fameIndicator.classList.add("b-fame-indicators__one-country");
			fragment.appendChild(fameClass);
		}
		else if (fameMessage) {
			var fameDiv = fameMessage.parentNode;
			fameDiv.id = "js-knockout-fame-points";
			fameDiv.className = "b-fame-points-empty";
			fragment.appendChild(fameDiv);
			userBlock_sparks.classList.add("b-user-block_sparks-radius");
		}
		else {
			userBlock_sparks.classList.add("b-user-block_sparks-radius");
		}

		// move sidebar
		fragment.appendChild(sidebar_class);
		profile_div.appendChild(fragment);
		// end profile wrapper

		// add background
		var background_div = sf.elem("div", "b-background", "<img src='"+css.l[6]+"'>");
		background_div.style.background = s.h.wn8;
		userBlock_sparks.insertBefore(background_div, userBlock_sparks.firstChild);

		// add hidden divs for banned and last battle messages
		var banInfo_div = sf.elem("div", "b-message-ban-holder", "<div class='b-message-error'><span>"+loc[82]+" <span id='js-banInfo'></span>.</span></div>"),
		lastBattle_div = sf.elem("div", "b-message-battle-holder", "<div class='b-message-battle b-message-info'><span>"+loc[83]+" <span id='js-lastBattle'></span>.</span></div>");
		userBlock_sparks.insertBefore(lastBattle_div, userBlock_sparks.firstChild.nextSibling);
		userBlock_sparks.insertBefore(banInfo_div, userBlock_sparks.firstChild.nextSibling);

		// personal data - modify table - add ratings
		var persDataTable = d.getElementsByClassName('t-personal-data')[0];
		persDataTable.rows[0].cells[0].textContent = loc[9]; // winrate
		persDataTable.rows[1].cells[0].innerHTML = s.c.winsR;
		persDataTable.rows[0].cells[1].textContent = loc[10]; // battles
		persDataTable.rows[1].cells[1].innerHTML = s.c.batsC;
		persDataTable.rows[0].cells[1].parentNode.insertBefore(sf.elem("th", "t-personal-data_ico t-personal-data_ico__exp", loc[11]), persDataTable.rows[0].cells[1].nextSibling); // xp
		persDataTable.rows[1].cells[1].parentNode.insertBefore(sf.elem("td", "t-personal-data_value", sf.format(s.r.expA,2)), persDataTable.rows[1].cells[1].nextSibling);
		persDataTable.rows[0].cells[4].textContent = loc[69]; // hitrate
		persDataTable.rows[1].cells[3].innerHTML = s.c.hitsR;
		persDataTable.rows[0].cells[4].className = "t-personal-data_ico t-personal-data_ico__hitrate";
		persDataTable.rows[0].cells[5].textContent = loc[70]; // damage
		persDataTable.rows[1].cells[4].innerHTML = s.c.dmgTier;
		persDataTable.rows[0].appendChild(sf.elem("th", "t-personal-data_ico t-personal-data_ico__tier", loc[12])); // avg tier
		persDataTable.rows[1].appendChild(sf.elem("td", "t-personal-data_value", sf.format(s.a.tier,2,2)));
		persDataTable.appendChild(sf.elem("tbody", "t-ratings-info", "<tr><th colspan='2'><a href='http://www.wnefficiency.net/wnexpected/' target='_blank'>"+loc[27]+" v"+wn.vers[1]+"</a></th><th><a href='http://jaj22.org.uk/expvals.html' target='_blank'>"+loc[26]+" v"+wn.vers[2]+"</a></th><th></th><th>"+loc[28]+"</th><th colspan='2'>"+loc[29]+"</th></tr><tr><td colspan='2'>"+s.f.wn8.ratCol+"</td><td id='js-wn'>"+loc[122]+"</td><td></td><td>"+s.f.wn7.ratCol+"</td><td colspan='2'>"+s.f.eff.ratCol+"</td></tr>"));
		persDataTable.getElementsByClassName('t-personal-data_value__pr')[0].innerHTML = s.f.wgr.ratCol;

		// speedometer - win/loss ratio
		var smBody_class = d.getElementsByClassName('b-speedometer-body')[0],
		smWinWeight = (isFinite(s.r.winLR)) ? s.r.winLR.toFixed(2) : 1,
		smWinArrow = (isFinite(s.r.winLR)) ? Math.min(30*(s.r.winLR-1),31) : 0;
		smBody_class.appendChild(sf.elem("div", "b-speedometer", "<div class='b-speedometer_scale'></div><div class='b-speedometer-arrow' data-deg='"+smWinArrow+"' style='transform: rotate("+smWinArrow+"deg); -webkit-transform: rotate("+smWinArrow+"deg); -ms-transform: rotate("+smWinArrow+"deg);'></div><div class='b-speedometer-round'></div><p class='b-speedometer-title'>"+loc[13]+"</p><p class='b-speedometer-weight'>"+smWinWeight+"</p><p class='b-speedometer-ratio'>"+sf.format(s.r.wins,2)+" / "+sf.format(s.r.loss,2)+"</p>"));

		// performance ratings calculations table
		var ratingsTable_div = sf.elem("div", "ratings-table", "<h3>"+loc[16]+"</h3>"),
		ratingsTable = sf.elem("table", "t-table-ratings"),
		ratingsFragment = d.createDocumentFragment(),
		ratingsArr = [
			[loc[17], loc[18], loc[19], loc[20], loc[21], loc[22], loc[23], loc[24], loc[25]],
			["wn8", s.f.wn8.pct, loc[27], s.f.wn8.ratCol, s.f.wn8.scaleCol, sf.format(s.f.wn8.frag,2,2), sf.format(s.f.wn8.dmg,2,2), sf.format(s.f.wn8.spot,2,2), "–", sf.format(s.f.wn8.def,2,2), sf.format(s.f.wn8.win,2,2)],
			["wn7", s.f.wn7.pct, loc[28], s.f.wn7.ratCol, s.f.wn7.scaleCol, sf.format(s.f.wn7.frag,2,2), sf.format(s.f.wn7.dmg,2,2), sf.format(s.f.wn7.spot,2,2), "–", sf.format(s.f.wn7.def,2,2), sf.format(s.f.wn7.win,2,2)],
			["eff", s.f.eff.pct, loc[29], s.f.eff.ratCol, s.f.eff.scaleCol, sf.format(s.f.eff.frag,2,2), sf.format(s.f.eff.dmg,2,2), sf.format(s.f.eff.spot,2,2), sf.format(s.f.eff.cap,2,2), sf.format(s.f.eff.def,2,2), "–"]
		];
		for (var _r=0, _r_len = ratingsArr.length; _r<_r_len; ++_r) {
			var ratingsRow = sf.elem("tr");
			ratingsFragment.appendChild(ratingsRow);
			if (_r === 0) {
				for (var _rh=0, _rh_len = ratingsArr[_r].length; _rh<_rh_len; ++_rh) {
					ratingsRow.appendChild(sf.elem("th", "", ratingsArr[_r][_rh]));
				}
			}
			else {
				for (var _rc=2, _rc_len = ratingsArr[_r].length; _rc<_rc_len; ++_rc) {
					ratingsRow.appendChild(sf.elem("td", "td-center", ratingsArr[_r][_rc]));
				}
				ratingsFragment.appendChild(sf.elem("tr", "td-rating-meter", "<td colspan='9'><div class='rating-meter rating-meter_"+ratingsArr[_r][0]+"'><div class='rating-meter-dail_line' style='width:"+ratingsArr[_r][1]+"%;'><div class='rating-meter-marker'></div></div></div></td>"));
			}
			ratingsTable.appendChild(ratingsFragment);
		}
		ratingsTable_div.appendChild(ratingsTable);
		fragment.appendChild(ratingsTable_div);
		// link to WN thread
		fragment.appendChild(sf.elem("div", "wnelink", "<a class ='b-orange-arrow wnelink_info' target='_blank' href='http://wiki.wnefficiency.net/pages/WN8:_Summary'>"+loc[31]+"</a>"));
		userBlock_sparks.appendChild(fragment);
		// end user block

		// statistics wrapper
		var statistics_wrpr = d.getElementsByClassName('b-result-classes')[0].parentNode;
		statistics_wrpr.className = "b-statistics-wrpr";
		userBlock_wprp.parentNode.insertBefore(statistics_wrpr, userBlock_wprp.nextSibling);

		// stat tabs framework and menu
		var statTabs = sf.elem("div", "l-tabs l-tabs__top-indent", "<ul class='b-tabs-list'></ul><div class='b-main-divider'></div><div class='b-fame-indicators b-fame-indicators__no-margin b-fame-indicators__one-country'><div class='b-tabs'></div><div class='b-stat-legend'>"+loc[115]+"</br>"+loc[116]+"</div></div>"),
		statTabsMenu = statTabs.firstElementChild,
		statTabsParent = statTabs.lastElementChild.firstElementChild,
		statTabsMenuItems = [
			["user", loc[99]],
			["more", loc[100]],
			["clan", loc[101]],
			["strong", loc[105]],
			["team", loc[108]],
			["other", loc[110]]
		];
		for (var _tm=0, _tm_len = statTabsMenuItems.length; _tm<_tm_len; ++_tm) {
			var tabMenuItem = sf.elem("li", "b-tabs-list_item b-tabs-list_"+statTabsMenuItems[_tm][0], "<a class='b-tabs-list_link' href='#' onClick='return false;'>"+statTabsMenuItems[_tm][1]+"</a>");
			tabMenuItem.dataset.ref = "b-tab-"+statTabsMenuItems[_tm][0];
			if (statTabsMenuItems[_tm][0] == "user") {
				tabMenuItem.classList.add("js-tabs__active");
			}
			tabMenuItem.addEventListener('click', sf.tabs, false);
			fragment.appendChild(tabMenuItem);
		}
		statTabsMenu.appendChild(fragment);
		statistics_wrpr.appendChild(statTabs);

		// clean the old tables and populate them with new values (master badges, overall results and battle performance)
		var statTabUser = sf.elem("div", "b-tab-user js-stat_active"),
		statTables = [
			[
				["<img src='"+css.l[7]+"'>", loc[32], s.b[4].c+"<span>("+sf.format(s.b[4].p,2,0)+"%)</span>"],
				["<img src='"+css.l[8]+"'>", loc[33], s.b[3].c+"<span>("+sf.format(s.b[3].p,2,0)+"%)</span>"],
				["<img src='"+css.l[9]+"'>", loc[34], s.b[2].c+"<span>("+sf.format(s.b[2].p,2,0)+"%)</span>"],
				["<img src='"+css.l[10]+"'>", loc[35], s.b[1].c+"<span>("+sf.format(s.b[1].p,2,0)+"%)</span>"],
				["<img src='"+css.u.bad1+"'>", loc[36], s.b[0].c+"<span>("+sf.format(s.b[0].p,2,0)+"%)</span>"],
				["<img src='"+css.u.bad2+"'>", loc[37], s.b[5].c+"<span>("+sf.format(s.b[5].p,2,0)+"%)</span>"]
			],
			[
				[loc[38], s.l.veh, sf.format(s.r.bats,2)],
				[loc[39], s.c.winsR, sf.format(s.r.wins,2)],
				[loc[40], s.c.lossR, sf.format(s.r.loss,2)],
				[loc[41], s.c.drawR, sf.format(s.r.draw,2)],
				[loc[42], s.c.survR, sf.format(s.r.surv,2)],
				[loc[48], sf.color(s.a.dths*100, "", 2, "%"), sf.format(s.r.dths,2)],
				[loc[43], "", sf.format(s.a.bats,2,2)],
				[loc[44], sf.format(s.r.expA,2), sf.format(s.r.exp,2)]
			],
			[
				[loc[47], sf.format(s.a.frag,2,2), sf.format(s.r.frag,2)],
				[loc[49], sf.format(s.a.spot,2,2), sf.format(s.r.spot,2)],
				[loc[51], s.c.dmgTier, sf.format(s.r.dmgD,2)],
				[loc[52], sf.format(s.a.dmgR,2,0), sf.format(s.r.dmgR,2)],
				[loc[53], sf.format(s.a.caps,2,2), sf.format(s.r.caps,2)],
				[loc[54], sf.format(s.a.defs,2,2), sf.format(s.r.defs,2)],
				[loc[50], "", s.c.hitsR]
			],
			[
				mb_table,
				or_table,
				bp_table
			]
		];
		mb_table.removeChild(mb_table.firstElementChild);
		or_table.removeChild(or_table.firstElementChild);
		bp_table.removeChild(bp_table.firstElementChild);
		for (var _s=0, _s_len = statTables.length; _s<(_s_len-1); ++_s) {
			for (var _sr=0, _sr_len = statTables[_s].length; _sr<_sr_len; ++_sr) {
				fragment.appendChild(sf.elem("tr", "", "<td class='"+((statTables[3][_s] == mb_table) ? 't-dotted_class-ico t-dotted_minor__middle' : 't-dotted_minor')+"'>"+statTables[_s][_sr][0]+"</td><td class='"+((statTables[3][_s] == mb_table) ? 't-dotted_minor t-dotted_minor__middle' : 't-dotted_value')+"'>"+statTables[_s][_sr][1]+"</td><td class='"+((statTables[3][_s] == mb_table) ? 't-dotted_value t-dotted_minor__middle' : 't-dotted_value')+"'>"+statTables[_s][_sr][2]+"</td>"));
			}
			statTables[3][_s].appendChild(fragment);
			statTabUser.appendChild(statTables[3][_s].parentNode);
		}
		statTabsParent.appendChild(statTabUser);
		// end statistics wrapper

		// cake diagrams - adding tier diagram
		var diagSector_class = d.getElementsByClassName('b-diagrams-sector')[0],
		diagTier_div = sf.elem("div", "b-diagram-block b-diagram-tiers js-diagram-block", "<h3>"+loc[56]+"</h3><h4>"+loc[119]+"</h4><div class='b-diagram-wrpr'><div class='b-diagram' id='holder-mechanism-tier'></div><div class='b-diagram-round js-diagram-round'><span class='b-diagram-round_title'></span><span class='b-diagram-round_value js-result'>"+s.v.a+"</span></div></div>"),
		diagTier_table = sf.elem("table", "t-dotted t-dotted__diagram js-diagram-mechanism-legend"),
		diagTierCol = ["#831818","#814F07","#763D46","#496877","#303766","#2B591F","#471952","#936C19","#9B9B9B","#514A3C"];
		diagSector_class.firstElementChild.insertBefore(sf.elem("h4", "", loc[120]), diagSector_class.firstElementChild.firstElementChild.nextSibling);
		diagSector_class.lastElementChild.insertBefore(sf.elem("h4", "", loc[121]), diagSector_class.lastElementChild.firstElementChild.nextSibling);
		diagSector_class.insertBefore(diagTier_div, diagSector_class.firstElementChild.nextSibling);
		for (var _d=0, _d_len = s.t.length; _d<_d_len; ++_d) {
			if (s.t[_d].c !== 0) {
				diagTier_table.appendChild(sf.elem("tr", "t-diagram-tier", "<td class='t-dotted_diagram-first'><span class='t-dotted_diagram-bg'></span></td><td><span class='t-dotted_diagram-bg'><span class='t-dotted_diagram-info'><span class='t-diagram_rating' id='js-tier_"+s.t[_d].t+"'></span><span class='t-diagram_tiers js-results'>"+sf.format(s.t[_d].b,2)+"</span><span class='t-dotted_diagram-percent'>(<span class='js-value'>"+sf.format((s.t[_d].b/s.r.bats*100),2,2)+"%</span>)</span></span><span class='b-diagram-ico b-diagram-ico_tier b-diagram-ico_tier-"+s.t[_d].t+"'>"+loc[57]+" "+s.t[_d].t+"</span></span></td><td class='t-dotted_diagram-last'><span class='t-dotted_diagram-bg'><span class='js-colors'>"+diagTierCol[_d]+"</span></span></td>"));
			}
		}
		diagTier_div.appendChild(diagTier_table);
		diagSector_class.firstElementChild.appendChild(sf.elem("div", "b-diagram-total", "<h3>"+loc[58]+" "+s.v.a+"</h3>"));
		// fix for cake diagram in chrome
		if (sc.web.chrome) {
			var diagItems = [], diagValues = [], diagResults = [],
			diagRows = diagTier_table.rows,
			diagResult = $('.js-result', diagTier_div);
			for (var _dt=0, _dt_len = diagRows.length; _dt<_dt_len; ++_dt) {
				diagItems.push($(diagRows[_dt]));
				diagValues.push(parseInt(diagRows[_dt].getElementsByClassName('js-value')[0].innerHTML, 10));
				diagResults.push(diagRows[_dt].getElementsByClassName('js-results')[0].innerHTML);
			}
			new Raphael("holder-mechanism-tier", 630, 630).pieChart(65, 65.5, 53.5, diagItems, diagValues, diagTierCol, diagResults, diagTier_table, diagResult);
		}

		// achievements wrapper
		var medal_div = sf.elem("div", "b-achievements-wrpr"),
		medalHeader_div = sf.elem("div", "b-head-block"),
		medalHeader_class = d.getElementsByClassName('js-achievements-header')[0],
		medalAll_class = d.getElementsByClassName('js-all-achievements')[0],
		medalToggle_class = medalAll_class.lastElementChild,
		medalEmpty_class = d.getElementsByClassName('b-profile-item-empty')[0];
		medalHeader_div.appendChild(medalHeader_class);
		fragment.appendChild(medalHeader_div);
		fragment.appendChild(medalToggle_class);
		fragment.appendChild(medalAll_class);
		fragment.appendChild(medalEmpty_class);
		medal_div.appendChild(fragment);
		diagSector_class.parentNode.insertBefore(medal_div, diagSector_class.nextSibling);
		diagSector_class.parentNode.insertBefore(layoutfix_class[0], diagSector_class.nextSibling);
		// fix special medals margin
		var medalSpecial_class = d.getElementsByClassName('b-achivements')[7],
		medalLook = new MutationObserver(function() {
			medalSpecial_class = d.getElementsByClassName('b-achivements')[7];
			sf.medals();
		});
		if (medalSpecial_class) {
			sf.medals();
		}
		else {
			medalLook.observe(medalAll_class.lastElementChild, {childList: true});
		}

		// vehicles wrapper
		var vehTable_class = d.getElementsByClassName('t-profile__vehicle')[0],
		vehicles_div = sf.elem("div", "b-vehicles-wrpr"),
		vehiclesHeader_div = sf.elem("div", "b-vehicles-header", "<a class='b-orange-arrow b-profile-ratings_link' target='_blank' href='/encyclopedia/vehicles/'>"+loc[59]+"</a><span class='b-profile-vehicles-tankstat'><a class='b-orange-arrow b-profile-ratings_link b-profile-vehicles-tankstat_link' target='_blank' href='http://www.vbaddict.net/statistics.php?server="+((wg.srv == "ru") ? "net" : sc.srv.vb)+"'>vBAddict: "+loc[60]+"</a></span>"),
		vehiclesHeader_class = vehTable_class.previousElementSibling.previousElementSibling;
		vehiclesHeader_class.className = "b-profile-ratings_title";
		vehiclesHeader_div.insertBefore(vehiclesHeader_class, vehiclesHeader_div.firstChild);
		vehTable_class.parentNode.insertBefore(vehicles_div, vehTable_class);
		fragment.appendChild(vehiclesHeader_div);
		fragment.appendChild(vehTable_class);
		vehicles_div.appendChild(fragment);

		// insert custom tables
		var vehiclesFragment = d.createDocumentFragment(),
		vehicleTables = [
			["prem", loc[61], s.s.p.r.length, s.s.p.r, sf.format(s.s.p.b,2), sf.color((s.s.p.w/s.s.p.b)*100, "wr", 0, "%"), sf.format(s.s.p.w,2), s.s.p.bg],
			["ten",  loc[67], s.s.t.r.length, s.s.t.r, sf.format(s.s.t.b,2), sf.color((s.s.t.w/s.s.t.b)*100, "wr", 0, "%"), sf.format(s.s.t.w,2), s.s.t.bg],
			["test", loc[123], s.s.s.r.length, s.s.s.r, sf.format(s.s.s.b,2), sf.color((s.s.s.w/s.s.s.b)*100, "wr", 0, "%"), sf.format(s.s.s.w,2), s.s.s.bg],
			["miss", loc[77], s.s.e.r.length, s.s.e.r, sf.format(s.s.e.b,2), sf.color((s.s.e.w/s.s.e.b)*100, "wr", 0, "%"), sf.format(s.s.e.w,2), s.s.e.bg]
		];
		for (var _t=0, _t_len=vehicleTables.length; _t<_t_len; ++_t) {
			var tableValue = vehicleTables[_t],
			tableHeader = sf.elem("tbody"),
			tableBody = sf.elem("tbody", "sortable b-display-none");
			fragment.appendChild(tableHeader);
			if (tableValue[2] === 0) {
				tableBody.appendChild(sf.elem("tr", "t-profile_tankstype t-profile_tankstype-prem t-profile_tankstype__empty", "<td width='388' class='t-profile_head'><span class='b-tankstype-ico b-tankstype-ico__"+tableValue[0]+"'></span><span class='b-tankstype-text'>"+tableValue[1]+" </span></td><td class='t-profile_right'>&ndash;</td><td class='t-profile_center'>&ndash;</td><td class='t-profile_center'>&ndash;</td><td class='t-profile_dropdown-ico'><!-- empty --></td>"));
			}
			else {
				tableHeader.className = "tablesorter-no-sort";
				tableHeader.appendChild(sf.elem("tr", "t-profile_tankstype t-profile_tankstype-"+tableValue[0]+" js-table-dropdown-link", "<td width='388' class='t-profile_head'><span class='b-tankstype-ico b-tankstype-ico__"+tableValue[0]+"'></span><span class='b-tankstype-text'>"+tableValue[1]+" <span class='b-armory-col'>"+tableValue[2]+"</span></span></td><td class='t-profile_right'>"+tableValue[4]+"</td><td class='t-profile_center'>"+tableValue[5]+"≈<span>"+tableValue[6]+"</span></td><td class='t-profile_center'>"+tableValue[7]+"</td><td class='t-profile_dropdown-ico'><a title='Show/hide vehicles' class='t-profile_dropdown-link' href=''></a></td>"));
				for (var _tv=0; _tv<tableValue[2]; ++_tv) {
					vehiclesFragment.appendChild(tableValue[3][_tv][0]);
					vehiclesFragment.appendChild(tableValue[3][_tv][1]);
				}
				tableBody.appendChild(vehiclesFragment);
				fragment.appendChild(tableBody);
			}
		}
		vehTable_class.appendChild(fragment);
		// end vehicles wrapper

		// debugging to browser console
		if (sc.debug) {
			console.info("Browser Info:\n"+n.appCodeName+" - "+n.appName+"\n"+n.userAgent, sc.web);
			console.info(s.l.clip);
			console.info("Script Settings:", sc);
			console.info("Statistics:", s);
		}
	}
	else {
		// add a message informing that the script is disabled
		profileName_class.appendChild(sf.elem("div", "b-script-disabled", loc[64]));
		styleText.push(
			".b-script-disabled {background-color: rgb(27, 27, 28); border: 1px solid rgba(255,255,255,0.04); border-bottom: none; border-radius: 15px 15px 0px 0px; box-shadow: 0px 0px 5px 4px rgba(0, 0, 0, 0.15) inset; color: #CD3333; line-height: 25px; margin: 10px 0 -15px 0px; text-align: center; width: 684px;}",
			".b-profile-clan {margin: 0;}",
			".content-wrapper__old p.b-statistic_item {margin: 0;}"
		);
		style.textContent = styleText.join("");
	} // end tableBattles
}(window));